Contract 0x3989ec327e8e96623debf7002983a2b3861516cd 2
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 2 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xd17cde548db42fb049445e93c77c45c3580550a19be3da35c253c52561ca6227 | 5129158 | 529 days 1 hr ago | 0x3989ec327e8e96623debf7002983a2b3861516cd | 0xeefd2d76564d3c38920503881796ef3a5fecf268 | 979,999.97422766939276 CRO | ||
0xd17cde548db42fb049445e93c77c45c3580550a19be3da35c253c52561ca6227 | 5129158 | 529 days 1 hr ago | 0x3989ec327e8e96623debf7002983a2b3861516cd | Bored Candy City: Deployer | 19,999.99947403406924 CRO |
[ Download CSV Export ]
Contract Name:
CandyIco
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-10-04 */ /** *Submitted for verification at cronoscan.com on 2022-09-08 */ // Sources flattened with hardhat v2.3.3 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /* * @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 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. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File @openzeppelin/contracts/access/[email protected] pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File @openzeppelin/contracts/token/ERC20/[email protected] pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/token/ERC20/utils/[email protected] pragma solidity ^0.8.0; /** * @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 IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "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"); } } } // File contracts/libs/UniversalERC20.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; // File: contracts/UniversalERC20.sol library UniversalERC20 { using SafeERC20 for IERC20; IERC20 private constant ZERO_ADDRESS = IERC20(0x0000000000000000000000000000000000000000); IERC20 private constant ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); function universalTransfer( IERC20 token, address to, uint256 amount ) internal returns (uint256) { if (amount == 0) { return 0; } if (isETH(token)) { payable(address(uint160(to))).transfer(amount); return amount; } else { uint256 balanceBefore = token.balanceOf(to); token.safeTransfer(to, amount); uint256 balanceAfter = token.balanceOf(to); return balanceAfter - balanceBefore; } } function universalTransferFrom( IERC20 token, address from, address to, uint256 amount ) internal returns (uint256) { if (amount == 0) { return 0; } if (isETH(token)) { require( from == msg.sender && msg.value >= amount, "Wrong useage of ETH.universalTransferFrom()" ); if (to != address(this)) { payable(address(uint160(to))).transfer(amount); } if (msg.value > amount) { // refund redundant amount payable(msg.sender).transfer(msg.value - amount); } return amount; } else { uint256 balanceBefore = token.balanceOf(to); token.safeTransferFrom(from, to, amount); uint256 balanceAfter = token.balanceOf(to); return balanceAfter - balanceBefore; } } function universalTransferFromSenderToThis(IERC20 token, uint256 amount) internal returns (uint256) { if (amount == 0) { return 0; } if (isETH(token)) { if (msg.value > amount) { // Return remainder if exist payable(msg.sender).transfer(msg.value - amount); } return amount; } else { uint256 balanceBefore = token.balanceOf(address(this)); token.safeTransferFrom(msg.sender, address(this), amount); uint256 balanceAfter = token.balanceOf(address(this)); return balanceAfter - balanceBefore; } } function universalApprove( IERC20 token, address to, uint256 amount ) internal { if (!isETH(token)) { if (amount > 0 && token.allowance(address(this), to) > 0) { token.safeApprove(to, 0); } token.safeApprove(to, amount); } } function universalBalanceOf(IERC20 token, address who) internal view returns (uint256) { if (isETH(token)) { return who.balance; } else { return token.balanceOf(who); } } function universalDecimals(IERC20 token) internal view returns (uint256) { if (isETH(token)) { return 18; } (bool success, bytes memory data) = address(token).staticcall{ gas: 10000 }(abi.encodeWithSignature("decimals()")); if (!success || data.length == 0) { (success, data) = address(token).staticcall{gas: 10000}( abi.encodeWithSignature("DECIMALS()") ); } return (success && data.length > 0) ? abi.decode(data, (uint256)) : 18; } function isETH(IERC20 token) internal pure returns (bool) { return (address(token) == address(ZERO_ADDRESS) || address(token) == address(ETH_ADDRESS)); } } // File contracts/candy/CandyIco.sol pragma solidity ^0.8.0; contract CandyIco is Ownable { using SafeERC20 for IERC20; using Address for address payable; using UniversalERC20 for IERC20; struct ContributeData { uint256 amount; bool claimed; } IERC20 private immutable _icoToken; address payable private immutable _icoOwner; // ICO owner wallet address address payable private immutable _icoTreasury; // ICO treasury wallet address uint16 private immutable _treasuryFee; // ICO treasury fee uint256 private _startDate = 1665846000; // When to start ICO - Sep 15, 2022 15:00:00 UTC uint256 private _endDate = 1666450800; // When to end ICO - Sep 22, 2022 15:00:00 UTC uint256 private _claimDate = 1666458000; // When to claim ICO - Sep 22, 2022 17:00:00 UTC uint256 private _hardcap = 1000000 ether; // hard cap uint256 private _softcap = 500000 ether; // softcap uint256 private _icoPrice = 0.5 ether; // token price uint256 private _minPerUser = 1000 ether; // min amount per user uint256 private _maxPerUser = 100000 ether; // max amount per user bool private _fundsWithdrawn; uint256 private _totalContributed; // Total contributed amount in buy token uint256 private _totalClaimed; // Total claimed amount in buy token mapping(address => ContributeData) private _contributedPerUser; // User contributed amount in buy token constructor( IERC20 icoToken_, address payable icoTreasury_, address payable icoOwner_, uint16 treasuryFee_ ) { icoToken_.balanceOf(address(this)); // To check the IERC20 contract _icoToken = icoToken_; require( icoOwner_ != address(0) && icoTreasury_ != address(0), "Invalid owner / treasury" ); _icoOwner = icoOwner_; _icoTreasury = icoTreasury_; _treasuryFee = treasuryFee_; } /** * @dev Contribute ICO * * Only available when ICO is opened */ function contribute() external payable { require( block.timestamp >= _startDate && block.timestamp < _endDate, "ICO not opened" ); uint256 contributeAmount = msg.value; ContributeData storage userContributeData = _contributedPerUser[ _msgSender() ]; uint256 contributedSoFar = userContributeData.amount + contributeAmount; require( contributedSoFar >= _minPerUser && contributedSoFar <= _maxPerUser, "Out of limit" ); userContributeData.amount = contributedSoFar; _totalContributed += contributeAmount; require(_totalContributed <= _hardcap, "Reached hardcap"); } /** * @dev Claim tokens from his contributed amount * * Only available after claim date */ function claimTokens() external { require(block.timestamp > _claimDate, "Wait more"); ContributeData storage userContributedData = _contributedPerUser[ _msgSender() ]; require(!userContributedData.claimed, "Already claimed"); uint256 userContributedAmount = userContributedData.amount; require(userContributedAmount > 0, "Not contributed"); uint256 userRequiredAmount = (userContributedAmount * 10**(_icoToken.universalDecimals())) / _icoPrice; if (userRequiredAmount > 0) { _icoToken.safeTransfer(_msgSender(), userRequiredAmount); } userContributedData.claimed = true; _totalContributed += userContributedAmount; } /** * @dev Finalize ICO when it was filled or by some reasons * * It should indicate claim date * Only ICO owner is allowed to call this function */ function finalizeIco(uint256 claimDate_) external { require(_msgSender() == _icoOwner, "Unpermitted"); require(block.timestamp < _endDate, "Already finished"); require(block.timestamp < claimDate_, "Invalid claim date"); if (_startDate > block.timestamp) { _startDate = block.timestamp; } _endDate = block.timestamp; _claimDate = claimDate_; } /** * @dev Withdraw remained tokens * * Only ICO owner is allowed to call this function */ function withdrawRemainedTokens() external { require(_msgSender() == _icoOwner, "Unpermitted"); require(block.timestamp >= _endDate, "ICO not finished"); uint256 contractTokens = _icoToken.balanceOf(address(this)); uint256 unclaimedTokens = ((_totalContributed - _totalClaimed) * 10**(_icoToken.universalDecimals())) / _icoPrice; _icoToken.safeTransfer(_msgSender(), contractTokens - unclaimedTokens); } /** * @dev Withdraw contributed funds * * Only ICO owner is allowed to call this function */ function withdrawFunds() external { require(_msgSender() == _icoOwner, "Unpermitted"); require(block.timestamp >= _endDate, "ICO not finished"); require(!_fundsWithdrawn, "Already withdrawn"); // Transfer treasury funds first uint256 treasuryFunds = (_totalContributed * _treasuryFee) / 10000; _icoTreasury.sendValue(treasuryFunds); // Transfer redundant funds _icoOwner.sendValue(_totalContributed - treasuryFunds); _fundsWithdrawn = true; } function viewIcoToken() external view returns (address) { return address(_icoToken); } function viewIcoOwner() external view returns (address payable) { return _icoOwner; } function viewIcoTreasury() external view returns (address payable) { return _icoTreasury; } function viewTreasuryFee() external view returns (uint16) { return _treasuryFee; } function viewTotalContributed() external view returns (uint256) { return _totalContributed; } function viewTotalClaimed() external view returns (uint256) { return _totalClaimed; } function viewUserContributed(address account_) external view returns (uint256, bool) { return ( _contributedPerUser[account_].amount, _contributedPerUser[account_].claimed ); } /** * @dev Update ICO start / end / claim date * * Only owner is allowed to call this function */ function updateIcoDates( uint256 startDate_, uint256 endDate_, uint256 claimDate_ ) external onlyOwner { require(block.timestamp < _startDate, "ICO already started"); require(block.timestamp < startDate_, "Must be future time"); require(startDate_ < endDate_, "startDate must before endDate"); require(endDate_ < claimDate_, "endDate must before claimDate"); _startDate = startDate_; _endDate = endDate_; _claimDate = claimDate_; } function viewIcoDates() external view returns ( uint256, uint256, uint256 ) { return (_startDate, _endDate, _claimDate); } /** * @dev Update ICO hardcap / softcap * * Only owner is allowed to call this function */ function updateCap(uint256 softcap_, uint256 hardcap_) external onlyOwner { require(block.timestamp < _startDate, "ICO already started"); require(hardcap_ > 0 && softcap_ > 0, "Non zero values"); require(softcap_ <= hardcap_, "Invalid values"); _hardcap = hardcap_; _softcap = softcap_; } function viewCap() external view returns (uint256, uint256) { return (_softcap, _hardcap); } /** * @dev Update user contribute min / max limitation * * Only owner is allowed to call this function */ function updateLimitation(uint256 minPerUser_, uint256 maxPerUser_) external onlyOwner { require(minPerUser_ <= maxPerUser_, "Invalid values"); require(maxPerUser_ > 0, "Invalid max value"); _minPerUser = minPerUser_; _maxPerUser = maxPerUser_; } function viewLimitation() external view returns (uint256, uint256) { return (_minPerUser, _maxPerUser); } /** * @dev Update ICO price * * Only owner is allowed to call this function */ function updateIcoPrice(uint256 icoPrice_) external onlyOwner { require(block.timestamp < _startDate, "ICO already started"); require(icoPrice_ > 0, "Invalid price"); _icoPrice = icoPrice_; } function viewIcoPrice() external view returns (uint256) { return _icoPrice; } /** * @dev Recover ETH sent to the contract * * Only owner allowed to call this function */ function recoverETH() external onlyOwner { require(_fundsWithdrawn, "Not available until withdraw funds"); uint256 etherBalance = address(this).balance; require(etherBalance > 0, "No ETH"); payable(_msgSender()).transfer(etherBalance); } /** * @dev It allows the admin to recover tokens sent to the contract * @param token_: the address of the token to withdraw * @param amount_: the number of tokens to withdraw * * This function is only callable by owner */ function recoverToken(address token_, uint256 amount_) external onlyOwner { require(token_ != address(_icoToken), "Not allowed token"); require(amount_ > 0, "Non zero value"); IERC20(token_).safeTransfer(_msgSender(), amount_); } /** * @dev To receive ETH in the ICO contract */ receive() external payable {} }
[{"inputs":[{"internalType":"contract IERC20","name":"icoToken_","type":"address"},{"internalType":"address payable","name":"icoTreasury_","type":"address"},{"internalType":"address payable","name":"icoOwner_","type":"address"},{"internalType":"uint16","name":"treasuryFee_","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimDate_","type":"uint256"}],"name":"finalizeIco","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"softcap_","type":"uint256"},{"internalType":"uint256","name":"hardcap_","type":"uint256"}],"name":"updateCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startDate_","type":"uint256"},{"internalType":"uint256","name":"endDate_","type":"uint256"},{"internalType":"uint256","name":"claimDate_","type":"uint256"}],"name":"updateIcoDates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"icoPrice_","type":"uint256"}],"name":"updateIcoPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minPerUser_","type":"uint256"},{"internalType":"uint256","name":"maxPerUser_","type":"uint256"}],"name":"updateLimitation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewIcoDates","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewIcoOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewIcoPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewIcoToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewIcoTreasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLimitation","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalContributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTreasuryFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"viewUserContributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRemainedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
61010060405263634acaf06001556363540570600255636354219060035569d3c21bcecceda10000006004556969e10de76676d08000006005556706f05b59d3b20000600655683635c9adc5dea0000060075569152d02c7e14af68000006008553480156200006d57600080fd5b5060405162001efb38038062001efb833981016040819052620000909162000206565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b1580156200011157600080fd5b505afa15801562000126573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014c919062000272565b506001600160601b0319606085901b166080526001600160a01b038216158015906200018057506001600160a01b03831615155b620001d15760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206f776e6572202f2074726561737572790000000000000000604482015260640160405180910390fd5b606091821b6001600160601b031990811660a0529290911b90911660c05260f01b6001600160f01b03191660e05250620002a4565b600080600080608085870312156200021c578384fd5b845162000229816200028b565b60208601519094506200023c816200028b565b60408601519093506200024f816200028b565b606086015190925061ffff8116811462000267578182fd5b939692955090935050565b60006020828403121562000284578081fd5b5051919050565b6001600160a01b0381168114620002a157600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160f01c611bbd6200033e600039600081816103e701526107790152600081816104a801526107c2015260008181610435015281816106a10152818161080301528181610dd4015261108e0152600081816102f601528181610a8901528181610ae201528181610be001528181610e7601528181610f040152610f7a0152611bbd6000f3fe60806040526004361061016a5760003560e01c80638000deaa116100d1578063e1da49a41161008a578063f2fde38b11610064578063f2fde38b14610459578063f775e50414610479578063f8f59b8014610499578063fff24d19146104cc57600080fd5b8063e1da49a4146103d2578063eab2453c14610411578063f24994d81461042657600080fd5b80638000deaa14610343578063838ac02a1461036257806387b943ce146103775780638da5cb5b1461038c578063b29a8140146103aa578063d7bb99ba146103ca57600080fd5b80632fe69670116101235780632fe69670146102395780633e859fcb1461029257806345fd16e2146102b257806348c54b9d146102d257806354ff10b5146102e7578063715018a61461032e57600080fd5b80630614117a146101765780630672508e1461018d5780630673d3e8146101bb57806317f2656c146101d35780631d77ec3b146101f357806324600fc31461022457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104ec565b005b34801561019957600080fd5b506005546004545b604080519283526020830191909152015b60405180910390f35b3480156101c757600080fd5b506007546008546101a1565b3480156101df57600080fd5b5061018b6101ee3660046118c6565b6105e4565b3480156101ff57600080fd5b50600154600254600354604080519384526020840192909252908201526060016101b2565b34801561023057600080fd5b5061018b61069e565b34801561024557600080fd5b5061027d610254366004611833565b6001600160a01b03166000908152600c602052604090208054600190910154909160ff90911690565b604080519283529015156020830152016101b2565b34801561029e57600080fd5b5061018b6102ad3660046118c6565b610839565b3480156102be57600080fd5b5061018b6102cd366004611896565b61091b565b3480156102de57600080fd5b5061018b6109ab565b3480156102f357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101b2565b34801561033a57600080fd5b5061018b610b40565b34801561034f57600080fd5b50600b545b6040519081526020016101b2565b34801561036e57600080fd5b50600654610354565b34801561038357600080fd5b50600a54610354565b34801561039857600080fd5b506000546001600160a01b0316610316565b3480156103b657600080fd5b5061018b6103c536600461184d565b610bb4565b61018b610ca9565b3480156103de57600080fd5b5060405161ffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101b2565b34801561041d57600080fd5b5061018b610dd1565b34801561043257600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610316565b34801561046557600080fd5b5061018b610474366004611833565b610fa1565b34801561048557600080fd5b5061018b610494366004611896565b61108b565b3480156104a557600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610316565b3480156104d857600080fd5b5061018b6104e73660046118e7565b611173565b6000546001600160a01b0316331461051f5760405162461bcd60e51b815260040161051690611986565b60405180910390fd5b60095460ff1661057c5760405162461bcd60e51b815260206004820152602260248201527f4e6f7420617661696c61626c6520756e74696c2077697468647261772066756e604482015261647360f01b6064820152608401610516565b47806105b35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610516565b604051339082156108fc029083906000818181858888f193505050501580156105e0573d6000803e3d6000fd5b5050565b6000546001600160a01b0316331461060e5760405162461bcd60e51b815260040161051690611986565b8082111561064f5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610516565b600081116106935760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d61782076616c756560781b6044820152606401610516565b600791909155600855565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106e65760405162461bcd60e51b815260040161051690611961565b60025442101561072b5760405162461bcd60e51b815260206004820152601060248201526f1250d3c81b9bdd08199a5b9a5cda195960821b6044820152606401610516565b60095460ff16156107725760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903bb4ba34323930bbb760791b6044820152606401610516565b60006127107f000000000000000000000000000000000000000000000000000000000000000061ffff16600a546107a99190611b0b565b6107b39190611a00565b90506107e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016826112af565b61082981600a546107f99190611b2a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906112af565b506009805460ff19166001179055565b6000546001600160a01b031633146108635760405162461bcd60e51b815260040161051690611986565b60015442106108845760405162461bcd60e51b8152600401610516906119bb565b6000811180156108945750600082115b6108d25760405162461bcd60e51b815260206004820152600f60248201526e4e6f6e207a65726f2076616c75657360881b6044820152606401610516565b808211156109135760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610516565b600455600555565b6000546001600160a01b031633146109455760405162461bcd60e51b815260040161051690611986565b60015442106109665760405162461bcd60e51b8152600401610516906119bb565b600081116109a65760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610516565b600655565b60035442116109e85760405162461bcd60e51b815260206004820152600960248201526857616974206d6f726560b81b6044820152606401610516565b336000908152600c60205260409020600181015460ff1615610a3e5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610516565b805480610a7f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818dbdb9d1c9a589d5d1959608a1b6044820152606401610516565b6000600654610ab67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113c8565b610ac190600a611a63565b610acb9084611b0b565b610ad59190611a00565b90508015610b1157610b117f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338361153f565b6001838101805460ff19169091179055600a8054839190600090610b369084906119e8565b9091555050505050565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161051690611986565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bde5760405162461bcd60e51b815260040161051690611986565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610c545760405162461bcd60e51b81526020600482015260116024820152702737ba1030b63637bbb2b2103a37b5b2b760791b6044820152606401610516565b60008111610c955760405162461bcd60e51b815260206004820152600e60248201526d4e6f6e207a65726f2076616c756560901b6044820152606401610516565b6105e06001600160a01b038316338361153f565b6001544210158015610cbc575060025442105b610cf95760405162461bcd60e51b815260206004820152600e60248201526d1250d3c81b9bdd081bdc195b995960921b6044820152606401610516565b336000908152600c602052604081208054349290610d189084906119e8565b90506007548110158015610d2e57506008548111155b610d695760405162461bcd60e51b815260206004820152600c60248201526b13dd5d081bd9881b1a5b5a5d60a21b6044820152606401610516565b808255600a8054849190600090610d819084906119e8565b9091555050600454600a541115610dcc5760405162461bcd60e51b815260206004820152600f60248201526e052656163686564206861726463617608c1b6044820152606401610516565b505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e195760405162461bcd60e51b815260040161051690611961565b600254421015610e5e5760405162461bcd60e51b815260206004820152601060248201526f1250d3c81b9bdd08199a5b9a5cda195960821b6044820152606401610516565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610ec057600080fd5b505afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef891906118ae565b90506000600654610f317f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113c8565b610f3c90600a611a63565b600b54600a54610f4c9190611b2a565b610f569190611b0b565b610f609190611a00565b90506105e033610f708385611b2a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919061153f565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161051690611986565b6001600160a01b0381166110305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610516565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110d35760405162461bcd60e51b815260040161051690611961565b60025442106111175760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48199a5b9a5cda195960821b6044820152606401610516565b80421061115b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420636c61696d206461746560701b6044820152606401610516565b42600154111561116a57426001555b42600255600355565b6000546001600160a01b0316331461119d5760405162461bcd60e51b815260040161051690611986565b60015442106111be5760405162461bcd60e51b8152600401610516906119bb565b8242106112035760405162461bcd60e51b81526020600482015260136024820152724d757374206265206675747572652074696d6560681b6044820152606401610516565b8183106112525760405162461bcd60e51b815260206004820152601d60248201527f737461727444617465206d757374206265666f726520656e64446174650000006044820152606401610516565b8082106112a15760405162461bcd60e51b815260206004820152601d60248201527f656e6444617465206d757374206265666f726520636c61696d446174650000006044820152606401610516565b600192909255600255600355565b804710156112ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610516565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461134c576040519150601f19603f3d011682016040523d82523d6000602084013e611351565b606091505b5050905080610dcc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610516565b60006113d382611591565b156113e057506012919050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691612710916114289190611912565b6000604051808303818686fa925050503d8060008114611464576040519150601f19603f3d011682016040523d82523d6000602084013e611469565b606091505b509150915081158061147a57508051155b1561150a5760408051600481526024810182526020810180516001600160e01b0316632e0f262560e01b17905290516001600160a01b03861691612710916114c29190611912565b6000604051808303818686fa925050503d80600081146114fe576040519150601f19603f3d011682016040523d82523d6000602084013e611503565b606091505b5090925090505b818015611518575060008151115b611523576012611537565b8080602001905181019061153791906118ae565b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610dcc9084906115cb565b60006001600160a01b03821615806115c557506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b92915050565b6000611620826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661169d9092919063ffffffff16565b805190915015610dcc578080602001905181019061163e9190611876565b610dcc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610516565b60606116ac84846000856116b6565b90505b9392505050565b6060824710156117175760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610516565b843b6117655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610516565b600080866001600160a01b031685876040516117819190611912565b60006040518083038185875af1925050503d80600081146117be576040519150601f19603f3d011682016040523d82523d6000602084013e6117c3565b606091505b50915091506117d38282866117de565b979650505050505050565b606083156117ed5750816116af565b8251156117fd5782518084602001fd5b8160405162461bcd60e51b8152600401610516919061192e565b80356001600160a01b038116811461182e57600080fd5b919050565b600060208284031215611844578081fd5b6116af82611817565b6000806040838503121561185f578081fd5b61186883611817565b946020939093013593505050565b600060208284031215611887578081fd5b815180151581146116af578182fd5b6000602082840312156118a7578081fd5b5035919050565b6000602082840312156118bf578081fd5b5051919050565b600080604083850312156118d8578182fd5b50508035926020909101359150565b6000806000606084860312156118fb578081fd5b505081359360208301359350604090920135919050565b60008251611924818460208701611b41565b9190910192915050565b602081526000825180602084015261194d816040850160208701611b41565b601f01601f19169190910160400192915050565b6020808252600b908201526a155b9c195c9b5a5d1d195960aa1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601390820152721250d3c8185b1c9958591e481cdd185c9d1959606a1b604082015260600190565b600082198211156119fb576119fb611b71565b500190565b600082611a1b57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611a5b578160001904821115611a4157611a41611b71565b80851615611a4e57918102915b93841c9390800290611a25565b509250929050565b60006116af8383600082611a79575060016115c5565b81611a86575060006115c5565b8160018114611a9c5760028114611aa657611ac2565b60019150506115c5565b60ff841115611ab757611ab7611b71565b50506001821b6115c5565b5060208310610133831016604e8410600b8410161715611ae5575081810a6115c5565b611aef8383611a20565b8060001904821115611b0357611b03611b71565b029392505050565b6000816000190483118215151615611b2557611b25611b71565b500290565b600082821015611b3c57611b3c611b71565b500390565b60005b83811015611b5c578181015183820152602001611b44565b83811115611b6b576000848401525b50505050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220428555408476962a9909efbfd93086a7dd15db773f3eab1ddfceef37cee9fccd64736f6c6343000804003300000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c7977000000000000000000000000172a25d57da59ab86792fb8ced103ad871cbef34000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf26800000000000000000000000000000000000000000000000000000000000000c8
Deployed Bytecode
0x60806040526004361061016a5760003560e01c80638000deaa116100d1578063e1da49a41161008a578063f2fde38b11610064578063f2fde38b14610459578063f775e50414610479578063f8f59b8014610499578063fff24d19146104cc57600080fd5b8063e1da49a4146103d2578063eab2453c14610411578063f24994d81461042657600080fd5b80638000deaa14610343578063838ac02a1461036257806387b943ce146103775780638da5cb5b1461038c578063b29a8140146103aa578063d7bb99ba146103ca57600080fd5b80632fe69670116101235780632fe69670146102395780633e859fcb1461029257806345fd16e2146102b257806348c54b9d146102d257806354ff10b5146102e7578063715018a61461032e57600080fd5b80630614117a146101765780630672508e1461018d5780630673d3e8146101bb57806317f2656c146101d35780631d77ec3b146101f357806324600fc31461022457600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104ec565b005b34801561019957600080fd5b506005546004545b604080519283526020830191909152015b60405180910390f35b3480156101c757600080fd5b506007546008546101a1565b3480156101df57600080fd5b5061018b6101ee3660046118c6565b6105e4565b3480156101ff57600080fd5b50600154600254600354604080519384526020840192909252908201526060016101b2565b34801561023057600080fd5b5061018b61069e565b34801561024557600080fd5b5061027d610254366004611833565b6001600160a01b03166000908152600c602052604090208054600190910154909160ff90911690565b604080519283529015156020830152016101b2565b34801561029e57600080fd5b5061018b6102ad3660046118c6565b610839565b3480156102be57600080fd5b5061018b6102cd366004611896565b61091b565b3480156102de57600080fd5b5061018b6109ab565b3480156102f357600080fd5b507f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79775b6040516001600160a01b0390911681526020016101b2565b34801561033a57600080fd5b5061018b610b40565b34801561034f57600080fd5b50600b545b6040519081526020016101b2565b34801561036e57600080fd5b50600654610354565b34801561038357600080fd5b50600a54610354565b34801561039857600080fd5b506000546001600160a01b0316610316565b3480156103b657600080fd5b5061018b6103c536600461184d565b610bb4565b61018b610ca9565b3480156103de57600080fd5b5060405161ffff7f00000000000000000000000000000000000000000000000000000000000000c81681526020016101b2565b34801561041d57600080fd5b5061018b610dd1565b34801561043257600080fd5b507f000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf268610316565b34801561046557600080fd5b5061018b610474366004611833565b610fa1565b34801561048557600080fd5b5061018b610494366004611896565b61108b565b3480156104a557600080fd5b507f000000000000000000000000172a25d57da59ab86792fb8ced103ad871cbef34610316565b3480156104d857600080fd5b5061018b6104e73660046118e7565b611173565b6000546001600160a01b0316331461051f5760405162461bcd60e51b815260040161051690611986565b60405180910390fd5b60095460ff1661057c5760405162461bcd60e51b815260206004820152602260248201527f4e6f7420617661696c61626c6520756e74696c2077697468647261772066756e604482015261647360f01b6064820152608401610516565b47806105b35760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610516565b604051339082156108fc029083906000818181858888f193505050501580156105e0573d6000803e3d6000fd5b5050565b6000546001600160a01b0316331461060e5760405162461bcd60e51b815260040161051690611986565b8082111561064f5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610516565b600081116106935760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d61782076616c756560781b6044820152606401610516565b600791909155600855565b337f000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf2686001600160a01b0316146106e65760405162461bcd60e51b815260040161051690611961565b60025442101561072b5760405162461bcd60e51b815260206004820152601060248201526f1250d3c81b9bdd08199a5b9a5cda195960821b6044820152606401610516565b60095460ff16156107725760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903bb4ba34323930bbb760791b6044820152606401610516565b60006127107f00000000000000000000000000000000000000000000000000000000000000c861ffff16600a546107a99190611b0b565b6107b39190611a00565b90506107e86001600160a01b037f000000000000000000000000172a25d57da59ab86792fb8ced103ad871cbef3416826112af565b61082981600a546107f99190611b2a565b6001600160a01b037f000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf26816906112af565b506009805460ff19166001179055565b6000546001600160a01b031633146108635760405162461bcd60e51b815260040161051690611986565b60015442106108845760405162461bcd60e51b8152600401610516906119bb565b6000811180156108945750600082115b6108d25760405162461bcd60e51b815260206004820152600f60248201526e4e6f6e207a65726f2076616c75657360881b6044820152606401610516565b808211156109135760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642076616c75657360901b6044820152606401610516565b600455600555565b6000546001600160a01b031633146109455760405162461bcd60e51b815260040161051690611986565b60015442106109665760405162461bcd60e51b8152600401610516906119bb565b600081116109a65760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610516565b600655565b60035442116109e85760405162461bcd60e51b815260206004820152600960248201526857616974206d6f726560b81b6044820152606401610516565b336000908152600c60205260409020600181015460ff1615610a3e5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610516565b805480610a7f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818dbdb9d1c9a589d5d1959608a1b6044820152606401610516565b6000600654610ab67f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79776001600160a01b03166113c8565b610ac190600a611a63565b610acb9084611b0b565b610ad59190611a00565b90508015610b1157610b117f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79776001600160a01b0316338361153f565b6001838101805460ff19169091179055600a8054839190600090610b369084906119e8565b9091555050505050565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161051690611986565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bde5760405162461bcd60e51b815260040161051690611986565b7f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79776001600160a01b0316826001600160a01b03161415610c545760405162461bcd60e51b81526020600482015260116024820152702737ba1030b63637bbb2b2103a37b5b2b760791b6044820152606401610516565b60008111610c955760405162461bcd60e51b815260206004820152600e60248201526d4e6f6e207a65726f2076616c756560901b6044820152606401610516565b6105e06001600160a01b038316338361153f565b6001544210158015610cbc575060025442105b610cf95760405162461bcd60e51b815260206004820152600e60248201526d1250d3c81b9bdd081bdc195b995960921b6044820152606401610516565b336000908152600c602052604081208054349290610d189084906119e8565b90506007548110158015610d2e57506008548111155b610d695760405162461bcd60e51b815260206004820152600c60248201526b13dd5d081bd9881b1a5b5a5d60a21b6044820152606401610516565b808255600a8054849190600090610d819084906119e8565b9091555050600454600a541115610dcc5760405162461bcd60e51b815260206004820152600f60248201526e052656163686564206861726463617608c1b6044820152606401610516565b505050565b337f000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf2686001600160a01b031614610e195760405162461bcd60e51b815260040161051690611961565b600254421015610e5e5760405162461bcd60e51b815260206004820152601060248201526f1250d3c81b9bdd08199a5b9a5cda195960821b6044820152606401610516565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79776001600160a01b0316906370a082319060240160206040518083038186803b158015610ec057600080fd5b505afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef891906118ae565b90506000600654610f317f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c79776001600160a01b03166113c8565b610f3c90600a611a63565b600b54600a54610f4c9190611b2a565b610f569190611b0b565b610f609190611a00565b90506105e033610f708385611b2a565b6001600160a01b037f00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c797716919061153f565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b815260040161051690611986565b6001600160a01b0381166110305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610516565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b337f000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf2686001600160a01b0316146110d35760405162461bcd60e51b815260040161051690611961565b60025442106111175760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48199a5b9a5cda195960821b6044820152606401610516565b80421061115b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420636c61696d206461746560701b6044820152606401610516565b42600154111561116a57426001555b42600255600355565b6000546001600160a01b0316331461119d5760405162461bcd60e51b815260040161051690611986565b60015442106111be5760405162461bcd60e51b8152600401610516906119bb565b8242106112035760405162461bcd60e51b81526020600482015260136024820152724d757374206265206675747572652074696d6560681b6044820152606401610516565b8183106112525760405162461bcd60e51b815260206004820152601d60248201527f737461727444617465206d757374206265666f726520656e64446174650000006044820152606401610516565b8082106112a15760405162461bcd60e51b815260206004820152601d60248201527f656e6444617465206d757374206265666f726520636c61696d446174650000006044820152606401610516565b600192909255600255600355565b804710156112ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610516565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461134c576040519150601f19603f3d011682016040523d82523d6000602084013e611351565b606091505b5050905080610dcc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610516565b60006113d382611591565b156113e057506012919050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691612710916114289190611912565b6000604051808303818686fa925050503d8060008114611464576040519150601f19603f3d011682016040523d82523d6000602084013e611469565b606091505b509150915081158061147a57508051155b1561150a5760408051600481526024810182526020810180516001600160e01b0316632e0f262560e01b17905290516001600160a01b03861691612710916114c29190611912565b6000604051808303818686fa925050503d80600081146114fe576040519150601f19603f3d011682016040523d82523d6000602084013e611503565b606091505b5090925090505b818015611518575060008151115b611523576012611537565b8080602001905181019061153791906118ae565b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610dcc9084906115cb565b60006001600160a01b03821615806115c557506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b92915050565b6000611620826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661169d9092919063ffffffff16565b805190915015610dcc578080602001905181019061163e9190611876565b610dcc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610516565b60606116ac84846000856116b6565b90505b9392505050565b6060824710156117175760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610516565b843b6117655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610516565b600080866001600160a01b031685876040516117819190611912565b60006040518083038185875af1925050503d80600081146117be576040519150601f19603f3d011682016040523d82523d6000602084013e6117c3565b606091505b50915091506117d38282866117de565b979650505050505050565b606083156117ed5750816116af565b8251156117fd5782518084602001fd5b8160405162461bcd60e51b8152600401610516919061192e565b80356001600160a01b038116811461182e57600080fd5b919050565b600060208284031215611844578081fd5b6116af82611817565b6000806040838503121561185f578081fd5b61186883611817565b946020939093013593505050565b600060208284031215611887578081fd5b815180151581146116af578182fd5b6000602082840312156118a7578081fd5b5035919050565b6000602082840312156118bf578081fd5b5051919050565b600080604083850312156118d8578182fd5b50508035926020909101359150565b6000806000606084860312156118fb578081fd5b505081359360208301359350604090920135919050565b60008251611924818460208701611b41565b9190910192915050565b602081526000825180602084015261194d816040850160208701611b41565b601f01601f19169190910160400192915050565b6020808252600b908201526a155b9c195c9b5a5d1d195960aa1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601390820152721250d3c8185b1c9958591e481cdd185c9d1959606a1b604082015260600190565b600082198211156119fb576119fb611b71565b500190565b600082611a1b57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611a5b578160001904821115611a4157611a41611b71565b80851615611a4e57918102915b93841c9390800290611a25565b509250929050565b60006116af8383600082611a79575060016115c5565b81611a86575060006115c5565b8160018114611a9c5760028114611aa657611ac2565b60019150506115c5565b60ff841115611ab757611ab7611b71565b50506001821b6115c5565b5060208310610133831016604e8410600b8410161715611ae5575081810a6115c5565b611aef8383611a20565b8060001904821115611b0357611b03611b71565b029392505050565b6000816000190483118215151615611b2557611b25611b71565b500290565b600082821015611b3c57611b3c611b71565b500390565b60005b83811015611b5c578181015183820152602001611b44565b83811115611b6b576000848401525b50505050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220428555408476962a9909efbfd93086a7dd15db773f3eab1ddfceef37cee9fccd64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c7977000000000000000000000000172a25d57da59ab86792fb8ced103ad871cbef34000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf26800000000000000000000000000000000000000000000000000000000000000c8
-----Decoded View---------------
Arg [0] : icoToken_ (address): 0x06c04b0ad236e7ca3b3189b1d049fe80109c7977
Arg [1] : icoTreasury_ (address): 0x172a25d57da59ab86792fb8ced103ad871cbef34
Arg [2] : icoOwner_ (address): 0xeefd2d76564d3c38920503881796ef3a5fecf268
Arg [3] : treasuryFee_ (uint16): 200
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000006c04b0ad236e7ca3b3189b1d049fe80109c7977
Arg [1] : 000000000000000000000000172a25d57da59ab86792fb8ced103ad871cbef34
Arg [2] : 000000000000000000000000eefd2d76564d3c38920503881796ef3a5fecf268
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c8
Deployed ByteCode Sourcemap
22246:9987:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31317:278;;;;;;;;;;;;;:::i;:::-;;30064:106;;;;;;;;;;-1:-1:-1;30143:8:0;;30153;;30064:106;;;;15070:25:1;;;15126:2;15111:18;;15104:34;;;;15043:18;30064:106:0;;;;;;;;30631:119;;;;;;;;;;-1:-1:-1;30717:11:0;;30730;;30631:119;;30313:310;;;;;;;;;;-1:-1:-1;30313:310:0;;;;;:::i;:::-;;:::i;29374:216::-;;;;;;;;;;-1:-1:-1;29549:10:0;;29561:8;;29571:10;;29374:216;;;15351:25:1;;;15407:2;15392:18;;15385:34;;;;15435:18;;;15428:34;15339:2;15324:18;29374:216:0;15306:162:1;27245:534:0;;;;;;;;;;;;;:::i;28441:257::-;;;;;;;;;;-1:-1:-1;28441:257:0;;;;;:::i;:::-;-1:-1:-1;;;;;28591:29:0;28538:7;28591:29;;;:19;:29;;;;;:36;;28642:37;;;;;28591:36;;28642:37;;;;;28441:257;;;;;14801:25:1;;;14869:14;;14862:22;14857:2;14842:18;;14835:50;14774:18;28441:257:0;14756:135:1;29718:338:0;;;;;;;;;;-1:-1:-1;29718:338:0;;;;;:::i;:::-;;:::i;30866:223::-;;;;;;;;;;-1:-1:-1;30866:223:0;;;;;:::i;:::-;;:::i;25140:763::-;;;;;;;;;;;;;:::i;27787:100::-;;;;;;;;;;-1:-1:-1;27869:9:0;27787:100;;;-1:-1:-1;;;;;2605:32:1;;;2587:51;;2575:2;2560:18;27787:100:0;2542:102:1;2867:148:0;;;;;;;;;;;;;:::i;28334:99::-;;;;;;;;;;-1:-1:-1;28412:13:0;;28334:99;;;14597:25:1;;;14585:2;14570:18;28334:99:0;14552:76:1;31097:91:0;;;;;;;;;;-1:-1:-1;31171:9:0;;31097:91;;28219:107;;;;;;;;;;-1:-1:-1;28301:17:0;;28219:107;;2216:87;;;;;;;;;;-1:-1:-1;2262:7:0;2289:6;-1:-1:-1;;;;;2289:6:0;2216:87;;31866:261;;;;;;;;;;-1:-1:-1;31866:261:0;;;;;:::i;:::-;;:::i;24272:740::-;;;:::i;28115:96::-;;;;;;;;;;-1:-1:-1;28115:96:0;;14432:6:1;28191:12:0;14420:19:1;14402:38;;14390:2;14375:18;28115:96:0;14357:89:1;26647:468:0;;;;;;;;;;;;;:::i;27895:99::-;;;;;;;;;;-1:-1:-1;27977:9:0;27895:99;;3170:244;;;;;;;;;;-1:-1:-1;3170:244:0;;;;;:::i;:::-;;:::i;26095:424::-;;;;;;;;;;-1:-1:-1;26095:424:0;;;;;:::i;:::-;;:::i;28002:105::-;;;;;;;;;;-1:-1:-1;28087:12:0;28002:105;;28833:533;;;;;;;;;;-1:-1:-1;28833:533:0;;;;;:::i;:::-;;:::i;31317:278::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;;;;;;;;;31377:15:::1;::::0;::::1;;31369:62;;;::::0;-1:-1:-1;;;31369:62:0;;3742:2:1;31369:62:0::1;::::0;::::1;3724:21:1::0;3781:2;3761:18;;;3754:30;3820:34;3800:18;;;3793:62;-1:-1:-1;;;3871:18:1;;;3864:32;3913:19;;31369:62:0::1;3714:224:1::0;31369:62:0::1;31465:21;31505:16:::0;31497:35:::1;;;::::0;-1:-1:-1;;;31497:35:0;;4846:2:1;31497:35:0::1;::::0;::::1;4828:21:1::0;4885:1;4865:18;;;4858:29;-1:-1:-1;;;4903:18:1;;;4896:36;4949:18;;31497:35:0::1;4818:155:1::0;31497:35:0::1;31543:44;::::0;846:10;;31543:44;::::1;;;::::0;31574:12;;31543:44:::1;::::0;;;31574:12;846:10;31543:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2507:1;31317:278::o:0;30313:310::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;30457:11:::1;30442;:26;;30434:53;;;::::0;-1:-1:-1;;;30434:53:0;;4503:2:1;30434:53:0::1;::::0;::::1;4485:21:1::0;4542:2;4522:18;;;4515:30;-1:-1:-1;;;4561:18:1;;;4554:44;4615:18;;30434:53:0::1;4475:164:1::0;30434:53:0::1;30520:1;30506:11;:15;30498:45;;;::::0;-1:-1:-1;;;30498:45:0;;10229:2:1;30498:45:0::1;::::0;::::1;10211:21:1::0;10268:2;10248:18;;;10241:30;-1:-1:-1;;;10287:18:1;;;10280:47;10344:18;;30498:45:0::1;10201:167:1::0;30498:45:0::1;30554:11;:25:::0;;;;30590:11:::1;:25:::0;30313:310::o;27245:534::-;846:10;27314:9;-1:-1:-1;;;;;27298:25:0;;27290:49;;;;-1:-1:-1;;;27290:49:0;;;;;;;:::i;:::-;27377:8;;27358:15;:27;;27350:56;;;;-1:-1:-1;;;27350:56:0;;6280:2:1;27350:56:0;;;6262:21:1;6319:2;6299:18;;;6292:30;-1:-1:-1;;;6338:18:1;;;6331:46;6394:18;;27350:56:0;6252:166:1;27350:56:0;27426:15;;;;27425:16;27417:46;;;;-1:-1:-1;;;27417:46:0;;8844:2:1;27417:46:0;;;8826:21:1;8883:2;8863:18;;;8856:30;-1:-1:-1;;;8902:18:1;;;8895:47;8959:18;;27417:46:0;8816:167:1;27417:46:0;27518:21;27579:5;27563:12;27543:32;;:17;;:32;;;;:::i;:::-;27542:42;;;;:::i;:::-;27518:66;-1:-1:-1;27595:37:0;-1:-1:-1;;;;;27595:12:0;:22;27518:66;27595:22;:37::i;:::-;27682:54;27722:13;27702:17;;:33;;;;:::i;:::-;-1:-1:-1;;;;;27682:9:0;:19;;;:54::i;:::-;-1:-1:-1;27749:15:0;:22;;-1:-1:-1;;27749:22:0;27767:4;27749:22;;;27245:534::o;29718:338::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;29829:10:::1;;29811:15;:28;29803:60;;;;-1:-1:-1::0;;;29803:60:0::1;;;;;;;:::i;:::-;29893:1;29882:8;:12;:28;;;;;29909:1;29898:8;:12;29882:28;29874:56;;;::::0;-1:-1:-1;;;29874:56:0;;12674:2:1;29874:56:0::1;::::0;::::1;12656:21:1::0;12713:2;12693:18;;;12686:30;-1:-1:-1;;;12732:18:1;;;12725:45;12787:18;;29874:56:0::1;12646:165:1::0;29874:56:0::1;29961:8;29949;:20;;29941:47;;;::::0;-1:-1:-1;;;29941:47:0;;4503:2:1;29941:47:0::1;::::0;::::1;4485:21:1::0;4542:2;4522:18;;;4515:30;-1:-1:-1;;;4561:18:1;;;4554:44;4615:18;;29941:47:0::1;4475:164:1::0;29941:47:0::1;29999:8;:19:::0;30029:8:::1;:19:::0;29718:338::o;30866:223::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;30965:10:::1;;30947:15;:28;30939:60;;;;-1:-1:-1::0;;;30939:60:0::1;;;;;;;:::i;:::-;31030:1;31018:9;:13;31010:39;;;::::0;-1:-1:-1;;;31010:39:0;;13777:2:1;31010:39:0::1;::::0;::::1;13759:21:1::0;13816:2;13796:18;;;13789:30;-1:-1:-1;;;13835:18:1;;;13828:43;13888:18;;31010:39:0::1;13749:163:1::0;31010:39:0::1;31060:9;:21:::0;30866:223::o;25140:763::-;25209:10;;25191:15;:28;25183:50;;;;-1:-1:-1;;;25183:50:0;;9190:2:1;25183:50:0;;;9172:21:1;9229:1;9209:18;;;9202:29;-1:-1:-1;;;9247:18:1;;;9240:39;9296:18;;25183:50:0;9162:158:1;25183:50:0;846:10;25244:42;25289:57;;;:19;:57;;;;;25366:27;;;;;;25365:28;25357:56;;;;-1:-1:-1;;;25357:56:0;;9885:2:1;25357:56:0;;;9867:21:1;9924:2;9904:18;;;9897:30;-1:-1:-1;;;9943:18:1;;;9936:45;9998:18;;25357:56:0;9857:165:1;25357:56:0;25456:26;;25501:25;25493:53;;;;-1:-1:-1;;;25493:53:0;;11624:2:1;25493:53:0;;;11606:21:1;11663:2;11643:18;;;11636:30;-1:-1:-1;;;11682:18:1;;;11675:45;11737:18;;25493:53:0;11596:165:1;25493:53:0;25559:26;25665:9;;25631:29;:9;-1:-1:-1;;;;;25631:27:0;;:29::i;:::-;25626:35;;:2;:35;:::i;:::-;25589:72;;:21;:72;:::i;:::-;25588:86;;;;:::i;:::-;25559:115;-1:-1:-1;25691:22:0;;25687:111;;25730:56;:9;-1:-1:-1;;;;;25730:22:0;846:10;25767:18;25730:22;:56::i;:::-;25838:4;25808:27;;;:34;;-1:-1:-1;;25808:34:0;;;;;;25853:17;:42;;25874:21;;25853:17;25808:27;;25853:42;;25874:21;;25853:42;:::i;:::-;;;;-1:-1:-1;;;;;25140:763:0:o;2867:148::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;2974:1:::1;2958:6:::0;;2937:40:::1;::::0;-1:-1:-1;;;;;2958:6:0;;::::1;::::0;2937:40:::1;::::0;2974:1;;2937:40:::1;3005:1;2988:19:::0;;-1:-1:-1;;;;;;2988:19:0::1;::::0;;2867:148::o;31866:261::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;31977:9:::1;-1:-1:-1::0;;;;;31959:28:0::1;:6;-1:-1:-1::0;;;;;31959:28:0::1;;;31951:58;;;::::0;-1:-1:-1;;;31951:58:0;;5587:2:1;31951:58:0::1;::::0;::::1;5569:21:1::0;5626:2;5606:18;;;5599:30;-1:-1:-1;;;5645:18:1;;;5638:47;5702:18;;31951:58:0::1;5559:167:1::0;31951:58:0::1;32038:1;32028:7;:11;32020:38;;;::::0;-1:-1:-1;;;32020:38:0;;10936:2:1;32020:38:0::1;::::0;::::1;10918:21:1::0;10975:2;10955:18;;;10948:30;-1:-1:-1;;;10994:18:1;;;10987:44;11048:18;;32020:38:0::1;10908:164:1::0;32020:38:0::1;32069:50;-1:-1:-1::0;;;;;32069:27:0;::::1;846:10:::0;32111:7;32069:27:::1;:50::i;24272:740::-:0;24363:10;;24344:15;:29;;:59;;;;;24395:8;;24377:15;:26;24344:59;24322:123;;;;-1:-1:-1;;;24322:123:0;;8501:2:1;24322:123:0;;;8483:21:1;8540:2;8520:18;;;8513:30;-1:-1:-1;;;8559:18:1;;;8552:44;8613:18;;24322:123:0;8473:164:1;24322:123:0;846:10;24458:24;24549:57;;;:19;:57;;;;;24646:25;;24485:9;;24458:24;24646:44;;24485:9;;24646:44;:::i;:::-;24619:71;;24743:11;;24723:16;:31;;:66;;;;;24778:11;;24758:16;:31;;24723:66;24701:128;;;;-1:-1:-1;;;24701:128:0;;14119:2:1;24701:128:0;;;14101:21:1;14158:2;14138:18;;;14131:30;-1:-1:-1;;;14177:18:1;;;14170:42;14229:18;;24701:128:0;14091:162:1;24701:128:0;24842:44;;;24897:17;:37;;24918:16;;24897:17;24842:25;;24897:37;;24918:16;;24897:37;:::i;:::-;;;;-1:-1:-1;;24976:8:0;;24955:17;;:29;;24947:57;;;;-1:-1:-1;;;24947:57:0;;7392:2:1;24947:57:0;;;7374:21:1;7431:2;7411:18;;;7404:30;-1:-1:-1;;;7450:18:1;;;7443:45;7505:18;;24947:57:0;7364:165:1;24947:57:0;24272:740;;;:::o;26647:468::-;846:10;26725:9;-1:-1:-1;;;;;26709:25:0;;26701:49;;;;-1:-1:-1;;;26701:49:0;;;;;;;:::i;:::-;26788:8;;26769:15;:27;;26761:56;;;;-1:-1:-1;;;26761:56:0;;6280:2:1;26761:56:0;;;6262:21:1;6319:2;6299:18;;;6292:30;-1:-1:-1;;;6338:18:1;;;6331:46;6394:18;;26761:56:0;6252:166:1;26761:56:0;26853:34;;-1:-1:-1;;;26853:34:0;;26881:4;26853:34;;;2587:51:1;26828:22:0;;26853:9;-1:-1:-1;;;;;26853:19:0;;;;2560:18:1;;26853:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26828:59;;26898:23;27015:9;;26981:29;:9;-1:-1:-1;;;;;26981:27:0;;:29::i;:::-;26976:35;;:2;:35;:::i;:::-;26946:13;;26926:17;;:33;;;;:::i;:::-;26925:86;;;;:::i;:::-;26924:100;;;;:::i;:::-;26898:126;-1:-1:-1;27037:70:0;846:10;27074:32;27091:15;27074:14;:32;:::i;:::-;-1:-1:-1;;;;;27037:9:0;:22;;:70;:22;:70::i;3170:244::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3259:22:0;::::1;3251:73;;;::::0;-1:-1:-1;;;3251:73:0;;5180:2:1;3251:73:0::1;::::0;::::1;5162:21:1::0;5219:2;5199:18;;;5192:30;5258:34;5238:18;;;5231:62;-1:-1:-1;;;5309:18:1;;;5302:36;5355:19;;3251:73:0::1;5152:228:1::0;3251:73:0::1;3361:6;::::0;;3340:38:::1;::::0;-1:-1:-1;;;;;3340:38:0;;::::1;::::0;3361:6;::::1;::::0;3340:38:::1;::::0;::::1;3389:6;:17:::0;;-1:-1:-1;;;;;;3389:17:0::1;-1:-1:-1::0;;;;;3389:17:0;;;::::1;::::0;;;::::1;::::0;;3170:244::o;26095:424::-;846:10;26180:9;-1:-1:-1;;;;;26164:25:0;;26156:49;;;;-1:-1:-1;;;26156:49:0;;;;;;;:::i;:::-;26242:8;;26224:15;:26;26216:55;;;;-1:-1:-1;;;26216:55:0;;11279:2:1;26216:55:0;;;11261:21:1;11318:2;11298:18;;;11291:30;-1:-1:-1;;;11337:18:1;;;11330:46;11393:18;;26216:55:0;11251:166:1;26216:55:0;26308:10;26290:15;:28;26282:59;;;;-1:-1:-1;;;26282:59:0;;5933:2:1;26282:59:0;;;5915:21:1;5972:2;5952:18;;;5945:30;-1:-1:-1;;;5991:18:1;;;5984:48;6049:18;;26282:59:0;5905:168:1;26282:59:0;26369:15;26356:10;;:28;26352:89;;;26414:15;26401:10;:28;26352:89;26462:15;26451:8;:26;26488:10;:23;26095:424::o;28833:533::-;2262:7;2289:6;-1:-1:-1;;;;;2289:6:0;846:10;2436:23;2428:68;;;;-1:-1:-1;;;2428:68:0;;;;;;;:::i;:::-;29005:10:::1;;28987:15;:28;28979:60;;;;-1:-1:-1::0;;;28979:60:0::1;;;;;;;:::i;:::-;29076:10;29058:15;:28;29050:60;;;::::0;-1:-1:-1;;;29050:60:0;;12326:2:1;29050:60:0::1;::::0;::::1;12308:21:1::0;12365:2;12345:18;;;12338:30;-1:-1:-1;;;12384:18:1;;;12377:49;12443:18;;29050:60:0::1;12298:169:1::0;29050:60:0::1;29142:8;29129:10;:21;29121:63;;;::::0;-1:-1:-1;;;29121:63:0;;9527:2:1;29121:63:0::1;::::0;::::1;9509:21:1::0;9566:2;9546:18;;;9539:30;9605:31;9585:18;;;9578:59;9654:18;;29121:63:0::1;9499:179:1::0;29121:63:0::1;29214:10;29203:8;:21;29195:63;;;::::0;-1:-1:-1;;;29195:63:0;;4145:2:1;29195:63:0::1;::::0;::::1;4127:21:1::0;4184:2;4164:18;;;4157:30;4223:31;4203:18;;;4196:59;4272:18;;29195:63:0::1;4117:179:1::0;29195:63:0::1;29271:10;:23:::0;;;;29305:8:::1;:19:::0;29335:10:::1;:23:::0;28833:533::o;8363:397::-;8478:6;8453:21;:31;;8445:73;;;;-1:-1:-1;;;8445:73:0;;7736:2:1;8445:73:0;;;7718:21:1;7775:2;7755:18;;;7748:30;7814:31;7794:18;;;7787:59;7863:18;;8445:73:0;7708:179:1;8445:73:0;8610:12;8628:9;-1:-1:-1;;;;;8628:14:0;8651:6;8628:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8609:54;;;8682:7;8674:78;;;;-1:-1:-1;;;8674:78:0;;6965:2:1;8674:78:0;;;6947:21:1;7004:2;6984:18;;;6977:30;7043:34;7023:18;;;7016:62;7114:28;7094:18;;;7087:56;7160:19;;8674:78:0;6937:248:1;21406:574:0;21470:7;21494:12;21500:5;21494;:12::i;:::-;21490:54;;;-1:-1:-1;21530:2:0;;21406:574;-1:-1:-1;21406:574:0:o;21490:54::-;21654:37;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21654:37:0;-1:-1:-1;;;21654:37:0;;;21592:100;;21557:12;;;;-1:-1:-1;;;;;21592:25:0;;;21637:5;;21592:100;;21654:37;21592:100;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21556:136;;;;21708:7;21707:8;:28;;;-1:-1:-1;21719:11:0;;:16;21707:28;21703:187;;;21826:37;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21826:37:0;-1:-1:-1;;;21826:37:0;;;21770:108;;-1:-1:-1;;;;;21770:25:0;;;21801:5;;21770:108;;21826:37;21770:108;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21752:126:0;;-1:-1:-1;21752:126:0;-1:-1:-1;21703:187:0;21910:7;:26;;;;;21935:1;21921:4;:11;:15;21910:26;21909:63;;21970:2;21909:63;;;21951:4;21940:27;;;;;;;;;;;;:::i;:::-;21902:70;21406:574;-1:-1:-1;;;;21406:574:0:o;14900:177::-;15010:58;;;-1:-1:-1;;;;;3065:32:1;;15010:58:0;;;3047:51:1;3114:18;;;;3107:34;;;15010:58:0;;;;;;;;;;3020:18:1;;;;15010:58:0;;;;;;;;-1:-1:-1;;;;;15010:58:0;-1:-1:-1;;;15010:58:0;;;14983:86;;15003:5;;14983:19;:86::i;21988:180::-;22040:4;-1:-1:-1;;;;;22065:39:0;;;;:94;;-1:-1:-1;;;;;;22121:38:0;;18472:42;22121:38;22065:94;22057:103;21988:180;-1:-1:-1;;21988:180:0:o;17334:761::-;17758:23;17784:69;17812:4;17784:69;;;;;;;;;;;;;;;;;17792:5;-1:-1:-1;;;;;17784:27:0;;;:69;;;;;:::i;:::-;17868:17;;17758:95;;-1:-1:-1;17868:21:0;17864:224;;18010:10;17999:30;;;;;;;;;;;;:::i;:::-;17991:85;;;;-1:-1:-1;;;17991:85:0;;13366:2:1;17991:85:0;;;13348:21:1;13405:2;13385:18;;;13378:30;13444:34;13424:18;;;13417:62;-1:-1:-1;;;13495:18:1;;;13488:40;13545:19;;17991:85:0;13338:232:1;9924:195:0;10027:12;10059:52;10081:6;10089:4;10095:1;10098:12;10059:21;:52::i;:::-;10052:59;;9924:195;;;;;;:::o;10976:530::-;11103:12;11161:5;11136:21;:30;;11128:81;;;;-1:-1:-1;;;11128:81:0;;8094:2:1;11128:81:0;;;8076:21:1;8133:2;8113:18;;;8106:30;8172:34;8152:18;;;8145:62;-1:-1:-1;;;8223:18:1;;;8216:36;8269:19;;11128:81:0;8066:228:1;11128:81:0;7373:20;;11220:60;;;;-1:-1:-1;;;11220:60:0;;11968:2:1;11220:60:0;;;11950:21:1;12007:2;11987:18;;;11980:30;12046:31;12026:18;;;12019:59;12095:18;;11220:60:0;11940:179:1;11220:60:0;11354:12;11368:23;11395:6;-1:-1:-1;;;;;11395:11:0;11415:5;11423:4;11395:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11353:75;;;;11446:52;11464:7;11473:10;11485:12;11446:17;:52::i;:::-;11439:59;10976:530;-1:-1:-1;;;;;;;10976:530:0:o;13516:742::-;13631:12;13660:7;13656:595;;;-1:-1:-1;13691:10:0;13684:17;;13656:595;13805:17;;:21;13801:439;;14068:10;14062:17;14129:15;14116:10;14112:2;14108:19;14101:44;14016:148;14211:12;14204:20;;-1:-1:-1;;;14204:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:264::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;647:2;632:18;;;;619:32;;-1:-1:-1;;;480:177:1:o;662:297::-;729:6;782:2;770:9;761:7;757:23;753:32;750:2;;;803:6;795;788:22;750:2;840:9;834:16;893:5;886:13;879:21;872:5;869:32;859:2;;920:6;912;905:22;964:190;1023:6;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;1097:6;1089;1082:22;1044:2;-1:-1:-1;1125:23:1;;1034:120;-1:-1:-1;1034:120:1:o;1159:194::-;1229:6;1282:2;1270:9;1261:7;1257:23;1253:32;1250:2;;;1303:6;1295;1288:22;1250:2;-1:-1:-1;1331:16:1;;1240:113;-1:-1:-1;1240:113:1:o;1358:258::-;1426:6;1434;1487:2;1475:9;1466:7;1462:23;1458:32;1455:2;;;1508:6;1500;1493:22;1455:2;-1:-1:-1;;1536:23:1;;;1606:2;1591:18;;;1578:32;;-1:-1:-1;1445:171:1:o;1621:326::-;1698:6;1706;1714;1767:2;1755:9;1746:7;1742:23;1738:32;1735:2;;;1788:6;1780;1773:22;1735:2;-1:-1:-1;;1816:23:1;;;1886:2;1871:18;;1858:32;;-1:-1:-1;1937:2:1;1922:18;;;1909:32;;1725:222;-1:-1:-1;1725:222:1:o;1952:274::-;2081:3;2119:6;2113:13;2135:53;2181:6;2176:3;2169:4;2161:6;2157:17;2135:53;:::i;:::-;2204:16;;;;;2089:137;-1:-1:-1;;2089:137:1:o;3152:383::-;3301:2;3290:9;3283:21;3264:4;3333:6;3327:13;3376:6;3371:2;3360:9;3356:18;3349:34;3392:66;3451:6;3446:2;3435:9;3431:18;3426:2;3418:6;3414:15;3392:66;:::i;:::-;3519:2;3498:15;-1:-1:-1;;3494:29:1;3479:45;;;;3526:2;3475:54;;3273:262;-1:-1:-1;;3273:262:1:o;6423:335::-;6625:2;6607:21;;;6664:2;6644:18;;;6637:30;-1:-1:-1;;;6698:2:1;6683:18;;6676:41;6749:2;6734:18;;6597:161::o;10373:356::-;10575:2;10557:21;;;10594:18;;;10587:30;10653:34;10648:2;10633:18;;10626:62;10720:2;10705:18;;10547:182::o;12816:343::-;13018:2;13000:21;;;13057:2;13037:18;;;13030:30;-1:-1:-1;;;13091:2:1;13076:18;;13069:49;13150:2;13135:18;;12990:169::o;15473:128::-;15513:3;15544:1;15540:6;15537:1;15534:13;15531:2;;;15550:18;;:::i;:::-;-1:-1:-1;15586:9:1;;15521:80::o;15606:217::-;15646:1;15672;15662:2;;-1:-1:-1;;;15697:31:1;;15751:4;15748:1;15741:15;15779:4;15704:1;15769:15;15662:2;-1:-1:-1;15808:9:1;;15652:171::o;15828:422::-;15917:1;15960:5;15917:1;15974:270;15995:7;15985:8;15982:21;15974:270;;;16054:4;16050:1;16046:6;16042:17;16036:4;16033:27;16030:2;;;16063:18;;:::i;:::-;16113:7;16103:8;16099:22;16096:2;;;16133:16;;;;16096:2;16212:22;;;;16172:15;;;;15974:270;;;15978:3;15892:358;;;;;:::o;16255:131::-;16315:5;16344:36;16371:8;16365:4;16440:5;16470:8;16460:2;;-1:-1:-1;16511:1:1;16525:5;;16460:2;16559:4;16549:2;;-1:-1:-1;16596:1:1;16610:5;;16549:2;16641:4;16659:1;16654:59;;;;16727:1;16722:130;;;;16634:218;;16654:59;16684:1;16675:10;;16698:5;;;16722:130;16759:3;16749:8;16746:17;16743:2;;;16766:18;;:::i;:::-;-1:-1:-1;;16822:1:1;16808:16;;16837:5;;16634:218;;16936:2;16926:8;16923:16;16917:3;16911:4;16908:13;16904:36;16898:2;16888:8;16885:16;16880:2;16874:4;16871:12;16867:35;16864:77;16861:2;;;-1:-1:-1;16973:19:1;;;17005:5;;16861:2;17052:34;17077:8;17071:4;17052:34;:::i;:::-;17122:6;17118:1;17114:6;17110:19;17101:7;17098:32;17095:2;;;17133:18;;:::i;:::-;17171:20;;16450:747;-1:-1:-1;;;16450:747:1:o;17202:168::-;17242:7;17308:1;17304;17300:6;17296:14;17293:1;17290:21;17285:1;17278:9;17271:17;17267:45;17264:2;;;17315:18;;:::i;:::-;-1:-1:-1;17355:9:1;;17254:116::o;17375:125::-;17415:4;17443:1;17440;17437:8;17434:2;;;17448:18;;:::i;:::-;-1:-1:-1;17485:9:1;;17424:76::o;17505:258::-;17577:1;17587:113;17601:6;17598:1;17595:13;17587:113;;;17677:11;;;17671:18;17658:11;;;17651:39;17623:2;17616:10;17587:113;;;17718:6;17715:1;17712:13;17709:2;;;17753:1;17744:6;17739:3;17735:16;17728:27;17709:2;;17558:205;;;:::o;17768:127::-;17829:10;17824:3;17820:20;17817:1;17810:31;17860:4;17857:1;17850:15;17884:4;17881:1;17874:15
Swarm Source
ipfs://428555408476962a9909efbfd93086a7dd15db773f3eab1ddfceef37cee9fccd
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.