More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 724 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Recover Tokens | 18999278 | 374 days ago | IN | 0 ETH | 0.00061078 | ||||
Recover Tokens | 18999265 | 374 days ago | IN | 0 ETH | 0.0006373 | ||||
Transfer | 11868959 | 1435 days ago | IN | 0.2 ETH | 0.004494 | ||||
Transfer | 11808291 | 1444 days ago | IN | 0.15 ETH | 0.007749 | ||||
Clearing | 11808267 | 1444 days ago | IN | 0 ETH | 0.04983823 | ||||
Clearing | 11808264 | 1444 days ago | IN | 0 ETH | 0.25047594 | ||||
Clearing | 11808256 | 1444 days ago | IN | 0 ETH | 0.25090979 | ||||
Clearing | 11808256 | 1444 days ago | IN | 0 ETH | 0.25328422 | ||||
Clearing | 11808254 | 1444 days ago | IN | 0 ETH | 0.25974168 | ||||
Clearing | 11808249 | 1444 days ago | IN | 0 ETH | 0.26108969 | ||||
Clearing | 11808240 | 1444 days ago | IN | 0 ETH | 0.24809917 | ||||
Clearing | 11808238 | 1444 days ago | IN | 0 ETH | 0.25007554 | ||||
Clearing | 11808238 | 1444 days ago | IN | 0 ETH | 0.2571283 | ||||
Clearing | 11808233 | 1444 days ago | IN | 0 ETH | 0.25407646 | ||||
Clearing | 11808225 | 1444 days ago | IN | 0 ETH | 0.24904825 | ||||
Clearing | 11806992 | 1445 days ago | IN | 0 ETH | 0.1314859 | ||||
Clearing | 11806992 | 1445 days ago | IN | 0 ETH | 0.1324347 | ||||
Clearing | 11806989 | 1445 days ago | IN | 0 ETH | 0.1319203 | ||||
Clearing | 11806989 | 1445 days ago | IN | 0 ETH | 0.1267831 | ||||
Clearing | 11806988 | 1445 days ago | IN | 0 ETH | 0.1342603 | ||||
Clearing | 11806988 | 1445 days ago | IN | 0 ETH | 0.1354347 | ||||
Clearing | 11806988 | 1445 days ago | IN | 0 ETH | 0.1291231 | ||||
Clearing | 11806988 | 1445 days ago | IN | 0 ETH | 0.1306231 | ||||
Clearing | 11806981 | 1445 days ago | IN | 0 ETH | 0.1354347 | ||||
Clearing | 11806981 | 1445 days ago | IN | 0 ETH | 0.1281603 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
11808267 | 1444 days ago | 0.37077689 ETH | ||||
11806697 | 1445 days ago | 0.285 ETH | ||||
11797467 | 1446 days ago | 2 ETH | ||||
11793122 | 1447 days ago | 2 ETH | ||||
11793101 | 1447 days ago | 2 ETH | ||||
11792858 | 1447 days ago | 0.39 ETH | ||||
11791052 | 1447 days ago | 0.5 ETH | ||||
11791038 | 1447 days ago | 1 ETH | ||||
11791026 | 1447 days ago | 0.1 ETH | ||||
11790995 | 1447 days ago | 1 ETH | ||||
11790956 | 1447 days ago | 1 ETH | ||||
11790956 | 1447 days ago | 1 ETH | ||||
11790955 | 1447 days ago | 7 ETH | ||||
11790955 | 1447 days ago | 9 ETH | ||||
11790954 | 1447 days ago | 12 ETH | ||||
11790944 | 1447 days ago | 0.5 ETH | ||||
11790935 | 1447 days ago | 1 ETH | ||||
11790934 | 1447 days ago | 1 ETH | ||||
11790934 | 1447 days ago | 0.2 ETH | ||||
11790934 | 1447 days ago | 0.9 ETH | ||||
11790932 | 1447 days ago | 1 ETH | ||||
11790925 | 1447 days ago | 2 ETH | ||||
11790924 | 1447 days ago | 2 ETH | ||||
11790921 | 1447 days ago | 2.086 ETH | ||||
11790918 | 1447 days ago | 2.086 ETH |
Loading...
Loading
Contract Name:
NUXSale
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-01 */ /** * @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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ 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 Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @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]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @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); } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @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. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface INUXAsset { function availableBalanceOf(address _holder) external view returns(uint); function scheduleReleaseStart() external; function transferLock(address _to, uint _value) external; function publicSaleTransferLock(address _to, uint _value) external; function locked(address _holder) external view returns(uint, uint); function preSaleScheduleReleaseStart() external; function preSaleTransferLock(address _to, uint _value) external; } contract NUXConstants { uint constant NUX = 10**18; } contract Readable { function since(uint _timestamp) internal view returns(uint) { if (not(passed(_timestamp))) { return 0; } return block.timestamp - _timestamp; } function passed(uint _timestamp) internal view returns(bool) { return _timestamp < block.timestamp; } function not(bool _condition) internal pure returns(bool) { return !_condition; } } library ExtraMath { function toUInt32(uint _a) internal pure returns(uint32) { require(_a <= uint32(-1), 'uint32 overflow'); return uint32(_a); } function toUInt40(uint _a) internal pure returns(uint40) { require(_a <= uint40(-1), 'uint40 overflow'); return uint40(_a); } function toUInt64(uint _a) internal pure returns(uint64) { require(_a <= uint64(-1), 'uint64 overflow'); return uint64(_a); } function toUInt128(uint _a) internal pure returns(uint128) { require(_a <= uint128(-1), 'uint128 overflow'); return uint128(_a); } } contract NUXSale is Ownable, NUXConstants, Readable { using SafeERC20 for IERC20; using ExtraMath for *; using SafeMath for *; INUXAsset public NUXAsset; address payable public treasury; struct State { uint32 etherPriceUSD; uint40 minimumDepositUSD; uint40 maximumDepositUSD; uint64 totalDepositedInUSD; uint32 nextDepositId; uint32 clearedDepositId; } State private _state; mapping(uint => Deposit) public deposits; uint public constant SALE_START = 1612278000; // Tuesday, February 2, 2021 3:00:00 PM UTC uint public constant SALE_END = SALE_START + 84 hours; // Saturday, February 6, 2021 3:00:00 PM UTC struct Deposit { address payable user; uint amount; uint clearing1; uint clearing2; uint clearing3; uint clearing4; } event DepositEvent(address _from, uint _value); event ETHReturned(address _to, uint _amount); event ETHPriceSet(uint _usdPerETH); event Cleared(); event ClearingPaused(uint _lastDepositId); event TreasurySet(address _treasury); modifier onlyTreasury { require(msg.sender == treasury, 'Only treasury'); _; } constructor(INUXAsset _nux, address payable _treasury) public { NUXAsset = _nux; treasury = _treasury; } function etherPriceUSD() public view returns(uint) { return _state.etherPriceUSD; } function minimumDepositUSD() public view returns(uint) { return _state.minimumDepositUSD; } function maximumDepositUSD() public view returns(uint) { return _state.maximumDepositUSD; } function totalDepositedInUSD() public view returns(uint) { return _state.totalDepositedInUSD; } function nextDepositId() public view returns(uint) { return _state.nextDepositId; } function clearedDepositId() public view returns(uint) { return _state.clearedDepositId; } function setETHPrice(uint _usdPerETH) public onlyOwner { State memory state = _state; require(state.etherPriceUSD == 0, 'Already set'); state.etherPriceUSD = _usdPerETH.toUInt32(); state.minimumDepositUSD = (_usdPerETH / 10).toUInt40(); // 0.1 ETH state.maximumDepositUSD = (50 * _usdPerETH).toUInt40(); // 50 ETH _state = state; emit ETHPriceSet(_usdPerETH); } function setTreasury(address payable _treasury) public onlyOwner { require(_treasury != address(0), 'Zero address not allowed'); treasury = _treasury; emit TreasurySet(_treasury); } function saleStarted() public view returns(bool) { return passed(SALE_START); } function tokensSold() public view returns(uint) { return totalDepositedInUSD() * NUX / getSalePrice(); } function saleEnded() public view returns(bool) { return passed(SALE_END) || _isTokensSold(getSalePrice(), totalDepositedInUSD()); } function _saleEnded(uint _salePrice, uint _totalDeposited) private view returns(bool) { return passed(SALE_END) || _isTokensSold(_salePrice, _totalDeposited); } function ETHToUSD(uint _value) public view returns(uint) { return _ETHToUSD(_value, etherPriceUSD()); } function _ETHToUSD(uint _value, uint _etherPrice) private pure returns(uint) { return (_value * _etherPrice) / 1 ether; } function USDtoETH(uint _value) public view returns(uint) { return (_value * 1 ether) / etherPriceUSD(); } function USDToNUX(uint _value) public view returns(uint) { return (_value * NUX) / getSalePrice(); } function NUXToUSD(uint _value) public view returns(uint) { return (_value * getSalePrice()) / NUX; } function ETHToNUX(uint _value) public view returns(uint) { return _ETHToNUX(_value, etherPriceUSD(), getSalePrice()); } function NUXToETH(uint _value) public view returns(uint) { return _NUXToETH(_value, etherPriceUSD(), getSalePrice()); } function _ETHToNUX(uint _value, uint _ethPrice, uint _salePrice) private pure returns(uint) { return _value * _ethPrice / _salePrice; } function _NUXToETH(uint _value, uint _ethPrice, uint _salePrice) private pure returns(uint) { return _value * _salePrice / _ethPrice; } function getSalePrice() public view returns(uint) { return _getSalePrice(totalDepositedInUSD()); } function _getSalePrice(uint _totalDeposited) private view returns(uint) { if (_isTokensSold(2500000, _totalDeposited) || not(passed(SALE_START + 12 hours))) { return 2500000; // 2.5 USD } else if (_isTokensSold(1830000, _totalDeposited) || not(passed(SALE_START + 24 hours))) { return 1830000; // 1.83 USD } else if (_isTokensSold(1350000, _totalDeposited) || not(passed(SALE_START + 36 hours))) { return 1350000; // 1.35 USD } else if (_isTokensSold(990000, _totalDeposited) || not(passed(SALE_START + 48 hours))) { return 990000; // 0.99 USD } else if (_isTokensSold(730000, _totalDeposited) || not(passed(SALE_START + 60 hours))){ return 730000; // 0.73 USD } else if (_isTokensSold(530000, _totalDeposited) || not(passed(SALE_START + 72 hours))) { return 530000; // 0.53 USD } else { return 350000; // 0.35 USD } } function _isTokensSold(uint _price, uint _totalDeposited) internal pure returns(bool) { return ((_totalDeposited * NUX) / _price) >= (4000000 * NUX); } function () external payable { if (msg.sender == treasury) { return; } _deposit(); } function depositETH() public payable { _deposit(); } function _deposit() internal { State memory state = _state; treasury.transfer(msg.value); uint usd = _ETHToUSD(msg.value, state.etherPriceUSD); require(saleStarted(), 'Public sale not started yet'); require(not(_saleEnded(_getSalePrice(state.totalDepositedInUSD), state.totalDepositedInUSD)), 'Public sale already ended'); require(usd >= uint(state.minimumDepositUSD), 'Minimum deposit not met'); require(usd <= uint(state.maximumDepositUSD), 'Maximum deposit reached'); deposits[state.nextDepositId] = Deposit(msg.sender, msg.value, 1, 1, 1, 1); state.nextDepositId = (state.nextDepositId.add(1)).toUInt32(); state.totalDepositedInUSD = (state.totalDepositedInUSD.add(usd)).toUInt64(); _state = state; emit DepositEvent(msg.sender, msg.value); } function clearing() public onlyOwner { State memory state = _state; uint salePrice = _getSalePrice(state.totalDepositedInUSD); require(_saleEnded(salePrice, state.totalDepositedInUSD), 'Public sale not ended yet'); require(state.nextDepositId > state.clearedDepositId, 'Clearing finished'); INUXAsset nuxAsset = NUXAsset; (, uint lockedBalance) = nuxAsset.locked(address(this)); for (uint i = state.clearedDepositId; i < state.nextDepositId; i++) { if (gasleft() < 500000) { state.clearedDepositId = i.toUInt32(); _state = state; emit ClearingPaused(i); return; } Deposit memory deposit = deposits[i]; delete deposits[i]; uint nux = _ETHToNUX(deposit.amount, state.etherPriceUSD, salePrice); if (lockedBalance >= nux) { nuxAsset.publicSaleTransferLock(deposit.user, nux); lockedBalance = lockedBalance - nux; } else if (lockedBalance > 0) { nuxAsset.publicSaleTransferLock(deposit.user, lockedBalance); uint tokensLeftToETH = nux - lockedBalance; uint ethAmount = _NUXToETH(tokensLeftToETH, state.etherPriceUSD, salePrice); lockedBalance = 0; deposit.user.transfer(ethAmount); emit ETHReturned(deposit.user, ethAmount); } else { deposit.user.transfer(deposit.amount); emit ETHReturned(deposit.user, deposit.amount); } } state.clearedDepositId = state.nextDepositId; if (lockedBalance > 0) { nuxAsset.publicSaleTransferLock(address(0), lockedBalance); } _state = state; emit Cleared(); } function recoverTokens(IERC20 _token, address _to, uint _value) public onlyTreasury { _token.safeTransfer(_to, _value); } function recoverETH() public onlyTreasury { treasury.transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"clearing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"recoverETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SALE_START","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSalePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"ETHToNUX","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumDepositUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"recoverTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"NUXToUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDepositedInUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextDepositId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"NUXToETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"USDToNUX","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumDepositUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SALE_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherPriceUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"ETHToUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NUXAsset","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"clearedDepositId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"deposits","outputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"clearing1","type":"uint256"},{"name":"clearing2","type":"uint256"},{"name":"clearing3","type":"uint256"},{"name":"clearing4","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_usdPerETH","type":"uint256"}],"name":"setETHPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"USDtoETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_nux","type":"address"},{"name":"_treasury","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"DepositEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ETHReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_usdPerETH","type":"uint256"}],"name":"ETHPriceSet","type":"event"},{"anonymous":false,"inputs":[],"name":"Cleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_lastDepositId","type":"uint256"}],"name":"ClearingPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_treasury","type":"address"}],"name":"TreasurySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405160408062002b198339810180604052604081101561003157600080fd5b508051602091820151909160009061004c906100c7811b901c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100cb565b3390565b612a3e80620000db6000396000f3fe6080604052600436106101d85760003560e01c80638d134bed11610102578063ac73a53011610095578063dda7893111610064578063dda78931146105a5578063f0f44260146105cf578063f2fde38b1461060f578063f6326fb31461064f576101d8565b8063ac73a530146104dd578063acbd08d6146104f2578063b02c43d014610507578063bc7dce061461057b576101d8565b80639aa0ff7b116100d15780639aa0ff7b146104745780639b8906ae146104895780639f0650d91461049e578063a034050c146104b3576101d8565b80638d134bed1461040b5780638da5cb5b146104355780638f32d59b1461044a5780638f8bdc341461045f576101d8565b80635c474f9e1161017a578063715018a611610149578063715018a6146103a25780637e83ea78146103b75780638070a4bd146103cc5780638ab83590146103e1576101d8565b80635c474f9e146102c15780635f3e849f146102ea57806361d027b31461033a5780636f25c35014610378576101d8565b80632fbc0bf1116101b65780632fbc0bf1146102585780634f084c931461026d578063518ab2a814610297578063531acc13146102ac576101d8565b8063027cb7c6146102075780630614117a1461021c5780632267303014610231575b60025473ffffffffffffffffffffffffffffffffffffffff163314156101fd57610205565b610205610657565b005b34801561021357600080fd5b50610205610c34565b34801561022857600080fd5b506102056116e9565b34801561023d57600080fd5b506102466117b9565b60408051918252519081900360200190f35b34801561026457600080fd5b506102466117c1565b34801561027957600080fd5b506102466004803603602081101561029057600080fd5b50356117d8565b3480156102a357600080fd5b506102466117fb565b3480156102b857600080fd5b50610246611824565b3480156102cd57600080fd5b506102d6611839565b604080519115158252519081900360200190f35b3480156102f657600080fd5b506102056004803603606081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611848565b34801561034657600080fd5b5061034f6118fa565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561038457600080fd5b506102466004803603602081101561039b57600080fd5b5035611916565b3480156103ae57600080fd5b50610205611939565b3480156103c357600080fd5b50610246611a1b565b3480156103d857600080fd5b50610246611a3d565b3480156103ed57600080fd5b506102466004803603602081101561040457600080fd5b5035611a63565b34801561041757600080fd5b506102466004803603602081101561042e57600080fd5b5035611a7e565b34801561044157600080fd5b5061034f611a9a565b34801561045657600080fd5b506102d6611ab6565b34801561046b57600080fd5b50610246611af4565b34801561048057600080fd5b50610246611b0e565b34801561049557600080fd5b506102d6611b16565b3480156104aa57600080fd5b50610246611b43565b3480156104bf57600080fd5b50610246600480360360208110156104d657600080fd5b5035611b4f565b3480156104e957600080fd5b5061034f611b62565b3480156104fe57600080fd5b50610246611b7e565b34801561051357600080fd5b506105316004803603602081101561052a57600080fd5b5035611ba8565b6040805173ffffffffffffffffffffffffffffffffffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561058757600080fd5b506102056004803603602081101561059e57600080fd5b5035611bf4565b3480156105b157600080fd5b50610246600480360360208110156105c857600080fd5b5035611f89565b3480156105db57600080fd5b50610205600480360360208110156105f257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611fa5565b34801561061b57600080fd5b506102056004803603602081101561063257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612113565b61020561218f565b61065f612941565b506040805160c08101825260035463ffffffff808216835264ffffffffff64010000000083048116602085015269010000000000000000008304168385015267ffffffffffffffff6e01000000000000000000000000000083041660608401527601000000000000000000000000000000000000000000008204811660808401527a0100000000000000000000000000000000000000000000000000009091041660a08201526002549151909173ffffffffffffffffffffffffffffffffffffffff16903480156108fc02916000818181858888f1935050505015801561074a573d6000803e3d6000fd5b50600061076134836000015163ffffffff16612197565b905061076b611839565b6107d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5075626c69632073616c65206e6f742073746172746564207965740000000000604482015290519081900360640190fd5b61080c6108076107f3846060015167ffffffffffffffff166121a6565b846060015167ffffffffffffffff166122de565b612304565b61087757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5075626c69632073616c6520616c726561647920656e64656400000000000000604482015290519081900360640190fd5b816020015164ffffffffff168110156108f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e696d756d206465706f736974206e6f74206d6574000000000000000000604482015290519081900360640190fd5b816040015164ffffffffff1681111561096b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d6178696d756d206465706f7369742072656163686564000000000000000000604482015290519081900360640190fd5b6040805160c081018252338152346020808301918252600183850181815260608501828152608080870184815260a08801858152918b01805163ffffffff90811660009081526004988990529a909a20985189547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161789559651888601559251600288015590516003870155905192850192909255905160059093019290925551610a3d92610a3892918116919061230816565b61237c565b63ffffffff90811660808401526060830151610a6f91610a6a9167ffffffffffffffff1690849061230816565b6123f5565b67ffffffffffffffff166060830181905282516003805460208087015160408089015160808a015160a08b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090961663ffffffff988916177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff95861602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009490921693909302177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e010000000000000000000000000000909702969096177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000091861691909102177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000094909216939093021790558151338152349181019190915281517f2d8a08b6430a894aea608bcaa6013d5d3e263bc49110605e4d4ba76930ae5c29929181900390910190a15050565b610c3c611ab6565b610ca757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610caf612941565b506040805160c08101825260035463ffffffff808216835264ffffffffff64010000000083048116602085015269010000000000000000008304169383019390935267ffffffffffffffff6e010000000000000000000000000000820416606083018190527601000000000000000000000000000000000000000000008204841660808401527a01000000000000000000000000000000000000000000000000000090910490921660a082015290600090610d69906121a6565b9050610d8381836060015167ffffffffffffffff166122de565b610dee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5075626c69632073616c65206e6f7420656e6465642079657400000000000000604482015290519081900360640190fd5b8160a0015163ffffffff16826080015163ffffffff1611610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f436c656172696e672066696e6973686564000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fcbf9fe5f000000000000000000000000000000000000000000000000000000008152306004820152815173ffffffffffffffffffffffffffffffffffffffff90931692600092849263cbf9fe5f9260248083019392829003018186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d6040811015610f0b57600080fd5b506020015160a085015190915063ffffffff165b846080015163ffffffff1681101561148e576207a1205a101561111757610f458161237c565b63ffffffff90811660a087018190528651600380546020808b01516040808d015160608e015160808f01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909616978a16979097177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff94851602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009390911692909202919091177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e01000000000000000000000000000067ffffffffffffffff90961695909502949094177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000009290961691909102949094177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000090930292909217909155805183815290517f98d06930b6d849198af1f4a40fe3bec55a52d77944ef2ad5953e9d43198b37e6929181900390910190a150505050506116e7565b61111f612976565b506000818152600460208181526040808420815160c081018352815473ffffffffffffffffffffffffffffffffffffffff811682526001830180548387019081526002850180549685019690965260038501805460608601528589018054608087015260058701805460a08801528c8c52999098527fffffffffffffffffffffffff0000000000000000000000000000000000000000909316909455879055928690559185905591849055918390555187519192916111e5919063ffffffff168861246e565b905080841061128a578151604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101849052905191871691639ba5f69a9160448082019260009290919082900301818387803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050508084039350611484565b83156113e2578151604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191871691639ba5f69a9160448082019260009290919082900301818387803b15801561130a57600080fd5b505af115801561131e573d6000803e3d6000fd5b5050885186840392506000915061133d90839063ffffffff168a612484565b84516040516000985091925073ffffffffffffffffffffffffffffffffffffffff169082156108fc0290839089818181858888f19350505050158015611387573d6000803e3d6000fd5b5083516040805173ffffffffffffffffffffffffffffffffffffffff90921682526020820183905280517f2631c1c9d9f729c32336207ec2ef1b8aecc32e2b6ac9852427d0bde6a165ab919281900390910190a15050611484565b8151602083015160405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f1935050505015801561142c573d6000803e3d6000fd5b5081516020808401516040805173ffffffffffffffffffffffffffffffffffffffff90941684529183015280517f2631c1c9d9f729c32336207ec2ef1b8aecc32e2b6ac9852427d0bde6a165ab919281900390910190a15b5050600101610f1f565b50608084015163ffffffff1660a0850152801561153157604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915173ffffffffffffffffffffffffffffffffffffffff851692639ba5f69a926044808201939182900301818387803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050505b835160038054602087015160408089015160608a015160808b015160a08c01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090961663ffffffff988916177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff96871602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009590931694909402919091177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e01000000000000000000000000000067ffffffffffffffff90921691909102177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000092861692909202919091177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a0100000000000000000000000000000000000000000000000000009490921693909302179055517f84c777537c2326c0cdcde34bc2eb567dda7621fc7344588e8f8feb58ab9b9c5090600090a1505050505b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461176f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f6e6c7920747265617375727900000000000000000000000000000000000000604482015290519081900360640190fd5b60025460405173ffffffffffffffffffffffffffffffffffffffff90911690303180156108fc02916000818181858888f193505050501580156117b6573d6000803e3d6000fd5b50565b63601968f081565b60006117d36117ce611a1b565b6121a6565b905090565b60006117f3826117e6611b43565b6117ee6117c1565b61246e565b90505b919050565b60006118056117c1565b670de0b6b3a7640000611816611a1b565b028161181e57fe5b04905090565b600354640100000000900464ffffffffff1690565b60006117d363601968f0612491565b60025473ffffffffffffffffffffffffffffffffffffffff1633146118ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f6e6c7920747265617375727900000000000000000000000000000000000000604482015290519081900360640190fd5b6118f573ffffffffffffffffffffffffffffffffffffffff8416838363ffffffff61249616565b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a76400006119296117c1565b83028161193257fe5b0492915050565b611941611ab6565b6119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6003546e010000000000000000000000000000900467ffffffffffffffff1690565b600354760100000000000000000000000000000000000000000000900463ffffffff1690565b60006117f382611a71611b43565b611a796117c1565b612484565b6000611a886117c1565b670de0b6b3a764000083028161193257fe5b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16611ad8612523565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6003546901000000000000000000900464ffffffffff1690565b63601e063081565b6000611b2563601e0630612491565b806117d357506117d3611b366117c1565b611b3e611a1b565b612527565b60035463ffffffff1690565b60006117f382611b5d611b43565b612197565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003547a010000000000000000000000000000000000000000000000000000900463ffffffff1690565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015473ffffffffffffffffffffffffffffffffffffffff909316949193909286565b611bfc611ab6565b611c6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611c6f612941565b506040805160c08101825260035463ffffffff80821680845264ffffffffff64010000000084048116602086015269010000000000000000008404169484019490945267ffffffffffffffff6e01000000000000000000000000000083041660608401527601000000000000000000000000000000000000000000008204811660808401527a0100000000000000000000000000000000000000000000000000009091041660a08201529015611d8657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f416c726561647920736574000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d8f8261237c565b63ffffffff168152611da3600a8304612552565b64ffffffffff166020820152611dbb60328302612552565b64ffffffffff9081166040808401829052835160038054602080880151606089015160808a015160a08b015163ffffffff9081167a010000000000000000000000000000000000000000000000000000027fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff928216760100000000000000000000000000000000000000000000027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9095166e010000000000000000000000000000027fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff6901000000000000000000909d027fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff97909e16640100000000027fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff94909b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009099169890981792909216989098179390931699909917979097169290921795909516179490941617909255815184815291517f37dcffad3b06af912e7fda69320a919573d0c99e0ba3ae2ae8e5be21be88d9fb9281900390910190a15050565b6000611f93611b43565b82670de0b6b3a7640000028161193257fe5b611fad611ab6565b61201857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661209a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9181900360200190a150565b61211b611ab6565b61218657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6117b6816125c8565b6116e7610657565b670de0b6b3a764000091020490565b60006121b5622625a083612527565b806121cb57506121cb61080763601a11b0612491565b156121da5750622625a06117f6565b6121e7621bec7083612527565b806121fd57506121fd61080763601aba70612491565b1561220c5750621bec706117f6565b6122196214997083612527565b8061222f575061222f61080763601b6330612491565b1561223e5750621499706117f6565b61224b620f1b3083612527565b80612261575061226161080763601c0bf0612491565b156122705750620f1b306117f6565b61227d620b239083612527565b80612293575061229361080763601cb4b0612491565b156122a25750620b23906117f6565b6122af6208165083612527565b806122c557506122c561080763601d5d70612491565b156122d45750620816506117f6565b50620557306117f6565b60006122ed63601e0630612491565b806122fd57506122fd8383612527565b9392505050565b1590565b6000828201838110156122fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600063ffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743332206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b5090565b600067ffffffffffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743634206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b6000818385028161247b57fe5b04949350505050565b6000828285028161247b57fe5b421190565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118f59084906126c1565b3390565b60006a034f086f3b33b68400000083670de0b6b3a764000084028161254857fe5b0410159392505050565b600064ffffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743430206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612634576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129c36026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6126e08273ffffffffffffffffffffffffffffffffffffffff16612905565b61274b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106127b457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612777565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612816576040519150601f19603f3d011682016040523d82523d6000602084013e61281b565b606091505b50915091508161288c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156128ff578080602001905160208110156128a857600080fd5b50516128ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806129e9602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061293957508115155b949350505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a72305820c4514907c707602e86ae3ea778fb28b39c3a0dd4e2613c451df8a6222699f7ae00290000000000000000000000001c2243aef55a316caa0b6a1715b607b898987483000000000000000000000000bb12800e7446a51395b2d853d6ce7f22210bb5e5
Deployed Bytecode
0x6080604052600436106101d85760003560e01c80638d134bed11610102578063ac73a53011610095578063dda7893111610064578063dda78931146105a5578063f0f44260146105cf578063f2fde38b1461060f578063f6326fb31461064f576101d8565b8063ac73a530146104dd578063acbd08d6146104f2578063b02c43d014610507578063bc7dce061461057b576101d8565b80639aa0ff7b116100d15780639aa0ff7b146104745780639b8906ae146104895780639f0650d91461049e578063a034050c146104b3576101d8565b80638d134bed1461040b5780638da5cb5b146104355780638f32d59b1461044a5780638f8bdc341461045f576101d8565b80635c474f9e1161017a578063715018a611610149578063715018a6146103a25780637e83ea78146103b75780638070a4bd146103cc5780638ab83590146103e1576101d8565b80635c474f9e146102c15780635f3e849f146102ea57806361d027b31461033a5780636f25c35014610378576101d8565b80632fbc0bf1116101b65780632fbc0bf1146102585780634f084c931461026d578063518ab2a814610297578063531acc13146102ac576101d8565b8063027cb7c6146102075780630614117a1461021c5780632267303014610231575b60025473ffffffffffffffffffffffffffffffffffffffff163314156101fd57610205565b610205610657565b005b34801561021357600080fd5b50610205610c34565b34801561022857600080fd5b506102056116e9565b34801561023d57600080fd5b506102466117b9565b60408051918252519081900360200190f35b34801561026457600080fd5b506102466117c1565b34801561027957600080fd5b506102466004803603602081101561029057600080fd5b50356117d8565b3480156102a357600080fd5b506102466117fb565b3480156102b857600080fd5b50610246611824565b3480156102cd57600080fd5b506102d6611839565b604080519115158252519081900360200190f35b3480156102f657600080fd5b506102056004803603606081101561030d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611848565b34801561034657600080fd5b5061034f6118fa565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561038457600080fd5b506102466004803603602081101561039b57600080fd5b5035611916565b3480156103ae57600080fd5b50610205611939565b3480156103c357600080fd5b50610246611a1b565b3480156103d857600080fd5b50610246611a3d565b3480156103ed57600080fd5b506102466004803603602081101561040457600080fd5b5035611a63565b34801561041757600080fd5b506102466004803603602081101561042e57600080fd5b5035611a7e565b34801561044157600080fd5b5061034f611a9a565b34801561045657600080fd5b506102d6611ab6565b34801561046b57600080fd5b50610246611af4565b34801561048057600080fd5b50610246611b0e565b34801561049557600080fd5b506102d6611b16565b3480156104aa57600080fd5b50610246611b43565b3480156104bf57600080fd5b50610246600480360360208110156104d657600080fd5b5035611b4f565b3480156104e957600080fd5b5061034f611b62565b3480156104fe57600080fd5b50610246611b7e565b34801561051357600080fd5b506105316004803603602081101561052a57600080fd5b5035611ba8565b6040805173ffffffffffffffffffffffffffffffffffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561058757600080fd5b506102056004803603602081101561059e57600080fd5b5035611bf4565b3480156105b157600080fd5b50610246600480360360208110156105c857600080fd5b5035611f89565b3480156105db57600080fd5b50610205600480360360208110156105f257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611fa5565b34801561061b57600080fd5b506102056004803603602081101561063257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612113565b61020561218f565b61065f612941565b506040805160c08101825260035463ffffffff808216835264ffffffffff64010000000083048116602085015269010000000000000000008304168385015267ffffffffffffffff6e01000000000000000000000000000083041660608401527601000000000000000000000000000000000000000000008204811660808401527a0100000000000000000000000000000000000000000000000000009091041660a08201526002549151909173ffffffffffffffffffffffffffffffffffffffff16903480156108fc02916000818181858888f1935050505015801561074a573d6000803e3d6000fd5b50600061076134836000015163ffffffff16612197565b905061076b611839565b6107d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5075626c69632073616c65206e6f742073746172746564207965740000000000604482015290519081900360640190fd5b61080c6108076107f3846060015167ffffffffffffffff166121a6565b846060015167ffffffffffffffff166122de565b612304565b61087757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5075626c69632073616c6520616c726561647920656e64656400000000000000604482015290519081900360640190fd5b816020015164ffffffffff168110156108f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e696d756d206465706f736974206e6f74206d6574000000000000000000604482015290519081900360640190fd5b816040015164ffffffffff1681111561096b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d6178696d756d206465706f7369742072656163686564000000000000000000604482015290519081900360640190fd5b6040805160c081018252338152346020808301918252600183850181815260608501828152608080870184815260a08801858152918b01805163ffffffff90811660009081526004988990529a909a20985189547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161789559651888601559251600288015590516003870155905192850192909255905160059093019290925551610a3d92610a3892918116919061230816565b61237c565b63ffffffff90811660808401526060830151610a6f91610a6a9167ffffffffffffffff1690849061230816565b6123f5565b67ffffffffffffffff166060830181905282516003805460208087015160408089015160808a015160a08b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090961663ffffffff988916177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff95861602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009490921693909302177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e010000000000000000000000000000909702969096177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000091861691909102177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000094909216939093021790558151338152349181019190915281517f2d8a08b6430a894aea608bcaa6013d5d3e263bc49110605e4d4ba76930ae5c29929181900390910190a15050565b610c3c611ab6565b610ca757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610caf612941565b506040805160c08101825260035463ffffffff808216835264ffffffffff64010000000083048116602085015269010000000000000000008304169383019390935267ffffffffffffffff6e010000000000000000000000000000820416606083018190527601000000000000000000000000000000000000000000008204841660808401527a01000000000000000000000000000000000000000000000000000090910490921660a082015290600090610d69906121a6565b9050610d8381836060015167ffffffffffffffff166122de565b610dee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5075626c69632073616c65206e6f7420656e6465642079657400000000000000604482015290519081900360640190fd5b8160a0015163ffffffff16826080015163ffffffff1611610e7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f436c656172696e672066696e6973686564000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fcbf9fe5f000000000000000000000000000000000000000000000000000000008152306004820152815173ffffffffffffffffffffffffffffffffffffffff90931692600092849263cbf9fe5f9260248083019392829003018186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d6040811015610f0b57600080fd5b506020015160a085015190915063ffffffff165b846080015163ffffffff1681101561148e576207a1205a101561111757610f458161237c565b63ffffffff90811660a087018190528651600380546020808b01516040808d015160608e015160808f01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909616978a16979097177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff94851602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009390911692909202919091177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e01000000000000000000000000000067ffffffffffffffff90961695909502949094177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000009290961691909102949094177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000090930292909217909155805183815290517f98d06930b6d849198af1f4a40fe3bec55a52d77944ef2ad5953e9d43198b37e6929181900390910190a150505050506116e7565b61111f612976565b506000818152600460208181526040808420815160c081018352815473ffffffffffffffffffffffffffffffffffffffff811682526001830180548387019081526002850180549685019690965260038501805460608601528589018054608087015260058701805460a08801528c8c52999098527fffffffffffffffffffffffff0000000000000000000000000000000000000000909316909455879055928690559185905591849055918390555187519192916111e5919063ffffffff168861246e565b905080841061128a578151604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101849052905191871691639ba5f69a9160448082019260009290919082900301818387803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050508084039350611484565b83156113e2578151604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101879052905191871691639ba5f69a9160448082019260009290919082900301818387803b15801561130a57600080fd5b505af115801561131e573d6000803e3d6000fd5b5050885186840392506000915061133d90839063ffffffff168a612484565b84516040516000985091925073ffffffffffffffffffffffffffffffffffffffff169082156108fc0290839089818181858888f19350505050158015611387573d6000803e3d6000fd5b5083516040805173ffffffffffffffffffffffffffffffffffffffff90921682526020820183905280517f2631c1c9d9f729c32336207ec2ef1b8aecc32e2b6ac9852427d0bde6a165ab919281900390910190a15050611484565b8151602083015160405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f1935050505015801561142c573d6000803e3d6000fd5b5081516020808401516040805173ffffffffffffffffffffffffffffffffffffffff90941684529183015280517f2631c1c9d9f729c32336207ec2ef1b8aecc32e2b6ac9852427d0bde6a165ab919281900390910190a15b5050600101610f1f565b50608084015163ffffffff1660a0850152801561153157604080517f9ba5f69a00000000000000000000000000000000000000000000000000000000815260006004820181905260248201849052915173ffffffffffffffffffffffffffffffffffffffff851692639ba5f69a926044808201939182900301818387803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050505b835160038054602087015160408089015160608a015160808b015160a08c01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090961663ffffffff988916177fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1664010000000064ffffffffff96871602177fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff1669010000000000000000009590931694909402919091177fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff166e01000000000000000000000000000067ffffffffffffffff90921691909102177fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000092861692909202919091177fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167a0100000000000000000000000000000000000000000000000000009490921693909302179055517f84c777537c2326c0cdcde34bc2eb567dda7621fc7344588e8f8feb58ab9b9c5090600090a1505050505b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461176f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f6e6c7920747265617375727900000000000000000000000000000000000000604482015290519081900360640190fd5b60025460405173ffffffffffffffffffffffffffffffffffffffff90911690303180156108fc02916000818181858888f193505050501580156117b6573d6000803e3d6000fd5b50565b63601968f081565b60006117d36117ce611a1b565b6121a6565b905090565b60006117f3826117e6611b43565b6117ee6117c1565b61246e565b90505b919050565b60006118056117c1565b670de0b6b3a7640000611816611a1b565b028161181e57fe5b04905090565b600354640100000000900464ffffffffff1690565b60006117d363601968f0612491565b60025473ffffffffffffffffffffffffffffffffffffffff1633146118ce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f6e6c7920747265617375727900000000000000000000000000000000000000604482015290519081900360640190fd5b6118f573ffffffffffffffffffffffffffffffffffffffff8416838363ffffffff61249616565b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a76400006119296117c1565b83028161193257fe5b0492915050565b611941611ab6565b6119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6003546e010000000000000000000000000000900467ffffffffffffffff1690565b600354760100000000000000000000000000000000000000000000900463ffffffff1690565b60006117f382611a71611b43565b611a796117c1565b612484565b6000611a886117c1565b670de0b6b3a764000083028161193257fe5b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16611ad8612523565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6003546901000000000000000000900464ffffffffff1690565b63601e063081565b6000611b2563601e0630612491565b806117d357506117d3611b366117c1565b611b3e611a1b565b612527565b60035463ffffffff1690565b60006117f382611b5d611b43565b612197565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003547a010000000000000000000000000000000000000000000000000000900463ffffffff1690565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015473ffffffffffffffffffffffffffffffffffffffff909316949193909286565b611bfc611ab6565b611c6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611c6f612941565b506040805160c08101825260035463ffffffff80821680845264ffffffffff64010000000084048116602086015269010000000000000000008404169484019490945267ffffffffffffffff6e01000000000000000000000000000083041660608401527601000000000000000000000000000000000000000000008204811660808401527a0100000000000000000000000000000000000000000000000000009091041660a08201529015611d8657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f416c726561647920736574000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d8f8261237c565b63ffffffff168152611da3600a8304612552565b64ffffffffff166020820152611dbb60328302612552565b64ffffffffff9081166040808401829052835160038054602080880151606089015160808a015160a08b015163ffffffff9081167a010000000000000000000000000000000000000000000000000000027fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff928216760100000000000000000000000000000000000000000000027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9095166e010000000000000000000000000000027fffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff6901000000000000000000909d027fffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff97909e16640100000000027fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff94909b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009099169890981792909216989098179390931699909917979097169290921795909516179490941617909255815184815291517f37dcffad3b06af912e7fda69320a919573d0c99e0ba3ae2ae8e5be21be88d9fb9281900390910190a15050565b6000611f93611b43565b82670de0b6b3a7640000028161193257fe5b611fad611ab6565b61201857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661209a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9181900360200190a150565b61211b611ab6565b61218657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6117b6816125c8565b6116e7610657565b670de0b6b3a764000091020490565b60006121b5622625a083612527565b806121cb57506121cb61080763601a11b0612491565b156121da5750622625a06117f6565b6121e7621bec7083612527565b806121fd57506121fd61080763601aba70612491565b1561220c5750621bec706117f6565b6122196214997083612527565b8061222f575061222f61080763601b6330612491565b1561223e5750621499706117f6565b61224b620f1b3083612527565b80612261575061226161080763601c0bf0612491565b156122705750620f1b306117f6565b61227d620b239083612527565b80612293575061229361080763601cb4b0612491565b156122a25750620b23906117f6565b6122af6208165083612527565b806122c557506122c561080763601d5d70612491565b156122d45750620816506117f6565b50620557306117f6565b60006122ed63601e0630612491565b806122fd57506122fd8383612527565b9392505050565b1590565b6000828201838110156122fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600063ffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743332206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b5090565b600067ffffffffffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743634206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b6000818385028161247b57fe5b04949350505050565b6000828285028161247b57fe5b421190565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118f59084906126c1565b3390565b60006a034f086f3b33b68400000083670de0b6b3a764000084028161254857fe5b0410159392505050565b600064ffffffffff8211156123f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f75696e743430206f766572666c6f770000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612634576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129c36026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6126e08273ffffffffffffffffffffffffffffffffffffffff16612905565b61274b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106127b457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612777565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612816576040519150601f19603f3d011682016040523d82523d6000602084013e61281b565b606091505b50915091508161288c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156128ff578080602001905160208110156128a857600080fd5b50516128ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806129e9602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061293957508115155b949350505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a72305820c4514907c707602e86ae3ea778fb28b39c3a0dd4e2613c451df8a6222699f7ae0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001c2243aef55a316caa0b6a1715b607b898987483000000000000000000000000bb12800e7446a51395b2d853d6ce7f22210bb5e5
-----Decoded View---------------
Arg [0] : _nux (address): 0x1C2243aef55a316CaA0B6a1715B607B898987483
Arg [1] : _treasury (address): 0xbb12800E7446A51395B2d853D6Ce7F22210Bb5E5
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001c2243aef55a316caa0b6a1715b607b898987483
Arg [1] : 000000000000000000000000bb12800e7446a51395b2d853d6ce7f22210bb5e5
Deployed Bytecode Sourcemap
20143:9046:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26024:8;;;;26010:10;:22;26006:61;;;26049:7;;26006:61;26077:10;:8;:10::i;:::-;20143:9046;27048:1884;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27048:1884:0;;;:::i;29083:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29083:101:0;;;:::i;20670:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20670:44:0;;;:::i;:::-;;;;;;;;;;;;;;;;24679:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24679:112:0;;;:::i;24083:133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24083:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24083:133:0;;:::i;22983:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22983:118:0;;;:::i;21665:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21665:105:0;;;:::i;22882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22882:93:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;28940:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28940:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28940:135:0;;;;;;;;;;;;;;;;;;:::i;20322:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20322:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23961:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23961:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23961:114:0;;:::i;17748:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17748:140:0;;;:::i;21891:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21891:109:0;;;:::i;22008:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:97:0;;;:::i;24224:133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24224:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24224:133:0;;:::i;23839:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23839:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23839:114:0;;:::i;16937:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16937:79:0;;;:::i;17303:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17303:94:0;;;:::i;21778:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21778:105:0;;;:::i;20765:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20765:53:0;;;:::i;23109:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23109:145:0;;;:::i;21560:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21560:97:0;;;:::i;23444:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23444:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23444:117:0;;:::i;20290:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20290:25:0;;;:::i;22113:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22113:103:0;;;:::i;20621:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20621:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20621:40:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22224:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22224:429:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22224:429:0;;:::i;23712:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23712:119:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23712:119:0;;:::i;22661:213::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22661:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22661:213:0;;;;:::i;18043:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18043:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18043:109:0;;;;:::i;26103:66::-;;;:::i;26177:863::-;26217:18;;:::i;:::-;-1:-1:-1;26217:27:0;;;;;;;;26238:6;26217:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26255:8;;:28;;26217:27;;26255:8;;;26273:9;26255:28;;;;;-1:-1:-1;26255:28:0;-1:-1:-1;26255:28:0;26273:9;26255:8;:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26255:28:0;26294:8;26305:41;26315:9;26326:5;:19;;;26305:41;;:9;:41::i;:::-;26294:52;;26365:13;:11;:13::i;:::-;26357:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26429:84;26433:79;26444:40;26458:5;:25;;;26444:40;;:13;:40::i;:::-;26486:5;:25;;;26433:79;;:10;:79::i;:::-;26429:3;:84::i;:::-;26421:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26574:5;:23;;;26569:29;;26562:3;:36;;26554:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26657:5;:23;;;26652:29;;26645:3;:36;;26637:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26754:42;;;;;;;;26762:10;26754:42;;26774:9;26754:42;;;;;;;26785:1;26754:42;;;;;;;;;;;;;;;;;;;;;;;;;26731:19;;;;;26722:29;;;;-1:-1:-1;26722:29:0;;;:8;:29;;;;;;;;:74;;;;;;26754:42;26722:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26830:19;26829:39;;26830:26;;:23;;;;26785:1;26830:23;:26;:::i;:::-;26829:37;:39::i;:::-;26807:61;;;;:19;;;:61;26910:25;;;;26909:47;;26910:34;;:29;;;26940:3;;26910:29;:34;:::i;:::-;26909:45;:47::i;:::-;26881:75;;:25;;;:75;;;26967:14;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26997:35;;27010:10;26997:35;;27022:9;26997:35;;;;;;;;;;;;;;;;;;;;26177:863;;:::o;27048:1884::-;17149:9;:7;:9::i;:::-;17141:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27096:18;;:::i;:::-;-1:-1:-1;27096:27:0;;;;;;;;27117:6;27096:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27151:40:0;;:13;:40::i;:::-;27134:57;;27210:48;27221:9;27232:5;:25;;;27210:48;;:10;:48::i;:::-;27202:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27329:5;:22;;;27307:44;;:5;:19;;;:44;;;27299:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27405:8;;27451:30;;;;;;27475:4;27451:30;;;;;;27405:8;;;;;27384:18;;27405:8;;27451:15;;:30;;;;;;;;;;;27405:8;27451:30;;;5:2:-1;;;;30:1;27;20:12;5:2;27451:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27451:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27451:30:0;;;27506:22;;;;27451:30;;-1:-1:-1;27497:31:0;;27492:1206;27534:5;:19;;;27530:23;;:1;:23;27492:1206;;;27591:6;27579:9;:18;27575:195;;;27643:12;:1;:10;:12::i;:::-;27618:37;;;;:22;;;:37;;;27674:14;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27712:17;;;;;;;;;;;;;;;;;;27748:7;;;;;;;27575:195;27784:22;;:::i;:::-;-1:-1:-1;27809:11:0;;;;:8;:11;;;;;;;;27784:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27842:11;;;;;;;27835:18;;;;;;;;;;;;;;;;;;;;;;;;;;27891:14;27907:19;;27784:36;;27809:11;27881:57;;27891:14;27881:57;;27928:9;27881;:57::i;:::-;27870:68;;27974:3;27957:13;:20;27953:734;;28030:12;;27998:50;;;;;;:31;:50;;;;;;;;;;;;;;;:31;;;;;;:50;;;;;28030:12;;27998:50;;;;;;;;28030:12;27998:31;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;27998:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27998:50:0;;;;28099:3;28083:13;:19;28067:35;;27953:734;;;28128:17;;28124:563;;28198:12;;28166:60;;;;;;:31;:60;;;;;;;;;;;;;;;:31;;;;;;:60;;;;;28198:12;;28166:60;;;;;;;;28198:12;28166:31;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;28166:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;28350:19:0;;28268;;;;-1:-1:-1;28245:20:0;;-1:-1:-1;28323:58:0;;28268:19;;28323:58;;28371:9;28323;:58::i;:::-;28436:12;;:32;;28416:1;;-1:-1:-1;28306:75:0;;-1:-1:-1;28436:21:0;;;:32;;;;;28306:75;;28416:1;28436:32;28416:1;28436:32;28306:75;28436:21;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;28504:12:0;;28492:36;;;;;;;;;;;;;;;;;;;;;;;;;;;28124:563;;;;;28569:12;;28591:14;;;;28569:37;;:21;;;;;:37;;;;;28591:14;28569:12;:37;:12;:37;28591:14;28569:21;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;28642:12:0;;28656:14;;;;;28630:41;;;;;;;;;;;;;;;;;;;;;;;;;28124:563;-1:-1:-1;;27555:3:0;;27492:1206;;;-1:-1:-1;28733:19:0;;;;28708:44;;:22;;;:44;28769:17;;28765:108;;28803:58;;;;;;28843:1;28803:58;;;;;;;;;;;;;;:31;;;;;;:58;;;;;;;;;;;28843:1;28803:31;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;28803:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28803:58:0;;;;28765:108;28885:14;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28915:9;;;-1:-1:-1;;28915:9:0;17206:1;;;;;27048:1884::o;29083:101::-;21371:8;;;;21357:10;:22;21349:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29136:8;;:40;;:8;;;;;29162:4;29154:21;29136:40;;;;;:8;:40;:8;:40;29154:21;29136:8;:40;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29136:40:0;29083:101::o;20670:44::-;20704:10;20670:44;:::o;24679:112::-;24723:4;24747:36;24761:21;:19;:21::i;:::-;24747:13;:36::i;:::-;24740:43;;24679:112;:::o;24083:133::-;24134:4;24158:50;24168:6;24176:15;:13;:15::i;:::-;24193:14;:12;:14::i;:::-;24158:9;:50::i;:::-;24151:57;;24083:133;;;;:::o;22983:118::-;23025:4;23079:14;:12;:14::i;:::-;19030:6;23049:21;:19;:21::i;:::-;:27;:44;;;;;;23042:51;;22983:118;:::o;21665:105::-;21738:6;:24;;;;;;;21665:105::o;22882:93::-;22925:4;22949:18;20704:10;22949:6;:18::i;28940:135::-;21371:8;;;;21357:10;:22;21349:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29035:32;:19;;;29055:3;29060:6;29035:32;:19;:32;:::i;:::-;28940:135;;;:::o;20322:31::-;;;;;;:::o;23961:114::-;24012:4;19030:6;24046:14;:12;:14::i;:::-;24037:6;:23;24036:31;;;;;;;23961:114;-1:-1:-1;;23961:114:0:o;17748:140::-;17149:9;:7;:9::i;:::-;17141:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17847:1;17831:6;;17810:40;;;17831:6;;;;17810:40;;17847:1;;17810:40;17878:1;17861:19;;;;;;17748:140::o;21891:109::-;21966:6;:26;;;;;;;21891:109::o;22008:97::-;22077:6;:20;;;;;;;22008:97::o;24224:133::-;24275:4;24299:50;24309:6;24317:15;:13;:15::i;:::-;24334:14;:12;:14::i;:::-;24299:9;:50::i;23839:114::-;23890:4;23931:14;:12;:14::i;:::-;19030:6;23915;:12;23914:31;;;;16937:79;16975:7;17002:6;;;16937:79;:::o;17303:94::-;17343:4;17383:6;;;;17367:12;:10;:12::i;:::-;:22;;;17360:29;;17303:94;:::o;21778:105::-;21851:6;:24;;;;;;;21778:105::o;20765:53::-;20797:21;20765:53;:::o;23109:145::-;23150:4;23174:16;20797:21;23174:6;:16::i;:::-;:72;;;;23194:52;23208:14;:12;:14::i;:::-;23224:21;:19;:21::i;:::-;23194:13;:52::i;21560:97::-;21629:6;:20;;;21560:97;:::o;23444:117::-;23495:4;23519:34;23529:6;23537:15;:13;:15::i;:::-;23519:9;:34::i;20290:25::-;;;;;;:::o;22113:103::-;22185:6;:23;;;;;;;22113:103::o;20621:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22224:429::-;17149:9;:7;:9::i;:::-;17141:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22290:18;;:::i;:::-;-1:-1:-1;22290:27:0;;;;;;;;22311:6;22290:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22336:24;22328:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22409:21;:10;:19;:21::i;:::-;22387:43;;;;22467:28;22481:2;22468:10;:15;22467:26;:28::i;:::-;22441:54;;:23;;;:54;22543:28;22544:2;:15;;22543:26;:28::i;:::-;22517:54;;;;:23;;;;:54;;;22592:14;;:6;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22622:23;;;;;;;;;;;;;;;;;17206:1;22224:429;:::o;23712:119::-;23763:4;23808:15;:13;:15::i;:::-;23788:6;23797:7;23788:16;23787:36;;;;22661:213;17149:9;:7;:9::i;:::-;17141:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22745:23;;;22737:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22808:8;:20;;;;;;;;;;;;;;22844:22;;;;;;;;;;;;;;;;22661:213;:::o;18043:109::-;17149:9;:7;:9::i;:::-;17141:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18116:28;18135:8;18116:18;:28::i;26103:66::-;26151:10;:8;:10::i;23569:135::-;23689:7;23665:20;;23664:32;;23569:135::o;24799:986::-;24865:4;24886:39;24900:7;24909:15;24886:13;:39::i;:::-;:77;;;-1:-1:-1;24929:34:0;24933:29;24940:21;24933:6;:29::i;24929:34::-;24882:896;;;-1:-1:-1;24987:7:0;24980:14;;24882:896;25027:39;25041:7;25050:15;25027:13;:39::i;:::-;:77;;;-1:-1:-1;25070:34:0;25074:29;25081:21;25074:6;:29::i;25070:34::-;25023:755;;;-1:-1:-1;25128:7:0;25121:14;;25023:755;25169:39;25183:7;25192:15;25169:13;:39::i;:::-;:77;;;-1:-1:-1;25212:34:0;25216:29;25223:21;25216:6;:29::i;25212:34::-;25165:613;;;-1:-1:-1;25270:7:0;25263:14;;25165:613;25311:38;25325:6;25333:15;25311:13;:38::i;:::-;:76;;;-1:-1:-1;25353:34:0;25357:29;25364:21;25357:6;:29::i;25353:34::-;25307:471;;;-1:-1:-1;25411:6:0;25404:13;;25307:471;25451:38;25465:6;25473:15;25451:13;:38::i;:::-;:76;;;-1:-1:-1;25493:34:0;25497:29;25504:21;25497:6;:29::i;25493:34::-;25447:331;;;-1:-1:-1;25550:6:0;25543:13;;25447:331;25590:38;25604:6;25612:15;25590:13;:38::i;:::-;:76;;;-1:-1:-1;25632:34:0;25636:29;25643:21;25636:6;:29::i;25632:34::-;25586:192;;;-1:-1:-1;25690:6:0;25683:13;;25586:192;-1:-1:-1;25748:6:0;25741:13;;23262:174;23342:4;23366:16;20797:21;23366:6;:16::i;:::-;:62;;;;23386:42;23400:10;23412:15;23386:13;:42::i;:::-;23359:69;23262:174;-1:-1:-1;;;23262:174:0:o;19388:95::-;19464:11;;19388:95::o;832:181::-;890:7;922:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19515:148;19564:6;19591:16;;;;19583:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19652:2:0;19515:148::o;19827:::-;19876:6;19903:16;;;;19895:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24365:149;24451:4;24496:10;24484:9;24475:6;:18;:31;;;;;;;24365:149;-1:-1:-1;;;;24365:149:0:o;24522:::-;24608:4;24654:9;24641:10;24632:6;:19;:31;;;;19265:115;19357:15;-1:-1:-1;19344:28:0;19265:115::o;11785:176::-;11894:58;;;11917:14;11894:58;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11894:58:0;;;;;;;;25:18:-1;;61:17;;11894:58:0;182:15:-1;11917:23:0;179:29:-1;160:49;;11868:85:0;;11887:5;;11868:18;:85::i;15726:98::-;15806:10;15726:98;:::o;25793:165::-;25873:4;25936:13;25924:6;19030;25899:21;;25924:6;25898:32;;;;;25897:53;;;25793:165;-1:-1:-1;;;25793:165:0:o;19671:148::-;19720:6;19747:16;;;;19739:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18258:229;18332:22;;;18324:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18434:6;;;18413:38;;;;;;;18434:6;;;18413:38;;;18462:6;:17;;;;;;;;;;;;;;;18258:229::o;13824:1114::-;14428:27;14436:5;14428:25;;;:27::i;:::-;14420:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14565:12;14579:23;14614:5;14606:19;;14626:4;14606:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14606:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14564:67:0;;;;14650:7;14642:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14711:17;;:21;14707:224;;14853:10;14842:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14842:30:0;14834:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13824:1114;;;;:::o;6113:619::-;6173:4;6641:20;;6484:66;6681:23;;;;;;:42;;-1:-1:-1;6708:15:0;;;6681:42;6673:51;6113:619;-1:-1:-1;;;;6113:619:0:o;20143:9046::-;;;;;;;;;-1:-1:-1;20143:9046:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://c4514907c707602e86ae3ea778fb28b39c3a0dd4e2613c451df8a6222699f7ae
Loading...
Loading
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.