ERC-20
Overview
Max Total Supply
1,000,000,000 ZUZU
Holders
11
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,290.968265113046511329 ZUZUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ZUZU
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-05 */ /** ZUZU was born!!! */ // SPDX-License-Identifier: MIT/** pragma solidity ^0.6.12; 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); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ZUZU 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 public constant MAX = ~uint256(0); uint256 public _tTotal = 1_000_000_000 * 10**18; uint256 public _rTotal = (MAX - (MAX % _tTotal)); uint256 public _tFeeTotal; uint256 private _tBurnTotal; string private _name = "ZUZU SNACK"; string private _symbol = "ZUZU"; uint8 private _decimals = 18; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _burnFee = 0; uint256 private _previousburnFee = _burnFee; bool public tradeEnabled; constructor () public { _rOwned[_msgSender()] = _rTotal; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } // State variable to store exclusions from maxTxAmount mapping(address => bool) private _isExcludedFromMaxTx; // Function to set maxTxAmount (already provided earlier) uint256 public maxTxAmount; // Function to set maxTxAmount limit function setMaxTxAmount(uint256 _maxTxAmount) external onlyOwner { maxTxAmount = _maxTxAmount; } // Functions to exclude and include addresses from maxTxAmount function excludeFromMaxTx(address account) external onlyOwner { _isExcludedFromMaxTx[account] = true; } function includeInMaxTx(address account) external onlyOwner { _isExcludedFromMaxTx[account] = false; } function transfer(address recipient, uint256 amount) public override returns (bool) { if (!_isExcludedFromMaxTx[_msgSender()] && !_isExcludedFromMaxTx[recipient]) { require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount"); } _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) { if (!_isExcludedFromMaxTx[sender] && !_isExcludedFromMaxTx[recipient]) { require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount"); } _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function totalBurn() public view returns (uint256) { return _tBurnTotal; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setRewardFeePercent(uint256 taxFee) external onlyOwner() { uint256 newfees = taxFee + _burnFee; require (newfees <= 20, "Slippage must be less than 20%"); _taxFee = taxFee; } function setBurnFeePercent(uint256 burnfee) external onlyOwner() { uint256 newfees = _taxFee + burnfee; require (newfees <= 20, "Slippage must be less than 20%"); _burnFee = burnfee; } function _reflectFee(uint256 rFee, uint256 tFee, uint256 rBurn, uint256 tBurn ) private { _rTotal = _rTotal.sub(rFee).sub(rBurn); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tburnFee); return (tTransferAmount, tFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private view returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rburnfee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _burnFee == 0 ) return; _previousTaxFee = _taxFee; _previousburnFee = _burnFee; _taxFee = 0; _burnFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _burnFee = _previousburnFee; } 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 (!tradeEnabled) { require(from == owner() || to == owner(), "transfer: trade not enabled"); } //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); } //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]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); uint256 tburnFee = calculateBurnFee(tAmount); uint256 rburnfee = tburnFee.mul(_getRate()); _reflectFee(rFee, tFee, rburnfee,tburnFee ); emit Transfer(sender, recipient, tTransferAmount); } function enableTrade() external onlyOwner { tradeEnabled = true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","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":"excludeFromMaxTx","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":"includeInMaxTx","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":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnfee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setRewardFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526b033b2e3c9fd0803ce8000000600955600954600019816200002257fe5b0660001903600a556040518060400160405280600a81526020017f5a555a5520534e41434b00000000000000000000000000000000000000000000815250600d90805190602001906200007792919062000378565b506040518060400160405280600481526020017f5a555a5500000000000000000000000000000000000000000000000000000000815250600e9080519060200190620000c592919062000378565b506012600f60006101000a81548160ff021916908360ff160217905550600060105560105460115560006012556012546013553480156200010557600080fd5b506000620001186200034760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620001cd6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002216200034f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002da6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a36200041e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003bb57805160ff1916838001178555620003ec565b82800160010185558215620003ec579182015b82811115620003eb578251825591602001919060010190620003ce565b5b509050620003fb9190620003ff565b5090565b5b808211156200041a57600081600090555060010162000400565b5090565b6144e2806200042e6000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122073f86901a1aa4cffcf71a9e7dd062417efaaee28684c2922db496cfb23e14e4b64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122073f86901a1aa4cffcf71a9e7dd062417efaaee28684c2922db496cfb23e14e4b64736f6c634300060c0033
Deployed Bytecode Sourcemap
17065:14842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31816:80;;;:::i;:::-;;18407:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20171:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21449:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18684:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19558:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20340:470;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22086:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18593:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22688:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20818:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17870:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21548:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23933:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21644:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17616:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22347:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27537:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24178:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18787:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16507:148;;;:::i;:::-;;21321:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19178:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15864:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18498:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21044:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19678:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17562:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17957:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24405:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17514:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18043:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19437:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20020:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24056:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19255:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16810:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17671:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31816:80;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31884:4:::1;31869:12;;:19;;;;;;;;;;;;;;;;;;31816:80::o:0;18407:83::-;18444:13;18477:5;18470:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18407:83;:::o;20171:161::-;20246:4;20263:39;20272:12;:10;:12::i;:::-;20286:7;20295:6;20263:8;:39::i;:::-;20320:4;20313:11;;20171:161;;;;:::o;21449:87::-;21491:7;21518:10;;21511:17;;21449:87;:::o;18684:95::-;18737:7;18764;;18757:14;;18684:95;:::o;19558:112::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:5:::1;19625:20;:29;19646:7;19625:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19558:112:::0;:::o;20340:470::-;20438:4;20456:20;:28;20477:6;20456:28;;;;;;;;;;;;;;;;;;;;;;;;;20455:29;:65;;;;;20489:20;:31;20510:9;20489:31;;;;;;;;;;;;;;;;;;;;;;;;;20488:32;20455:65;20451:163;;;20551:11;;20541:6;:21;;20533:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20451:163;20620:36;20630:6;20638:9;20649:6;20620:9;:36::i;:::-;20663:121;20672:6;20680:12;:10;:12::i;:::-;20694:89;20732:6;20694:89;;;;;;;;;;;;;;;;;:11;:19;20706:6;20694:19;;;;;;;;;;;;;;;:33;20714:12;:10;:12::i;:::-;20694:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20663:8;:121::i;:::-;20798:4;20791:11;;20340:470;;;;;:::o;22086:253::-;22152:7;22191;;22180;:18;;22172:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22256:19;22279:10;:8;:10::i;:::-;22256:33;;22307:24;22319:11;22307:7;:11;;:24;;;;:::i;:::-;22300:31;;;22086:253;;;:::o;18593:83::-;18634:5;18659:9;;;;;;;;;;;18652:16;;18593:83;:::o;22688:479::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22770:11:::1;:20;22782:7;22770:20;;;;;;;;;;;;;;;;;;;;;;;;;22762:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22838:9;22833:327;22857:9;:16;;;;22853:1;:20;22833:327;;;22915:7;22899:23;;:9;22909:1;22899:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22895:254;;;22958:9;22987:1;22968:9;:16;;;;:20;22958:31;;;;;;;;;;;;;;;;;;;;;;;;;22943:9;22953:1;22943:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23027:1;23008:7;:16;23016:7;23008:16;;;;;;;;;;;;;;;:20;;;;23070:5;23047:11;:20;23059:7;23047:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23094:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23128:5;;22895:254;22875:3;;;;;;;22833:327;;;;22688:479:::0;:::o;20818:218::-;20906:4;20923:83;20932:12;:10;:12::i;:::-;20946:7;20955:50;20994:10;20955:11;:25;20967:12;:10;:12::i;:::-;20955:25;;;;;;;;;;;;;;;:34;20981:7;20955:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20923:8;:83::i;:::-;21024:4;21017:11;;20818:218;;;;:::o;17870:26::-;;;;:::o;21548:88::-;21590:7;21617:11;;21610:18;;21548:88;:::o;23933:111::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24032:4:::1;24002:18;:27;24021:7;24002:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23933:111:::0;:::o;21644:434::-;21734:7;21773;;21762;:18;;21754:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21832:17;21827:244;;21867:15;21890:19;21901:7;21890:10;:19::i;:::-;21866:43;;;;;;21931:7;21924:14;;;;;21827:244;21973:23;22003:19;22014:7;22003:10;:19::i;:::-;21971:51;;;;;;22044:15;22037:22;;;21644:434;;;;;:::o;17616:48::-;;;;:::o;22347:333::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22430:11:::1;:20;22442:7;22430:20;;;;;;;;;;;;;;;;;;;;;;;;;22429:21;22421:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22515:1;22496:7;:16;22504:7;22496:16;;;;;;;;;;;;;;;;:20;22493:108;;;22552:37;22572:7;:16;22580:7;22572:16;;;;;;;;;;;;;;;;22552:19;:37::i;:::-;22533:7;:16;22541:7;22533:16;;;;;;;;;;;;;;;:56;;;;22493:108;22634:4;22611:11;:20;22623:7;22611:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22649:9;22664:7;22649:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22347:333:::0;:::o;27537:123::-;27601:4;27625:18;:27;27644:7;27625:27;;;;;;;;;;;;;;;;;;;;;;;;;27618:34;;27537:123;;;:::o;24178:215::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24255:15:::1;24282:8;;24273:6;:17;24255:35;;24321:2;24310:7;:13;;24301:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24379:6;24369:7;:16;;;;16146:1;24178:215:::0;:::o;18787:198::-;18853:7;18877:11;:20;18889:7;18877:20;;;;;;;;;;;;;;;;;;;;;;;;;18873:49;;;18906:7;:16;18914:7;18906:16;;;;;;;;;;;;;;;;18899:23;;;;18873:49;18940:37;18960:7;:16;18968:7;18960:16;;;;;;;;;;;;;;;;18940:19;:37::i;:::-;18933:44;;18787:198;;;;:::o;16507:148::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16614:1:::1;16577:40;;16598:6;::::0;::::1;;;;;;;;16577:40;;;;;;;;;;;;16645:1;16628:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16507:148::o:0;21321:120::-;21389:4;21413:11;:20;21425:7;21413:20;;;;;;;;;;;;;;;;;;;;;;;;;21406:27;;21321:120;;;:::o;19178:26::-;;;;:::o;15864:79::-;15902:7;15929:6;;;;;;;;;;;15922:13;;15864:79;:::o;18498:87::-;18537:13;18570:7;18563:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18498:87;:::o;21044:269::-;21137:4;21154:129;21163:12;:10;:12::i;:::-;21177:7;21186:96;21225:15;21186:96;;;;;;;;;;;;;;;;;:11;:25;21198:12;:10;:12::i;:::-;21186:25;;;;;;;;;;;;;;;:34;21212:7;21186:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21154:8;:129::i;:::-;21301:4;21294:11;;21044:269;;;;:::o;19678:334::-;19756:4;19774:20;:34;19795:12;:10;:12::i;:::-;19774:34;;;;;;;;;;;;;;;;;;;;;;;;;19773:35;:71;;;;;19813:20;:31;19834:9;19813:31;;;;;;;;;;;;;;;;;;;;;;;;;19812:32;19773:71;19769:169;;;19875:11;;19865:6;:21;;19857:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19769:169;19944:42;19954:12;:10;:12::i;:::-;19968:9;19979:6;19944:9;:42::i;:::-;20000:4;19993:11;;19678:334;;;;:::o;17562:47::-;;;;:::o;17957:27::-;;;;:::o;24405:217::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24481:15:::1;24510:7;24499;;:18;24481:36;;24548:2;24537:7;:13;;24528:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24607:7;24596:8;:18;;;;16146:1;24405:217:::0;:::o;17514:41::-;17553:1;17544:11;17514:41;:::o;18043:24::-;;;;;;;;;;;;;:::o;19437:113::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19538:4:::1;19506:20;:29;19527:7;19506:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19437:113:::0;:::o;20020:143::-;20101:7;20128:11;:18;20140:5;20128:18;;;;;;;;;;;;;;;:27;20147:7;20128:27;;;;;;;;;;;;;;;;20121:34;;20020:143;;;;:::o;24056:110::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24153:5:::1;24123:18;:27;24142:7;24123:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24056:110:::0;:::o;19255:106::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19341:12:::1;19327:11;:26;;;;19255:106:::0;:::o;16810:244::-;16086:12;:10;:12::i;:::-;16076:22;;:6;;;;;;;;;;:22;;;16068:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16919:1:::1;16899:22;;:8;:22;;;;16891:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17009:8;16980:38;;17001:6;::::0;::::1;;;;;;;;16980:38;;;;;;;;;;;;17038:8;17029:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16810:244:::0;:::o;17671:25::-;;;;:::o;8272:106::-;8325:15;8360:10;8353:17;;8272:106;:::o;27668:337::-;27778:1;27761:19;;:5;:19;;;;27753:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27859:1;27840:21;;:7;:21;;;;27832:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27943:6;27913:11;:18;27925:5;27913:18;;;;;;;;;;;;;;;:27;27932:7;27913:27;;;;;;;;;;;;;;;:36;;;;27981:7;27965:32;;27974:5;27965:32;;;27990:6;27965:32;;;;;;;;;;;;;;;;;;27668:337;;;:::o;28013:896::-;28151:1;28135:18;;:4;:18;;;;28127:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28228:1;28214:16;;:2;:16;;;;28206:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28298:1;28289:6;:10;28281:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28371:12;;;;;;;;;;;28366:118;;28416:7;:5;:7::i;:::-;28408:15;;:4;:15;;;:32;;;;28433:7;:5;:7::i;:::-;28427:13;;:2;:13;;;28408:32;28400:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28366:118;28557:12;28572:4;28557:19;;28684:18;:24;28703:4;28684:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;28712:18;:22;28731:2;28712:22;;;;;;;;;;;;;;;;;;;;;;;;;28684:50;28681:96;;;28760:5;28750:15;;28681:96;28863:38;28878:4;28883:2;28886:6;28893:7;28863:14;:38::i;:::-;28013:896;;;;:::o;4682:192::-;4768:7;4801:1;4796;:6;;4804:12;4788:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4828:9;4844:1;4840;:5;4828:17;;4865:1;4858:8;;;4682:192;;;;;:::o;26093:163::-;26134:7;26155:15;26172;26191:19;:17;:19::i;:::-;26154:56;;;;26228:20;26240:7;26228;:11;;:20;;;;:::i;:::-;26221:27;;;;26093:163;:::o;6080:132::-;6138:7;6165:39;6169:1;6172;6165:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6158:46;;6080:132;;;;:::o;3779:181::-;3837:7;3857:9;3873:1;3869;:5;3857:17;;3898:1;3893;:6;;3885:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3951:1;3944:8;;;3779:181;;;;:::o;24913:366::-;24972:7;24981;24990;24999;25008;25029:23;25054:12;25070:20;25082:7;25070:11;:20::i;:::-;25028:62;;;;25102:15;25119:23;25144:12;25160:38;25172:7;25181:4;25187:10;:8;:10::i;:::-;25160:11;:38::i;:::-;25101:97;;;;;;25217:7;25226:15;25243:4;25249:15;25266:4;25209:62;;;;;;;;;;;;;;;24913:366;;;;;;;:::o;28996:834::-;29107:7;29103:40;;29129:14;:12;:14::i;:::-;29103:40;29168:11;:19;29180:6;29168:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;29192:11;:22;29204:9;29192:22;;;;;;;;;;;;;;;;;;;;;;;;;29191:23;29168:46;29164:597;;;29231:48;29253:6;29261:9;29272:6;29231:21;:48::i;:::-;29164:597;;;29302:11;:19;29314:6;29302:19;;;;;;;;;;;;;;;;;;;;;;;;;29301:20;:46;;;;;29325:11;:22;29337:9;29325:22;;;;;;;;;;;;;;;;;;;;;;;;;29301:46;29297:464;;;29364:46;29384:6;29392:9;29403:6;29364:19;:46::i;:::-;29297:464;;;29433:11;:19;29445:6;29433:19;;;;;;;;;;;;;;;;;;;;;;;;;29432:20;:47;;;;;29457:11;:22;29469:9;29457:22;;;;;;;;;;;;;;;;;;;;;;;;;29456:23;29432:47;29428:333;;;29496:44;29514:6;29522:9;29533:6;29496:17;:44::i;:::-;29428:333;;;29562:11;:19;29574:6;29562:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;29585:11;:22;29597:9;29585:22;;;;;;;;;;;;;;;;;;;;;;;;;29562:45;29558:203;;;29624:48;29646:6;29654:9;29665:6;29624:21;:48::i;:::-;29558:203;;;29705:44;29723:6;29731:9;29742:6;29705:17;:44::i;:::-;29558:203;29428:333;29297:464;29164:597;29785:7;29781:41;;29807:15;:13;:15::i;:::-;29781:41;28996:834;;;;:::o;26264:561::-;26314:7;26323;26343:15;26361:7;;26343:25;;26379:15;26397:7;;26379:25;;26426:9;26421:289;26445:9;:16;;;;26441:1;:20;26421:289;;;26511:7;26487;:21;26495:9;26505:1;26495:12;;;;;;;;;;;;;;;;;;;;;;;;;26487:21;;;;;;;;;;;;;;;;:31;:66;;;;26546:7;26522;:21;26530:9;26540:1;26530:12;;;;;;;;;;;;;;;;;;;;;;;;;26522:21;;;;;;;;;;;;;;;;:31;26487:66;26483:97;;;26563:7;;26572;;26555:25;;;;;;;;;26483:97;26605:34;26617:7;:21;26625:9;26635:1;26625:12;;;;;;;;;;;;;;;;;;;;;;;;;26617:21;;;;;;;;;;;;;;;;26605:7;:11;;:34;;;;:::i;:::-;26595:44;;26664:34;26676:7;:21;26684:9;26694:1;26684:12;;;;;;;;;;;;;;;;;;;;;;;;;26676:21;;;;;;;;;;;;;;;;26664:7;:11;;:34;;;;:::i;:::-;26654:44;;26463:3;;;;;;;26421:289;;;;26734:20;26746:7;;26734;;:11;;:20;;;;:::i;:::-;26724:7;:30;26720:61;;;26764:7;;26773;;26756:25;;;;;;;;26720:61;26800:7;26809;26792:25;;;;;;26264:561;;;:::o;6708:278::-;6794:7;6826:1;6822;:5;6829:12;6814:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6853:9;6869:1;6865;:5;;;;;;6853:17;;6977:1;6970:8;;;6708:278;;;;;:::o;25287:302::-;25347:7;25356;25376:12;25391:24;25407:7;25391:15;:24::i;:::-;25376:39;;25426:16;25445:25;25462:7;25445:16;:25::i;:::-;25426:44;;25483:23;25509:31;25531:8;25509:17;25521:4;25509:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;25483:57;;25559:15;25576:4;25551:30;;;;;;;25287:302;;;:::o;25601:478::-;25696:7;25705;25714;25734:15;25752:24;25764:11;25752:7;:11;;:24;;;;:::i;:::-;25734:42;;25787:12;25802:21;25811:11;25802:4;:8;;:21;;;;:::i;:::-;25787:36;;25844:16;25863:25;25880:7;25863:16;:25::i;:::-;25844:44;;25899:16;25918:25;25931:11;25918:8;:12;;:25;;;;:::i;:::-;25899:44;;25964:23;25990:31;26012:8;25990:17;26002:4;25990:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;25964:57;;26040:7;26049:15;26066:4;26032:39;;;;;;;;;;;25601:478;;;;;;;:::o;27167:231::-;27224:1;27213:7;;:12;:29;;;;;27241:1;27229:8;;:13;27213:29;27210:42;;;27245:7;;27210:42;27290:7;;27272:15;:25;;;;27327:8;;27308:16;:27;;;;27366:1;27356:7;:11;;;;27389:1;27378:8;:12;;;;27167:231;:::o;31146:662::-;31249:15;31266:23;31291:12;31305:23;31330:12;31346:19;31357:7;31346:10;:19::i;:::-;31248:117;;;;;;;;;;31394:28;31414:7;31394;:15;31402:6;31394:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31376:7;:15;31384:6;31376:15;;;;;;;;;;;;;;;:46;;;;31451:28;31471:7;31451;:15;31459:6;31451:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31433:7;:15;31441:6;31433:15;;;;;;;;;;;;;;;:46;;;;31511:39;31534:15;31511:7;:18;31519:9;31511:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31490:7;:18;31498:9;31490:18;;;;;;;;;;;;;;;:60;;;;31574:16;31593:25;31610:7;31593:16;:25::i;:::-;31574:44;;31629:16;31648:24;31661:10;:8;:10::i;:::-;31648:8;:12;;:24;;;;:::i;:::-;31629:43;;31697;31709:4;31715;31721:8;31730;31697:11;:43::i;:::-;31773:9;31756:44;;31765:6;31756:44;;;31784:15;31756:44;;;;;;;;;;;;;;;;;;31146:662;;;;;;;;;;:::o;30465:667::-;30566:15;30583:23;30608:12;30622:23;30647:12;30663:19;30674:7;30663:10;:19::i;:::-;30565:117;;;;;;;;;;30711:28;30731:7;30711;:15;30719:6;30711:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30693:7;:15;30701:6;30693:15;;;;;;;;;;;;;;;:46;;;;30771:39;30794:15;30771:7;:18;30779:9;30771:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30750:7;:18;30758:9;30750:18;;;;;;;;;;;;;;;:60;;;;30842:39;30865:15;30842:7;:18;30850:9;30842:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30821:7;:18;30829:9;30821:18;;;;;;;;;;;;;;;:60;;;;30906:16;30925:25;30942:7;30925:16;:25::i;:::-;30906:44;;30961:16;30980:24;30993:10;:8;:10::i;:::-;30980:8;:12;;:24;;;;:::i;:::-;30961:43;;31021;31033:4;31039;31045:8;31054;31021:11;:43::i;:::-;31097:9;31080:44;;31089:6;31080:44;;;31108:15;31080:44;;;;;;;;;;;;;;;;;;30465:667;;;;;;;;;;:::o;29838:603::-;29937:15;29954:23;29979:12;29993:23;30018:12;30034:19;30045:7;30034:10;:19::i;:::-;29936:117;;;;;;;;;;30082:28;30102:7;30082;:15;30090:6;30082:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30064:7;:15;30072:6;30064:15;;;;;;;;;;;;;;;:46;;;;30142:39;30165:15;30142:7;:18;30150:9;30142:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30121:7;:18;30129:9;30121:18;;;;;;;;;;;;;;;:60;;;;30202:16;30221:25;30238:7;30221:16;:25::i;:::-;30202:44;;30257:16;30276:24;30289:10;:8;:10::i;:::-;30276:8;:12;;:24;;;;:::i;:::-;30257:43;;30320;30332:4;30338;30344:8;30353;30320:11;:43::i;:::-;30406:9;30389:44;;30398:6;30389:44;;;30417:15;30389:44;;;;;;;;;;;;;;;;;;29838:603;;;;;;;;;;:::o;23179:742::-;23282:15;23299:23;23324:12;23338:23;23363:12;23379:19;23390:7;23379:10;:19::i;:::-;23281:117;;;;;;;;;;23427:28;23447:7;23427;:15;23435:6;23427:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23409:7;:15;23417:6;23409:15;;;;;;;;;;;;;;;:46;;;;23484:28;23504:7;23484;:15;23492:6;23484:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23466:7;:15;23474:6;23466:15;;;;;;;;;;;;;;;:46;;;;23544:39;23567:15;23544:7;:18;23552:9;23544:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23523:7;:18;23531:9;23523:18;;;;;;;;;;;;;;;:60;;;;23615:39;23638:15;23615:7;:18;23623:9;23615:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23594:7;:18;23602:9;23594:18;;;;;;;;;;;;;;;:60;;;;23684:16;23703:25;23720:7;23703:16;:25::i;:::-;23684:44;;23739:16;23758:24;23771:10;:8;:10::i;:::-;23758:8;:12;;:24;;;;:::i;:::-;23739:43;;23810;23822:4;23828;23834:8;23843;23810:11;:43::i;:::-;23886:9;23869:44;;23878:6;23869:44;;;23897:15;23869:44;;;;;;;;;;;;;;;;;;23179:742;;;;;;;;;;:::o;27410:115::-;27464:15;;27454:7;:25;;;;27501:16;;27490:8;:27;;;;27410:115::o;4243:136::-;4301:7;4328:43;4332:1;4335;4328:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4321:50;;4243:136;;;;:::o;26833:154::-;26897:7;26924:55;26963:5;26924:20;26936:7;;26924;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;26917:62;;26833:154;;;:::o;26999:156::-;27064:7;27091:56;27131:5;27091:21;27103:8;;27091:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;27084:63;;26999:156;;;:::o;5133:471::-;5191:7;5441:1;5436;:6;5432:47;;;5466:1;5459:8;;;;5432:47;5491:9;5507:1;5503;:5;5491:17;;5536:1;5531;5527;:5;;;;;;:10;5519:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5595:1;5588:8;;;5133:471;;;;;:::o;24630:275::-;24739:28;24761:5;24739:17;24751:4;24739:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24729:7;:38;;;;24791:20;24806:4;24791:10;;:14;;:20;;;;:::i;:::-;24778:10;:33;;;;24836:22;24852:5;24836:11;;:15;;:22;;;;:::i;:::-;24822:11;:36;;;;24879:18;24891:5;24879:7;;:11;;:18;;;;:::i;:::-;24869:7;:28;;;;24630:275;;;;:::o
Swarm Source
ipfs://73f86901a1aa4cffcf71a9e7dd062417efaaee28684c2922db496cfb23e14e4b
[ 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.