Token HYVE
Polygon Sponsored slots available. Book your slot here!
Overview ERC-20
Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
1,789.184049 HYVE
Holders:
9 addresses
Transfers:
-
Contract:
Decimals:
18
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HYVE
Compiler Version
v0.8.3+commit.8d00100c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; //copied from https://bscscan.com/address/0xF6565A97Dc832d93DC83B75EE9aa5c7e8ecB0F9d#code abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add( uint256 a, uint256 b ) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub( uint256 a, uint256 b ) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul( uint256 a, uint256 b ) internal pure returns (uint256) { // 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; } function div( uint256 a, uint256 b ) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod( uint256 a, uint256 b ) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract( address account ) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue( address payable recipient, uint256 amount ) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall( address target, bytes memory data ) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // 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); } } } } abstract contract Ownable is Context { address public owner; address public pendingOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor () { address msgSender = _msgSender(); owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } modifier onlyOwner() { require(owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership( address newOwner ) onlyOwner external { require(newOwner != address(0), "Ownable: new owner is the zero address"); pendingOwner = newOwner; } function claimOwnership() external { require(_msgSender() == pendingOwner); emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } abstract contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = true; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused() { require(paused); _; } function pause() onlyOwner whenNotPaused external { paused = true; emit Pause(); } function unpause() onlyOwner whenPaused external { paused = false; emit Unpause(); } } abstract contract Whitelist is Pausable { mapping(address => bool) public whitelist; mapping(address => bool) public blacklist; modifier isWhitelisted() { require(whitelist[_msgSender()]); _; } modifier isBlacklisted() { require(blacklist[_msgSender()]); _; } function addWhitelist( address account ) public onlyOwner { whitelist[account] = true; } function removeWhitelist( address account ) public onlyOwner { whitelist[account] = false; } function addBlacklist( address account ) public onlyOwner { blacklist[account] = true; } function removeBlacklist( address account ) public onlyOwner { blacklist[account] = false; } } abstract contract ERC20 is Whitelist, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string internal _name; string internal _symbol; string internal _website; uint8 private _decimals; constructor ( string memory name, string memory symbol ) { _name = name; _symbol = symbol; _decimals = 18; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function website() public view returns (string memory) { return _website; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) canTransfer internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } modifier canTransfer() { address msgSender = _msgSender(); require(whitelist[msgSender] || !paused); require(!blacklist[msgSender]); _; } function _setupDecimals( uint8 decimals_ ) internal { _decimals = decimals_; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual { } } contract HYVE is ERC20("HYVE", "HYVE") { function mint( address _to, uint256 _amount ) public onlyOwner { _mint(_to, _amount); } function burn( address _from, uint256 _amount ) public onlyOwner { _burn(_from, _amount); } function setName( string memory _newName ) public onlyOwner { _name = _newName; } function setSymbol( string memory _newSymbol ) public onlyOwner { _symbol = _newSymbol; } function setWebsite( string memory _newWebsite ) public onlyOwner { _website = _newWebsite; } function tokenFallback( address _from, uint256 _value, bytes memory _data ) public { revert(); } function takeOut( IERC20 _token, uint256 _amount ) external onlyOwner { _token.transfer(owner, _amount); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":[],"name":"Pause","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"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","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":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newName","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newSymbol","type":"string"}],"name":"setSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newWebsite","type":"string"}],"name":"setWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"takeOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260018060146101000a81548160ff0219169083151502179055503480156200002b57600080fd5b506040518060400160405280600481526020017f48595645000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f48595645000000000000000000000000000000000000000000000000000000008152506000620000aa6200019e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350816007908051906020019062000160929190620001a6565b50806008908051906020019062000179929190620001a6565b506012600a60006101000a81548160ff021916908360ff1602179055505050620002bb565b600033905090565b828054620001b49062000256565b90600052602060002090601f016020900481019282620001d8576000855562000224565b82601f10620001f357805160ff191683800117855562000224565b8280016001018555821562000224579182015b828111156200022357825182559160200191906001019062000206565b5b50905062000233919062000237565b5090565b5b808211156200025257600081600090555060010162000238565b5090565b600060028204905060018216806200026f57607f821691505b602082108114156200028657620002856200028c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61304880620002cb6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80639b19251a1161010f578063c47f0027116100a2578063f2fde38b11610071578063f2fde38b1461057f578063f80f5dd51461059b578063f87f44b9146105b7578063f9f92be4146105d3576101f0565b8063c47f0027146104f9578063dd62ed3e14610515578063e30c397814610545578063eb91e65114610563576101f0565b8063a9059cbb116100de578063a9059cbb14610473578063b84c8246146104a3578063beb0a416146104bf578063c0ee0b8a146104dd576101f0565b80639b19251a146103db5780639cfe42da1461040b5780639dc29fac14610427578063a457c2d714610443576101f0565b80634e71e0c8116101875780638456cb59116101565780638456cb59146103795780638da5cb5b1461038357806395d89b41146103a15780639a1fb4ce146103bf576101f0565b80634e71e0c8146103055780635c975abb1461030f57806370a082311461032d57806378c8cda71461035d576101f0565b8063313ce567116101c3578063313ce5671461029157806339509351146102af5780633f4ba83a146102df57806340c10f19146102e9576101f0565b806306fdde03146101f5578063095ea7b31461021357806318160ddd1461024357806323b872dd14610261575b600080fd5b6101fd610603565b60405161020a919061287d565b60405180910390f35b61022d60048036038101906102289190612525565b610695565b60405161023a9190612862565b60405180910390f35b61024b6106b3565b60405161025891906129bf565b60405180910390f35b61027b600480360381019061027691906124d6565b6106bd565b6040516102889190612862565b60405180910390f35b610299610796565b6040516102a691906129da565b60405180910390f35b6102c960048036038101906102c49190612525565b6107ad565b6040516102d69190612862565b60405180910390f35b6102e7610860565b005b61030360048036038101906102fe9190612525565b610957565b005b61030d6109fa565b005b610317610b9d565b6040516103249190612862565b60405180910390f35b61034760048036038101906103429190612471565b610bb0565b60405161035491906129bf565b60405180910390f35b61037760048036038101906103729190612471565b610bf9565b005b610381610ce9565b005b61038b610de0565b604051610398919061281e565b60405180910390f35b6103a9610e04565b6040516103b6919061287d565b60405180910390f35b6103d960048036038101906103d491906125f1565b610e96565b005b6103f560048036038101906103f09190612471565b610fdd565b6040516104029190612862565b60405180910390f35b61042560048036038101906104209190612471565b610ffd565b005b610441600480360381019061043c9190612525565b6110ed565b005b61045d60048036038101906104589190612525565b611190565b60405161046a9190612862565b60405180910390f35b61048d60048036038101906104889190612525565b61125d565b60405161049a9190612862565b60405180910390f35b6104bd60048036038101906104b8919061262d565b61127b565b005b6104c761132a565b6040516104d4919061287d565b60405180910390f35b6104f760048036038101906104f29190612561565b6113bc565b005b610513600480360381019061050e919061262d565b6113c1565b005b61052f600480360381019061052a919061249a565b611470565b60405161053c91906129bf565b60405180910390f35b61054d6114f7565b60405161055a919061281e565b60405180910390f35b61057d60048036038101906105789190612471565b61151d565b005b61059960048036038101906105949190612471565b61160d565b005b6105b560048036038101906105b09190612471565b611756565b005b6105d160048036038101906105cc919061262d565b611846565b005b6105ed60048036038101906105e89190612471565b6118f5565b6040516105fa9190612862565b60405180910390f35b60606007805461061290612bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461063e90612bcb565b801561068b5780601f106106605761010080835404028352916020019161068b565b820191906000526020600020905b81548152906001019060200180831161066e57829003601f168201915b5050505050905090565b60006106a96106a2611915565b848461191d565b6001905092915050565b6000600654905090565b60006106ca848484611ae8565b61078b846106d6611915565b61078685604051806060016040528060288152602001612fc660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073c611915565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b61191d565b600190509392505050565b6000600a60009054906101000a900460ff16905090565b60006108566107ba611915565b8461085185600560006107cb611915565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb790919063ffffffff16565b61191d565b6001905092915050565b610868611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec9061291f565b60405180910390fd5b600160149054906101000a900460ff1661090e57600080fd5b6000600160146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b61095f611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e39061291f565b60405180910390fd5b6109f68282611f15565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a3b611915565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160149054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c01611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c859061291f565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cf1611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d759061291f565b60405180910390fd5b600160149054906101000a900460ff1615610d9857600080fd5b60018060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060088054610e1390612bcb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3f90612bcb565b8015610e8c5780601f10610e6157610100808354040283529160200191610e8c565b820191906000526020600020905b815481529060010190602001808311610e6f57829003601f168201915b5050505050905090565b610e9e611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f229061291f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f86929190612839565b602060405180830381600087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd891906125c8565b505050565b60026020528060005260406000206000915054906101000a900460ff1681565b611005611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110899061291f565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6110f5611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061291f565b60405180910390fd5b61118c82826120ab565b5050565b600061125361119d611915565b8461124e85604051806060016040528060258152602001612fee60259139600560006111c7611915565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b61191d565b6001905092915050565b600061127161126a611915565b8484611ae8565b6001905092915050565b611283611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611310576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113079061291f565b60405180910390fd5b80600890805190602001906113269291906122aa565b5050565b60606009805461133990612bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461136590612bcb565b80156113b25780601f10611387576101008083540402835291602001916113b2565b820191906000526020600020905b81548152906001019060200180831161139557829003601f168201915b5050505050905090565b600080fd5b6113c9611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d9061291f565b60405180910390fd5b806007908051906020019061146c9291906122aa565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611525611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a99061291f565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611615611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116999061291f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906128bf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61175e611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e29061291f565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61184e611915565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061291f565b60405180910390fd5b80600990805190602001906118f19291906122aa565b5050565b60036020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061297f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906128df565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611adb91906129bf565b60405180910390a3505050565b6000611af2611915565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b595750600160149054906101000a900460ff16155b611b6257600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611bb957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c209061295f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c909061289f565b60405180910390fd5b611ca484848461225b565b611d1082604051806060016040528060268152602001612fa060269139600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611da582600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb790919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e4591906129bf565b60405180910390a350505050565b6000838311158290611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e92919061287d565b60405180910390fd5b5060008385611eaa9190612aee565b9050809150509392505050565b6000808284611ec69190612a98565b905083811015611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f02906128ff565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c9061299f565b60405180910390fd5b611f916000838361225b565b611fa681600654611eb790919063ffffffff16565b600681905550611ffe81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209f91906129bf565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561211b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121129061293f565b60405180910390fd5b6121278260008361225b565b61219381604051806060016040528060228152602001612f7e60229139600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e539092919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121eb8160065461226090919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224f91906129bf565b60405180910390a35050565b505050565b60006122a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e53565b905092915050565b8280546122b690612bcb565b90600052602060002090601f0160209004810192826122d8576000855561231f565b82601f106122f157805160ff191683800117855561231f565b8280016001018555821561231f579182015b8281111561231e578251825591602001919060010190612303565b5b50905061232c9190612330565b5090565b5b80821115612349576000816000905550600101612331565b5090565b600061236061235b84612a1a565b6129f5565b90508281526020810184848401111561237857600080fd5b612383848285612b89565b509392505050565b600061239e61239984612a4b565b6129f5565b9050828152602081018484840111156123b657600080fd5b6123c1848285612b89565b509392505050565b6000813590506123d881612f21565b92915050565b6000815190506123ed81612f38565b92915050565b600082601f83011261240457600080fd5b813561241484826020860161234d565b91505092915050565b60008135905061242c81612f4f565b92915050565b600082601f83011261244357600080fd5b813561245384826020860161238b565b91505092915050565b60008135905061246b81612f66565b92915050565b60006020828403121561248357600080fd5b6000612491848285016123c9565b91505092915050565b600080604083850312156124ad57600080fd5b60006124bb858286016123c9565b92505060206124cc858286016123c9565b9150509250929050565b6000806000606084860312156124eb57600080fd5b60006124f9868287016123c9565b935050602061250a868287016123c9565b925050604061251b8682870161245c565b9150509250925092565b6000806040838503121561253857600080fd5b6000612546858286016123c9565b92505060206125578582860161245c565b9150509250929050565b60008060006060848603121561257657600080fd5b6000612584868287016123c9565b93505060206125958682870161245c565b925050604084013567ffffffffffffffff8111156125b257600080fd5b6125be868287016123f3565b9150509250925092565b6000602082840312156125da57600080fd5b60006125e8848285016123de565b91505092915050565b6000806040838503121561260457600080fd5b60006126128582860161241d565b92505060206126238582860161245c565b9150509250929050565b60006020828403121561263f57600080fd5b600082013567ffffffffffffffff81111561265957600080fd5b61266584828501612432565b91505092915050565b61267781612b22565b82525050565b61268681612b34565b82525050565b600061269782612a7c565b6126a18185612a87565b93506126b1818560208601612b98565b6126ba81612cbb565b840191505092915050565b60006126d2602383612a87565b91506126dd82612ccc565b604082019050919050565b60006126f5602683612a87565b915061270082612d1b565b604082019050919050565b6000612718602283612a87565b915061272382612d6a565b604082019050919050565b600061273b601b83612a87565b915061274682612db9565b602082019050919050565b600061275e602083612a87565b915061276982612de2565b602082019050919050565b6000612781602183612a87565b915061278c82612e0b565b604082019050919050565b60006127a4602583612a87565b91506127af82612e5a565b604082019050919050565b60006127c7602483612a87565b91506127d282612ea9565b604082019050919050565b60006127ea601f83612a87565b91506127f582612ef8565b602082019050919050565b61280981612b72565b82525050565b61281881612b7c565b82525050565b6000602082019050612833600083018461266e565b92915050565b600060408201905061284e600083018561266e565b61285b6020830184612800565b9392505050565b6000602082019050612877600083018461267d565b92915050565b60006020820190508181036000830152612897818461268c565b905092915050565b600060208201905081810360008301526128b8816126c5565b9050919050565b600060208201905081810360008301526128d8816126e8565b9050919050565b600060208201905081810360008301526128f88161270b565b9050919050565b600060208201905081810360008301526129188161272e565b9050919050565b6000602082019050818103600083015261293881612751565b9050919050565b6000602082019050818103600083015261295881612774565b9050919050565b6000602082019050818103600083015261297881612797565b9050919050565b60006020820190508181036000830152612998816127ba565b9050919050565b600060208201905081810360008301526129b8816127dd565b9050919050565b60006020820190506129d46000830184612800565b92915050565b60006020820190506129ef600083018461280f565b92915050565b60006129ff612a10565b9050612a0b8282612bfd565b919050565b6000604051905090565b600067ffffffffffffffff821115612a3557612a34612c8c565b5b612a3e82612cbb565b9050602081019050919050565b600067ffffffffffffffff821115612a6657612a65612c8c565b5b612a6f82612cbb565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612aa382612b72565b9150612aae83612b72565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ae357612ae2612c2e565b5b828201905092915050565b6000612af982612b72565b9150612b0483612b72565b925082821015612b1757612b16612c2e565b5b828203905092915050565b6000612b2d82612b52565b9050919050565b60008115159050919050565b6000612b4b82612b22565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612bb6578082015181840152602081019050612b9b565b83811115612bc5576000848401525b50505050565b60006002820490506001821680612be357607f821691505b60208210811415612bf757612bf6612c5d565b5b50919050565b612c0682612cbb565b810181811067ffffffffffffffff82111715612c2557612c24612c8c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612f2a81612b22565b8114612f3557600080fd5b50565b612f4181612b34565b8114612f4c57600080fd5b50565b612f5881612b40565b8114612f6357600080fd5b50565b612f6f81612b72565b8114612f7a57600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122045a0d104eb6ceb81de053e0a10a7ae41b2ee6154cff1f59f9c263df0f740022664736f6c63430008030033