More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,517 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Draw Down | 19093436 | 348 days ago | IN | 0 ETH | 0.00104735 | ||||
Draw Down | 16847225 | 664 days ago | IN | 0 ETH | 0.00171601 | ||||
Draw Down | 14399132 | 1030 days ago | IN | 0 ETH | 0.00385392 | ||||
Draw Down | 13780697 | 1125 days ago | IN | 0 ETH | 0.00739979 | ||||
Draw Down | 13780679 | 1125 days ago | IN | 0 ETH | 0.01015765 | ||||
Draw Down | 13780656 | 1125 days ago | IN | 0 ETH | 0.01159826 | ||||
Draw Down | 13708529 | 1137 days ago | IN | 0 ETH | 0.01054679 | ||||
Draw Down | 13640870 | 1148 days ago | IN | 0 ETH | 0.0169384 | ||||
Draw Down | 12458727 | 1332 days ago | IN | 0 ETH | 0.00718996 | ||||
Draw Down | 12300893 | 1356 days ago | IN | 0 ETH | 0.00211635 | ||||
Draw Down | 12300893 | 1356 days ago | IN | 0 ETH | 0.00211635 | ||||
Draw Down | 12251952 | 1364 days ago | IN | 0 ETH | 0.02547555 | ||||
Draw Down | 12240182 | 1365 days ago | IN | 0 ETH | 0.01525384 | ||||
Draw Down | 12188394 | 1373 days ago | IN | 0 ETH | 0.01489011 | ||||
Draw Down | 12185695 | 1374 days ago | IN | 0 ETH | 0.0113665 | ||||
Draw Down | 12177053 | 1375 days ago | IN | 0 ETH | 0.00960469 | ||||
Draw Down | 12102373 | 1387 days ago | IN | 0 ETH | 0.01263436 | ||||
Draw Down | 12094903 | 1388 days ago | IN | 0 ETH | 0.01307147 | ||||
Draw Down | 12075425 | 1391 days ago | IN | 0 ETH | 0.00886849 | ||||
Draw Down | 12005699 | 1402 days ago | IN | 0 ETH | 0.01129477 | ||||
Draw Down | 11984090 | 1405 days ago | IN | 0 ETH | 0.00784288 | ||||
Draw Down | 11974440 | 1406 days ago | IN | 0 ETH | 0.00943419 | ||||
Draw Down | 11904011 | 1417 days ago | IN | 0 ETH | 0.01193482 | ||||
Draw Down | 11856585 | 1425 days ago | IN | 0 ETH | 0.00954443 | ||||
Draw Down | 11855639 | 1425 days ago | IN | 0 ETH | 0.022733 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VestingContractWithoutDelegation
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-24 */ pragma solidity ^0.5.16; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @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 addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ 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 multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b, string memory errorMessage) 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, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol // Subject to the MIT license. /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. */ contract ReentrancyGuard { // counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () internal { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } /** * @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); } /// @author BlockRocket contract VestingContractWithoutDelegation is ReentrancyGuard { using SafeMath for uint256; /// @notice event emitted when a vesting schedule is created event ScheduleCreated(address indexed _beneficiary); /// @notice event emitted when a successful drawn down of vesting tokens is made event DrawDown(address indexed _beneficiary, uint256 indexed _amount); /// @notice start of vesting period as a timestamp uint256 public start; /// @notice end of vesting period as a timestamp uint256 public end; /// @notice cliff duration in seconds uint256 public cliffDuration; /// @notice owner address set on construction address public owner; /// @notice amount vested for a beneficiary. Note beneficiary address can not be reused mapping(address => uint256) public vestedAmount; /// @notice cumulative total of tokens drawn down (and transferred from the deposit account) per beneficiary mapping(address => uint256) public totalDrawn; /// @notice last drawn down time (seconds) per beneficiary mapping(address => uint256) public lastDrawnAt; /// @notice ERC20 token we are vesting IERC20 public token; /** * @notice Construct a new vesting contract * @param _token ERC20 token * @param _start start timestamp * @param _end end timestamp * @param _cliffDurationInSecs cliff duration in seconds * @dev caller on constructor set as owner; this can not be changed */ constructor(IERC20 _token, uint256 _start, uint256 _end, uint256 _cliffDurationInSecs) public { require(address(_token) != address(0), "VestingContract::constructor: Invalid token"); require(_end >= _start, "VestingContract::constructor: Start must be before end"); token = _token; owner = msg.sender; start = _start; end = _end; cliffDuration = _cliffDurationInSecs; } /** * @notice Create new vesting schedules in a batch * @notice A transfer is used to bring tokens into the VestingDepositAccount so pre-approval is required * @param _beneficiaries array of beneficiaries of the vested tokens * @param _amounts array of amount of tokens (in wei) * @dev array index of address should be the same as the array index of the amount */ function createVestingSchedules( address[] calldata _beneficiaries, uint256[] calldata _amounts ) external returns (bool) { require(msg.sender == owner, "VestingContract::createVestingSchedules: Only Owner"); require(_beneficiaries.length > 0, "VestingContract::createVestingSchedules: Empty Data"); require( _beneficiaries.length == _amounts.length, "VestingContract::createVestingSchedules: Array lengths do not match" ); bool result = true; for(uint i = 0; i < _beneficiaries.length; i++) { address beneficiary = _beneficiaries[i]; uint256 amount = _amounts[i]; _createVestingSchedule(beneficiary, amount); } return result; } /** * @notice Create a new vesting schedule * @notice A transfer is used to bring tokens into the VestingDepositAccount so pre-approval is required * @param _beneficiary beneficiary of the vested tokens * @param _amount amount of tokens (in wei) */ function createVestingSchedule(address _beneficiary, uint256 _amount) external returns (bool) { require(msg.sender == owner, "VestingContract::createVestingSchedule: Only Owner"); return _createVestingSchedule(_beneficiary, _amount); } /** * @notice Transfers ownership role * @notice Changes the owner of this contract to a new address * @dev Only owner * @param _newOwner beneficiary to vest remaining tokens to */ function transferOwnership(address _newOwner) external { require(msg.sender == owner, "VestingContract::transferOwnership: Only owner"); owner = _newOwner; } /** * @notice Draws down any vested tokens due * @dev Must be called directly by the beneficiary assigned the tokens in the schedule */ function drawDown() nonReentrant external returns (bool) { return _drawDown(msg.sender); } // Accessors /** * @notice Vested token balance for a beneficiary * @dev Must be called directly by the beneficiary assigned the tokens in the schedule * @return _tokenBalance total balance proxied via the ERC20 token */ function tokenBalance() external view returns (uint256) { return token.balanceOf(address(this)); } /** * @notice Vesting schedule and associated data for a beneficiary * @dev Must be called directly by the beneficiary assigned the tokens in the schedule * @return _amount * @return _totalDrawn * @return _lastDrawnAt * @return _remainingBalance */ function vestingScheduleForBeneficiary(address _beneficiary) external view returns (uint256 _amount, uint256 _totalDrawn, uint256 _lastDrawnAt, uint256 _remainingBalance) { return ( vestedAmount[_beneficiary], totalDrawn[_beneficiary], lastDrawnAt[_beneficiary], vestedAmount[_beneficiary].sub(totalDrawn[_beneficiary]) ); } /** * @notice Draw down amount currently available (based on the block timestamp) * @param _beneficiary beneficiary of the vested tokens * @return _amount tokens due from vesting schedule */ function availableDrawDownAmount(address _beneficiary) external view returns (uint256 _amount) { return _availableDrawDownAmount(_beneficiary); } /** * @notice Balance remaining in vesting schedule * @param _beneficiary beneficiary of the vested tokens * @return _remainingBalance tokens still due (and currently locked) from vesting schedule */ function remainingBalance(address _beneficiary) external view returns (uint256) { return vestedAmount[_beneficiary].sub(totalDrawn[_beneficiary]); } // Internal function _createVestingSchedule(address _beneficiary, uint256 _amount) internal returns (bool) { require(_beneficiary != address(0), "VestingContract::createVestingSchedule: Beneficiary cannot be empty"); require(_amount > 0, "VestingContract::createVestingSchedule: Amount cannot be empty"); // Ensure one per address require(vestedAmount[_beneficiary] == 0, "VestingContract::createVestingSchedule: Schedule already in flight"); vestedAmount[_beneficiary] = _amount; // Vest the tokens into the deposit account and delegate to the beneficiary require( token.transferFrom(msg.sender, address(this), _amount), "VestingContract::createVestingSchedule: Unable to escrow tokens" ); emit ScheduleCreated(_beneficiary); return true; } function _drawDown(address _beneficiary) internal returns (bool) { require(vestedAmount[_beneficiary] > 0, "VestingContract::_drawDown: There is no schedule currently in flight"); uint256 amount = _availableDrawDownAmount(_beneficiary); require(amount > 0, "VestingContract::_drawDown: No allowance left to withdraw"); // Update last drawn to now lastDrawnAt[_beneficiary] = _getNow(); // Increase total drawn amount totalDrawn[_beneficiary] = totalDrawn[_beneficiary].add(amount); // Safety measure - this should never trigger require( totalDrawn[_beneficiary] <= vestedAmount[_beneficiary], "VestingContract::_drawDown: Safety Mechanism - Drawn exceeded Amount Vested" ); // Issue tokens to beneficiary require(token.transfer(_beneficiary, amount), "VestingContract::_drawDown: Unable to transfer tokens"); emit DrawDown(_beneficiary, amount); return true; } function _getNow() internal view returns (uint256) { return block.timestamp; } function _availableDrawDownAmount(address _beneficiary) internal view returns (uint256 _amount) { // Cliff Period if (_getNow() <= start.add(cliffDuration)) { // the cliff period has not ended, no tokens to draw down return 0; } // Schedule complete if (_getNow() > end) { return vestedAmount[_beneficiary].sub(totalDrawn[_beneficiary]); } // Schedule is active // Work out when the last invocation was uint256 timeLastDrawnOrStart = lastDrawnAt[_beneficiary] == 0 ? start : lastDrawnAt[_beneficiary]; // Find out how much time has past since last invocation uint256 timePassedSinceLastInvocation = _getNow().sub(timeLastDrawnOrStart); // Work out how many due tokens - time passed * rate per second uint256 drawDownRate = vestedAmount[_beneficiary].div(end.sub(start)); uint256 amount = timePassedSinceLastInvocation.mul(drawDownRate); return amount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"},{"internalType":"uint256","name":"_cliffDurationInSecs","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"DrawDown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"}],"name":"ScheduleCreated","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"availableDrawDownAmount","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cliffDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createVestingSchedule","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_beneficiaries","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"createVestingSchedules","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"drawDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDrawnAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"remainingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"vestingScheduleForBeneficiary","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_totalDrawn","type":"uint256"},{"internalType":"uint256","name":"_lastDrawnAt","type":"uint256"},{"internalType":"uint256","name":"_remainingBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516113eb3803806113eb8339818101604052608081101561003357600080fd5b508051602082015160408301516060909301516001600055919290916001600160a01b0384166100945760405162461bcd60e51b815260040180806020018281038252602b8152602001806113c0602b913960400191505060405180910390fd5b828210156100d35760405162461bcd60e51b815260040180806020018281038252603681526020018061138a6036913960400191505060405180910390fd5b600880546001600160a01b039095166001600160a01b0319958616179055600480549094163317909355600191909155600255600355611272806101186000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063be9a655511610097578063da0ebf8e11610066578063da0ebf8e14610341578063efbe1c1c14610367578063f2fde38b1461036f578063fc0c546a1461039757610100565b8063be9a6555146102bf578063c570b835146102c7578063d3a637f214610313578063d85349f71461033957610100565b806365281d15116100d357806365281d15146101ab5780636aa22091146101d15780638da5cb5b146102935780639e1a4d19146102b757610100565b806315298b5e14610105578063384711cc1461013d578063419544a014610163578063634107f8146101a3575b600080fd5b61012b6004803603602081101561011b57600080fd5b50356001600160a01b031661039f565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b50356001600160a01b03166103b2565b61018f6004803603604081101561017957600080fd5b506001600160a01b0381351690602001356103c4565b604080519115158252519081900360200190f35b61018f610423565b61012b600480360360208110156101c157600080fd5b50356001600160a01b0316610492565b61018f600480360360408110156101e757600080fd5b81019060208101813564010000000081111561020257600080fd5b82018360208201111561021457600080fd5b8035906020019184602083028401116401000000008311171561023657600080fd5b91939092909160208101903564010000000081111561025457600080fd5b82018360208201111561026657600080fd5b8035906020019184602083028401116401000000008311171561028857600080fd5b5090925090506104c5565b61029b6105ee565b604080516001600160a01b039092168252519081900360200190f35b61012b6105fd565b61012b610679565b6102ed600480360360208110156102dd57600080fd5b50356001600160a01b031661067f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61012b6004803603602081101561032957600080fd5b50356001600160a01b03166106d6565b61012b6106e8565b61012b6004803603602081101561035757600080fd5b50356001600160a01b03166106ee565b61012b610700565b6103956004803603602081101561038557600080fd5b50356001600160a01b0316610706565b005b61029b610771565b60006103aa82610780565b90505b919050565b60056020526000908152604090205481565b6004546000906001600160a01b031633146104105760405162461bcd60e51b8152600401808060200182810382526032815260200180610f8d6032913960400191505060405180910390fd5b61041a83836108b7565b90505b92915050565b6000805460010180825561043633610a9f565b9150600054811461048e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5090565b6001600160a01b03811660009081526006602090815260408083205460059092528220546103aa9163ffffffff610cdd16565b6004546000906001600160a01b031633146105115760405162461bcd60e51b81526004018080602001828103825260338152602001806110f46033913960400191505060405180910390fd5b8361054d5760405162461bcd60e51b81526004018080602001828103825260338152602001806111656033913960400191505060405180910390fd5b83821461058b5760405162461bcd60e51b8152600401808060200182810382526043815260200180610f4a6043913960600191505060405180910390fd5b600160005b858110156105e45760008787838181106105a657fe5b905060200201356001600160a01b0316905060008686848181106105c657fe5b9050602002013590506105d982826108b7565b505050600101610590565b5095945050505050565b6004546001600160a01b031681565b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561064857600080fd5b505afa15801561065c573d6000803e3d6000fd5b505050506040513d602081101561067257600080fd5b5051905090565b60015481565b6001600160a01b038116600090815260056020818152604080842054600683528185205460078452918520549390925283928392839290916106c7838363ffffffff610cdd16565b93509350935093509193509193565b60066020526000908152604090205481565b60035481565b60076020526000908152604090205481565b60025481565b6004546001600160a01b0316331461074f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806111d1602e913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031681565b6000610799600354600154610d1f90919063ffffffff16565b6107a1610d79565b116107ae575060006103ad565b6002546107b9610d79565b11156107fa576001600160a01b0382166000908152600660209081526040808320546005909252909120546107f39163ffffffff610cdd16565b90506103ad565b6001600160a01b03821660009081526007602052604081205415610836576001600160a01b03831660009081526007602052604090205461083a565b6001545b905060006108568261084a610d79565b9063ffffffff610cdd16565b90506000610899610874600154600254610cdd90919063ffffffff16565b6001600160a01b0387166000908152600560205260409020549063ffffffff610d7d16565b905060006108ad838363ffffffff610dbf16565b9695505050505050565b60006001600160a01b0383166108fe5760405162461bcd60e51b815260040180806020018281038252604381526020018061104c6043913960600191505060405180910390fd5b6000821161093d5760405162461bcd60e51b815260040180806020018281038252603e815260200180611127603e913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902054156109925760405162461bcd60e51b8152600401808060200182810382526042815260200180610fbf6042913960600191505060405180910390fd5b6001600160a01b03808416600090815260056020908152604080832086905560085481516323b872dd60e01b81523360048201523060248201526044810188905291519416936323b872dd93606480840194938390030190829087803b1580156109fb57600080fd5b505af1158015610a0f573d6000803e3d6000fd5b505050506040513d6020811015610a2557600080fd5b5051610a625760405162461bcd60e51b815260040180806020018281038252603f8152602001806111ff603f913960400191505060405180910390fd5b6040516001600160a01b038416907f0c1f0a8580825e2b9c0e184186aba220d33d5abf7ee14f99dbe0d7886dbb3ee490600090a250600192915050565b6001600160a01b038116600090815260056020526040812054610af35760405162461bcd60e51b815260040180806020018281038252604481526020018061108f6044913960600191505060405180910390fd5b6000610afe83610780565b905060008111610b3f5760405162461bcd60e51b81526004018080602001828103825260398152602001806111986039913960400191505060405180910390fd5b610b47610d79565b6001600160a01b038416600090815260076020908152604080832093909355600690522054610b7c908263ffffffff610d1f16565b6001600160a01b0384166000908152600660208181526040808420859055600582529092205491521015610be15760405162461bcd60e51b815260040180806020018281038252604b815260200180611001604b913960600191505060405180910390fd5b6008546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b5051610c9e5760405162461bcd60e51b8152600401808060200182810382526035815260200180610f156035913960400191505060405180910390fd5b60405181906001600160a01b038516907f59901f31ae2f183042d33e59b8b37be57d21ddf6351ebf066ee2eace7229bdfa90600090a350600192915050565b600061041a83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610e18565b60008282018381101561041a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b4290565b600061041a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610eaf565b600082610dce5750600061041d565b82820282848281610ddb57fe5b041461041a5760405162461bcd60e51b81526004018080602001828103825260218152602001806110d36021913960400191505060405180910390fd5b60008184841115610ea75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e6c578181015183820152602001610e54565b50505050905090810190601f168015610e995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610efe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e6c578181015183820152602001610e54565b506000838581610f0a57fe5b049594505050505056fe56657374696e67436f6e74726163743a3a5f64726177446f776e3a20556e61626c6520746f207472616e7366657220746f6b656e7356657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a204172726179206c656e6774687320646f206e6f74206d6174636856657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a204f6e6c79204f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a205363686564756c6520616c726561647920696e20666c6967687456657374696e67436f6e74726163743a3a5f64726177446f776e3a20536166657479204d656368616e69736d202d20447261776e20657863656564656420416d6f756e742056657374656456657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a2042656e65666963696172792063616e6e6f7420626520656d70747956657374696e67436f6e74726163743a3a5f64726177446f776e3a205468657265206973206e6f207363686564756c652063757272656e746c7920696e20666c69676874536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a204f6e6c79204f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a20416d6f756e742063616e6e6f7420626520656d70747956657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a20456d707479204461746156657374696e67436f6e74726163743a3a5f64726177446f776e3a204e6f20616c6c6f77616e6365206c65667420746f20776974686472617756657374696e67436f6e74726163743a3a7472616e736665724f776e6572736869703a204f6e6c79206f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a20556e61626c6520746f20657363726f7720746f6b656e73a265627a7a7231582073eecb5f225d8f09765d194eb5dde810e57d3a8ac61072c8cf0a5515be5edd6164736f6c6343000510003256657374696e67436f6e74726163743a3a636f6e7374727563746f723a205374617274206d757374206265206265666f726520656e6456657374696e67436f6e74726163743a3a636f6e7374727563746f723a20496e76616c696420746f6b656e000000000000000000000000c57d533c50bc22247d49a368880fb49a1caa39f7000000000000000000000000000000000000000000000000000000005f6ca660000000000000000000000000000000000000000000000000000000005fe49ee00000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063be9a655511610097578063da0ebf8e11610066578063da0ebf8e14610341578063efbe1c1c14610367578063f2fde38b1461036f578063fc0c546a1461039757610100565b8063be9a6555146102bf578063c570b835146102c7578063d3a637f214610313578063d85349f71461033957610100565b806365281d15116100d357806365281d15146101ab5780636aa22091146101d15780638da5cb5b146102935780639e1a4d19146102b757610100565b806315298b5e14610105578063384711cc1461013d578063419544a014610163578063634107f8146101a3575b600080fd5b61012b6004803603602081101561011b57600080fd5b50356001600160a01b031661039f565b60408051918252519081900360200190f35b61012b6004803603602081101561015357600080fd5b50356001600160a01b03166103b2565b61018f6004803603604081101561017957600080fd5b506001600160a01b0381351690602001356103c4565b604080519115158252519081900360200190f35b61018f610423565b61012b600480360360208110156101c157600080fd5b50356001600160a01b0316610492565b61018f600480360360408110156101e757600080fd5b81019060208101813564010000000081111561020257600080fd5b82018360208201111561021457600080fd5b8035906020019184602083028401116401000000008311171561023657600080fd5b91939092909160208101903564010000000081111561025457600080fd5b82018360208201111561026657600080fd5b8035906020019184602083028401116401000000008311171561028857600080fd5b5090925090506104c5565b61029b6105ee565b604080516001600160a01b039092168252519081900360200190f35b61012b6105fd565b61012b610679565b6102ed600480360360208110156102dd57600080fd5b50356001600160a01b031661067f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61012b6004803603602081101561032957600080fd5b50356001600160a01b03166106d6565b61012b6106e8565b61012b6004803603602081101561035757600080fd5b50356001600160a01b03166106ee565b61012b610700565b6103956004803603602081101561038557600080fd5b50356001600160a01b0316610706565b005b61029b610771565b60006103aa82610780565b90505b919050565b60056020526000908152604090205481565b6004546000906001600160a01b031633146104105760405162461bcd60e51b8152600401808060200182810382526032815260200180610f8d6032913960400191505060405180910390fd5b61041a83836108b7565b90505b92915050565b6000805460010180825561043633610a9f565b9150600054811461048e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5090565b6001600160a01b03811660009081526006602090815260408083205460059092528220546103aa9163ffffffff610cdd16565b6004546000906001600160a01b031633146105115760405162461bcd60e51b81526004018080602001828103825260338152602001806110f46033913960400191505060405180910390fd5b8361054d5760405162461bcd60e51b81526004018080602001828103825260338152602001806111656033913960400191505060405180910390fd5b83821461058b5760405162461bcd60e51b8152600401808060200182810382526043815260200180610f4a6043913960600191505060405180910390fd5b600160005b858110156105e45760008787838181106105a657fe5b905060200201356001600160a01b0316905060008686848181106105c657fe5b9050602002013590506105d982826108b7565b505050600101610590565b5095945050505050565b6004546001600160a01b031681565b600854604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561064857600080fd5b505afa15801561065c573d6000803e3d6000fd5b505050506040513d602081101561067257600080fd5b5051905090565b60015481565b6001600160a01b038116600090815260056020818152604080842054600683528185205460078452918520549390925283928392839290916106c7838363ffffffff610cdd16565b93509350935093509193509193565b60066020526000908152604090205481565b60035481565b60076020526000908152604090205481565b60025481565b6004546001600160a01b0316331461074f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806111d1602e913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b031681565b6000610799600354600154610d1f90919063ffffffff16565b6107a1610d79565b116107ae575060006103ad565b6002546107b9610d79565b11156107fa576001600160a01b0382166000908152600660209081526040808320546005909252909120546107f39163ffffffff610cdd16565b90506103ad565b6001600160a01b03821660009081526007602052604081205415610836576001600160a01b03831660009081526007602052604090205461083a565b6001545b905060006108568261084a610d79565b9063ffffffff610cdd16565b90506000610899610874600154600254610cdd90919063ffffffff16565b6001600160a01b0387166000908152600560205260409020549063ffffffff610d7d16565b905060006108ad838363ffffffff610dbf16565b9695505050505050565b60006001600160a01b0383166108fe5760405162461bcd60e51b815260040180806020018281038252604381526020018061104c6043913960600191505060405180910390fd5b6000821161093d5760405162461bcd60e51b815260040180806020018281038252603e815260200180611127603e913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902054156109925760405162461bcd60e51b8152600401808060200182810382526042815260200180610fbf6042913960600191505060405180910390fd5b6001600160a01b03808416600090815260056020908152604080832086905560085481516323b872dd60e01b81523360048201523060248201526044810188905291519416936323b872dd93606480840194938390030190829087803b1580156109fb57600080fd5b505af1158015610a0f573d6000803e3d6000fd5b505050506040513d6020811015610a2557600080fd5b5051610a625760405162461bcd60e51b815260040180806020018281038252603f8152602001806111ff603f913960400191505060405180910390fd5b6040516001600160a01b038416907f0c1f0a8580825e2b9c0e184186aba220d33d5abf7ee14f99dbe0d7886dbb3ee490600090a250600192915050565b6001600160a01b038116600090815260056020526040812054610af35760405162461bcd60e51b815260040180806020018281038252604481526020018061108f6044913960600191505060405180910390fd5b6000610afe83610780565b905060008111610b3f5760405162461bcd60e51b81526004018080602001828103825260398152602001806111986039913960400191505060405180910390fd5b610b47610d79565b6001600160a01b038416600090815260076020908152604080832093909355600690522054610b7c908263ffffffff610d1f16565b6001600160a01b0384166000908152600660208181526040808420859055600582529092205491521015610be15760405162461bcd60e51b815260040180806020018281038252604b815260200180611001604b913960600191505060405180910390fd5b6008546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050506040513d6020811015610c6157600080fd5b5051610c9e5760405162461bcd60e51b8152600401808060200182810382526035815260200180610f156035913960400191505060405180910390fd5b60405181906001600160a01b038516907f59901f31ae2f183042d33e59b8b37be57d21ddf6351ebf066ee2eace7229bdfa90600090a350600192915050565b600061041a83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610e18565b60008282018381101561041a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b4290565b600061041a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610eaf565b600082610dce5750600061041d565b82820282848281610ddb57fe5b041461041a5760405162461bcd60e51b81526004018080602001828103825260218152602001806110d36021913960400191505060405180910390fd5b60008184841115610ea75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e6c578181015183820152602001610e54565b50505050905090810190601f168015610e995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610efe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e6c578181015183820152602001610e54565b506000838581610f0a57fe5b049594505050505056fe56657374696e67436f6e74726163743a3a5f64726177446f776e3a20556e61626c6520746f207472616e7366657220746f6b656e7356657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a204172726179206c656e6774687320646f206e6f74206d6174636856657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a204f6e6c79204f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a205363686564756c6520616c726561647920696e20666c6967687456657374696e67436f6e74726163743a3a5f64726177446f776e3a20536166657479204d656368616e69736d202d20447261776e20657863656564656420416d6f756e742056657374656456657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a2042656e65666963696172792063616e6e6f7420626520656d70747956657374696e67436f6e74726163743a3a5f64726177446f776e3a205468657265206973206e6f207363686564756c652063757272656e746c7920696e20666c69676874536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7756657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a204f6e6c79204f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a20416d6f756e742063616e6e6f7420626520656d70747956657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c65733a20456d707479204461746156657374696e67436f6e74726163743a3a5f64726177446f776e3a204e6f20616c6c6f77616e6365206c65667420746f20776974686472617756657374696e67436f6e74726163743a3a7472616e736665724f776e6572736869703a204f6e6c79206f776e657256657374696e67436f6e74726163743a3a63726561746556657374696e675363686564756c653a20556e61626c6520746f20657363726f7720746f6b656e73a265627a7a7231582073eecb5f225d8f09765d194eb5dde810e57d3a8ac61072c8cf0a5515be5edd6164736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c57d533c50bc22247d49a368880fb49a1caa39f7000000000000000000000000000000000000000000000000000000005f6ca660000000000000000000000000000000000000000000000000000000005fe49ee00000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token (address): 0xC57d533c50bC22247d49a368880fb49a1caA39F7
Arg [1] : _start (uint256): 1600956000
Arg [2] : _end (uint256): 1608818400
Arg [3] : _cliffDurationInSecs (uint256): 0
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c57d533c50bc22247d49a368880fb49a1caa39f7
Arg [1] : 000000000000000000000000000000000000000000000000000000005f6ca660
Arg [2] : 000000000000000000000000000000000000000000000000000000005fe49ee0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
10961:9358:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10961:9358:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16678:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16678:159:0;-1:-1:-1;;;;;16678:159:0;;:::i;:::-;;;;;;;;;;;;;;;;11773:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11773:47:0;-1:-1:-1;;;;;11773:47:0;;:::i;14441:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14441:258:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15270:104;;;:::i;17074:162::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17074:162:0;-1:-1:-1;;;;;17074:162:0;;:::i;13350:799::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13350:799:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13350:799:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13350:799:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13350:799:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13350:799:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13350:799:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;13350:799:0;;-1:-1:-1;13350:799:0;-1:-1:-1;13350:799:0;:::i;11651:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;11651:20:0;;;;;;;;;;;;;;15641:112;;;:::i;11410:20::-;;;:::i;16057:393::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16057:393:0;-1:-1:-1;;;;;16057:393:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11943:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11943:45:0;-1:-1:-1;;;;;11943:45:0;;:::i;11563:28::-;;;:::i;12061:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12061:46:0;-1:-1:-1;;;;;12061:46:0;;:::i;11493:18::-;;;:::i;14923:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14923:180:0;-1:-1:-1;;;;;14923:180:0;;:::i;:::-;;12160:19;;;:::i;16678:159::-;16756:15;16791:38;16816:12;16791:24;:38::i;:::-;16784:45;;16678:159;;;;:::o;11773:47::-;;;;;;;;;;;;;:::o;14441:258::-;14568:5;;14529:4;;-1:-1:-1;;;;;14568:5:0;14554:10;:19;14546:82;;;;-1:-1:-1;;;14546:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14646:45;14669:12;14683:7;14646:22;:45::i;:::-;14639:52;;14441:258;;;;;:::o;15270:104::-;15321:4;8047:18;;8064:1;8047:18;;;;15345:21;15355:10;15345:9;:21::i;:::-;15338:28;;8159:13;;8143:12;:29;8135:73;;;;;-1:-1:-1;;;8135:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15270:104;;:::o;17074:162::-;-1:-1:-1;;;;;17203:24:0;;17145:7;17203:24;;;:10;:24;;;;;;;;;17172:12;:26;;;;;;:56;;;:30;:56;:::i;13350:799::-;13528:5;;13489:4;;-1:-1:-1;;;;;13528:5:0;13514:10;:19;13506:83;;;;-1:-1:-1;;;13506:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13608:25;13600:89;;;;-1:-1:-1;;;13600:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13722:40;;;13700:157;;;;-1:-1:-1;;;13700:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13884:4;13870:11;13901:215;13917:25;;;13901:215;;;13964:19;13986:14;;14001:1;13986:17;;;;;;;;;;;;;-1:-1:-1;;;;;13986:17:0;13964:39;;14018:14;14035:8;;14044:1;14035:11;;;;;;;;;;;;;14018:28;;14061:43;14084:11;14097:6;14061:22;:43::i;:::-;-1:-1:-1;;;13944:3:0;;13901:215;;;-1:-1:-1;14135:6:0;13350:799;-1:-1:-1;;;;;13350:799:0:o;11651:20::-;;;-1:-1:-1;;;;;11651:20:0;;:::o;15641:112::-;15715:5;;:30;;;-1:-1:-1;;;15715:30:0;;15739:4;15715:30;;;;;;15688:7;;-1:-1:-1;;;;;15715:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;15715:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15715:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15715:30:0;;-1:-1:-1;15641:112:0;:::o;11410:20::-;;;;:::o;16057:393::-;-1:-1:-1;;;;;16267:26:0;;16151:15;16267:26;;;:12;:26;;;;;;;;;16304:10;:24;;;;;;16339:11;:25;;;;;;16375:26;;;;16151:15;;;;;;16267:26;;16375:56;16267:26;16304:24;16375:56;:30;:56;:::i;:::-;16249:193;;;;;;;;16057:393;;;;;:::o;11943:45::-;;;;;;;;;;;;;:::o;11563:28::-;;;;:::o;12061:46::-;;;;;;;;;;;;;:::o;11493:18::-;;;;:::o;14923:180::-;15011:5;;-1:-1:-1;;;;;15011:5:0;14997:10;:19;14989:78;;;;-1:-1:-1;;;14989:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15078:5;:17;;-1:-1:-1;;;;;;15078:17:0;-1:-1:-1;;;;;15078:17:0;;;;;;;;;;14923:180::o;12160:19::-;;;-1:-1:-1;;;;;12160:19:0;;:::o;19270:1046::-;19349:15;19421:24;19431:13;;19421:5;;:9;;:24;;;;:::i;:::-;19408:9;:7;:9::i;:::-;:37;19404:149;;-1:-1:-1;19540:1:0;19533:8;;19404:149;19611:3;;19599:9;:7;:9::i;:::-;:15;19595:111;;;-1:-1:-1;;;;;19669:24:0;;;;;;:10;:24;;;;;;;;;19638:12;:26;;;;;;;:56;;;:30;:56;:::i;:::-;19631:63;;;;19595:111;-1:-1:-1;;;;;19832:25:0;;19801:28;19832:25;;;:11;:25;;;;;;:30;:66;;-1:-1:-1;;;;;19873:25:0;;;;;;:11;:25;;;;;;19832:66;;;19865:5;;19832:66;19801:97;;19977:37;20017:35;20031:20;20017:9;:7;:9::i;:::-;:13;:35;:13;:35;:::i;:::-;19977:75;;20138:20;20161:46;20192:14;20200:5;;20192:3;;:7;;:14;;;;:::i;:::-;-1:-1:-1;;;;;20161:26:0;;;;;;:12;:26;;;;;;;:46;:30;:46;:::i;:::-;20138:69;-1:-1:-1;20218:14:0;20235:47;:29;20138:69;20235:47;:33;:47;:::i;:::-;20218:64;19270:1046;-1:-1:-1;;;;;;19270:1046:0:o;17263:860::-;17352:4;-1:-1:-1;;;;;17377:26:0;;17369:106;;;;-1:-1:-1;;;17369:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:1;17494:7;:11;17486:86;;;;-1:-1:-1;;;17486:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17628:26:0;;;;;;:12;:26;;;;;;:31;17620:110;;;;-1:-1:-1;;;17620:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17743:26:0;;;;;;;:12;:26;;;;;;;;:36;;;17899:5;;:54;;-1:-1:-1;;;17899:54:0;;17918:10;17899:54;;;;17938:4;17899:54;;;;;;;;;;;;:5;;;:18;;:54;;;;;17743:26;17899:54;;;;;;;:5;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;17899:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17899:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17899:54:0;17877:167;;;;-1:-1:-1;;;17877:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:29;;-1:-1:-1;;;;;18062:29:0;;;;;;;;-1:-1:-1;18111:4:0;17263:860;;;;:::o;18131:1031::-;-1:-1:-1;;;;;18215:26:0;;18190:4;18215:26;;;:12;:26;;;;;;18207:111;;;;-1:-1:-1;;;18207:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18331:14;18348:38;18373:12;18348:24;:38::i;:::-;18331:55;;18414:1;18405:6;:10;18397:80;;;;-1:-1:-1;;;18397:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18555:9;:7;:9::i;:::-;-1:-1:-1;;;;;18527:25:0;;;;;;:11;:25;;;;;;;;:37;;;;18644:10;:24;;;;:36;;18673:6;18644:36;:28;:36;:::i;:::-;-1:-1:-1;;;;;18617:24:0;;;;;;:10;:24;;;;;;;;:63;;;18798:12;:26;;;;;;18770:24;;-1:-1:-1;18770:54:0;18748:179;;;;-1:-1:-1;;;18748:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18988:5;;:36;;;-1:-1:-1;;;18988:36:0;;-1:-1:-1;;;;;18988:36:0;;;;;;;;;;;;;;;:5;;;;;:14;;:36;;;;;;;;;;;;;;:5;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;18988:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18988:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18988:36:0;18980:102;;;;-1:-1:-1;;;18980:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19100:30;;19123:6;;-1:-1:-1;;;;;19100:30:0;;;;;;;;-1:-1:-1;19150:4:0;;18131:1031;-1:-1:-1;;18131:1031:0:o;1879:137::-;1937:7;1964:44;1968:1;1971;1964:44;;;;;;;;;;;;;;;;;:3;:44::i;986:181::-;1044:7;1076:5;;;1100:6;;;;1092:46;;;;;-1:-1:-1;;;1092:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19170:92;19239:15;19170:92;:::o;4398:132::-;4456:7;4483:39;4487:1;4490;4483:39;;;;;;;;;;;;;;;;;:3;:39::i;2740:471::-;2798:7;3043:6;3039:47;;-1:-1:-1;3073:1:0;3066:8;;3039:47;3110:5;;;3114:1;3110;:5;:1;3134:5;;;;;:10;3126:56;;;;-1:-1:-1;;;3126:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:192;2391:7;2427:12;2419:6;;;;2411:29;;;;-1:-1:-1;;;2411:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2411:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2463:5:0;;;2305:192::o;5018:345::-;5104:7;5206:12;5199:5;5191:28;;;;-1:-1:-1;;;5191:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5191:28:0;;5230:9;5246:1;5242;:5;;;;;;;5018:345;-1:-1:-1;;;;;5018:345:0:o
Swarm Source
bzzr://73eecb5f225d8f09765d194eb5dde810e57d3a8ac61072c8cf0a5515be5edd61
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.