Overview
FTM Balance
0 FTM
FTM Value
$0.00More Info
Private Name Tags
ContractCreator:
TokenTracker
Sponsored
Latest 25 from a total of 1,205 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve | 72271530 | 111 days ago | IN | 0 FTM | 0.00160661 | ||||
Approve | 60208045 | 346 days ago | IN | 0 FTM | 0.00316581 | ||||
Approve | 59460127 | 355 days ago | IN | 0 FTM | 0.0037002 | ||||
Transfer | 51111001 | 496 days ago | IN | 0 FTM | 0.00901942 | ||||
Approve | 50396901 | 512 days ago | IN | 0 FTM | 0.13383252 | ||||
Approve | 47710879 | 551 days ago | IN | 0 FTM | 0.00009254 | ||||
Approve | 40322183 | 656 days ago | IN | 0 FTM | 0.00065861 | ||||
Approve | 40322149 | 656 days ago | IN | 0 FTM | 0.00065875 | ||||
Approve | 39781419 | 663 days ago | IN | 0 FTM | 0.0001899 | ||||
Approve | 39341877 | 669 days ago | IN | 0 FTM | 0.00007932 | ||||
Approve | 34339408 | 735 days ago | IN | 0 FTM | 0.00807185 | ||||
Approve | 30646814 | 777 days ago | IN | 0 FTM | 0.00239211 | ||||
Approve | 30471452 | 778 days ago | IN | 0 FTM | 0.00606259 | ||||
Approve | 30281681 | 780 days ago | IN | 0 FTM | 0.00620701 | ||||
Approve | 29549313 | 788 days ago | IN | 0 FTM | 0.0050568 | ||||
Approve | 27829848 | 806 days ago | IN | 0 FTM | 0.0050492 | ||||
Approve | 26984340 | 814 days ago | IN | 0 FTM | 0.01702908 | ||||
Approve | 25917857 | 825 days ago | IN | 0 FTM | 0.00267881 | ||||
Approve | 25442300 | 830 days ago | IN | 0 FTM | 0.00204741 | ||||
Approve | 22036515 | 865 days ago | IN | 0 FTM | 0.0031637 | ||||
Approve | 21366745 | 872 days ago | IN | 0 FTM | 0.01476118 | ||||
Approve | 20566658 | 880 days ago | IN | 0 FTM | 0.00685855 | ||||
Approve | 20441143 | 882 days ago | IN | 0 FTM | 0.00282586 | ||||
Approve | 20441112 | 882 days ago | IN | 0 FTM | 0.00491759 | ||||
Approve | 20441061 | 882 days ago | IN | 0 FTM | 0.00532431 |
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
7904330 | 1036 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
Phantagma
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-05-27 */ // SPDX-License-Identifier: MIT /** PHANTAGMA token features : 6% redistribution to all holders 6% burn 1% collected for charity 3% fee to add to the liquidity pool 50% of the total supply burned at launch */ pragma solidity ^0.8.2; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(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 Interface of the BEP20 standard as defined in the EIP. */ interface IBEP20 { /** * @dev Returns the amount of tokens in existence. */ 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; } } /** * @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 public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @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 Phantagma is Context, IBEP20, 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 _isExcluded; mapping (address => bool) private _isCharity; address[] private _excluded; string private _NAME; string private _SYMBOL; uint256 private _DECIMALS; address public FeeAddress; uint256 private _MAX = ~uint256(0); uint256 private _DECIMALFACTOR; uint256 private _GRANULARITY = 100; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tCharityTotal; uint256 public _TAX_FEE; uint256 public _BURN_FEE; uint256 public _CHARITY_FEE; // Track original fees to bypass fees for charity account uint256 private ORIG_TAX_FEE; uint256 private ORIG_BURN_FEE; uint256 private ORIG_CHARITY_FEE; constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, uint256 _txFee,uint256 _burnFee,uint256 _charityFee,address _FeeAddress,address tokenOwner) { _NAME = _name; _SYMBOL = _symbol; _DECIMALS = _decimals; _DECIMALFACTOR = 10 ** uint256(_DECIMALS); _tTotal =_supply * _DECIMALFACTOR; _rTotal = (_MAX - (_MAX % _tTotal)); _TAX_FEE = _txFee* 100; _BURN_FEE = _burnFee * 100; _CHARITY_FEE = _charityFee* 100; ORIG_TAX_FEE = _TAX_FEE; ORIG_BURN_FEE = _BURN_FEE; ORIG_CHARITY_FEE = _CHARITY_FEE; _isCharity[_FeeAddress] = true; FeeAddress = _FeeAddress; _owner = tokenOwner; _rOwned[tokenOwner] = _rTotal; emit Transfer(address(0),tokenOwner, _tTotal); } function name() public view returns (string memory) { return _NAME; } function symbol() public view returns (string memory) { return _SYMBOL; } function decimals() public view returns (uint256) { return _DECIMALS; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "TOKEN20: 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, "TOKEN20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function isCharity(address account) public view returns (bool) { return _isCharity[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function totalBurn() public view returns (uint256) { return _tBurnTotal; } function totalCharity() public view returns (uint256) { return _tCharityTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(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 setAsCharityAccount(address account) external onlyOwner() { require(!_isCharity[account], "Account is already charity account"); _isCharity[account] = true; FeeAddress = account; } function burn(uint256 _value) public{ _burn(msg.sender, _value); } function updateFee(uint256 _txFee,uint256 _burnFee,uint256 _charityFee) onlyOwner() public{ _TAX_FEE = _txFee* 100; _BURN_FEE = _burnFee * 100; _CHARITY_FEE = _charityFee* 100; ORIG_TAX_FEE = _TAX_FEE; ORIG_BURN_FEE = _BURN_FEE; ORIG_CHARITY_FEE = _CHARITY_FEE; } function _burn(address _who, uint256 _value) internal { require(_value <= _rOwned[_who]); _rOwned[_who] = _rOwned[_who].sub(_value); _tTotal = _tTotal.sub(_value); emit Transfer(_who, address(0), _value); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "TOKEN20: approve from the zero address"); require(spender != address(0), "TOKEN20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "TOKEN20: transfer from the zero address"); require(recipient != address(0), "TOKEN20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Remove fees for transfers to and from charity account or to excluded account bool takeFee = true; if (_isCharity[sender] || _isCharity[recipient] || _isExcluded[recipient]) { takeFee = false; } if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _standardTransferContent(sender, recipient, rAmount, rTransferAmount); _sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount); _sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount); _sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount); _sendToCharity(tCharity, sender); _reflectFee(rFee, rBurn, rCharity, tFee, tBurn, tCharity); emit Transfer(sender, recipient, tTransferAmount); } function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 rCharity, uint256 tFee, uint256 tBurn, uint256 tCharity) private { _rTotal = _rTotal.sub(rFee).sub(rBurn).sub(rCharity); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tCharityTotal = _tCharityTotal.add(tCharity); _tTotal = _tTotal.sub(tBurn); emit Transfer(address(this), address(0), tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tCharity) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _CHARITY_FEE); uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tCharity); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tCharity, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tCharity); } function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 charityFee) private view returns (uint256, uint256, uint256) { uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100); uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100); uint256 tCharity = ((tAmount.mul(charityFee)).div(_GRANULARITY)).div(100); return (tFee, tBurn, tCharity); } function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) private pure returns (uint256) { return tAmount.sub(tFee).sub(tBurn).sub(tCharity); } function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); return (rAmount, rFee); } function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tCharity, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn.mul(currentRate); uint256 rCharity = tCharity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rCharity); return rTransferAmount; } 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 _sendToCharity(uint256 tCharity, address sender) private { uint256 currentRate = _getRate(); uint256 rCharity = tCharity.mul(currentRate); _rOwned[FeeAddress] = _rOwned[FeeAddress].add(rCharity); _tOwned[FeeAddress] = _tOwned[FeeAddress].add(tCharity); emit Transfer(sender, FeeAddress, tCharity); } function removeAllFee() private { if(_TAX_FEE == 0 && _BURN_FEE == 0 && _CHARITY_FEE == 0) return; ORIG_TAX_FEE = _TAX_FEE; ORIG_BURN_FEE = _BURN_FEE; ORIG_CHARITY_FEE = _CHARITY_FEE; _TAX_FEE = 0; _BURN_FEE = 0; _CHARITY_FEE = 0; } function restoreAllFee() private { _TAX_FEE = ORIG_TAX_FEE; _BURN_FEE = ORIG_BURN_FEE; _CHARITY_FEE = ORIG_CHARITY_FEE; } function _getTaxFee() private view returns(uint256) { return _TAX_FEE; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","type":"uint256"},{"internalType":"address","name":"_FeeAddress","type":"address"},{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"FeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_CHARITY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isCharity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setAsCharityAccount","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":"totalCharity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_charityFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600019600b556064600d553480156200001c57600080fd5b50604051620052e5380380620052e5833981810160405281019062000042919062000411565b88600790805190602001906200005a929190620002c1565b50876008908051906020019062000073929190620002c1565b5086600981905550600954600a6200008c919062000604565b600c81905550600c5486620000a2919062000741565b600e81905550600e54600b54620000ba9190620008bd565b600b54620000c99190620007a2565b600f81905550606485620000de919062000741565b601381905550606484620000f3919062000741565b60148190555060648362000108919062000741565b6015819055506013546016819055506014546017819055506015546018819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f54600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620002aa91906200052d565b60405180910390a350505050505050505062000a03565b828054620002cf9062000851565b90600052602060002090601f016020900481019282620002f357600085556200033f565b82601f106200030e57805160ff19168380011785556200033f565b828001600101855582156200033f579182015b828111156200033e57825182559160200191906001019062000321565b5b5090506200034e919062000352565b5090565b5b808211156200036d57600081600090555060010162000353565b5090565b600062000388620003828462000573565b6200054a565b905082815260208101848484011115620003a157600080fd5b620003ae8482856200081b565b509392505050565b600081519050620003c781620009cf565b92915050565b600082601f830112620003df57600080fd5b8151620003f184826020860162000371565b91505092915050565b6000815190506200040b81620009e9565b92915050565b60008060008060008060008060006101208a8c0312156200043157600080fd5b60008a015167ffffffffffffffff8111156200044c57600080fd5b6200045a8c828d01620003cd565b99505060208a015167ffffffffffffffff8111156200047857600080fd5b620004868c828d01620003cd565b9850506040620004998c828d01620003fa565b9750506060620004ac8c828d01620003fa565b9650506080620004bf8c828d01620003fa565b95505060a0620004d28c828d01620003fa565b94505060c0620004e58c828d01620003fa565b93505060e0620004f88c828d01620003b6565b9250506101006200050c8c828d01620003b6565b9150509295985092959850929598565b620005278162000811565b82525050565b60006020820190506200054460008301846200051c565b92915050565b60006200055662000569565b905062000564828262000887565b919050565b6000604051905090565b600067ffffffffffffffff82111562000591576200059062000982565b5b6200059c82620009b1565b9050602081019050919050565b6000808291508390505b6001851115620005fb57808604811115620005d357620005d2620008f5565b5b6001851615620005e35780820291505b8081029050620005f385620009c2565b9450620005b3565b94509492505050565b6000620006118262000811565b91506200061e8362000811565b92506200064d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000655565b905092915050565b6000826200066757600190506200073a565b816200067757600090506200073a565b81600181146200069057600281146200069b57620006d1565b60019150506200073a565b60ff841115620006b057620006af620008f5565b5b8360020a915084821115620006ca57620006c9620008f5565b5b506200073a565b5060208310610133831016604e8410600b84101617156200070b5782820a905083811115620007055762000704620008f5565b5b6200073a565b6200071a8484846001620005a9565b92509050818404811115620007345762000733620008f5565b5b81810290505b9392505050565b60006200074e8262000811565b91506200075b8362000811565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007975762000796620008f5565b5b828202905092915050565b6000620007af8262000811565b9150620007bc8362000811565b925082821015620007d257620007d1620008f5565b5b828203905092915050565b6000620007ea82620007f1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200083b5780820151818401526020810190506200081e565b838111156200084b576000848401525b50505050565b600060028204905060018216806200086a57607f821691505b6020821081141562000881576200088062000953565b5b50919050565b6200089282620009b1565b810181811067ffffffffffffffff82111715620008b457620008b362000982565b5b80604052505050565b6000620008ca8262000811565b9150620008d78362000811565b925082620008ea57620008e962000924565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b620009da81620007dd565b8114620009e657600080fd5b50565b620009f48162000811565b811462000a0057600080fd5b50565b6148d28062000a136000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637b7e8bac1161010f578063cba0e996116100a2578063f2cc0c1811610071578063f2cc0c18146105e9578063f2fde38b14610605578063f84354f114610621578063fc061a4f1461063d576101f0565b8063cba0e9961461053b578063d608b3b21461056b578063dd62ed3e14610589578063e81ffbef146105b9576101f0565b8063a9059cbb116100de578063a9059cbb146104b1578063ae9dd5e0146104e1578063b2bdfa7b146104ff578063b58624281461051d576101f0565b80637b7e8bac146104275780638da5cb5b1461044557806395d89b4114610463578063a457c2d714610481576101f0565b80633bd5d17311610187578063457bdf6c11610156578063457bdf6c146103b357806370a08231146103cf578063715018a6146103ff57806377ef799314610409576101f0565b80633bd5d1731461032d5780633c9f861d1461034957806342966c68146103675780634549b03914610383576101f0565b806323b872dd116101c357806323b872dd1461027f5780632d838119146102af578063313ce567146102df57806339509351146102fd576101f0565b806306fdde03146101f5578063095ea7b31461021357806313114a9d1461024357806318160ddd14610261575b600080fd5b6101fd610659565b60405161020a9190613f8a565b60405180910390f35b61022d60048036038101906102289190613c14565b6106eb565b60405161023a9190613f6f565b60405180910390f35b61024b610709565b604051610258919061416c565b60405180910390f35b610269610713565b604051610276919061416c565b60405180910390f35b61029960048036038101906102949190613bc5565b61071d565b6040516102a69190613f6f565b60405180910390f35b6102c960048036038101906102c49190613c50565b6107f6565b6040516102d6919061416c565b60405180910390f35b6102e7610864565b6040516102f4919061416c565b60405180910390f35b61031760048036038101906103129190613c14565b61086e565b6040516103249190613f6f565b60405180910390f35b61034760048036038101906103429190613c50565b610921565b005b610351610a9d565b60405161035e919061416c565b60405180910390f35b610381600480360381019061037c9190613c50565b610aa7565b005b61039d60048036038101906103989190613c79565b610ab4565b6040516103aa919061416c565b60405180910390f35b6103cd60048036038101906103c89190613b60565b610b3a565b005b6103e960048036038101906103e49190613b60565b610cf8565b6040516103f6919061416c565b60405180910390f35b610407610de3565b005b610411610f36565b60405161041e919061416c565b60405180910390f35b61042f610f3c565b60405161043c9190613f54565b60405180910390f35b61044d610f62565b60405161045a9190613f54565b60405180910390f35b61046b610f8b565b6040516104789190613f8a565b60405180910390f35b61049b60048036038101906104969190613c14565b61101d565b6040516104a89190613f6f565b60405180910390f35b6104cb60048036038101906104c69190613c14565b6110ea565b6040516104d89190613f6f565b60405180910390f35b6104e9611108565b6040516104f6919061416c565b60405180910390f35b61050761110e565b6040516105149190613f54565b60405180910390f35b610525611132565b604051610532919061416c565b60405180910390f35b61055560048036038101906105509190613b60565b611138565b6040516105629190613f6f565b60405180910390f35b61057361118e565b604051610580919061416c565b60405180910390f35b6105a3600480360381019061059e9190613b89565b611198565b6040516105b0919061416c565b60405180910390f35b6105d360048036038101906105ce9190613b60565b61121f565b6040516105e09190613f6f565b60405180910390f35b61060360048036038101906105fe9190613b60565b611275565b005b61061f600480360381019061061a9190613b60565b611529565b005b61063b60048036038101906106369190613b60565b6116eb565b005b61065760048036038101906106529190613cb5565b611ad2565b005b60606007805461066890614333565b80601f016020809104026020016040519081016040528092919081815260200182805461069490614333565b80156106e15780601f106106b6576101008083540402835291602001916106e1565b820191906000526020600020905b8154815290600101906020018083116106c457829003601f168201915b5050505050905090565b60006106ff6106f8611bc0565b8484611bc8565b6001905092915050565b6000601054905090565b6000600e54905090565b600061072a848484611d93565b6107eb84610736611bc0565b6107e6856040518060600160405280602a8152602001614873602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079c611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122cc9092919063ffffffff16565b611bc8565b600190509392505050565b6000600f5482111561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490613fec565b60405180910390fd5b6000610847612330565b905061085c818461235b90919063ffffffff16565b915050919050565b6000600954905090565b600061091761087b611bc0565b84610912856003600061088c611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b611bc8565b6001905092915050565b600061092b611bc0565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b19061414c565b60405180910390fd5b60006109c583612403565b5050505050509050610a1f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7781600f5461249190919063ffffffff16565b600f81905550610a92836010546123a590919063ffffffff16565b601081905550505050565b6000601154905090565b610ab133826124db565b50565b6000600e54831115610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af29061408c565b60405180910390fd5b81610b1c576000610b0b84612403565b505050505050905080915050610b34565b6000610b2784612403565b5050505050915050809150505b92915050565b610b42611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc6906140cc565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c539061406c565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610dde565b610ddb600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f6565b90505b919050565b610deb611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f906140cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610f9a90614333565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc690614333565b80156110135780601f10610fe857610100808354040283529160200191611013565b820191906000526020600020905b815481529060010190602001808311610ff657829003601f168201915b5050505050905090565b60006110e061102a611bc0565b846110db8560405180606001604052806027815260200161484c6027913960036000611054611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122cc9092919063ffffffff16565b611bc8565b6001905092915050565b60006110fe6110f7611bc0565b8484611d93565b6001905092915050565b60155481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601254905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61127d611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906140cc565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e9061404c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561146b57611427600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f6565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611531611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b5906140cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116259061400c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116f3611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611777906140cc565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661180c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118039061404c565b60405180910390fd5b60005b600680549050811015611ace578173ffffffffffffffffffffffffffffffffffffffff166006828154811061186d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611abb57600660016006805490506118c89190614284565b815481106118ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611964577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611a81577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ace565b8080611ac690614365565b91505061180f565b5050565b611ada611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e906140cc565b60405180910390fd5b606483611b74919061422a565b601381905550606482611b87919061422a565b601481905550606481611b9a919061422a565b601581905550601354601681905550601454601781905550601554601881905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f9061412c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f9061410c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d86919061416c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613fac565b60405180910390fd5b60008111611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906140ec565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f5d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fb15750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fbb57600090505b80611fc957611fc8612641565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561206c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120815761207c8484846126a3565b6122b8565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121245750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561213957612134848484612798565b6122b7565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121dd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121f2576121ed84848461288d565b6122b6565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122945750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a9576122a4848484612981565b6122b5565b6122b484848461288d565b5b5b5b5b806122c6576122c5612a77565b5b50505050565b6000838311158290612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9190613f8a565b60405180910390fd5b50600083856123239190614284565b9050809150509392505050565b600080600061233d612a94565b91509150612354818361235b90919063ffffffff16565b9250505090565b600061239d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ddf565b905092915050565b60008082846123b491906141a3565b9050838110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09061402c565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806124248b601354601454601554612e42565b92509250925060006124388c858585612f16565b90506000612444612330565b90506000806124548f8885612f59565b9150915060006124678383898988612f9a565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b60006124d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122cc565b905092915050565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561252757600080fd5b61257981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d181600e5461249190919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612635919061416c565b60405180910390a35050565b600060135414801561265557506000601454145b801561266357506000601554145b1561266d576126a1565b6013546016819055506014546017819055506015546018819055506000601381905550600060148190555060006015819055505b565b60006126ad612330565b905060008060008060008060006126c389612403565b965096509650965096509650965060006126e6898461301390919063ffffffff16565b905060006126fd8a8461301390919063ffffffff16565b905061270c8d8d8d8c8c61308e565b612716838e613254565b6127248783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612781919061416c565b60405180910390a350505050505050505050505050565b60006127a2612330565b905060008060008060008060006127b889612403565b965096509650965096509650965060006127db898461301390919063ffffffff16565b905060006127f28a8461301390919063ffffffff16565b90506128018d8d888c8c6135cf565b61280b838e613254565b6128198783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612876919061416c565b60405180910390a350505050505050505050505050565b6000612897612330565b905060008060008060008060006128ad89612403565b965096509650965096509650965060006128d0898461301390919063ffffffff16565b905060006128e78a8461301390919063ffffffff16565b90506128f58d8d8b8b613795565b6128ff838e613254565b61290d8783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161296a919061416c565b60405180910390a350505050505050505050505050565b600061298b612330565b905060008060008060008060006129a189612403565b965096509650965096509650965060006129c4898461301390919063ffffffff16565b905060006129db8a8461301390919063ffffffff16565b90506129eb8d8d8d8c8a8d6138c5565b6129f5838e613254565b612a038783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612a60919061416c565b60405180910390a350505050505050505050505050565b601654601381905550601754601481905550601854601581905550565b6000806000600f5490506000600e54905060005b600680549050811015612da257826001600060068481548110612af4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612c085750816002600060068481548110612ba0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612c1f57600f54600e5494509450505050612ddb565b612cd56001600060068481548110612c60577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461249190919063ffffffff16565b9250612d8d6002600060068481548110612d18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361249190919063ffffffff16565b91508080612d9a90614365565b915050612aa8565b50612dba600e54600f5461235b90919063ffffffff16565b821015612dd257600f54600e54935093505050612ddb565b81819350935050505b9091565b60008083118290612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9190613f8a565b60405180910390fd5b5060008385612e3591906141f9565b9050809150509392505050565b600080600080612e826064612e74600d54612e668b8d61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90506000612ec06064612eb2600d54612ea48b8e61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90506000612efe6064612ef0600d54612ee28b8f61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612f4f82612f4185612f33888a61249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b9050949350505050565b6000806000612f71848761301390919063ffffffff16565b90506000612f88858761301390919063ffffffff16565b90508181935093505050935093915050565b600080612fb0838661301390919063ffffffff16565b90506000612fc7848661301390919063ffffffff16565b9050600061300282612ff485612fe68c8e61249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b905080935050505095945050505050565b6000808314156130265760009050613088565b60008284613034919061422a565b905082848261304391906141f9565b14613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906140ac565b60405180910390fd5b809150505b92915050565b6130e083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317582600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320a81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600061325e612330565b90506000613275828561301390919063ffffffff16565b90506132eb8160016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133c48460026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516134a8919061416c565b60405180910390a350505050565b6134ef846134e1876134d38a600f5461249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b600f8190555061350a836010546123a590919063ffffffff16565b601081905550613525826011546123a590919063ffffffff16565b601181905550613540816012546123a590919063ffffffff16565b60128190555061355b82600e5461249190919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135bf919061416c565b60405180910390a3505050505050565b61362182600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136b683600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374b81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6137e782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061387c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b61391784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139ac83600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4182600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad681600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081359050613b3081614806565b92915050565b600081359050613b458161481d565b92915050565b600081359050613b5a81614834565b92915050565b600060208284031215613b7257600080fd5b6000613b8084828501613b21565b91505092915050565b60008060408385031215613b9c57600080fd5b6000613baa85828601613b21565b9250506020613bbb85828601613b21565b9150509250929050565b600080600060608486031215613bda57600080fd5b6000613be886828701613b21565b9350506020613bf986828701613b21565b9250506040613c0a86828701613b4b565b9150509250925092565b60008060408385031215613c2757600080fd5b6000613c3585828601613b21565b9250506020613c4685828601613b4b565b9150509250929050565b600060208284031215613c6257600080fd5b6000613c7084828501613b4b565b91505092915050565b60008060408385031215613c8c57600080fd5b6000613c9a85828601613b4b565b9250506020613cab85828601613b36565b9150509250929050565b600080600060608486031215613cca57600080fd5b6000613cd886828701613b4b565b9350506020613ce986828701613b4b565b9250506040613cfa86828701613b4b565b9150509250925092565b613d0d816142b8565b82525050565b613d1c816142ca565b82525050565b6000613d2d82614187565b613d378185614192565b9350613d47818560208601614300565b613d508161443b565b840191505092915050565b6000613d68602583614192565b9150613d738261444c565b604082019050919050565b6000613d8b602783614192565b9150613d968261449b565b604082019050919050565b6000613dae602a83614192565b9150613db9826144ea565b604082019050919050565b6000613dd1602683614192565b9150613ddc82614539565b604082019050919050565b6000613df4601b83614192565b9150613dff82614588565b602082019050919050565b6000613e17601b83614192565b9150613e22826145b1565b602082019050919050565b6000613e3a602283614192565b9150613e45826145da565b604082019050919050565b6000613e5d601f83614192565b9150613e6882614629565b602082019050919050565b6000613e80602183614192565b9150613e8b82614652565b604082019050919050565b6000613ea3602083614192565b9150613eae826146a1565b602082019050919050565b6000613ec6602983614192565b9150613ed1826146ca565b604082019050919050565b6000613ee9602483614192565b9150613ef482614719565b604082019050919050565b6000613f0c602683614192565b9150613f1782614768565b604082019050919050565b6000613f2f602c83614192565b9150613f3a826147b7565b604082019050919050565b613f4e816142f6565b82525050565b6000602082019050613f696000830184613d04565b92915050565b6000602082019050613f846000830184613d13565b92915050565b60006020820190508181036000830152613fa48184613d22565b905092915050565b60006020820190508181036000830152613fc581613d5b565b9050919050565b60006020820190508181036000830152613fe581613d7e565b9050919050565b6000602082019050818103600083015261400581613da1565b9050919050565b6000602082019050818103600083015261402581613dc4565b9050919050565b6000602082019050818103600083015261404581613de7565b9050919050565b6000602082019050818103600083015261406581613e0a565b9050919050565b6000602082019050818103600083015261408581613e2d565b9050919050565b600060208201905081810360008301526140a581613e50565b9050919050565b600060208201905081810360008301526140c581613e73565b9050919050565b600060208201905081810360008301526140e581613e96565b9050919050565b6000602082019050818103600083015261410581613eb9565b9050919050565b6000602082019050818103600083015261412581613edc565b9050919050565b6000602082019050818103600083015261414581613eff565b9050919050565b6000602082019050818103600083015261416581613f22565b9050919050565b60006020820190506141816000830184613f45565b92915050565b600081519050919050565b600082825260208201905092915050565b60006141ae826142f6565b91506141b9836142f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141ee576141ed6143ae565b5b828201905092915050565b6000614204826142f6565b915061420f836142f6565b92508261421f5761421e6143dd565b5b828204905092915050565b6000614235826142f6565b9150614240836142f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614279576142786143ae565b5b828202905092915050565b600061428f826142f6565b915061429a836142f6565b9250828210156142ad576142ac6143ae565b5b828203905092915050565b60006142c3826142d6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561431e578082015181840152602081019050614303565b8381111561432d576000848401525b50505050565b6000600282049050600182168061434b57607f821691505b6020821081141561435f5761435e61440c565b5b50919050565b6000614370826142f6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143a3576143a26143ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c72656164792063686172697479206163636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61480f816142b8565b811461481a57600080fd5b50565b614826816142ca565b811461483157600080fd5b50565b61483d816142f6565b811461484857600080fd5b5056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207efae682cad560dae9d468a98f98a7d8d61a4aed64817504378a01624be1cf7a64736f6c6343000802003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000400000000000000000000000016f299f57bdd62238dd255cab89ecddd28d3bcef0000000000000000000000007d8ed707d4b805f481214ea153e5bc43e26730ad00000000000000000000000000000000000000000000000000000000000000095068616e7461676d61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055048414e54000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637b7e8bac1161010f578063cba0e996116100a2578063f2cc0c1811610071578063f2cc0c18146105e9578063f2fde38b14610605578063f84354f114610621578063fc061a4f1461063d576101f0565b8063cba0e9961461053b578063d608b3b21461056b578063dd62ed3e14610589578063e81ffbef146105b9576101f0565b8063a9059cbb116100de578063a9059cbb146104b1578063ae9dd5e0146104e1578063b2bdfa7b146104ff578063b58624281461051d576101f0565b80637b7e8bac146104275780638da5cb5b1461044557806395d89b4114610463578063a457c2d714610481576101f0565b80633bd5d17311610187578063457bdf6c11610156578063457bdf6c146103b357806370a08231146103cf578063715018a6146103ff57806377ef799314610409576101f0565b80633bd5d1731461032d5780633c9f861d1461034957806342966c68146103675780634549b03914610383576101f0565b806323b872dd116101c357806323b872dd1461027f5780632d838119146102af578063313ce567146102df57806339509351146102fd576101f0565b806306fdde03146101f5578063095ea7b31461021357806313114a9d1461024357806318160ddd14610261575b600080fd5b6101fd610659565b60405161020a9190613f8a565b60405180910390f35b61022d60048036038101906102289190613c14565b6106eb565b60405161023a9190613f6f565b60405180910390f35b61024b610709565b604051610258919061416c565b60405180910390f35b610269610713565b604051610276919061416c565b60405180910390f35b61029960048036038101906102949190613bc5565b61071d565b6040516102a69190613f6f565b60405180910390f35b6102c960048036038101906102c49190613c50565b6107f6565b6040516102d6919061416c565b60405180910390f35b6102e7610864565b6040516102f4919061416c565b60405180910390f35b61031760048036038101906103129190613c14565b61086e565b6040516103249190613f6f565b60405180910390f35b61034760048036038101906103429190613c50565b610921565b005b610351610a9d565b60405161035e919061416c565b60405180910390f35b610381600480360381019061037c9190613c50565b610aa7565b005b61039d60048036038101906103989190613c79565b610ab4565b6040516103aa919061416c565b60405180910390f35b6103cd60048036038101906103c89190613b60565b610b3a565b005b6103e960048036038101906103e49190613b60565b610cf8565b6040516103f6919061416c565b60405180910390f35b610407610de3565b005b610411610f36565b60405161041e919061416c565b60405180910390f35b61042f610f3c565b60405161043c9190613f54565b60405180910390f35b61044d610f62565b60405161045a9190613f54565b60405180910390f35b61046b610f8b565b6040516104789190613f8a565b60405180910390f35b61049b60048036038101906104969190613c14565b61101d565b6040516104a89190613f6f565b60405180910390f35b6104cb60048036038101906104c69190613c14565b6110ea565b6040516104d89190613f6f565b60405180910390f35b6104e9611108565b6040516104f6919061416c565b60405180910390f35b61050761110e565b6040516105149190613f54565b60405180910390f35b610525611132565b604051610532919061416c565b60405180910390f35b61055560048036038101906105509190613b60565b611138565b6040516105629190613f6f565b60405180910390f35b61057361118e565b604051610580919061416c565b60405180910390f35b6105a3600480360381019061059e9190613b89565b611198565b6040516105b0919061416c565b60405180910390f35b6105d360048036038101906105ce9190613b60565b61121f565b6040516105e09190613f6f565b60405180910390f35b61060360048036038101906105fe9190613b60565b611275565b005b61061f600480360381019061061a9190613b60565b611529565b005b61063b60048036038101906106369190613b60565b6116eb565b005b61065760048036038101906106529190613cb5565b611ad2565b005b60606007805461066890614333565b80601f016020809104026020016040519081016040528092919081815260200182805461069490614333565b80156106e15780601f106106b6576101008083540402835291602001916106e1565b820191906000526020600020905b8154815290600101906020018083116106c457829003601f168201915b5050505050905090565b60006106ff6106f8611bc0565b8484611bc8565b6001905092915050565b6000601054905090565b6000600e54905090565b600061072a848484611d93565b6107eb84610736611bc0565b6107e6856040518060600160405280602a8152602001614873602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079c611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122cc9092919063ffffffff16565b611bc8565b600190509392505050565b6000600f5482111561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490613fec565b60405180910390fd5b6000610847612330565b905061085c818461235b90919063ffffffff16565b915050919050565b6000600954905090565b600061091761087b611bc0565b84610912856003600061088c611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b611bc8565b6001905092915050565b600061092b611bc0565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b19061414c565b60405180910390fd5b60006109c583612403565b5050505050509050610a1f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a7781600f5461249190919063ffffffff16565b600f81905550610a92836010546123a590919063ffffffff16565b601081905550505050565b6000601154905090565b610ab133826124db565b50565b6000600e54831115610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af29061408c565b60405180910390fd5b81610b1c576000610b0b84612403565b505050505050905080915050610b34565b6000610b2784612403565b5050505050915050809150505b92915050565b610b42611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc6906140cc565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c539061406c565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610dde565b610ddb600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f6565b90505b919050565b610deb611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f906140cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610f9a90614333565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc690614333565b80156110135780601f10610fe857610100808354040283529160200191611013565b820191906000526020600020905b815481529060010190602001808311610ff657829003601f168201915b5050505050905090565b60006110e061102a611bc0565b846110db8560405180606001604052806027815260200161484c6027913960036000611054611bc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122cc9092919063ffffffff16565b611bc8565b6001905092915050565b60006110fe6110f7611bc0565b8484611d93565b6001905092915050565b60155481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601254905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61127d611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611301906140cc565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e9061404c565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561146b57611427600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f6565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611531611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b5906140cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116259061400c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116f3611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611777906140cc565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661180c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118039061404c565b60405180910390fd5b60005b600680549050811015611ace578173ffffffffffffffffffffffffffffffffffffffff166006828154811061186d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611abb57600660016006805490506118c89190614284565b815481106118ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611964577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611a81577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611ace565b8080611ac690614365565b91505061180f565b5050565b611ada611bc0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e906140cc565b60405180910390fd5b606483611b74919061422a565b601381905550606482611b87919061422a565b601481905550606481611b9a919061422a565b601581905550601354601681905550601454601781905550601554601881905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f9061412c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f9061410c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d86919061416c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613fac565b60405180910390fd5b60008111611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906140ec565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f5d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fb15750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fbb57600090505b80611fc957611fc8612641565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561206c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120815761207c8484846126a3565b6122b8565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121245750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561213957612134848484612798565b6122b7565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121dd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121f2576121ed84848461288d565b6122b6565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122945750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a9576122a4848484612981565b6122b5565b6122b484848461288d565b5b5b5b5b806122c6576122c5612a77565b5b50505050565b6000838311158290612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9190613f8a565b60405180910390fd5b50600083856123239190614284565b9050809150509392505050565b600080600061233d612a94565b91509150612354818361235b90919063ffffffff16565b9250505090565b600061239d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ddf565b905092915050565b60008082846123b491906141a3565b9050838110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f09061402c565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806124248b601354601454601554612e42565b92509250925060006124388c858585612f16565b90506000612444612330565b90506000806124548f8885612f59565b9150915060006124678383898988612f9a565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b60006124d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122cc565b905092915050565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561252757600080fd5b61257981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d181600e5461249190919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612635919061416c565b60405180910390a35050565b600060135414801561265557506000601454145b801561266357506000601554145b1561266d576126a1565b6013546016819055506014546017819055506015546018819055506000601381905550600060148190555060006015819055505b565b60006126ad612330565b905060008060008060008060006126c389612403565b965096509650965096509650965060006126e6898461301390919063ffffffff16565b905060006126fd8a8461301390919063ffffffff16565b905061270c8d8d8d8c8c61308e565b612716838e613254565b6127248783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612781919061416c565b60405180910390a350505050505050505050505050565b60006127a2612330565b905060008060008060008060006127b889612403565b965096509650965096509650965060006127db898461301390919063ffffffff16565b905060006127f28a8461301390919063ffffffff16565b90506128018d8d888c8c6135cf565b61280b838e613254565b6128198783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612876919061416c565b60405180910390a350505050505050505050505050565b6000612897612330565b905060008060008060008060006128ad89612403565b965096509650965096509650965060006128d0898461301390919063ffffffff16565b905060006128e78a8461301390919063ffffffff16565b90506128f58d8d8b8b613795565b6128ff838e613254565b61290d8783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161296a919061416c565b60405180910390a350505050505050505050505050565b600061298b612330565b905060008060008060008060006129a189612403565b965096509650965096509650965060006129c4898461301390919063ffffffff16565b905060006129db8a8461301390919063ffffffff16565b90506129eb8d8d8d8c8a8d6138c5565b6129f5838e613254565b612a038783838888886134b6565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612a60919061416c565b60405180910390a350505050505050505050505050565b601654601381905550601754601481905550601854601581905550565b6000806000600f5490506000600e54905060005b600680549050811015612da257826001600060068481548110612af4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612c085750816002600060068481548110612ba0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612c1f57600f54600e5494509450505050612ddb565b612cd56001600060068481548110612c60577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461249190919063ffffffff16565b9250612d8d6002600060068481548110612d18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361249190919063ffffffff16565b91508080612d9a90614365565b915050612aa8565b50612dba600e54600f5461235b90919063ffffffff16565b821015612dd257600f54600e54935093505050612ddb565b81819350935050505b9091565b60008083118290612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9190613f8a565b60405180910390fd5b5060008385612e3591906141f9565b9050809150509392505050565b600080600080612e826064612e74600d54612e668b8d61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90506000612ec06064612eb2600d54612ea48b8e61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90506000612efe6064612ef0600d54612ee28b8f61301390919063ffffffff16565b61235b90919063ffffffff16565b61235b90919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612f4f82612f4185612f33888a61249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b9050949350505050565b6000806000612f71848761301390919063ffffffff16565b90506000612f88858761301390919063ffffffff16565b90508181935093505050935093915050565b600080612fb0838661301390919063ffffffff16565b90506000612fc7848661301390919063ffffffff16565b9050600061300282612ff485612fe68c8e61249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b905080935050505095945050505050565b6000808314156130265760009050613088565b60008284613034919061422a565b905082848261304391906141f9565b14613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906140ac565b60405180910390fd5b809150505b92915050565b6130e083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317582600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320a81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b600061325e612330565b90506000613275828561301390919063ffffffff16565b90506132eb8160016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133c48460026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516134a8919061416c565b60405180910390a350505050565b6134ef846134e1876134d38a600f5461249190919063ffffffff16565b61249190919063ffffffff16565b61249190919063ffffffff16565b600f8190555061350a836010546123a590919063ffffffff16565b601081905550613525826011546123a590919063ffffffff16565b601181905550613540816012546123a590919063ffffffff16565b60128190555061355b82600e5461249190919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135bf919061416c565b60405180910390a3505050505050565b61362182600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136b683600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374b81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6137e782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061387c81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b61391784600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139ac83600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249190919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4182600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad681600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081359050613b3081614806565b92915050565b600081359050613b458161481d565b92915050565b600081359050613b5a81614834565b92915050565b600060208284031215613b7257600080fd5b6000613b8084828501613b21565b91505092915050565b60008060408385031215613b9c57600080fd5b6000613baa85828601613b21565b9250506020613bbb85828601613b21565b9150509250929050565b600080600060608486031215613bda57600080fd5b6000613be886828701613b21565b9350506020613bf986828701613b21565b9250506040613c0a86828701613b4b565b9150509250925092565b60008060408385031215613c2757600080fd5b6000613c3585828601613b21565b9250506020613c4685828601613b4b565b9150509250929050565b600060208284031215613c6257600080fd5b6000613c7084828501613b4b565b91505092915050565b60008060408385031215613c8c57600080fd5b6000613c9a85828601613b4b565b9250506020613cab85828601613b36565b9150509250929050565b600080600060608486031215613cca57600080fd5b6000613cd886828701613b4b565b9350506020613ce986828701613b4b565b9250506040613cfa86828701613b4b565b9150509250925092565b613d0d816142b8565b82525050565b613d1c816142ca565b82525050565b6000613d2d82614187565b613d378185614192565b9350613d47818560208601614300565b613d508161443b565b840191505092915050565b6000613d68602583614192565b9150613d738261444c565b604082019050919050565b6000613d8b602783614192565b9150613d968261449b565b604082019050919050565b6000613dae602a83614192565b9150613db9826144ea565b604082019050919050565b6000613dd1602683614192565b9150613ddc82614539565b604082019050919050565b6000613df4601b83614192565b9150613dff82614588565b602082019050919050565b6000613e17601b83614192565b9150613e22826145b1565b602082019050919050565b6000613e3a602283614192565b9150613e45826145da565b604082019050919050565b6000613e5d601f83614192565b9150613e6882614629565b602082019050919050565b6000613e80602183614192565b9150613e8b82614652565b604082019050919050565b6000613ea3602083614192565b9150613eae826146a1565b602082019050919050565b6000613ec6602983614192565b9150613ed1826146ca565b604082019050919050565b6000613ee9602483614192565b9150613ef482614719565b604082019050919050565b6000613f0c602683614192565b9150613f1782614768565b604082019050919050565b6000613f2f602c83614192565b9150613f3a826147b7565b604082019050919050565b613f4e816142f6565b82525050565b6000602082019050613f696000830184613d04565b92915050565b6000602082019050613f846000830184613d13565b92915050565b60006020820190508181036000830152613fa48184613d22565b905092915050565b60006020820190508181036000830152613fc581613d5b565b9050919050565b60006020820190508181036000830152613fe581613d7e565b9050919050565b6000602082019050818103600083015261400581613da1565b9050919050565b6000602082019050818103600083015261402581613dc4565b9050919050565b6000602082019050818103600083015261404581613de7565b9050919050565b6000602082019050818103600083015261406581613e0a565b9050919050565b6000602082019050818103600083015261408581613e2d565b9050919050565b600060208201905081810360008301526140a581613e50565b9050919050565b600060208201905081810360008301526140c581613e73565b9050919050565b600060208201905081810360008301526140e581613e96565b9050919050565b6000602082019050818103600083015261410581613eb9565b9050919050565b6000602082019050818103600083015261412581613edc565b9050919050565b6000602082019050818103600083015261414581613eff565b9050919050565b6000602082019050818103600083015261416581613f22565b9050919050565b60006020820190506141816000830184613f45565b92915050565b600081519050919050565b600082825260208201905092915050565b60006141ae826142f6565b91506141b9836142f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141ee576141ed6143ae565b5b828201905092915050565b6000614204826142f6565b915061420f836142f6565b92508261421f5761421e6143dd565b5b828204905092915050565b6000614235826142f6565b9150614240836142f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614279576142786143ae565b5b828202905092915050565b600061428f826142f6565b915061429a836142f6565b9250828210156142ad576142ac6143ae565b5b828203905092915050565b60006142c3826142d6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561431e578082015181840152602081019050614303565b8381111561432d576000848401525b50505050565b6000600282049050600182168061434b57607f821691505b6020821081141561435f5761435e61440c565b5b50919050565b6000614370826142f6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143a3576143a26143ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c72656164792063686172697479206163636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61480f816142b8565b811461481a57600080fd5b50565b614826816142ca565b811461483157600080fd5b50565b61483d816142f6565b811461484857600080fd5b5056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207efae682cad560dae9d468a98f98a7d8d61a4aed64817504378a01624be1cf7a64736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000400000000000000000000000016f299f57bdd62238dd255cab89ecddd28d3bcef0000000000000000000000007d8ed707d4b805f481214ea153e5bc43e26730ad00000000000000000000000000000000000000000000000000000000000000095068616e7461676d61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055048414e54000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Phantagma
Arg [1] : _symbol (string): PHANT
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000000000
Arg [4] : _txFee (uint256): 6
Arg [5] : _burnFee (uint256): 1
Arg [6] : _charityFee (uint256): 4
Arg [7] : _FeeAddress (address): 0x16f299f57BdD62238dD255cab89eCDDD28d3bceF
Arg [8] : tokenOwner (address): 0x7d8ed707d4B805f481214EA153e5bC43e26730aD
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 00000000000000000000000016f299f57bdd62238dd255cab89ecddd28d3bcef
Arg [8] : 0000000000000000000000007d8ed707d4b805f481214ea153e5bc43e26730ad
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [10] : 5068616e7461676d610000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [12] : 5048414e54000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
16801:17027:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18725:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19639:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20874:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19004:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19808:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22007:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18911:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20131:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21175:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20973:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23314:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21561:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23094:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19107:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16247:148;;;:::i;:::-;;17706:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17334:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15605:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20357:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19313:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17740:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15408:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17672:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20636:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21073:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19488:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20758:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22268:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16550:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22608:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23391:296;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18725:83;18762:13;18795:5;18788:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18725:83;:::o;19639:161::-;19714:4;19731:39;19740:12;:10;:12::i;:::-;19754:7;19763:6;19731:8;:39::i;:::-;19788:4;19781:11;;19639:161;;;;:::o;20874:87::-;20916:7;20943:10;;20936:17;;20874:87;:::o;19004:95::-;19057:7;19084;;19077:14;;19004:95;:::o;19808:315::-;19906:4;19923:36;19933:6;19941:9;19952:6;19923:9;:36::i;:::-;19970:123;19979:6;19987:12;:10;:12::i;:::-;20001:91;20039:6;20001:91;;;;;;;;;;;;;;;;;:11;:19;20013:6;20001:19;;;;;;;;;;;;;;;:33;20021:12;:10;:12::i;:::-;20001:33;;;;;;;;;;;;;;;;:37;;:91;;;;;:::i;:::-;19970:8;:123::i;:::-;20111:4;20104:11;;19808:315;;;;;:::o;22007:253::-;22073:7;22112;;22101;:18;;22093:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22177:19;22200:10;:8;:10::i;:::-;22177:33;;22228:24;22240:11;22228:7;:11;;:24;;;;:::i;:::-;22221:31;;;22007:253;;;:::o;18911:85::-;18952:7;18979:9;;18972:16;;18911:85;:::o;20131:218::-;20219:4;20236:83;20245:12;:10;:12::i;:::-;20259:7;20268:50;20307:10;20268:11;:25;20280:12;:10;:12::i;:::-;20268:25;;;;;;;;;;;;;;;:34;20294:7;20268:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20236:8;:83::i;:::-;20337:4;20330:11;;20131:218;;;;:::o;21175:378::-;21227:14;21244:12;:10;:12::i;:::-;21227:29;;21276:11;:19;21288:6;21276:19;;;;;;;;;;;;;;;;;;;;;;;;;21275:20;21267:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21356:15;21381:19;21392:7;21381:10;:19::i;:::-;21355:45;;;;;;;;21429:28;21449:7;21429;:15;21437:6;21429:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21411:7;:15;21419:6;21411:15;;;;;;;;;;;;;;;:46;;;;21478:20;21490:7;21478;;:11;;:20;;;;:::i;:::-;21468:7;:30;;;;21522:23;21537:7;21522:10;;:14;;:23;;;;:::i;:::-;21509:10;:36;;;;21175:378;;;:::o;20973:88::-;21015:7;21042:11;;21035:18;;20973:88;:::o;23314:71::-;23355:25;23361:10;23373:6;23355:5;:25::i;:::-;23314:71;:::o;21561:438::-;21651:7;21690;;21679;:18;;21671:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21749:17;21744:248;;21784:15;21809:19;21820:7;21809:10;:19::i;:::-;21783:45;;;;;;;;21850:7;21843:14;;;;;21744:248;21892:23;21924:19;21935:7;21924:10;:19::i;:::-;21890:53;;;;;;;;21965:15;21958:22;;;21561:438;;;;;:::o;23094:215::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23181:10:::1;:19;23192:7;23181:19;;;;;;;;;;;;;;;;;;;;;;;;;23180:20;23172:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23272:4;23250:10;:19;23261:7;23250:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;23294:7;23281:10;;:20;;;;;;;;;;;;;;;;;;23094:215:::0;:::o;19107:198::-;19173:7;19197:11;:20;19209:7;19197:20;;;;;;;;;;;;;;;;;;;;;;;;;19193:49;;;19226:7;:16;19234:7;19226:16;;;;;;;;;;;;;;;;19219:23;;;;19193:49;19260:37;19280:7;:16;19288:7;19280:16;;;;;;;;;;;;;;;;19260:19;:37::i;:::-;19253:44;;19107:198;;;;:::o;16247:148::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16354:1:::1;16317:40;;16338:6;::::0;::::1;;;;;;;;16317:40;;;;;;;;;;;;16385:1;16368:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16247:148::o:0;17706:27::-;;;;:::o;17334:25::-;;;;;;;;;;;;;:::o;15605:79::-;15643:7;15670:6;;;;;;;;;;;15663:13;;15605:79;:::o;18816:87::-;18855:13;18888:7;18881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18816:87;:::o;20357:271::-;20450:4;20467:131;20476:12;:10;:12::i;:::-;20490:7;20499:98;20538:15;20499:98;;;;;;;;;;;;;;;;;:11;:25;20511:12;:10;:12::i;:::-;20499:25;;;;;;;;;;;;;;;:34;20525:7;20499:34;;;;;;;;;;;;;;;;:38;;:98;;;;;:::i;:::-;20467:8;:131::i;:::-;20616:4;20609:11;;20357:271;;;;:::o;19313:167::-;19391:4;19408:42;19418:12;:10;:12::i;:::-;19432:9;19443:6;19408:9;:42::i;:::-;19468:4;19461:11;;19313:167;;;;:::o;17740:27::-;;;;:::o;15408:21::-;;;;;;;;;;;;:::o;17672:27::-;;;;:::o;20636:110::-;20694:4;20718:11;:20;20730:7;20718:20;;;;;;;;;;;;;;;;;;;;;;;;;20711:27;;20636:110;;;:::o;21073:94::-;21118:7;21145:14;;21138:21;;21073:94;:::o;19488:143::-;19569:7;19596:11;:18;19608:5;19596:18;;;;;;;;;;;;;;;:27;19615:7;19596:27;;;;;;;;;;;;;;;;19589:34;;19488:143;;;;:::o;20758:108::-;20815:4;20839:10;:19;20850:7;20839:19;;;;;;;;;;;;;;;;;;;;;;;;;20832:26;;20758:108;;;:::o;22268:332::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22350:11:::1;:20;22362:7;22350:20;;;;;;;;;;;;;;;;;;;;;;;;;22349:21;22341:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22435:1;22416:7;:16;22424:7;22416:16;;;;;;;;;;;;;;;;:20;22413:108;;;22472:37;22492:7;:16;22500:7;22492:16;;;;;;;;;;;;;;;;22472:19;:37::i;:::-;22453:7;:16;22461:7;22453:16;;;;;;;;;;;;;;;:56;;;;22413:108;22554:4;22531:11;:20;22543:7;22531:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22569:9;22584:7;22569:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22268:332:::0;:::o;16550:244::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16659:1:::1;16639:22;;:8;:22;;;;16631:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16749:8;16720:38;;16741:6;::::0;::::1;;;;;;;;16720:38;;;;;;;;;;;;16778:8;16769:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16550:244:::0;:::o;22608:478::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22689:11:::1;:20;22701:7;22689:20;;;;;;;;;;;;;;;;;;;;;;;;;22681:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22757:9;22752:327;22776:9;:16;;;;22772:1;:20;22752:327;;;22834:7;22818:23;;:9;22828:1;22818:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22814:254;;;22877:9;22906:1;22887:9;:16;;;;:20;;;;:::i;:::-;22877:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22862:9;22872:1;22862:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22946:1;22927:7;:16;22935:7;22927:16;;;;;;;;;;;;;;;:20;;;;22989:5;22966:11;:20;22978:7;22966:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23013:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23047:5;;22814:254;22794:3;;;;;:::i;:::-;;;;22752:327;;;;22608:478:::0;:::o;23391:296::-;15827:12;:10;:12::i;:::-;15817:22;;:6;;;;;;;;;;:22;;;15809:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23511:3:::1;23503:6;:11;;;;:::i;:::-;23492:8;:22;;;;23549:3;23538:8;:14;;;;:::i;:::-;23526:9;:26;;;;23585:3;23572:11;:16;;;;:::i;:::-;23557:12;:31;;;;23608:8;;23593:12;:23;;;;23637:9;;23621:13;:25;;;;23670:12;;23651:16;:31;;;;23391:296:::0;;;:::o;331:115::-;384:15;427:10;412:26;;331:115;:::o;23927:341::-;24037:1;24020:19;;:5;:19;;;;24012:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24120:1;24101:21;;:7;:21;;;;24093:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24206:6;24176:11;:18;24188:5;24176:18;;;;;;;;;;;;;;;:27;24195:7;24176:27;;;;;;;;;;;;;;;:36;;;;24244:7;24228:32;;24237:5;24228:32;;;24253:6;24228:32;;;;;;:::i;:::-;;;;;;;;23927:341;;;:::o;24276:1286::-;24391:1;24373:20;;:6;:20;;;;24365:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24477:1;24456:23;;:9;:23;;;;24448:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24549:1;24540:6;:10;24532:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24698:12;24713:4;24698:19;;24732:10;:18;24743:6;24732:18;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;24754:10;:21;24765:9;24754:21;;;;;;;;;;;;;;;;;;;;;;;;;24732:43;:69;;;;24779:11;:22;24791:9;24779:22;;;;;;;;;;;;;;;;;;;;;;;;;24732:69;24728:117;;;24828:5;24818:15;;24728:117;24862:7;24857:28;;24871:14;:12;:14::i;:::-;24857:28;24920:11;:19;24932:6;24920:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;24944:11;:22;24956:9;24944:22;;;;;;;;;;;;;;;;;;;;;;;;;24943:23;24920:46;24916:597;;;24983:48;25005:6;25013:9;25024:6;24983:21;:48::i;:::-;24916:597;;;25054:11;:19;25066:6;25054:19;;;;;;;;;;;;;;;;;;;;;;;;;25053:20;:46;;;;;25077:11;:22;25089:9;25077:22;;;;;;;;;;;;;;;;;;;;;;;;;25053:46;25049:464;;;25116:46;25136:6;25144:9;25155:6;25116:19;:46::i;:::-;25049:464;;;25185:11;:19;25197:6;25185:19;;;;;;;;;;;;;;;;;;;;;;;;;25184:20;:47;;;;;25209:11;:22;25221:9;25209:22;;;;;;;;;;;;;;;;;;;;;;;;;25208:23;25184:47;25180:333;;;25248:44;25266:6;25274:9;25285:6;25248:17;:44::i;:::-;25180:333;;;25314:11;:19;25326:6;25314:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25337:11;:22;25349:9;25337:22;;;;;;;;;;;;;;;;;;;;;;;;;25314:45;25310:203;;;25376:48;25398:6;25406:9;25417:6;25376:21;:48::i;:::-;25310:203;;;25457:44;25475:6;25483:9;25494:6;25457:17;:44::i;:::-;25310:203;25180:333;25049:464;24916:597;25530:7;25525:29;;25539:15;:13;:15::i;:::-;25525:29;24276:1286;;;;:::o;5150:192::-;5236:7;5269:1;5264;:6;;5272:12;5256:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5296:9;5312:1;5308;:5;;;;:::i;:::-;5296:17;;5333:1;5326:8;;;5150:192;;;;;:::o;32132:163::-;32173:7;32194:15;32211;32230:19;:17;:19::i;:::-;32193:56;;;;32267:20;32279:7;32267;:11;;:20;;;;:::i;:::-;32260:27;;;;32132:163;:::o;6548:132::-;6606:7;6633:39;6637:1;6640;6633:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6626:46;;6548:132;;;;:::o;4247:181::-;4305:7;4325:9;4341:1;4337;:5;;;;:::i;:::-;4325:17;;4366:1;4361;:6;;4353:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4419:1;4412:8;;;4247:181;;;;:::o;30183:652::-;30242:7;30251;30260;30269;30278;30287;30296;30317:12;30331:13;30346:16;30366:55;30378:7;30387:8;;30397:9;;30408:12;;30366:11;:55::i;:::-;30316:105;;;;;;30432:23;30458:50;30477:7;30486:4;30492:5;30499:8;30458:18;:50::i;:::-;30432:76;;30519:19;30542:10;:8;:10::i;:::-;30519:33;;30564:15;30581:12;30597:39;30609:7;30618:4;30624:11;30597;:39::i;:::-;30563:73;;;;30647:23;30673:64;30693:7;30702:4;30708:5;30715:8;30725:11;30673:19;:64::i;:::-;30647:90;;30756:7;30765:15;30782:4;30788:15;30805:4;30811:5;30818:8;30748:79;;;;;;;;;;;;;;;;;;;;;;30183:652;;;;;;;;;:::o;4711:136::-;4769:7;4796:43;4800:1;4803;4796:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4789:50;;4711:136;;;;:::o;23695:220::-;23772:7;:13;23780:4;23772:13;;;;;;;;;;;;;;;;23762:6;:23;;23754:32;;;;;;23807:25;23825:6;23807:7;:13;23815:4;23807:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;23791:7;:13;23799:4;23791:13;;;;;;;;;;;;;;;:41;;;;23847:19;23859:6;23847:7;;:11;;:19;;;;:::i;:::-;23837:7;:29;;;;23899:1;23876:34;;23885:4;23876:34;;;23903:6;23876:34;;;;;;:::i;:::-;;;;;;;;23695:220;;:::o;33238:320::-;33296:1;33284:8;;:13;:31;;;;;33314:1;33301:9;;:14;33284:31;:52;;;;;33335:1;33319:12;;:17;33284:52;33281:64;;;33338:7;;33281:64;33380:8;;33365:12;:23;;;;33415:9;;33399:13;:25;;;;33454:12;;33435:16;:31;;;;33498:1;33487:8;:12;;;;33522:1;33510:9;:13;;;;33549:1;33534:12;:16;;;;33238:320;:::o;27582:671::-;27684:19;27707:10;:8;:10::i;:::-;27684:33;;27729:15;27746:23;27771:12;27785:23;27810:12;27824:13;27839:16;27859:19;27870:7;27859:10;:19::i;:::-;27728:150;;;;;;;;;;;;;;27889:13;27906:22;27916:11;27906:5;:9;;:22;;;;:::i;:::-;27889:39;;27939:16;27958:25;27971:11;27958:8;:12;;:25;;;;:::i;:::-;27939:44;;27994:80;28021:6;28029:9;28040:7;28049;28058:15;27994:26;:80::i;:::-;28085:32;28100:8;28110:6;28085:14;:32::i;:::-;28128:57;28140:4;28146:5;28153:8;28163:4;28169:5;28176:8;28128:11;:57::i;:::-;28218:9;28201:44;;28210:6;28201:44;;;28229:15;28201:44;;;;;;:::i;:::-;;;;;;;;27582:671;;;;;;;;;;;;;:::o;26510:687::-;26610:19;26633:10;:8;:10::i;:::-;26610:33;;26655:15;26672:23;26697:12;26711:23;26736:12;26750:13;26765:16;26785:19;26796:7;26785:10;:19::i;:::-;26654:150;;;;;;;;;;;;;;26815:13;26832:22;26842:11;26832:5;:9;;:22;;;;:::i;:::-;26815:39;;26865:16;26884:25;26897:11;26884:8;:12;;:25;;;;:::i;:::-;26865:44;;26920:90;26949:6;26957:9;26968:15;26985:7;26994:15;26920:28;:90::i;:::-;27029:32;27044:8;27054:6;27029:14;:32::i;:::-;27072:57;27084:4;27090:5;27097:8;27107:4;27113:5;27120:8;27072:11;:57::i;:::-;27162:9;27145:44;;27154:6;27145:44;;;27173:15;27145:44;;;;;;:::i;:::-;;;;;;;;26510:687;;;;;;;;;;;;;:::o;25570:661::-;25668:19;25691:10;:8;:10::i;:::-;25668:33;;25713:15;25730:23;25755:12;25769:23;25794:12;25808:13;25823:16;25843:19;25854:7;25843:10;:19::i;:::-;25712:150;;;;;;;;;;;;;;25873:13;25890:22;25900:11;25890:5;:9;;:22;;;;:::i;:::-;25873:39;;25923:16;25942:25;25955:11;25942:8;:12;;:25;;;;:::i;:::-;25923:44;;25983:69;26008:6;26016:9;26027:7;26036:15;25983:24;:69::i;:::-;26063:32;26078:8;26088:6;26063:14;:32::i;:::-;26106:57;26118:4;26124:5;26131:8;26141:4;26147:5;26154:8;26106:11;:57::i;:::-;26196:9;26179:44;;26188:6;26179:44;;;26207:15;26179:44;;;;;;:::i;:::-;;;;;;;;25570:661;;;;;;;;;;;;;:::o;28606:688::-;28708:19;28731:10;:8;:10::i;:::-;28708:33;;28753:15;28770:23;28795:12;28809:23;28834:12;28848:13;28863:16;28883:19;28894:7;28883:10;:19::i;:::-;28752:150;;;;;;;;;;;;;;28913:13;28930:22;28940:11;28930:5;:9;;:22;;;;:::i;:::-;28913:39;;28963:16;28982:25;28995:11;28982:8;:12;;:25;;;;:::i;:::-;28963:44;;29022:91;29043:6;29051:9;29062:7;29071;29080:15;29097;29022:20;:91::i;:::-;29126:32;29141:8;29151:6;29126:14;:32::i;:::-;29169:57;29181:4;29187:5;29194:8;29204:4;29210:5;29217:8;29169:11;:57::i;:::-;29259:9;29242:44;;29251:6;29242:44;;;29270:15;29242:44;;;;;;:::i;:::-;;;;;;;;28606:688;;;;;;;;;;;;;:::o;33570:153::-;33625:12;;33614:8;:23;;;;33660:13;;33648:9;:25;;;;33699:16;;33684:12;:31;;;;33570:153::o;32303:561::-;32353:7;32362;32382:15;32400:7;;32382:25;;32418:15;32436:7;;32418:25;;32465:9;32460:289;32484:9;:16;;;;32480:1;:20;32460:289;;;32550:7;32526;:21;32534:9;32544:1;32534:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32526:21;;;;;;;;;;;;;;;;:31;:66;;;;32585:7;32561;:21;32569:9;32579:1;32569:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32561:21;;;;;;;;;;;;;;;;:31;32526:66;32522:97;;;32602:7;;32611;;32594:25;;;;;;;;;32522:97;32644:34;32656:7;:21;32664:9;32674:1;32664:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32656:21;;;;;;;;;;;;;;;;32644:7;:11;;:34;;;;:::i;:::-;32634:44;;32703:34;32715:7;:21;32723:9;32733:1;32723:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32715:21;;;;;;;;;;;;;;;;32703:7;:11;;:34;;;;:::i;:::-;32693:44;;32502:3;;;;;:::i;:::-;;;;32460:289;;;;32773:20;32785:7;;32773;;:11;;:20;;;;:::i;:::-;32763:7;:30;32759:61;;;32803:7;;32812;;32795:25;;;;;;;;32759:61;32839:7;32848;32831:25;;;;;;32303:561;;;:::o;7176:278::-;7262:7;7294:1;7290;:5;7297:12;7282:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7321:9;7337:1;7333;:5;;;;:::i;:::-;7321:17;;7445:1;7438:8;;;7176:278;;;;;:::o;30847:427::-;30960:7;30969;30978;30998:12;31013:50;31059:3;31014:39;31040:12;;31015:19;31027:6;31015:7;:11;;:19;;;;:::i;:::-;31014:25;;:39;;;;:::i;:::-;31013:45;;:50;;;;:::i;:::-;30998:65;;31074:13;31090:51;31137:3;31091:40;31118:12;;31092:20;31104:7;31092;:11;;:20;;;;:::i;:::-;31091:26;;:40;;;;:::i;:::-;31090:46;;:51;;;;:::i;:::-;31074:67;;31152:16;31171:54;31221:3;31172:43;31202:12;;31173:23;31185:10;31173:7;:11;;:23;;;;:::i;:::-;31172:29;;:43;;;;:::i;:::-;31171:49;;:54;;;;:::i;:::-;31152:73;;31244:4;31250:5;31257:8;31236:30;;;;;;;;;30847:427;;;;;;;;:::o;31286:191::-;31400:7;31427:42;31460:8;31427:28;31449:5;31427:17;31439:4;31427:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;31420:49;;31286:191;;;;;;:::o;31489:254::-;31584:7;31593;31613:15;31631:24;31643:11;31631:7;:11;;:24;;;;:::i;:::-;31613:42;;31666:12;31681:21;31690:11;31681:4;:8;;:21;;;;:::i;:::-;31666:36;;31721:7;31730:4;31713:22;;;;;;31489:254;;;;;;:::o;31755:369::-;31891:7;31911:13;31927:22;31937:11;31927:5;:9;;:22;;;;:::i;:::-;31911:38;;31960:16;31979:25;31992:11;31979:8;:12;;:25;;;;:::i;:::-;31960:44;;32015:23;32041:42;32074:8;32041:28;32063:5;32041:17;32053:4;32041:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;32015:68;;32101:15;32094:22;;;;;31755:369;;;;;;;:::o;5601:471::-;5659:7;5909:1;5904;:6;5900:47;;;5934:1;5927:8;;;;5900:47;5959:9;5975:1;5971;:5;;;;:::i;:::-;5959:17;;6004:1;5999;5995;:5;;;;:::i;:::-;:10;5987:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6063:1;6056:8;;;5601:471;;;;;:::o;28265:333::-;28432:28;28452:7;28432;:15;28440:6;28432:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28414:7;:15;28422:6;28414:15;;;;;;;;;;;;;;;:46;;;;28489:28;28509:7;28489;:15;28497:6;28489:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28471:7;:15;28479:6;28471:15;;;;;;;;;;;;;;;:46;;;;28549:39;28572:15;28549:7;:18;28557:9;28549:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28528:7;:18;28536:9;28528:18;;;;;;;;;;;;;;;:60;;;;28265:333;;;;;:::o;32872:358::-;32949:19;32971:10;:8;:10::i;:::-;32949:32;;32992:16;33011:25;33024:11;33011:8;:12;;:25;;;;:::i;:::-;32992:44;;33069:33;33093:8;33069:7;:19;33077:10;;;;;;;;;;;33069:19;;;;;;;;;;;;;;;;:23;;:33;;;;:::i;:::-;33047:7;:19;33055:10;;;;;;;;;;;33047:19;;;;;;;;;;;;;;;:55;;;;33135:33;33159:8;33135:7;:19;33143:10;;;;;;;;;;;33135:19;;;;;;;;;;;;;;;;:23;;:33;;;;:::i;:::-;33113:7;:19;33121:10;;;;;;;;;;;33113:19;;;;;;;;;;;;;;;:55;;;;33201:10;;;;;;;;;;;33184:38;;33193:6;33184:38;;;33213:8;33184:38;;;;;;:::i;:::-;;;;;;;;32872:358;;;;:::o;29737:432::-;29881:42;29914:8;29881:28;29903:5;29881:17;29893:4;29881:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;29871:7;:52;;;;29947:20;29962:4;29947:10;;:14;;:20;;;;:::i;:::-;29934:10;:33;;;;29992:22;30008:5;29992:11;;:15;;:22;;;;:::i;:::-;29978:11;:36;;;;30042:28;30061:8;30042:14;;:18;;:28;;;;:::i;:::-;30025:14;:45;;;;30091:18;30103:5;30091:7;;:11;;:18;;;;:::i;:::-;30081:7;:28;;;;30151:1;30119:42;;30136:4;30119:42;;;30155:5;30119:42;;;;;;:::i;:::-;;;;;;;;29737:432;;;;;;:::o;27209:359::-;27386:28;27406:7;27386;:15;27394:6;27386:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27368:7;:15;27376:6;27368:15;;;;;;;;;;;;;;;:46;;;;27446:39;27469:15;27446:7;:18;27454:9;27446:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27425:7;:18;27433:9;27425:18;;;;;;;;;;;;;;;:60;;;;27517:39;27540:15;27517:7;:18;27525:9;27517:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27496:7;:18;27504:9;27496:18;;;;;;;;;;;;;;;:60;;;;27209:359;;;;;:::o;26243:255::-;26391:28;26411:7;26391;:15;26399:6;26391:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26373:7;:15;26381:6;26373:15;;;;;;;;;;;;;;;:46;;;;26451:39;26474:15;26451:7;:18;26459:9;26451:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26430:7;:18;26438:9;26430:18;;;;;;;;;;;;;;;:60;;;;26243:255;;;;:::o;29306:423::-;29492:28;29512:7;29492;:15;29500:6;29492:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29474:7;:15;29482:6;29474:15;;;;;;;;;;;;;;;:46;;;;29549:28;29569:7;29549;:15;29557:6;29549:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29531:7;:15;29539:6;29531:15;;;;;;;;;;;;;;;:46;;;;29609:39;29632:15;29609:7;:18;29617:9;29609:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29588:7;:18;29596:9;29588:18;;;;;;;;;;;;;;;:60;;;;29680:39;29703:15;29680:7;:18;29688:9;29680:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29659:7;:18;29667:9;29659:18;;;;;;;;;;;;;;;:60;;;;29306:423;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;;;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;;;;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;;;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:552::-;;;;2905:2;2893:9;2884:7;2880:23;2876:32;2873:2;;;2921:1;2918;2911:12;2873:2;2964:1;2989:53;3034:7;3025:6;3014:9;3010:22;2989:53;:::i;:::-;2979:63;;2935:117;3091:2;3117:53;3162:7;3153:6;3142:9;3138:22;3117:53;:::i;:::-;3107:63;;3062:118;3219:2;3245:53;3290:7;3281:6;3270:9;3266:22;3245:53;:::i;:::-;3235:63;;3190:118;2863:452;;;;;:::o;3321:118::-;3408:24;3426:5;3408:24;:::i;:::-;3403:3;3396:37;3386:53;;:::o;3445:109::-;3526:21;3541:5;3526:21;:::i;:::-;3521:3;3514:34;3504:50;;:::o;3560:364::-;;3676:39;3709:5;3676:39;:::i;:::-;3731:71;3795:6;3790:3;3731:71;:::i;:::-;3724:78;;3811:52;3856:6;3851:3;3844:4;3837:5;3833:16;3811:52;:::i;:::-;3888:29;3910:6;3888:29;:::i;:::-;3883:3;3879:39;3872:46;;3652:272;;;;;:::o;3930:366::-;;4093:67;4157:2;4152:3;4093:67;:::i;:::-;4086:74;;4169:93;4258:3;4169:93;:::i;:::-;4287:2;4282:3;4278:12;4271:19;;4076:220;;;:::o;4302:366::-;;4465:67;4529:2;4524:3;4465:67;:::i;:::-;4458:74;;4541:93;4630:3;4541:93;:::i;:::-;4659:2;4654:3;4650:12;4643:19;;4448:220;;;:::o;4674:366::-;;4837:67;4901:2;4896:3;4837:67;:::i;:::-;4830:74;;4913:93;5002:3;4913:93;:::i;:::-;5031:2;5026:3;5022:12;5015:19;;4820:220;;;:::o;5046:366::-;;5209:67;5273:2;5268:3;5209:67;:::i;:::-;5202:74;;5285:93;5374:3;5285:93;:::i;:::-;5403:2;5398:3;5394:12;5387:19;;5192:220;;;:::o;5418:366::-;;5581:67;5645:2;5640:3;5581:67;:::i;:::-;5574:74;;5657:93;5746:3;5657:93;:::i;:::-;5775:2;5770:3;5766:12;5759:19;;5564:220;;;:::o;5790:366::-;;5953:67;6017:2;6012:3;5953:67;:::i;:::-;5946:74;;6029:93;6118:3;6029:93;:::i;:::-;6147:2;6142:3;6138:12;6131:19;;5936:220;;;:::o;6162:366::-;;6325:67;6389:2;6384:3;6325:67;:::i;:::-;6318:74;;6401:93;6490:3;6401:93;:::i;:::-;6519:2;6514:3;6510:12;6503:19;;6308:220;;;:::o;6534:366::-;;6697:67;6761:2;6756:3;6697:67;:::i;:::-;6690:74;;6773:93;6862:3;6773:93;:::i;:::-;6891:2;6886:3;6882:12;6875:19;;6680:220;;;:::o;6906:366::-;;7069:67;7133:2;7128:3;7069:67;:::i;:::-;7062:74;;7145:93;7234:3;7145:93;:::i;:::-;7263:2;7258:3;7254:12;7247:19;;7052:220;;;:::o;7278:366::-;;7441:67;7505:2;7500:3;7441:67;:::i;:::-;7434:74;;7517:93;7606:3;7517:93;:::i;:::-;7635:2;7630:3;7626:12;7619:19;;7424:220;;;:::o;7650:366::-;;7813:67;7877:2;7872:3;7813:67;:::i;:::-;7806:74;;7889:93;7978:3;7889:93;:::i;:::-;8007:2;8002:3;7998:12;7991:19;;7796:220;;;:::o;8022:366::-;;8185:67;8249:2;8244:3;8185:67;:::i;:::-;8178:74;;8261:93;8350:3;8261:93;:::i;:::-;8379:2;8374:3;8370:12;8363:19;;8168:220;;;:::o;8394:366::-;;8557:67;8621:2;8616:3;8557:67;:::i;:::-;8550:74;;8633:93;8722:3;8633:93;:::i;:::-;8751:2;8746:3;8742:12;8735:19;;8540:220;;;:::o;8766:366::-;;8929:67;8993:2;8988:3;8929:67;:::i;:::-;8922:74;;9005:93;9094:3;9005:93;:::i;:::-;9123:2;9118:3;9114:12;9107:19;;8912:220;;;:::o;9138:118::-;9225:24;9243:5;9225:24;:::i;:::-;9220:3;9213:37;9203:53;;:::o;9262:222::-;;9393:2;9382:9;9378:18;9370:26;;9406:71;9474:1;9463:9;9459:17;9450:6;9406:71;:::i;:::-;9360:124;;;;:::o;9490:210::-;;9615:2;9604:9;9600:18;9592:26;;9628:65;9690:1;9679:9;9675:17;9666:6;9628:65;:::i;:::-;9582:118;;;;:::o;9706:313::-;;9857:2;9846:9;9842:18;9834:26;;9906:9;9900:4;9896:20;9892:1;9881:9;9877:17;9870:47;9934:78;10007:4;9998:6;9934:78;:::i;:::-;9926:86;;9824:195;;;;:::o;10025:419::-;;10229:2;10218:9;10214:18;10206:26;;10278:9;10272:4;10268:20;10264:1;10253:9;10249:17;10242:47;10306:131;10432:4;10306:131;:::i;:::-;10298:139;;10196:248;;;:::o;10450:419::-;;10654:2;10643:9;10639:18;10631:26;;10703:9;10697:4;10693:20;10689:1;10678:9;10674:17;10667:47;10731:131;10857:4;10731:131;:::i;:::-;10723:139;;10621:248;;;:::o;10875:419::-;;11079:2;11068:9;11064:18;11056:26;;11128:9;11122:4;11118:20;11114:1;11103:9;11099:17;11092:47;11156:131;11282:4;11156:131;:::i;:::-;11148:139;;11046:248;;;:::o;11300:419::-;;11504:2;11493:9;11489:18;11481:26;;11553:9;11547:4;11543:20;11539:1;11528:9;11524:17;11517:47;11581:131;11707:4;11581:131;:::i;:::-;11573:139;;11471:248;;;:::o;11725:419::-;;11929:2;11918:9;11914:18;11906:26;;11978:9;11972:4;11968:20;11964:1;11953:9;11949:17;11942:47;12006:131;12132:4;12006:131;:::i;:::-;11998:139;;11896:248;;;:::o;12150:419::-;;12354:2;12343:9;12339:18;12331:26;;12403:9;12397:4;12393:20;12389:1;12378:9;12374:17;12367:47;12431:131;12557:4;12431:131;:::i;:::-;12423:139;;12321:248;;;:::o;12575:419::-;;12779:2;12768:9;12764:18;12756:26;;12828:9;12822:4;12818:20;12814:1;12803:9;12799:17;12792:47;12856:131;12982:4;12856:131;:::i;:::-;12848:139;;12746:248;;;:::o;13000:419::-;;13204:2;13193:9;13189:18;13181:26;;13253:9;13247:4;13243:20;13239:1;13228:9;13224:17;13217:47;13281:131;13407:4;13281:131;:::i;:::-;13273:139;;13171:248;;;:::o;13425:419::-;;13629:2;13618:9;13614:18;13606:26;;13678:9;13672:4;13668:20;13664:1;13653:9;13649:17;13642:47;13706:131;13832:4;13706:131;:::i;:::-;13698:139;;13596:248;;;:::o;13850:419::-;;14054:2;14043:9;14039:18;14031:26;;14103:9;14097:4;14093:20;14089:1;14078:9;14074:17;14067:47;14131:131;14257:4;14131:131;:::i;:::-;14123:139;;14021:248;;;:::o;14275:419::-;;14479:2;14468:9;14464:18;14456:26;;14528:9;14522:4;14518:20;14514:1;14503:9;14499:17;14492:47;14556:131;14682:4;14556:131;:::i;:::-;14548:139;;14446:248;;;:::o;14700:419::-;;14904:2;14893:9;14889:18;14881:26;;14953:9;14947:4;14943:20;14939:1;14928:9;14924:17;14917:47;14981:131;15107:4;14981:131;:::i;:::-;14973:139;;14871:248;;;:::o;15125:419::-;;15329:2;15318:9;15314:18;15306:26;;15378:9;15372:4;15368:20;15364:1;15353:9;15349:17;15342:47;15406:131;15532:4;15406:131;:::i;:::-;15398:139;;15296:248;;;:::o;15550:419::-;;15754:2;15743:9;15739:18;15731:26;;15803:9;15797:4;15793:20;15789:1;15778:9;15774:17;15767:47;15831:131;15957:4;15831:131;:::i;:::-;15823:139;;15721:248;;;:::o;15975:222::-;;16106:2;16095:9;16091:18;16083:26;;16119:71;16187:1;16176:9;16172:17;16163:6;16119:71;:::i;:::-;16073:124;;;;:::o;16203:99::-;;16289:5;16283:12;16273:22;;16262:40;;;:::o;16308:169::-;;16426:6;16421:3;16414:19;16466:4;16461:3;16457:14;16442:29;;16404:73;;;;:::o;16483:305::-;;16542:20;16560:1;16542:20;:::i;:::-;16537:25;;16576:20;16594:1;16576:20;:::i;:::-;16571:25;;16730:1;16662:66;16658:74;16655:1;16652:81;16649:2;;;16736:18;;:::i;:::-;16649:2;16780:1;16777;16773:9;16766:16;;16527:261;;;;:::o;16794:185::-;;16851:20;16869:1;16851:20;:::i;:::-;16846:25;;16885:20;16903:1;16885:20;:::i;:::-;16880:25;;16924:1;16914:2;;16929:18;;:::i;:::-;16914:2;16971:1;16968;16964:9;16959:14;;16836:143;;;;:::o;16985:348::-;;17048:20;17066:1;17048:20;:::i;:::-;17043:25;;17082:20;17100:1;17082:20;:::i;:::-;17077:25;;17270:1;17202:66;17198:74;17195:1;17192:81;17187:1;17180:9;17173:17;17169:105;17166:2;;;17277:18;;:::i;:::-;17166:2;17325:1;17322;17318:9;17307:20;;17033:300;;;;:::o;17339:191::-;;17399:20;17417:1;17399:20;:::i;:::-;17394:25;;17433:20;17451:1;17433:20;:::i;:::-;17428:25;;17472:1;17469;17466:8;17463:2;;;17477:18;;:::i;:::-;17463:2;17522:1;17519;17515:9;17507:17;;17384:146;;;;:::o;17536:96::-;;17602:24;17620:5;17602:24;:::i;:::-;17591:35;;17581:51;;;:::o;17638:90::-;;17715:5;17708:13;17701:21;17690:32;;17680:48;;;:::o;17734:126::-;;17811:42;17804:5;17800:54;17789:65;;17779:81;;;:::o;17866:77::-;;17932:5;17921:16;;17911:32;;;:::o;17949:307::-;18017:1;18027:113;18041:6;18038:1;18035:13;18027:113;;;18126:1;18121:3;18117:11;18111:18;18107:1;18102:3;18098:11;18091:39;18063:2;18060:1;18056:10;18051:15;;18027:113;;;18158:6;18155:1;18152:13;18149:2;;;18238:1;18229:6;18224:3;18220:16;18213:27;18149:2;17998:258;;;;:::o;18262:320::-;;18343:1;18337:4;18333:12;18323:22;;18390:1;18384:4;18380:12;18411:18;18401:2;;18467:4;18459:6;18455:17;18445:27;;18401:2;18529;18521:6;18518:14;18498:18;18495:38;18492:2;;;18548:18;;:::i;:::-;18492:2;18313:269;;;;:::o;18588:233::-;;18650:24;18668:5;18650:24;:::i;:::-;18641:33;;18696:66;18689:5;18686:77;18683:2;;;18766:18;;:::i;:::-;18683:2;18813:1;18806:5;18802:13;18795:20;;18631:190;;;:::o;18827:180::-;18875:77;18872:1;18865:88;18972:4;18969:1;18962:15;18996:4;18993:1;18986:15;19013:180;19061:77;19058:1;19051:88;19158:4;19155:1;19148:15;19182:4;19179:1;19172:15;19199:180;19247:77;19244:1;19237:88;19344:4;19341:1;19334:15;19368:4;19365:1;19358:15;19385:102;;19477:2;19473:7;19468:2;19461:5;19457:14;19453:28;19443:38;;19433:54;;;:::o;19493:224::-;19633:34;19629:1;19621:6;19617:14;19610:58;19702:7;19697:2;19689:6;19685:15;19678:32;19599:118;:::o;19723:226::-;19863:34;19859:1;19851:6;19847:14;19840:58;19932:9;19927:2;19919:6;19915:15;19908:34;19829:120;:::o;19955:229::-;20095:34;20091:1;20083:6;20079:14;20072:58;20164:12;20159:2;20151:6;20147:15;20140:37;20061:123;:::o;20190:225::-;20330:34;20326:1;20318:6;20314:14;20307:58;20399:8;20394:2;20386:6;20382:15;20375:33;20296:119;:::o;20421:177::-;20561:29;20557:1;20549:6;20545:14;20538:53;20527:71;:::o;20604:177::-;20744:29;20740:1;20732:6;20728:14;20721:53;20710:71;:::o;20787:221::-;20927:34;20923:1;20915:6;20911:14;20904:58;20996:4;20991:2;20983:6;20979:15;20972:29;20893:115;:::o;21014:181::-;21154:33;21150:1;21142:6;21138:14;21131:57;21120:75;:::o;21201:220::-;21341:34;21337:1;21329:6;21325:14;21318:58;21410:3;21405:2;21397:6;21393:15;21386:28;21307:114;:::o;21427:182::-;21567:34;21563:1;21555:6;21551:14;21544:58;21533:76;:::o;21615:228::-;21755:34;21751:1;21743:6;21739:14;21732:58;21824:11;21819:2;21811:6;21807:15;21800:36;21721:122;:::o;21849:223::-;21989:34;21985:1;21977:6;21973:14;21966:58;22058:6;22053:2;22045:6;22041:15;22034:31;21955:117;:::o;22078:225::-;22218:34;22214:1;22206:6;22202:14;22195:58;22287:8;22282:2;22274:6;22270:15;22263:33;22184:119;:::o;22309:231::-;22449:34;22445:1;22437:6;22433:14;22426:58;22518:14;22513:2;22505:6;22501:15;22494:39;22415:125;:::o;22546:122::-;22619:24;22637:5;22619:24;:::i;:::-;22612:5;22609:35;22599:2;;22658:1;22655;22648:12;22599:2;22589:79;:::o;22674:116::-;22744:21;22759:5;22744:21;:::i;:::-;22737:5;22734:32;22724:2;;22780:1;22777;22770:12;22724:2;22714:76;:::o;22796:122::-;22869:24;22887:5;22869:24;:::i;:::-;22862:5;22859:35;22849:2;;22908:1;22905;22898:12;22849:2;22839:79;:::o
Swarm Source
ipfs://7efae682cad560dae9d468a98f98a7d8d61a4aed64817504378a01624be1cf7a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.