ERC-20
Overview
Max Total Supply
1,000,000,000 $SBORK
Holders
3
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.00000000000194167 $SBORKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Contract
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-26 */ /** */ // 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 Contract 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 = "Sonic Bouncy Pork"; string private _symbol = "$SBORK"; 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
[{"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
60806040526b033b2e3c9fd0803ce8000000600955600954600019816200002257fe5b0660001903600a556040518060400160405280601181526020017f536f6e696320426f756e637920506f726b000000000000000000000000000000815250600d90805190602001906200007792919062000378565b506040518060400160405280600681526020017f2453424f524b0000000000000000000000000000000000000000000000000000815250600e9080519060200190620000c592919062000378565b506012600f60006101000a81548160ff021916908360ff160217905550600060105560105460115560006012556012546013553480156200010557600080fd5b506000620001186200034760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620001cd6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002216200034f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002da6200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a36200041e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003bb57805160ff1916838001178555620003ec565b82800160010185558215620003ec579182015b82811115620003eb578251825591602001919060010190620003ce565b5b509050620003fb9190620003ff565b5090565b5b808211156200041a57600081600090555060010162000400565b5090565b6144e2806200042e6000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cac1d8d9ef9d2949c0587d2b69029a4f697b305132702de5415d23af00cbcd3e64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102315760003560e01c806370a0823111610130578063c0b0fda2116100b8578063dd62ed3e1161007c578063dd62ed3e14610a33578063ea2f0b3714610aab578063ec28438a14610aef578063f2fde38b14610b1d578063fb1eb14b14610b6157610231565b8063c0b0fda214610965578063cea2695814610983578063d49d5181146109b1578063d621e813146109cf578063db4cf1e0146109ef57610231565b80638da5cb5b116100ff5780638da5cb5b146107c857806395d89b41146107fc578063a457c2d71461087f578063a9059cbb146108e3578063af465a271461094757610231565b806370a08231146106ee578063715018a61461074657806388f82020146107505780638c0b5e22146107aa57610231565b80633685d419116101be5780634549b039116101825780634549b039146105b657806345e0b9d41461060457806352390c02146106225780635342acb4146106665780636bebaf97146106c057610231565b80633685d4191461048e57806339509351146104d25780633b124fe7146105365780633c9f861d14610554578063437823ec1461057257610231565b806318160ddd1161020557806318160ddd1461034557806318621fe51461036357806323b872dd146103a75780632d8381191461042b578063313ce5671461046d57610231565b806299d3861461023657806306fdde0314610240578063095ea7b3146102c357806313114a9d14610327575b600080fd5b61023e610b7f565b005b610248610c64565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028857808201518184015260208101905061026d565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f600480360360408110156102d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d06565b60405180821515815260200191505060405180910390f35b61032f610d24565b6040518082815260200191505060405180910390f35b61034d610d2e565b6040518082815260200191505060405180910390f35b6103a56004803603602081101561037957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d38565b005b610413600480360360608110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e5b565b60405180821515815260200191505060405180910390f35b6104576004803603602081101561044157600080fd5b8101908080359060200190929190505050611039565b6040518082815260200191505060405180910390f35b6104756110bd565b604051808260ff16815260200191505060405180910390f35b6104d0600480360360208110156104a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d4565b005b61051e600480360360408110156104e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061145e565b60405180821515815260200191505060405180910390f35b61053e611511565b6040518082815260200191505060405180910390f35b61055c611517565b6040518082815260200191505060405180910390f35b6105b46004803603602081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b6105ee600480360360408110156105cc57600080fd5b8101908080359060200190929190803515159060200190929190505050611644565b6040518082815260200191505060405180910390f35b61060c6116f9565b6040518082815260200191505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ff565b005b6106a86004803603602081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a19565b60405180821515815260200191505060405180910390f35b6106ec600480360360208110156106d657600080fd5b8101908080359060200190929190505050611a6f565b005b6107306004803603602081101561070457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc2565b6040518082815260200191505060405180910390f35b61074e611cad565b005b6107926004803603602081101561076657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e33565b60405180821515815260200191505060405180910390f35b6107b2611e89565b6040518082815260200191505060405180910390f35b6107d0611e8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610804611eb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610844578082015181840152602081019050610829565b50505050905090810190601f1680156108715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108cb6004803603604081101561089557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b60405180821515815260200191505060405180910390f35b61092f600480360360408110156108f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612027565b60405180821515815260200191505060405180910390f35b61094f612151565b6040518082815260200191505060405180910390f35b61096d612157565b6040518082815260200191505060405180910390f35b6109af6004803603602081101561099957600080fd5b810190808035906020019092919050505061215d565b005b6109b96122b0565b6040518082815260200191505060405180910390f35b6109d76122b6565b60405180821515815260200191505060405180910390f35b610a3160048036036020811015610a0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c9565b005b610a9560048036036040811015610a4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123ec565b6040518082815260200191505060405180910390f35b610aed60048036036020811015610ac157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612473565b005b610b1b60048036036020811015610b0557600080fd5b8101908080359060200190929190505050612596565b005b610b5f60048036036020811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612668565b005b610b69612873565b6040518082815260200191505060405180910390f35b610b87612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b5050505050905090565b6000610d1a610d13612879565b8484612881565b6001905092915050565b6000600b54905090565b6000600954905090565b610d40612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f015750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f6257601654821115610f61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b610f6d848484612a78565b61102e84610f79612879565b611029856040518060600160405280602881526020016143c760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fdf612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b600190509392505050565b6000600a54821115611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614334602a913960400191505060405180910390fd5b60006110a0612e5a565b90506110b58184612e8590919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6110dc612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661125b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60088054905081101561145a578173ffffffffffffffffffffffffffffffffffffffff166008828154811061128f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561144d576008600160088054905003815481106112eb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061132357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061141357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561145a565b808060010191505061125e565b5050565b600061150761146b612879565b84611502856005600061147c612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b612881565b6001905092915050565b60105481565b6000600c54905090565b611529612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009548311156116be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816116dd5760006116ce84612f57565b505050509050809150506116f3565b60006116e884612f57565b505050915050809150505b92915050565b600a5481565b611707612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561195b57611917600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611a77612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601254820190506014811115611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816010819055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5d57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ca8565b611ca5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611039565b90505b919050565b611cb5612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f505780601f10611f2557610100808354040283529160200191611f50565b820191906000526020600020905b815481529060010190602001808311611f3357829003601f168201915b5050505050905090565b600061201d611f67612879565b84612018856040518060600160405280602581526020016144886025913960056000611f91612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9092919063ffffffff16565b612881565b6001905092915050565b600060156000612035612879565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120d45750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213557601654821115612134576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806144616027913960400191505060405180910390fd5b5b612147612140612879565b8484612a78565b6001905092915050565b60095481565b60125481565b612165612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008160105401905060148111156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536c697070616765206d757374206265206c657373207468616e20323025000081525060200191505060405180910390fd5b816012819055505050565b60001981565b601460009054906101000a900460ff1681565b6122d1612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61247b612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61259e612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461265e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b612670612879565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061435e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061443d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561298d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143846022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806144186025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806143116023913960400191505060405180910390fd5b60008111612bdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143ef6029913960400191505060405180910390fd5b601460009054906101000a900460ff16612cd757612bf9611e8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612c645750612c35611e8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7472616e736665723a207472616465206e6f7420656e61626c6564000000000081525060200191505060405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8857600090505b612d9484848484612fa9565b50505050565b6000838311158290612e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0c578082015181840152602081019050612df1565b50505050905090810190601f168015612e395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000612e676132ba565b91509150612e7e8183612e8590919063ffffffff16565b9250505090565b6000612ec783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061354b565b905092915050565b600080828401905083811015612f4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000612f6b88613611565b915091506000806000612f868b85612f81612e5a565b613665565b925092509250828282878799509950995099509950505050505091939590929450565b80612fb757612fb66136fb565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561306f5761306a84848461373e565b6132a6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131125750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613127576131228484846139c0565b6132a5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131cb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131e0576131db848484613c42565b6132a4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132825750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561329757613292848484613e2f565b6132a3565b6132a2848484613c42565b5b5b5b5b806132b4576132b3614146565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561350e578260036000600884815481106132ed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806133d4575081600460006008848154811061336c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156133eb57600a5460095494509450505050613547565b61347460036000600884815481106133ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461415a90919063ffffffff16565b92506134ff600460006008848154811061348a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361415a90919063ffffffff16565b915080806001019150506132ce565b50613526600954600a54612e8590919063ffffffff16565b82101561353e57600a54600954935093505050613547565b81819350935050505b9091565b600080831182906135f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135bc5780820151818401526020810190506135a1565b50505050905090810190601f1680156135e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161360357fe5b049050809150509392505050565b600080600061361f846141a4565b9050600061362c856141d5565b9050600061365582613647858961415a90919063ffffffff16565b61415a90919063ffffffff16565b9050808394509450505050915091565b60008060008061367e858861420690919063ffffffff16565b90506000613695868861420690919063ffffffff16565b905060006136a2896141d5565b905060006136b9888361420690919063ffffffff16565b905060006136e2826136d4868861415a90919063ffffffff16565b61415a90919063ffffffff16565b9050848185975097509750505050505093509350939050565b600060105414801561370f57506000601254145b156137195761373c565b601054601181905550601254601381905550600060108190555060006012819055505b565b600080600080600061374f86612f57565b945094509450945094506137ab86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061384085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d584600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613923876141d5565b90506000613941613932612e5a565b8361420690919063ffffffff16565b905061394f8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060006139d186612f57565b94509450945094509450613a2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac282600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b5784600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ba5876141d5565b90506000613bc3613bb4612e5a565b8361420690919063ffffffff16565b9050613bd18584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613c5386612f57565b94509450945094509450613caf85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4484600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613d92876141d5565b90506000613db0613da1612e5a565b8361420690919063ffffffff16565b9050613dbe8584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b6000806000806000613e4086612f57565b94509450945094509450613e9c86600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3185600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461415a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fc682600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061405b84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ecf90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006140a9876141d5565b905060006140c76140b8612e5a565b8361420690919063ffffffff16565b90506140d58584838561428c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b601154601081905550601354601281905550565b600061419c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d9a565b905092915050565b60006141ce60646141c06010548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b60006141ff60646141f16012548561420690919063ffffffff16565b612e8590919063ffffffff16565b9050919050565b6000808314156142195760009050614286565b600082840290508284828161422a57fe5b0414614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a66021913960400191505060405180910390fd5b809150505b92915050565b6142b3826142a586600a5461415a90919063ffffffff16565b61415a90919063ffffffff16565b600a819055506142ce83600b54612ecf90919063ffffffff16565b600b819055506142e981600c54612ecf90919063ffffffff16565b600c819055506143048160095461415a90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e7445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cac1d8d9ef9d2949c0587d2b69029a4f697b305132702de5415d23af00cbcd3e64736f6c634300060c0033
Deployed Bytecode Sourcemap
16773:14855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31537:80;;;:::i;:::-;;18128:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19892:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21170:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18405:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19279:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20061:470;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21807:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18314:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22409:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20539:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17591:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21269:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23654:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21365:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17328:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22068:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27258:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23899:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18508:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16215:148;;;:::i;:::-;;21042:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18899:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15572:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18219:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20765:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19399:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17274:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17678:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24126:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17226:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17764:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19158:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19741:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23777:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18976:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16518:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17383:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31537:80;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31605:4:::1;31590:12;;:19;;;;;;;;;;;;;;;;;;31537:80::o:0;18128:83::-;18165:13;18198:5;18191:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18128:83;:::o;19892:161::-;19967:4;19984:39;19993:12;:10;:12::i;:::-;20007:7;20016:6;19984:8;:39::i;:::-;20041:4;20034:11;;19892:161;;;;:::o;21170:87::-;21212:7;21239:10;;21232:17;;21170:87;:::o;18405:95::-;18458:7;18485;;18478:14;;18405:95;:::o;19279:112::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19378:5:::1;19346:20;:29;19367:7;19346:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19279:112:::0;:::o;20061:470::-;20159:4;20177:20;:28;20198:6;20177:28;;;;;;;;;;;;;;;;;;;;;;;;;20176:29;:65;;;;;20210:20;:31;20231:9;20210:31;;;;;;;;;;;;;;;;;;;;;;;;;20209:32;20176:65;20172:163;;;20272:11;;20262:6;:21;;20254:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20172:163;20341:36;20351:6;20359:9;20370:6;20341:9;:36::i;:::-;20384:121;20393:6;20401:12;:10;:12::i;:::-;20415:89;20453:6;20415:89;;;;;;;;;;;;;;;;;:11;:19;20427:6;20415:19;;;;;;;;;;;;;;;:33;20435:12;:10;:12::i;:::-;20415:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20384:8;:121::i;:::-;20519:4;20512:11;;20061:470;;;;;:::o;21807:253::-;21873:7;21912;;21901;:18;;21893:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21977:19;22000:10;:8;:10::i;:::-;21977:33;;22028:24;22040:11;22028:7;:11;;:24;;;;:::i;:::-;22021:31;;;21807:253;;;:::o;18314:83::-;18355:5;18380:9;;;;;;;;;;;18373:16;;18314:83;:::o;22409:479::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22491:11:::1;:20;22503:7;22491:20;;;;;;;;;;;;;;;;;;;;;;;;;22483:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22559:9;22554:327;22578:9;:16;;;;22574:1;:20;22554:327;;;22636:7;22620:23;;:9;22630:1;22620:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22616:254;;;22679:9;22708:1;22689:9;:16;;;;:20;22679:31;;;;;;;;;;;;;;;;;;;;;;;;;22664:9;22674:1;22664:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22748:1;22729:7;:16;22737:7;22729:16;;;;;;;;;;;;;;;:20;;;;22791:5;22768:11;:20;22780:7;22768:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22815:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22849:5;;22616:254;22596:3;;;;;;;22554:327;;;;22409:479:::0;:::o;20539:218::-;20627:4;20644:83;20653:12;:10;:12::i;:::-;20667:7;20676:50;20715:10;20676:11;:25;20688:12;:10;:12::i;:::-;20676:25;;;;;;;;;;;;;;;:34;20702:7;20676:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20644:8;:83::i;:::-;20745:4;20738:11;;20539:218;;;;:::o;17591:26::-;;;;:::o;21269:88::-;21311:7;21338:11;;21331:18;;21269:88;:::o;23654:111::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23753:4:::1;23723:18;:27;23742:7;23723:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23654:111:::0;:::o;21365:434::-;21455:7;21494;;21483;:18;;21475:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21553:17;21548:244;;21588:15;21611:19;21622:7;21611:10;:19::i;:::-;21587:43;;;;;;21652:7;21645:14;;;;;21548:244;21694:23;21724:19;21735:7;21724:10;:19::i;:::-;21692:51;;;;;;21765:15;21758:22;;;21365:434;;;;;:::o;17328:48::-;;;;:::o;22068:333::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22151:11:::1;:20;22163:7;22151:20;;;;;;;;;;;;;;;;;;;;;;;;;22150:21;22142:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22236:1;22217:7;:16;22225:7;22217:16;;;;;;;;;;;;;;;;:20;22214:108;;;22273:37;22293:7;:16;22301:7;22293:16;;;;;;;;;;;;;;;;22273:19;:37::i;:::-;22254:7;:16;22262:7;22254:16;;;;;;;;;;;;;;;:56;;;;22214:108;22355:4;22332:11;:20;22344:7;22332:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22370:9;22385:7;22370:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22068:333:::0;:::o;27258:123::-;27322:4;27346:18;:27;27365:7;27346:27;;;;;;;;;;;;;;;;;;;;;;;;;27339:34;;27258:123;;;:::o;23899:215::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23976:15:::1;24003:8;;23994:6;:17;23976:35;;24042:2;24031:7;:13;;24022:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24100:6;24090:7;:16;;;;15854:1;23899:215:::0;:::o;18508:198::-;18574:7;18598:11;:20;18610:7;18598:20;;;;;;;;;;;;;;;;;;;;;;;;;18594:49;;;18627:7;:16;18635:7;18627:16;;;;;;;;;;;;;;;;18620:23;;;;18594:49;18661:37;18681:7;:16;18689:7;18681:16;;;;;;;;;;;;;;;;18661:19;:37::i;:::-;18654:44;;18508:198;;;;:::o;16215:148::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16322:1:::1;16285:40;;16306:6;::::0;::::1;;;;;;;;16285:40;;;;;;;;;;;;16353:1;16336:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16215:148::o:0;21042:120::-;21110:4;21134:11;:20;21146:7;21134:20;;;;;;;;;;;;;;;;;;;;;;;;;21127:27;;21042:120;;;:::o;18899:26::-;;;;:::o;15572:79::-;15610:7;15637:6;;;;;;;;;;;15630:13;;15572:79;:::o;18219:87::-;18258:13;18291:7;18284:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18219:87;:::o;20765:269::-;20858:4;20875:129;20884:12;:10;:12::i;:::-;20898:7;20907:96;20946:15;20907:96;;;;;;;;;;;;;;;;;:11;:25;20919:12;:10;:12::i;:::-;20907:25;;;;;;;;;;;;;;;:34;20933:7;20907:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20875:8;:129::i;:::-;21022:4;21015:11;;20765:269;;;;:::o;19399:334::-;19477:4;19495:20;:34;19516:12;:10;:12::i;:::-;19495:34;;;;;;;;;;;;;;;;;;;;;;;;;19494:35;:71;;;;;19534:20;:31;19555:9;19534:31;;;;;;;;;;;;;;;;;;;;;;;;;19533:32;19494:71;19490:169;;;19596:11;;19586:6;:21;;19578:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19490:169;19665:42;19675:12;:10;:12::i;:::-;19689:9;19700:6;19665:9;:42::i;:::-;19721:4;19714:11;;19399:334;;;;:::o;17274:47::-;;;;:::o;17678:27::-;;;;:::o;24126:217::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24202:15:::1;24231:7;24220;;:18;24202:36;;24269:2;24258:7;:13;;24249:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24328:7;24317:8;:18;;;;15854:1;24126:217:::0;:::o;17226:41::-;17265:1;17256:11;17226:41;:::o;17764:24::-;;;;;;;;;;;;;:::o;19158:113::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19259:4:::1;19227:20;:29;19248:7;19227:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19158:113:::0;:::o;19741:143::-;19822:7;19849:11;:18;19861:5;19849:18;;;;;;;;;;;;;;;:27;19868:7;19849:27;;;;;;;;;;;;;;;;19842:34;;19741:143;;;;:::o;23777:110::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23874:5:::1;23844:18;:27;23863:7;23844:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23777:110:::0;:::o;18976:106::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19062:12:::1;19048:11;:26;;;;18976:106:::0;:::o;16518:244::-;15794:12;:10;:12::i;:::-;15784:22;;:6;;;;;;;;;;:22;;;15776:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16627:1:::1;16607:22;;:8;:22;;;;16599:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16717:8;16688:38;;16709:6;::::0;::::1;;;;;;;;16688:38;;;;;;;;;;;;16746:8;16737:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16518:244:::0;:::o;17383:25::-;;;;:::o;7980:106::-;8033:15;8068:10;8061:17;;7980:106;:::o;27389:337::-;27499:1;27482:19;;:5;:19;;;;27474:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27580:1;27561:21;;:7;:21;;;;27553:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27664:6;27634:11;:18;27646:5;27634:18;;;;;;;;;;;;;;;:27;27653:7;27634:27;;;;;;;;;;;;;;;:36;;;;27702:7;27686:32;;27695:5;27686:32;;;27711:6;27686:32;;;;;;;;;;;;;;;;;;27389:337;;;:::o;27734:896::-;27872:1;27856:18;;:4;:18;;;;27848:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27949:1;27935:16;;:2;:16;;;;27927:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28019:1;28010:6;:10;28002:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28092:12;;;;;;;;;;;28087:118;;28137:7;:5;:7::i;:::-;28129:15;;:4;:15;;;:32;;;;28154:7;:5;:7::i;:::-;28148:13;;:2;:13;;;28129:32;28121:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28087:118;28278:12;28293:4;28278:19;;28405:18;:24;28424:4;28405:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;28433:18;:22;28452:2;28433:22;;;;;;;;;;;;;;;;;;;;;;;;;28405:50;28402:96;;;28481:5;28471:15;;28402:96;28584:38;28599:4;28604:2;28607:6;28614:7;28584:14;:38::i;:::-;27734:896;;;;:::o;4390:192::-;4476:7;4509:1;4504;:6;;4512:12;4496:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4536:9;4552:1;4548;:5;4536:17;;4573:1;4566:8;;;4390:192;;;;;:::o;25814:163::-;25855:7;25876:15;25893;25912:19;:17;:19::i;:::-;25875:56;;;;25949:20;25961:7;25949;:11;;:20;;;;:::i;:::-;25942:27;;;;25814:163;:::o;5788:132::-;5846:7;5873:39;5877:1;5880;5873:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5866:46;;5788:132;;;;:::o;3487:181::-;3545:7;3565:9;3581:1;3577;:5;3565:17;;3606:1;3601;:6;;3593:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3659:1;3652:8;;;3487:181;;;;:::o;24634:366::-;24693:7;24702;24711;24720;24729;24750:23;24775:12;24791:20;24803:7;24791:11;:20::i;:::-;24749:62;;;;24823:15;24840:23;24865:12;24881:38;24893:7;24902:4;24908:10;:8;:10::i;:::-;24881:11;:38::i;:::-;24822:97;;;;;;24938:7;24947:15;24964:4;24970:15;24987:4;24930:62;;;;;;;;;;;;;;;24634:366;;;;;;;:::o;28717:834::-;28828:7;28824:40;;28850:14;:12;:14::i;:::-;28824:40;28889:11;:19;28901:6;28889:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28913:11;:22;28925:9;28913:22;;;;;;;;;;;;;;;;;;;;;;;;;28912:23;28889:46;28885:597;;;28952:48;28974:6;28982:9;28993:6;28952:21;:48::i;:::-;28885:597;;;29023:11;:19;29035:6;29023:19;;;;;;;;;;;;;;;;;;;;;;;;;29022:20;:46;;;;;29046:11;:22;29058:9;29046:22;;;;;;;;;;;;;;;;;;;;;;;;;29022:46;29018:464;;;29085:46;29105:6;29113:9;29124:6;29085:19;:46::i;:::-;29018:464;;;29154:11;:19;29166:6;29154:19;;;;;;;;;;;;;;;;;;;;;;;;;29153:20;:47;;;;;29178:11;:22;29190:9;29178:22;;;;;;;;;;;;;;;;;;;;;;;;;29177:23;29153:47;29149:333;;;29217:44;29235:6;29243:9;29254:6;29217:17;:44::i;:::-;29149:333;;;29283:11;:19;29295:6;29283:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;29306:11;:22;29318:9;29306:22;;;;;;;;;;;;;;;;;;;;;;;;;29283:45;29279:203;;;29345:48;29367:6;29375:9;29386:6;29345:21;:48::i;:::-;29279:203;;;29426:44;29444:6;29452:9;29463:6;29426:17;:44::i;:::-;29279:203;29149:333;29018:464;28885:597;29506:7;29502:41;;29528:15;:13;:15::i;:::-;29502:41;28717:834;;;;:::o;25985:561::-;26035:7;26044;26064:15;26082:7;;26064:25;;26100:15;26118:7;;26100:25;;26147:9;26142:289;26166:9;:16;;;;26162:1;:20;26142:289;;;26232:7;26208;:21;26216:9;26226:1;26216:12;;;;;;;;;;;;;;;;;;;;;;;;;26208:21;;;;;;;;;;;;;;;;:31;:66;;;;26267:7;26243;:21;26251:9;26261:1;26251:12;;;;;;;;;;;;;;;;;;;;;;;;;26243:21;;;;;;;;;;;;;;;;:31;26208:66;26204:97;;;26284:7;;26293;;26276:25;;;;;;;;;26204:97;26326:34;26338:7;:21;26346:9;26356:1;26346:12;;;;;;;;;;;;;;;;;;;;;;;;;26338:21;;;;;;;;;;;;;;;;26326:7;:11;;:34;;;;:::i;:::-;26316:44;;26385:34;26397:7;:21;26405:9;26415:1;26405:12;;;;;;;;;;;;;;;;;;;;;;;;;26397:21;;;;;;;;;;;;;;;;26385:7;:11;;:34;;;;:::i;:::-;26375:44;;26184:3;;;;;;;26142:289;;;;26455:20;26467:7;;26455;;:11;;:20;;;;:::i;:::-;26445:7;:30;26441:61;;;26485:7;;26494;;26477:25;;;;;;;;26441:61;26521:7;26530;26513:25;;;;;;25985:561;;;:::o;6416:278::-;6502:7;6534:1;6530;:5;6537:12;6522:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6561:9;6577:1;6573;:5;;;;;;6561:17;;6685:1;6678:8;;;6416:278;;;;;:::o;25008:302::-;25068:7;25077;25097:12;25112:24;25128:7;25112:15;:24::i;:::-;25097:39;;25147:16;25166:25;25183:7;25166:16;:25::i;:::-;25147:44;;25204:23;25230:31;25252:8;25230:17;25242:4;25230:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;25204:57;;25280:15;25297:4;25272:30;;;;;;;25008:302;;;:::o;25322:478::-;25417:7;25426;25435;25455:15;25473:24;25485:11;25473:7;:11;;:24;;;;:::i;:::-;25455:42;;25508:12;25523:21;25532:11;25523:4;:8;;:21;;;;:::i;:::-;25508:36;;25565:16;25584:25;25601:7;25584:16;:25::i;:::-;25565:44;;25620:16;25639:25;25652:11;25639:8;:12;;:25;;;;:::i;:::-;25620:44;;25685:23;25711:31;25733:8;25711:17;25723:4;25711:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;25685:57;;25761:7;25770:15;25787:4;25753:39;;;;;;;;;;;25322:478;;;;;;;:::o;26888:231::-;26945:1;26934:7;;:12;:29;;;;;26962:1;26950:8;;:13;26934:29;26931:42;;;26966:7;;26931:42;27011:7;;26993:15;:25;;;;27048:8;;27029:16;:27;;;;27087:1;27077:7;:11;;;;27110:1;27099:8;:12;;;;26888:231;:::o;30867:662::-;30970:15;30987:23;31012:12;31026:23;31051:12;31067:19;31078:7;31067:10;:19::i;:::-;30969:117;;;;;;;;;;31115:28;31135:7;31115;:15;31123:6;31115:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31097:7;:15;31105:6;31097:15;;;;;;;;;;;;;;;:46;;;;31172:28;31192:7;31172;:15;31180:6;31172:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31154:7;:15;31162:6;31154:15;;;;;;;;;;;;;;;:46;;;;31232:39;31255:15;31232:7;:18;31240:9;31232:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31211:7;:18;31219:9;31211:18;;;;;;;;;;;;;;;:60;;;;31295:16;31314:25;31331:7;31314:16;:25::i;:::-;31295:44;;31350:16;31369:24;31382:10;:8;:10::i;:::-;31369:8;:12;;:24;;;;:::i;:::-;31350:43;;31418;31430:4;31436;31442:8;31451;31418:11;:43::i;:::-;31494:9;31477:44;;31486:6;31477:44;;;31505:15;31477:44;;;;;;;;;;;;;;;;;;30867:662;;;;;;;;;;:::o;30186:667::-;30287:15;30304:23;30329:12;30343:23;30368:12;30384:19;30395:7;30384:10;:19::i;:::-;30286:117;;;;;;;;;;30432:28;30452:7;30432;:15;30440:6;30432:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30414:7;:15;30422:6;30414:15;;;;;;;;;;;;;;;:46;;;;30492:39;30515:15;30492:7;:18;30500:9;30492:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30471:7;:18;30479:9;30471:18;;;;;;;;;;;;;;;:60;;;;30563:39;30586:15;30563:7;:18;30571:9;30563:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30542:7;:18;30550:9;30542:18;;;;;;;;;;;;;;;:60;;;;30627:16;30646:25;30663:7;30646:16;:25::i;:::-;30627:44;;30682:16;30701:24;30714:10;:8;:10::i;:::-;30701:8;:12;;:24;;;;:::i;:::-;30682:43;;30742;30754:4;30760;30766:8;30775;30742:11;:43::i;:::-;30818:9;30801:44;;30810:6;30801:44;;;30829:15;30801:44;;;;;;;;;;;;;;;;;;30186:667;;;;;;;;;;:::o;29559:603::-;29658:15;29675:23;29700:12;29714:23;29739:12;29755:19;29766:7;29755:10;:19::i;:::-;29657:117;;;;;;;;;;29803:28;29823:7;29803;:15;29811:6;29803:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29785:7;:15;29793:6;29785:15;;;;;;;;;;;;;;;:46;;;;29863:39;29886:15;29863:7;:18;29871:9;29863:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29842:7;:18;29850:9;29842:18;;;;;;;;;;;;;;;:60;;;;29923:16;29942:25;29959:7;29942:16;:25::i;:::-;29923:44;;29978:16;29997:24;30010:10;:8;:10::i;:::-;29997:8;:12;;:24;;;;:::i;:::-;29978:43;;30041;30053:4;30059;30065:8;30074;30041:11;:43::i;:::-;30127:9;30110:44;;30119:6;30110:44;;;30138:15;30110:44;;;;;;;;;;;;;;;;;;29559:603;;;;;;;;;;:::o;22900:742::-;23003:15;23020:23;23045:12;23059:23;23084:12;23100:19;23111:7;23100:10;:19::i;:::-;23002:117;;;;;;;;;;23148:28;23168:7;23148;:15;23156:6;23148:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23130:7;:15;23138:6;23130:15;;;;;;;;;;;;;;;:46;;;;23205:28;23225:7;23205;:15;23213:6;23205:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23187:7;:15;23195:6;23187:15;;;;;;;;;;;;;;;:46;;;;23265:39;23288:15;23265:7;:18;23273:9;23265:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23244:7;:18;23252:9;23244:18;;;;;;;;;;;;;;;:60;;;;23336:39;23359:15;23336:7;:18;23344:9;23336:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23315:7;:18;23323:9;23315:18;;;;;;;;;;;;;;;:60;;;;23405:16;23424:25;23441:7;23424:16;:25::i;:::-;23405:44;;23460:16;23479:24;23492:10;:8;:10::i;:::-;23479:8;:12;;:24;;;;:::i;:::-;23460:43;;23531;23543:4;23549;23555:8;23564;23531:11;:43::i;:::-;23607:9;23590:44;;23599:6;23590:44;;;23618:15;23590:44;;;;;;;;;;;;;;;;;;22900:742;;;;;;;;;;:::o;27131:115::-;27185:15;;27175:7;:25;;;;27222:16;;27211:8;:27;;;;27131:115::o;3951:136::-;4009:7;4036:43;4040:1;4043;4036:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4029:50;;3951:136;;;;:::o;26554:154::-;26618:7;26645:55;26684:5;26645:20;26657:7;;26645;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;26638:62;;26554:154;;;:::o;26720:156::-;26785:7;26812:56;26852:5;26812:21;26824:8;;26812:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;26805:63;;26720:156;;;:::o;4841:471::-;4899:7;5149:1;5144;:6;5140:47;;;5174:1;5167:8;;;;5140:47;5199:9;5215:1;5211;:5;5199:17;;5244:1;5239;5235;:5;;;;;;:10;5227:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:1;5296:8;;;4841:471;;;;;:::o;24351:275::-;24460:28;24482:5;24460:17;24472:4;24460:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24450:7;:38;;;;24512:20;24527:4;24512:10;;:14;;:20;;;;:::i;:::-;24499:10;:33;;;;24557:22;24573:5;24557:11;;:15;;:22;;;;:::i;:::-;24543:11;:36;;;;24600:18;24612:5;24600:7;;:11;;:18;;;;:::i;:::-;24590:7;:28;;;;24351:275;;;;:::o
Swarm Source
ipfs://cac1d8d9ef9d2949c0587d2b69029a4f697b305132702de5415d23af00cbcd3e
[ 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.