Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 62 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 4676734 | 3008 days ago | IN | 0.25 ETH | 0.00146722 | ||||
| Transfer | 4675051 | 3008 days ago | IN | 0.1 ETH | 0.00109736 | ||||
| Transfer | 4675035 | 3008 days ago | IN | 0.1 ETH | 0.00109736 | ||||
| Transfer | 4675029 | 3008 days ago | IN | 0.1 ETH | 0.00109736 | ||||
| Transfer | 4668809 | 3009 days ago | IN | 0.148 ETH | 0.00069868 | ||||
| Transfer | 4668438 | 3009 days ago | IN | 0.33 ETH | 0.0006 | ||||
| Transfer | 4667176 | 3009 days ago | IN | 0.1 ETH | 0.00113028 | ||||
| Transfer | 4662615 | 3010 days ago | IN | 0.035 ETH | 0.00005486 | ||||
| Transfer | 4662118 | 3010 days ago | IN | 0.0596 ETH | 0.00005486 | ||||
| Transfer | 4661787 | 3010 days ago | IN | 0.120444 ETH | 0.00069868 | ||||
| Transfer | 4661617 | 3010 days ago | IN | 0.05 ETH | 0.00005486 | ||||
| Transfer | 4661274 | 3010 days ago | IN | 0.2 ETH | 0.00005486 | ||||
| Transfer | 4659863 | 3011 days ago | IN | 0.03 ETH | 0.00069868 | ||||
| Transfer | 4659190 | 3011 days ago | IN | 1 ETH | 0.00069868 | ||||
| Transfer | 4657876 | 3011 days ago | IN | 0.11 ETH | 0.00005486 | ||||
| Transfer | 4657719 | 3011 days ago | IN | 0.055 ETH | 0.00005486 | ||||
| Transfer | 4657570 | 3011 days ago | IN | 0.1 ETH | 0.00146722 | ||||
| Transfer | 4657525 | 3011 days ago | IN | 0.04 ETH | 0.00005486 | ||||
| Transfer | 4657269 | 3011 days ago | IN | 0.06495 ETH | 0.00005486 | ||||
| Transfer | 4657072 | 3011 days ago | IN | 1.0119 ETH | 0.00489076 | ||||
| Transfer | 4657059 | 3011 days ago | IN | 0.05 ETH | 0.00005486 | ||||
| Transfer | 4656956 | 3011 days ago | IN | 0.07 ETH | 0.00005486 | ||||
| Transfer | 4656865 | 3011 days ago | IN | 0.13 ETH | 0.00006986 | ||||
| Transfer | 4656780 | 3011 days ago | IN | 0.04 ETH | 0.00005486 | ||||
| Transfer | 4656748 | 3011 days ago | IN | 0.2 ETH | 0.00005486 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 4676734 | 3008 days ago | 0.25 ETH | ||||
| Transfer | 4675051 | 3008 days ago | 0.1 ETH | ||||
| Transfer | 4675035 | 3008 days ago | 0.1 ETH | ||||
| Transfer | 4675029 | 3008 days ago | 0.1 ETH | ||||
| Transfer | 4668809 | 3009 days ago | 0.148 ETH | ||||
| Transfer | 4668438 | 3009 days ago | 0.33 ETH | ||||
| Transfer | 4667176 | 3009 days ago | 0.1 ETH | ||||
| Transfer | 4662615 | 3010 days ago | 0.035 ETH | ||||
| Transfer | 4662118 | 3010 days ago | 0.0596 ETH | ||||
| Transfer | 4661787 | 3010 days ago | 0.120444 ETH | ||||
| Transfer | 4661617 | 3010 days ago | 0.05 ETH | ||||
| Transfer | 4661274 | 3010 days ago | 0.2 ETH | ||||
| Transfer | 4659863 | 3011 days ago | 0.03 ETH | ||||
| Transfer | 4659190 | 3011 days ago | 1 ETH | ||||
| Transfer | 4657876 | 3011 days ago | 0.11 ETH | ||||
| Transfer | 4657719 | 3011 days ago | 0.055 ETH | ||||
| Transfer | 4657570 | 3011 days ago | 0.1 ETH | ||||
| Transfer | 4657525 | 3011 days ago | 0.04 ETH | ||||
| Transfer | 4657269 | 3011 days ago | 0.06495 ETH | ||||
| Transfer | 4657072 | 3011 days ago | 1.0119 ETH | ||||
| Transfer | 4657059 | 3011 days ago | 0.05 ETH | ||||
| Transfer | 4656956 | 3011 days ago | 0.07 ETH | ||||
| Transfer | 4656865 | 3011 days ago | 0.13 ETH | ||||
| Transfer | 4656780 | 3011 days ago | 0.04 ETH | ||||
| Transfer | 4656748 | 3011 days ago | 0.2 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WPXToken
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-11-25
*/
pragma solidity ^0.4.11;
/**
* Math operations with safety checks
*/
library SafeMath {
function mul(uint a, uint b) internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint a, uint b) internal returns (uint) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint a, uint b) internal returns (uint) {
assert(b <= a);
return a - b;
}
function add(uint a, uint b) internal returns (uint) {
uint c = a + b;
assert(c >= a);
return c;
}
function max64(uint64 a, uint64 b) internal constant returns (uint64) {
return a >= b ? a : b;
}
function min64(uint64 a, uint64 b) internal constant returns (uint64) {
return a < b ? a : b;
}
function max256(uint256 a, uint256 b) internal constant returns (uint256) {
return a >= b ? a : b;
}
function min256(uint256 a, uint256 b) internal constant returns (uint256) {
return a < b ? a : b;
}
function assert(bool assertion) internal {
if (!assertion) {
revert();
}
}
}
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20Basic {
uint public totalSupply;
function balanceOf(address who) constant returns (uint);
function transfer(address to, uint value);
event Transfer(address indexed from, address indexed to, uint value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
*/
contract BasicToken is ERC20Basic {
using SafeMath for uint;
mapping(address => uint) balances;
/**
* @dev Fix for the ERC20 short address attack.
*/
modifier onlyPayloadSize(uint size) {
if(msg.data.length < size + 4) {
revert();
}
_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint representing the amount owned by the passed address.
*/
function balanceOf(address _owner) constant returns (uint balance) {
return balances[_owner];
}
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) constant returns (uint);
function transferFrom(address from, address to, uint value);
function approve(address spender, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
/**
* @title Standard ERC20 token
*
* @dev Implemantation of the basic standart token.
* @dev https://github.com/ethereum/EIPs/issues/20
* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract StandardToken is BasicToken, ERC20 {
mapping (address => mapping (address => uint)) allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint the amout of tokens to be transfered
*/
function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
var _allowance = allowed[_from][msg.sender];
// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
// if (_value > _allowance) revert();
balances[_to] = balances[_to].add(_value);
balances[_from] = balances[_from].sub(_value);
allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value);
}
/**
* @dev Aprove the passed address to spend the specified amount of tokens on beahlf of msg.sender.
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint _value) {
// To change the approve amount you first have to reduce the addresses`
// allowance to zero by calling `approve(_spender, 0)` if it is not
// already 0 to mitigate the race condition described here:
// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert();
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
}
/**
* @dev Function to check the amount of tokens than an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint specifing the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) constant returns (uint remaining) {
return allowed[_owner][_spender];
}
}
/**
* @title LimitedTransferToken
* @dev LimitedTransferToken defines the generic interface and the implementation to limit token
* transferability for different events. It is intended to be used as a base class for other token
* contracts.
* LimitedTransferToken has been designed to allow for different limiting factors,
* this can be achieved by recursively calling super.transferableTokens() until the base class is
* hit. For example:
* function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
* return min256(unlockedTokens, super.transferableTokens(holder, time));
* }
* A working example is VestedToken.sol:
* https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/VestedToken.sol
*/
contract LimitedTransferToken is ERC20 {
/**
* @dev Checks whether it can transfer or otherwise throws.
*/
modifier canTransfer(address _sender, uint _value) {
if (_value > transferableTokens(_sender, uint64(now))) revert();
_;
}
/**
* @dev Checks modifier and allows transfer if tokens are not locked.
* @param _to The address that will recieve the tokens.
* @param _value The amount of tokens to be transferred.
*/
function transfer(address _to, uint _value) canTransfer(msg.sender, _value) {
super.transfer(_to, _value);
}
/**
* @dev Checks modifier and allows transfer if tokens are not locked.
* @param _from The address that will send the tokens.
* @param _to The address that will recieve the tokens.
* @param _value The amount of tokens to be transferred.
*/
function transferFrom(address _from, address _to, uint _value) canTransfer(_from, _value) {
super.transferFrom(_from, _to, _value);
}
/**
* @dev Default transferable tokens function returns all tokens for a holder (no limit).
* @dev Overwriting transferableTokens(address holder, uint64 time) is the way to provide the
* specific logic for limiting token transferability for a holder over time.
*/
function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
return balanceOf(holder);
}
}
/**
* @title Vested token
* @dev Tokens that can be vested for a group of addresses.
*/
contract VestedToken is StandardToken, LimitedTransferToken {
uint256 MAX_GRANTS_PER_ADDRESS = 20;
struct TokenGrant {
address granter; // 20 bytes
uint256 value; // 32 bytes
uint64 cliff;
uint64 vesting;
uint64 start; // 3 * 8 = 24 bytes
bool revokable;
bool burnsOnRevoke; // 2 * 1 = 2 bits? or 2 bytes?
} // total 78 bytes = 3 sstore per operation (32 per sstore)
mapping (address => TokenGrant[]) public grants;
event NewTokenGrant(address indexed from, address indexed to, uint256 value, uint256 grantId);
/**
* @dev Grant tokens to a specified address
* @param _to address The address which the tokens will be granted to.
* @param _value uint256 The amount of tokens to be granted.
* @param _start uint64 Time of the beginning of the grant.
* @param _cliff uint64 Time of the cliff period.
* @param _vesting uint64 The vesting period.
*/
function grantVestedTokens(
address _to,
uint256 _value,
uint64 _start,
uint64 _cliff,
uint64 _vesting,
bool _revokable,
bool _burnsOnRevoke
) public {
// Check for date inconsistencies that may cause unexpected behavior
if (_cliff < _start || _vesting < _cliff) {
revert();
}
if (tokenGrantsCount(_to) > MAX_GRANTS_PER_ADDRESS) revert(); // To prevent a user being spammed and have his balance locked (out of gas attack when calculating vesting).
uint count = grants[_to].push(
TokenGrant(
_revokable ? msg.sender : 0, // avoid storing an extra 20 bytes when it is non-revokable
_value,
_cliff,
_vesting,
_start,
_revokable,
_burnsOnRevoke
)
);
transfer(_to, _value);
NewTokenGrant(msg.sender, _to, _value, count - 1);
}
/**
* @dev Revoke the grant of tokens of a specifed address.
* @param _holder The address which will have its tokens revoked.
* @param _grantId The id of the token grant.
*/
function revokeTokenGrant(address _holder, uint _grantId) public {
TokenGrant grant = grants[_holder][_grantId];
if (!grant.revokable) { // Check if grant was revokable
revert();
}
if (grant.granter != msg.sender) { // Only granter can revoke it
revert();
}
address receiver = grant.burnsOnRevoke ? 0xdead : msg.sender;
uint256 nonVested = nonVestedTokens(grant, uint64(now));
// remove grant from array
delete grants[_holder][_grantId];
grants[_holder][_grantId] = grants[_holder][grants[_holder].length.sub(1)];
grants[_holder].length -= 1;
balances[receiver] = balances[receiver].add(nonVested);
balances[_holder] = balances[_holder].sub(nonVested);
Transfer(_holder, receiver, nonVested);
}
/**
* @dev Calculate the total amount of transferable tokens of a holder at a given time
* @param holder address The address of the holder
* @param time uint64 The specific time.
* @return An uint representing a holder's total amount of transferable tokens.
*/
function transferableTokens(address holder, uint64 time) constant public returns (uint256) {
uint256 grantIndex = tokenGrantsCount(holder);
if (grantIndex == 0) return balanceOf(holder); // shortcut for holder without grants
// Iterate through all the grants the holder has, and add all non-vested tokens
uint256 nonVested = 0;
for (uint256 i = 0; i < grantIndex; i++) {
nonVested = SafeMath.add(nonVested, nonVestedTokens(grants[holder][i], time));
}
// Balance - totalNonVested is the amount of tokens a holder can transfer at any given time
uint256 vestedTransferable = SafeMath.sub(balanceOf(holder), nonVested);
// Return the minimum of how many vested can transfer and other value
// in case there are other limiting transferability factors (default is balanceOf)
return SafeMath.min256(vestedTransferable, super.transferableTokens(holder, time));
}
/**
* @dev Check the amount of grants that an address has.
* @param _holder The holder of the grants.
* @return A uint representing the total amount of grants.
*/
function tokenGrantsCount(address _holder) constant returns (uint index) {
return grants[_holder].length;
}
/**
* @dev Calculate amount of vested tokens at a specifc time.
* @param tokens uint256 The amount of tokens grantted.
* @param time uint64 The time to be checked
* @param start uint64 A time representing the begining of the grant
* @param cliff uint64 The cliff period.
* @param vesting uint64 The vesting period.
* @return An uint representing the amount of vested tokensof a specif grant.
* transferableTokens
* | _/-------- vestedTokens rect
* | _/
* | _/
* | _/
* | _/
* | /
* | .|
* | . |
* | . |
* | . |
* | . |
* | . |
* +===+===========+---------+----------> time
* Start Clift Vesting
*/
function calculateVestedTokens(
uint256 tokens,
uint256 time,
uint256 start,
uint256 cliff,
uint256 vesting) constant returns (uint256)
{
// Shortcuts for before cliff and after vesting cases.
if (time < cliff) return 0;
if (time >= vesting) return tokens;
// Interpolate all vested tokens.
// As before cliff the shortcut returns 0, we can use just calculate a value
// in the vesting rect (as shown in above's figure)
// vestedTokens = tokens * (time - start) / (vesting - start)
uint256 vestedTokens = SafeMath.div(
SafeMath.mul(
tokens,
SafeMath.sub(time, start)
),
SafeMath.sub(vesting, start)
);
return vestedTokens;
}
/**
* @dev Get all information about a specifc grant.
* @param _holder The address which will have its tokens revoked.
* @param _grantId The id of the token grant.
* @return Returns all the values that represent a TokenGrant(address, value, start, cliff,
* revokability, burnsOnRevoke, and vesting) plus the vested value at the current time.
*/
function tokenGrant(address _holder, uint _grantId) constant returns (address granter, uint256 value, uint256 vested, uint64 start, uint64 cliff, uint64 vesting, bool revokable, bool burnsOnRevoke) {
TokenGrant grant = grants[_holder][_grantId];
granter = grant.granter;
value = grant.value;
start = grant.start;
cliff = grant.cliff;
vesting = grant.vesting;
revokable = grant.revokable;
burnsOnRevoke = grant.burnsOnRevoke;
vested = vestedTokens(grant, uint64(now));
}
/**
* @dev Get the amount of vested tokens at a specific time.
* @param grant TokenGrant The grant to be checked.
* @param time The time to be checked
* @return An uint representing the amount of vested tokens of a specific grant at a specific time.
*/
function vestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
return calculateVestedTokens(
grant.value,
uint256(time),
uint256(grant.start),
uint256(grant.cliff),
uint256(grant.vesting)
);
}
/**
* @dev Calculate the amount of non vested tokens at a specific time.
* @param grant TokenGrant The grant to be checked.
* @param time uint64 The time to be checked
* @return An uint representing the amount of non vested tokens of a specifc grant on the
* passed time frame.
*/
function nonVestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
return grant.value.sub(vestedTokens(grant, time));
}
/**
* @dev Calculate the date when the holder can trasfer all its tokens
* @param holder address The address of the holder
* @return An uint representing the date of the last transferable tokens.
*/
function lastTokenIsTransferableDate(address holder) constant public returns (uint64 date) {
date = uint64(now);
uint256 grantIndex = grants[holder].length;
for (uint256 i = 0; i < grantIndex; i++) {
date = SafeMath.max64(grants[holder][i].vesting, date);
}
}
}
// QUESTIONS FOR AUDITORS:
// - Considering we inherit from VestedToken, how much does that hit at our gas price?
// - Ensure max supply is 98,000,000
// - Ensure that even if not totalSupply is sold, tokens would still be transferrable after (we will up to totalSupply by creating WPX tokens)
// vesting: 365 days, 365 days / 4 vesting
contract WPXToken is VestedToken {
//FIELDS
string public name = "WorkPress"; //(important input)
string public symbol = "WPX"; //(important input)
uint public decimals = 4; //(important input)
// Multiplier for the decimals
uint private constant DECIMALS = 10000;
uint public totalSupply = 98000000*DECIMALS; //(important input)
//CONSTANTS
//Time limits
uint public constant STAGE_ONE_TIME_END = 38 days; // first day bonus (important input)
uint public constant STAGE_TWO_TIME_END = 58 days; // first week bonus (important input)
uint public constant STAGE_THREE_TIME_END = 69 days; //(important input)
//Prices of WPX
uint public constant PRICE_STANDARD = 2000*DECIMALS; // WPX received per one ETH; Approximately $0.15 if ETH price $300. MAX_SUPPLY / (valuation / ethPrice)
uint public constant PRICE_STAGE_ONE = PRICE_STANDARD * 150/100; // 1ETH = 100% Bonus 1.5X or 50% 1ETH = 3000 WPX ~ $0.10(important input)
uint public constant PRICE_STAGE_TWO = PRICE_STANDARD * 125/100; // 1ETH = 25% ICO Bonus 1ETH = 2500 WPX ~ $0.125(important input)
uint public constant PRICE_STAGE_THREE = PRICE_STANDARD; // Standard Price no bonus 1ETH = 2000 WPX ~ $0.15(important input)
//WPX Token Limits
uint public constant ALLOC_TEAM = 10000000*DECIMALS; // team + advisors to main address (important input)
uint public constant ALLOC_BOUNTIES = 3000000*DECIMALS; // Reserved Address (important input)
uint public constant ALLOC_WINGS = 5000000*DECIMALS; // Reserved Address (important input)
uint public constant ALLOC_CROWDSALE = 80000000*DECIMALS; // Crowdsale to Main address (important input)
uint public constant PREBUY_PORTION_MAX = 20000000*DECIMALS; // this is redundantly more than what will be pre-sold
//ASSIGNED IN INITIALIZATION
//Start and end times
uint public publicStartTime; // Time in seconds public crowd fund starts.
uint public privateStartTime; // Time in seconds - at this time there is no intention to do a private session.
uint public publicEndTime; // Time in seconds crowdsale ends
uint public hardcapInEth;
//Special Addresses
address public multisigAddress; // Address to which all ether flows.
address public wpxTeamAddress; // Address to which ALLOC_TEAM, ALLOC_BOUNTIES, ALLOC_WINGS is (ultimately) sent to.
address public ownerAddress; // Address of the contract owner. Can halt the crowdsale.
address public preBuy1; // Address used by pre-buy
address public preBuy2; // Address used by pre-buy
address public preBuy3; // Address used by pre-buy
uint public preBuyPrice1; // price for pre-buy
uint public preBuyPrice2; // price for pre-buy
uint public preBuyPrice3; // price for pre-buy
//Running totals
uint public etherRaised; // Total Ether raised.
uint public WPXSold; // Total WPX created
uint public prebuyPortionTotal; // Total of Tokens purchased by pre-buy. Not to exceed PREBUY_PORTION_MAX.
//booleans
bool public halted; // halts the crowd sale if true.
// MODIFIERS
//Is currently in the period after the private start time and before the public start time.
modifier is_pre_crowdfund_period() {
if (now >= publicStartTime || now < privateStartTime) revert();
_;
}
//Is currently the crowdfund period
modifier is_crowdfund_period() {
if (now < publicStartTime) revert();
if (isCrowdfundCompleted()) revert();
_;
}
// Is completed
modifier is_crowdfund_completed() {
if (!isCrowdfundCompleted()) revert();
_;
}
function isCrowdfundCompleted() internal returns (bool) {
if (now > publicEndTime || WPXSold+50000*DECIMALS >= ALLOC_CROWDSALE || etherRaised >= hardcapInEth*1000000000000000000) {return true; }
return false;
}
//May only be called by the owner address
modifier only_owner() {
if (msg.sender != ownerAddress) revert();
_;
}
//May only be called if the crowdfund has not been halted
modifier is_not_halted() {
if (halted) revert();
_;
}
// EVENTS
event PreBuy(uint _amount);
event Buy(address indexed _recipient, uint _amount);
// Initialization contract assigns address of crowdfund contract and end time.
function WPXToken(
address _multisig,
address _wpxTeam,
uint _publicStartTime,
uint _privateStartTime,
uint _hardcapInEth,
address _prebuy1, uint _preBuyPrice1,
address _prebuy2, uint _preBuyPrice2,
address _prebuy3, uint _preBuyPrice3
) {
ownerAddress = msg.sender;
publicStartTime = _publicStartTime;
privateStartTime = _privateStartTime;
publicEndTime = _publicStartTime + 69 days; // (important input)
multisigAddress = _multisig;
wpxTeamAddress = _wpxTeam;
hardcapInEth = _hardcapInEth;
preBuy1 = _prebuy1;
preBuyPrice1 = _preBuyPrice1;
preBuy2 = _prebuy2;
preBuyPrice2 = _preBuyPrice2;
preBuy3 = _prebuy3;
preBuyPrice3 = _preBuyPrice3;
balances[wpxTeamAddress] += ALLOC_BOUNTIES;
balances[wpxTeamAddress] += ALLOC_WINGS;
balances[ownerAddress] += ALLOC_TEAM;
balances[ownerAddress] += ALLOC_CROWDSALE;
}
// Transfer amount of tokens from sender account to recipient.
// Only callable after the crowd fund is completed
function transfer(address _to, uint _value)
{
if (_to == msg.sender) return; // no-op, allow even during crowdsale, in order to work around using grantVestedTokens() while in crowdsale
if (!isCrowdfundCompleted()) revert();
super.transfer(_to, _value);
}
// Transfer amount of tokens from a specified address to a recipient.
// Transfer amount of tokens from sender account to recipient.
function transferFrom(address _from, address _to, uint _value)
is_crowdfund_completed
{
super.transferFrom(_from, _to, _value);
}
//constant function returns the current WPX price.
function getPriceRate()
constant
returns (uint o_rate)
{
uint delta = SafeMath.sub(now, publicStartTime);
if (delta > STAGE_TWO_TIME_END) return PRICE_STAGE_THREE;
if (delta > STAGE_ONE_TIME_END) return PRICE_STAGE_TWO;
return (PRICE_STAGE_ONE);
}
// calculates wmount of WPX we get, given the wei and the rates we've defined per 1 eth
function calcAmount(uint _wei, uint _rate)
constant
returns (uint)
{
return SafeMath.div(SafeMath.mul(_wei, _rate), 1 ether);
}
// Given the rate of a purchase and the remaining tokens in this tranche, it
// will throw if the sale would take it past the limit of the tranche.
// Returns `amount` in scope as the number of WPX tokens that it will purchase.
function processPurchase(uint _rate, uint _remaining)
internal
returns (uint o_amount)
{
o_amount = calcAmount(msg.value, _rate);
if (o_amount > _remaining) revert();
if (!multisigAddress.send(msg.value)) revert();
balances[ownerAddress] = balances[ownerAddress].sub(o_amount);
balances[msg.sender] = balances[msg.sender].add(o_amount);
WPXSold += o_amount;
etherRaised += msg.value;
}
//Special Function can only be called by pre-buy and only during the pre-crowdsale period.
function preBuy()
payable
is_pre_crowdfund_period
is_not_halted
{
// Pre-buy participants would get the first-day price, as well as a bonus of vested tokens
uint priceVested = 0;
if (msg.sender == preBuy1) priceVested = preBuyPrice1;
if (msg.sender == preBuy2) priceVested = preBuyPrice2;
if (msg.sender == preBuy3) priceVested = preBuyPrice3;
if (priceVested == 0) revert();
uint amount = processPurchase(PRICE_STAGE_ONE + priceVested, SafeMath.sub(PREBUY_PORTION_MAX, prebuyPortionTotal));
grantVestedTokens(msg.sender, calcAmount(msg.value, priceVested),
uint64(now), uint64(now) + 91 days, uint64(now) + 365 days,
false, false
);
prebuyPortionTotal += amount;
PreBuy(amount);
}
//Default function called by sending Ether to this address with no arguments.
//Results in creation of new WPX Tokens if transaction would not exceed hard limit of WPX Token.
function()
payable
is_crowdfund_period
is_not_halted
{
uint amount = processPurchase(getPriceRate(), SafeMath.sub(ALLOC_CROWDSALE, WPXSold));
Buy(msg.sender, amount);
}
// To be called at the end of crowdfund period
// WARNING: transfer(), which is called by grantVestedTokens(), wants a minimum message length
function grantVested(address _wpxTeamAddress, address _wpxFundAddress)
is_crowdfund_completed
only_owner
is_not_halted
{
// Grant tokens pre-allocated for the team
grantVestedTokens(
_wpxTeamAddress, ALLOC_TEAM,
uint64(now), uint64(now) + 91 days , uint64(now) + 365 days,
false, false
);
// Grant tokens that remain after crowdsale to the WPX fund, vested for 2 years
grantVestedTokens(
_wpxFundAddress, balances[ownerAddress],
uint64(now), uint64(now) + 182 days , uint64(now) + 730 days,
false, false
);
}
//May be used by owner of contract to halt crowdsale and no longer except ether.
function toggleHalt(bool _halted)
only_owner
{
halted = _halted;
}
//failsafe drain
function drain()
only_owner
{
if (!ownerAddress.send(this.balance)) revert();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"PREBUY_PORTION_MAX","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"tokenGrantsCount","outputs":[{"name":"index","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_STAGE_TWO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preBuy3","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preBuy1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wpxTeamAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"publicEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"grants","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"start","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"WPXSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preBuy2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisigAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ALLOC_BOUNTIES","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"publicStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"tokenGrant","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"vested","type":"uint256"},{"name":"start","type":"uint64"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAGE_TWO_TIME_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"}],"name":"lastTokenIsTransferableDate","outputs":[{"name":"date","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ALLOC_WINGS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAGE_ONE_TIME_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_wei","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"calcAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ALLOC_CROWDSALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPriceRate","outputs":[{"name":"o_rate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"privateStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_halted","type":"bool"}],"name":"toggleHalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_STAGE_ONE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_start","type":"uint64"},{"name":"_cliff","type":"uint64"},{"name":"_vesting","type":"uint64"},{"name":"_revokable","type":"bool"},{"name":"_burnsOnRevoke","type":"bool"}],"name":"grantVestedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"prebuyPortionTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardcapInEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ALLOC_TEAM","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preBuyPrice1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preBuyPrice2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"vesting","type":"uint256"}],"name":"calculateVestedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_STAGE_THREE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wpxTeamAddress","type":"address"},{"name":"_wpxFundAddress","type":"address"}],"name":"grantVested","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"revokeTokenGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"preBuyPrice3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_STANDARD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAGE_THREE_TIME_END","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"preBuy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_multisig","type":"address"},{"name":"_wpxTeam","type":"address"},{"name":"_publicStartTime","type":"uint256"},{"name":"_privateStartTime","type":"uint256"},{"name":"_hardcapInEth","type":"uint256"},{"name":"_prebuy1","type":"address"},{"name":"_preBuyPrice1","type":"uint256"},{"name":"_prebuy2","type":"address"},{"name":"_preBuyPrice2","type":"uint256"},{"name":"_prebuy3","type":"address"},{"name":"_preBuyPrice3","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_amount","type":"uint256"}],"name":"PreBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_recipient","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"grantId","type":"uint256"}],"name":"NewTokenGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]Contract Creation Code
606060405260146003556040805190810160405280600981526020017f576f726b507265737300000000000000000000000000000000000000000000008152506005908051906020019062000056929190620004e0565b506040805190810160405280600381526020017f575058000000000000000000000000000000000000000000000000000000000081525060069080519060200190620000a4929190620004e0565b5060046007556127106305d75c80026008553415620000c257600080fd5b6040516101608062003d168339810160405280805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190805190602001909190505033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860098190555087600a81905550625af7808901600b819055508a600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555089600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600c8190555085601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460138190555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260148190555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601581905550612710622dc6c00260016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612710624c4b400260016000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612710629896800260016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127106304c4b4000260016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050505050505050505050506200058f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200052357805160ff191683800117855562000554565b8280016001018555821562000554579182015b828111156200055357825182559160200191906001019062000536565b5b50905062000563919062000567565b5090565b6200058c91905b80821115620005885760008160009055506001016200056e565b5090565b90565b613777806200059f6000396000f300606060405260043610610272576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063028118a11461032657806302a72a4c1461034f578063031f22e71461039c57806306fdde03146103c5578063095ea7b3146104535780630fdfa5ee1461049557806318160ddd146104ea57806323b872dd1461051357806327c1f423146105745780632a4ef2a3146105c95780632c27e5811461061e5780632c71e60a14610647578063313ce567146107375780633713ab4114610760578063529865c9146107895780635462870d146107de57806354ecd994146108335780635fd1bbc41461085c578063600e85b7146108855780636698baaa1461097c5780636c182e99146109a55780636c9e27d614610a065780636f25907714610a2f57806370a0823114610a585780637133c0c014610aa55780637717403b14610ae55780638a4b08d914610b0e5780638a7c63c514610b375780638c34669014610b605780638f84aa0914610b855780638fd712ae14610bda57806395d89b4114610c035780639754a4d914610c915780639890220b14610d225780639b91497314610d375780639d61e62414610d60578063a9059cbb14610d89578063b475a1c814610dcb578063b9b8af0b14610df4578063cd72ab6914610e21578063d347c20514610e4a578063d719213e14610eaa578063dbc65f8514610ed3578063dd62ed3e14610efc578063df3c211b14610f68578063e02f8d3314610fc3578063e877715814610fec578063eb944e4c14611044578063eed04e6914611086578063efe79268146110af578063f514f0f9146110d8578063f590aacc14611101575b600060095442101561028357600080fd5b61028b61110b565b1561029557600080fd5b601960009054906101000a900460ff16156102af57600080fd5b6102d36102ba61115e565b6102ce6127106304c4b400026017546111cd565b6111e6565b90503373ffffffffffffffffffffffffffffffffffffffff167fe3d4187f6ca4248660cc0ac8b8056515bac4a8132be2eca31d6d0cc170722a7e826040518082815260200191505060405180910390a250005b341561033157600080fd5b6103396113f7565b6040518082815260200191505060405180910390f35b341561035a57600080fd5b610386600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611403565b6040518082815260200191505060405180910390f35b34156103a757600080fd5b6103af61144f565b6040518082815260200191505060405180910390f35b34156103d057600080fd5b6103d8611468565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104185780820151818401526020810190506103fd565b50505050905090810190601f1680156104455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045e57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611506565b005b34156104a057600080fd5b6104a8611688565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104f557600080fd5b6104fd6116ae565b6040518082815260200191505060405180910390f35b341561051e57600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116b4565b005b341561057f57600080fd5b6105876116d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105d457600080fd5b6105dc6116fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062957600080fd5b610631611723565b6040518082815260200191505060405180910390f35b341561065257600080fd5b610687600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611729565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018467ffffffffffffffff1667ffffffffffffffff168152602001831515151581526020018215151515815260200197505050505050505060405180910390f35b341561074257600080fd5b61074a6117fd565b6040518082815260200191505060405180910390f35b341561076b57600080fd5b610773611803565b6040518082815260200191505060405180910390f35b341561079457600080fd5b61079c611809565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107e957600080fd5b6107f161182f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561083e57600080fd5b610846611855565b6040518082815260200191505060405180910390f35b341561086757600080fd5b61086f611860565b6040518082815260200191505060405180910390f35b341561089057600080fd5b6108c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611866565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018467ffffffffffffffff1667ffffffffffffffff16815260200183151515158152602001821515151581526020019850505050505050505060405180910390f35b341561098757600080fd5b61098f611ac9565b6040518082815260200191505060405180910390f35b34156109b057600080fd5b6109dc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ad0565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610a1157600080fd5b610a19611bbb565b6040518082815260200191505060405180910390f35b3415610a3a57600080fd5b610a42611bc6565b6040518082815260200191505060405180910390f35b3415610a6357600080fd5b610a8f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bcd565b6040518082815260200191505060405180910390f35b3415610ab057600080fd5b610acf6004808035906020019091908035906020019091905050611c16565b6040518082815260200191505060405180910390f35b3415610af057600080fd5b610af8611c3b565b6040518082815260200191505060405180910390f35b3415610b1957600080fd5b610b2161115e565b6040518082815260200191505060405180910390f35b3415610b4257600080fd5b610b4a611c47565b6040518082815260200191505060405180910390f35b3415610b6b57600080fd5b610b8360048080351515906020019091905050611c4d565b005b3415610b9057600080fd5b610b98611cc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610be557600080fd5b610bed611cec565b6040518082815260200191505060405180910390f35b3415610c0e57600080fd5b610c16611d05565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c56578082015181840152602081019050610c3b565b50505050905090810190601f168015610c835780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610c9c57600080fd5b610d20600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803515159060200190919080351515906020019091905050611da3565b005b3415610d2d57600080fd5b610d35612080565b005b3415610d4257600080fd5b610d4a612157565b6040518082815260200191505060405180910390f35b3415610d6b57600080fd5b610d7361215d565b6040518082815260200191505060405180910390f35b3415610d9457600080fd5b610dc9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612163565b005b3415610dd657600080fd5b610dde6121be565b6040518082815260200191505060405180910390f35b3415610dff57600080fd5b610e076121c9565b604051808215151515815260200191505060405180910390f35b3415610e2c57600080fd5b610e346121dc565b6040518082815260200191505060405180910390f35b3415610e5557600080fd5b610e94600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803567ffffffffffffffff169060200190919050506121e2565b6040518082815260200191505060405180910390f35b3415610eb557600080fd5b610ebd612406565b6040518082815260200191505060405180910390f35b3415610ede57600080fd5b610ee661240c565b6040518082815260200191505060405180910390f35b3415610f0757600080fd5b610f52600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612412565b6040518082815260200191505060405180910390f35b3415610f7357600080fd5b610fad6004808035906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050612499565b6040518082815260200191505060405180910390f35b3415610fce57600080fd5b610fd66124f3565b6040518082815260200191505060405180910390f35b3415610ff757600080fd5b611042600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124fd565b005b341561104f57600080fd5b611084600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612628565b005b341561109157600080fd5b611099612dfb565b6040518082815260200191505060405180910390f35b34156110ba57600080fd5b6110c2612e01565b6040518082815260200191505060405180910390f35b34156110e357600080fd5b6110eb612e0b565b6040518082815260200191505060405180910390f35b611109612e12565b005b6000600b5442118061112f57506127106304c4b4000261271061c350026017540110155b806111485750670de0b6b3a7640000600c540260165410155b15611156576001905061115b565b600090505b90565b60008061116d426009546111cd565b9050624c7700811115611188576127106107d00291506111c9565b623219008111156111b0576064607d6127106107d002028115156111a857fe5b0491506111c9565b606460966127106107d002028115156111c557fe5b0491505b5090565b60006111db83831115613016565b818303905092915050565b60006111f23484611c16565b90508181111561120157600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561126357600080fd5b6112d78160016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b60016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061138e81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806017600082825401925050819055503460166000828254019250508190555092915050565b6127106301312d000281565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6064607d6127106107d0020281151561146457fe5b0481565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114fe5780601f106114d3576101008083540402835291602001916114fe565b820191906000526020600020905b8154815290600101906020018083116114e157829003601f168201915b505050505081565b6000811415801561159457506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561159e57600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6116bc61110b565b15156116c757600080fd5b6116d2838383613043565b505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60046020528160005260406000208181548110151561174457fe5b9060005260206000209060030201600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900467ffffffffffffffff16908060020160089054906101000a900467ffffffffffffffff16908060020160109054906101000a900467ffffffffffffffff16908060020160189054906101000a900460ff16908060020160199054906101000a900460ff16905087565b60075481565b60175481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612710622dc6c00281565b60095481565b6000806000806000806000806000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8154811015156118c057fe5b906000526020600020906003020190508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850806001015497508060020160109054906101000a900467ffffffffffffffff1695508060020160009054906101000a900467ffffffffffffffff1694508060020160089054906101000a900467ffffffffffffffff1693508060020160189054906101000a900460ff1692508060020160199054906101000a900460ff169150611ab98160e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff1615151515815250504261306d565b9650509295985092959890939650565b624c770081565b6000806000429250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150600090505b81811015611bb457611ba5600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611b7957fe5b906000526020600020906003020160020160089054906101000a900467ffffffffffffffff16846130bc565b92508080600101915050611b22565b5050919050565b612710624c4b400281565b6232190081565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c33611c2584846130ea565b670de0b6b3a764000061311d565b905092915050565b6127106304c4b4000281565b600a5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca957600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606460966127106107d00202811515611d0157fe5b0481565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d9b5780601f10611d7057610100808354040283529160200191611d9b565b820191906000526020600020905b815481529060010190602001808311611d7e57829003601f168201915b505050505081565b60008567ffffffffffffffff168567ffffffffffffffff161080611dda57508467ffffffffffffffff168467ffffffffffffffff16105b15611de457600080fd5b600354611df089611403565b1115611dfb57600080fd5b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281611e4c9190613620565b9160005260206000209060030201600060e06040519081016040528087611e74576000611e76565b335b73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018a67ffffffffffffffff1681526020018715158152602001861515815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160186101000a81548160ff02191690831515021790555060c08201518160020160196101000a81548160ff021916908315150217905550505090506120068888612163565b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff9565aecd648a0466ffb964a79eeccdf1120ad6276189c687a6e9fe73984d9bb8960018503604051808381526020018281526020019250505060405180910390a35050505050505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120dc57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561215557600080fd5b565b60185481565b600c5481565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219c576121ba565b6121a461110b565b15156121af57600080fd5b6121b98282613138565b5b5050565b612710629896800281565b601960009054906101000a900460ff1681565b60165481565b60008060008060006121f387611403565b9350600084141561220e5761220787611bcd565b94506123fc565b60009250600091505b838210156123d2576123c3836123be600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561227257fe5b906000526020600020906003020160e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff16151515158152505089613160565b613025565b92508180600101925050612217565b6123e46123de88611bcd565b846111cd565b90506123f9816123f4898961318a565b61319d565b94505b5050505092915050565b60135481565b60145481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080838610156124ad57600091506124e9565b82861015156124be578691506124e9565b6124e36124d4886124cf89896111cd565b6130ea565b6124de85886111cd565b61311d565b90508091505b5095945050505050565b6127106107d00281565b61250561110b565b151561251057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256c57600080fd5b601960009054906101000a900460ff161561258657600080fd5b6125a8826127106298968002426277f88042016301e133804201600080611da3565b6126248160016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544262eff10042016303c267004201600080611da3565b5050565b6000806000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561267957fe5b906000526020600020906003020192508260020160189054906101000a900460ff1615156126a657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561270457600080fd5b8260020160199054906101000a900460ff166127205733612724565b61dead5b91506128688360e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff16151515158152505042613160565b9050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156128b657fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549067ffffffffffffffff02191690556002820160186101000a81549060ff02191690556002820160196101000a81549060ff02191690555050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612a046001600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506111cd90919063ffffffff16565b815481101515612a1057fe5b9060005260206000209060030201600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481101515612a6a57fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160089054906101000a900467ffffffffffffffff168160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160109054906101000a900467ffffffffffffffff168160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160189054906101000a900460ff168160020160186101000a81548160ff0219169083151502179055506002820160199054906101000a900460ff168160020160196101000a81548160ff0219169083151502179055509050506001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081818054905003915081612c649190613652565b50612cb781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4c81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b60155481565b6127106107d00281565b625af78081565b60008060095442101580612e275750600a5442105b15612e3157600080fd5b601960009054906101000a900460ff1615612e4b57600080fd5b60009150601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612eab5760135491505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f075760145491505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f635760155491505b6000821415612f7157600080fd5b612fa582606460966127106107d00202811515612f8a57fe5b0401612fa06127106301312d00026018546111cd565b6111e6565b9050612fcb33612fb53485611c16565b426277f88042016301e133804201600080611da3565b806018600082825401925050819055507f9e352721883879ced8efbcaca8e7316a3367205e490f0829362d23c63819e8ee816040518082815260200191505060405180910390a15050565b80151561302257600080fd5b50565b600080828401905061303984821015613016565b8091505092915050565b828161304f82426121e2565b81111561305b57600080fd5b6130668585856131b6565b5050505050565b60006130b483602001518367ffffffffffffffff16856080015167ffffffffffffffff16866040015167ffffffffffffffff16876060015167ffffffffffffffff16612499565b905092915050565b60008167ffffffffffffffff168367ffffffffffffffff1610156130e057816130e2565b825b905092915050565b6000808284029050613113600085148061310e575083858381151561310b57fe5b04145b613016565b8091505092915050565b600080828481151561312b57fe5b0490508091505092915050565b338161314482426121e2565b81111561315057600080fd5b61315a8484613476565b50505050565b600061318261316f848461306d565b84602001516111cd90919063ffffffff16565b905092915050565b600061319583611bcd565b905092915050565b60008183106131ac57816131ae565b825b905092915050565b6000606060048101600036905010156131ce57600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915061329f83600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061333483600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061338a83836111cd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6040600481016000369050101561348c57600080fd5b6134de82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b81548183558181151161364d5760030281600302836000526020600020918201910161364c9190613684565b5b505050565b81548183558181151161367f5760030281600302836000526020600020918201910161367e9190613684565b5b505050565b61374891905b8082111561374457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549067ffffffffffffffff02191690556002820160186101000a81549060ff02191690556002820160196101000a81549060ff02191690555060030161368a565b5090565b905600a165627a7a72305820fd51d23ff478714c9695a611193e4f8c56d82e519fb310d14178c38d911119b700290000000000000000000000001d5353124a0552b7a5969b6924227d6cee3d1d2b00000000000000000000000014a681b1362872a490ddf9e34d2cf34300c94867000000000000000000000000000000000000000000000000000000005a180510000000000000000000000000000000000000000000000000000000005a180510000000000000000000000000000000000000000000000000000000000000681a0000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d00000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d00000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d0
Deployed Bytecode
0x606060405260043610610272576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063028118a11461032657806302a72a4c1461034f578063031f22e71461039c57806306fdde03146103c5578063095ea7b3146104535780630fdfa5ee1461049557806318160ddd146104ea57806323b872dd1461051357806327c1f423146105745780632a4ef2a3146105c95780632c27e5811461061e5780632c71e60a14610647578063313ce567146107375780633713ab4114610760578063529865c9146107895780635462870d146107de57806354ecd994146108335780635fd1bbc41461085c578063600e85b7146108855780636698baaa1461097c5780636c182e99146109a55780636c9e27d614610a065780636f25907714610a2f57806370a0823114610a585780637133c0c014610aa55780637717403b14610ae55780638a4b08d914610b0e5780638a7c63c514610b375780638c34669014610b605780638f84aa0914610b855780638fd712ae14610bda57806395d89b4114610c035780639754a4d914610c915780639890220b14610d225780639b91497314610d375780639d61e62414610d60578063a9059cbb14610d89578063b475a1c814610dcb578063b9b8af0b14610df4578063cd72ab6914610e21578063d347c20514610e4a578063d719213e14610eaa578063dbc65f8514610ed3578063dd62ed3e14610efc578063df3c211b14610f68578063e02f8d3314610fc3578063e877715814610fec578063eb944e4c14611044578063eed04e6914611086578063efe79268146110af578063f514f0f9146110d8578063f590aacc14611101575b600060095442101561028357600080fd5b61028b61110b565b1561029557600080fd5b601960009054906101000a900460ff16156102af57600080fd5b6102d36102ba61115e565b6102ce6127106304c4b400026017546111cd565b6111e6565b90503373ffffffffffffffffffffffffffffffffffffffff167fe3d4187f6ca4248660cc0ac8b8056515bac4a8132be2eca31d6d0cc170722a7e826040518082815260200191505060405180910390a250005b341561033157600080fd5b6103396113f7565b6040518082815260200191505060405180910390f35b341561035a57600080fd5b610386600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611403565b6040518082815260200191505060405180910390f35b34156103a757600080fd5b6103af61144f565b6040518082815260200191505060405180910390f35b34156103d057600080fd5b6103d8611468565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104185780820151818401526020810190506103fd565b50505050905090810190601f1680156104455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045e57600080fd5b610493600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611506565b005b34156104a057600080fd5b6104a8611688565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104f557600080fd5b6104fd6116ae565b6040518082815260200191505060405180910390f35b341561051e57600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116b4565b005b341561057f57600080fd5b6105876116d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105d457600080fd5b6105dc6116fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062957600080fd5b610631611723565b6040518082815260200191505060405180910390f35b341561065257600080fd5b610687600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611729565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018467ffffffffffffffff1667ffffffffffffffff168152602001831515151581526020018215151515815260200197505050505050505060405180910390f35b341561074257600080fd5b61074a6117fd565b6040518082815260200191505060405180910390f35b341561076b57600080fd5b610773611803565b6040518082815260200191505060405180910390f35b341561079457600080fd5b61079c611809565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107e957600080fd5b6107f161182f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561083e57600080fd5b610846611855565b6040518082815260200191505060405180910390f35b341561086757600080fd5b61086f611860565b6040518082815260200191505060405180910390f35b341561089057600080fd5b6108c5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611866565b604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018567ffffffffffffffff1667ffffffffffffffff1681526020018467ffffffffffffffff1667ffffffffffffffff16815260200183151515158152602001821515151581526020019850505050505050505060405180910390f35b341561098757600080fd5b61098f611ac9565b6040518082815260200191505060405180910390f35b34156109b057600080fd5b6109dc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ad0565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3415610a1157600080fd5b610a19611bbb565b6040518082815260200191505060405180910390f35b3415610a3a57600080fd5b610a42611bc6565b6040518082815260200191505060405180910390f35b3415610a6357600080fd5b610a8f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bcd565b6040518082815260200191505060405180910390f35b3415610ab057600080fd5b610acf6004808035906020019091908035906020019091905050611c16565b6040518082815260200191505060405180910390f35b3415610af057600080fd5b610af8611c3b565b6040518082815260200191505060405180910390f35b3415610b1957600080fd5b610b2161115e565b6040518082815260200191505060405180910390f35b3415610b4257600080fd5b610b4a611c47565b6040518082815260200191505060405180910390f35b3415610b6b57600080fd5b610b8360048080351515906020019091905050611c4d565b005b3415610b9057600080fd5b610b98611cc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610be557600080fd5b610bed611cec565b6040518082815260200191505060405180910390f35b3415610c0e57600080fd5b610c16611d05565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c56578082015181840152602081019050610c3b565b50505050905090810190601f168015610c835780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610c9c57600080fd5b610d20600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803515159060200190919080351515906020019091905050611da3565b005b3415610d2d57600080fd5b610d35612080565b005b3415610d4257600080fd5b610d4a612157565b6040518082815260200191505060405180910390f35b3415610d6b57600080fd5b610d7361215d565b6040518082815260200191505060405180910390f35b3415610d9457600080fd5b610dc9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612163565b005b3415610dd657600080fd5b610dde6121be565b6040518082815260200191505060405180910390f35b3415610dff57600080fd5b610e076121c9565b604051808215151515815260200191505060405180910390f35b3415610e2c57600080fd5b610e346121dc565b6040518082815260200191505060405180910390f35b3415610e5557600080fd5b610e94600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803567ffffffffffffffff169060200190919050506121e2565b6040518082815260200191505060405180910390f35b3415610eb557600080fd5b610ebd612406565b6040518082815260200191505060405180910390f35b3415610ede57600080fd5b610ee661240c565b6040518082815260200191505060405180910390f35b3415610f0757600080fd5b610f52600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612412565b6040518082815260200191505060405180910390f35b3415610f7357600080fd5b610fad6004808035906020019091908035906020019091908035906020019091908035906020019091908035906020019091905050612499565b6040518082815260200191505060405180910390f35b3415610fce57600080fd5b610fd66124f3565b6040518082815260200191505060405180910390f35b3415610ff757600080fd5b611042600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124fd565b005b341561104f57600080fd5b611084600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612628565b005b341561109157600080fd5b611099612dfb565b6040518082815260200191505060405180910390f35b34156110ba57600080fd5b6110c2612e01565b6040518082815260200191505060405180910390f35b34156110e357600080fd5b6110eb612e0b565b6040518082815260200191505060405180910390f35b611109612e12565b005b6000600b5442118061112f57506127106304c4b4000261271061c350026017540110155b806111485750670de0b6b3a7640000600c540260165410155b15611156576001905061115b565b600090505b90565b60008061116d426009546111cd565b9050624c7700811115611188576127106107d00291506111c9565b623219008111156111b0576064607d6127106107d002028115156111a857fe5b0491506111c9565b606460966127106107d002028115156111c557fe5b0491505b5090565b60006111db83831115613016565b818303905092915050565b60006111f23484611c16565b90508181111561120157600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561126357600080fd5b6112d78160016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b60016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061138e81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806017600082825401925050819055503460166000828254019250508190555092915050565b6127106301312d000281565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6064607d6127106107d0020281151561146457fe5b0481565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114fe5780601f106114d3576101008083540402835291602001916114fe565b820191906000526020600020905b8154815290600101906020018083116114e157829003601f168201915b505050505081565b6000811415801561159457506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561159e57600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6116bc61110b565b15156116c757600080fd5b6116d2838383613043565b505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60046020528160005260406000208181548110151561174457fe5b9060005260206000209060030201600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900467ffffffffffffffff16908060020160089054906101000a900467ffffffffffffffff16908060020160109054906101000a900467ffffffffffffffff16908060020160189054906101000a900460ff16908060020160199054906101000a900460ff16905087565b60075481565b60175481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612710622dc6c00281565b60095481565b6000806000806000806000806000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8154811015156118c057fe5b906000526020600020906003020190508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850806001015497508060020160109054906101000a900467ffffffffffffffff1695508060020160009054906101000a900467ffffffffffffffff1694508060020160089054906101000a900467ffffffffffffffff1693508060020160189054906101000a900460ff1692508060020160199054906101000a900460ff169150611ab98160e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff1615151515815250504261306d565b9650509295985092959890939650565b624c770081565b6000806000429250600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150600090505b81811015611bb457611ba5600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515611b7957fe5b906000526020600020906003020160020160089054906101000a900467ffffffffffffffff16846130bc565b92508080600101915050611b22565b5050919050565b612710624c4b400281565b6232190081565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c33611c2584846130ea565b670de0b6b3a764000061311d565b905092915050565b6127106304c4b4000281565b600a5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca957600080fd5b80601960006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606460966127106107d00202811515611d0157fe5b0481565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d9b5780601f10611d7057610100808354040283529160200191611d9b565b820191906000526020600020905b815481529060010190602001808311611d7e57829003601f168201915b505050505081565b60008567ffffffffffffffff168567ffffffffffffffff161080611dda57508467ffffffffffffffff168467ffffffffffffffff16105b15611de457600080fd5b600354611df089611403565b1115611dfb57600080fd5b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281611e4c9190613620565b9160005260206000209060030201600060e06040519081016040528087611e74576000611e76565b335b73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018a67ffffffffffffffff1681526020018715158152602001861515815250909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160186101000a81548160ff02191690831515021790555060c08201518160020160196101000a81548160ff021916908315150217905550505090506120068888612163565b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff9565aecd648a0466ffb964a79eeccdf1120ad6276189c687a6e9fe73984d9bb8960018503604051808381526020018281526020019250505060405180910390a35050505050505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120dc57600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561215557600080fd5b565b60185481565b600c5481565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219c576121ba565b6121a461110b565b15156121af57600080fd5b6121b98282613138565b5b5050565b612710629896800281565b601960009054906101000a900460ff1681565b60165481565b60008060008060006121f387611403565b9350600084141561220e5761220787611bcd565b94506123fc565b60009250600091505b838210156123d2576123c3836123be600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561227257fe5b906000526020600020906003020160e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff16151515158152505089613160565b613025565b92508180600101925050612217565b6123e46123de88611bcd565b846111cd565b90506123f9816123f4898961318a565b61319d565b94505b5050505092915050565b60135481565b60145481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080838610156124ad57600091506124e9565b82861015156124be578691506124e9565b6124e36124d4886124cf89896111cd565b6130ea565b6124de85886111cd565b61311d565b90508091505b5095945050505050565b6127106107d00281565b61250561110b565b151561251057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561256c57600080fd5b601960009054906101000a900460ff161561258657600080fd5b6125a8826127106298968002426277f88042016301e133804201600080611da3565b6126248160016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544262eff10042016303c267004201600080611da3565b5050565b6000806000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561267957fe5b906000526020600020906003020192508260020160189054906101000a900460ff1615156126a657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561270457600080fd5b8260020160199054906101000a900460ff166127205733612724565b61dead5b91506128688360e060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900460ff161515151581526020016002820160199054906101000a900460ff16151515158152505042613160565b9050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156128b657fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549067ffffffffffffffff02191690556002820160186101000a81549060ff02191690556002820160196101000a81549060ff02191690555050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612a046001600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506111cd90919063ffffffff16565b815481101515612a1057fe5b9060005260206000209060030201600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481101515612a6a57fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160089054906101000a900467ffffffffffffffff168160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160109054906101000a900467ffffffffffffffff168160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160189054906101000a900460ff168160020160186101000a81548160ff0219169083151502179055506002820160199054906101000a900460ff168160020160196101000a81548160ff0219169083151502179055509050506001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081818054905003915081612c649190613652565b50612cb781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4c81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b60155481565b6127106107d00281565b625af78081565b60008060095442101580612e275750600a5442105b15612e3157600080fd5b601960009054906101000a900460ff1615612e4b57600080fd5b60009150601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612eab5760135491505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f075760145491505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f635760155491505b6000821415612f7157600080fd5b612fa582606460966127106107d00202811515612f8a57fe5b0401612fa06127106301312d00026018546111cd565b6111e6565b9050612fcb33612fb53485611c16565b426277f88042016301e133804201600080611da3565b806018600082825401925050819055507f9e352721883879ced8efbcaca8e7316a3367205e490f0829362d23c63819e8ee816040518082815260200191505060405180910390a15050565b80151561302257600080fd5b50565b600080828401905061303984821015613016565b8091505092915050565b828161304f82426121e2565b81111561305b57600080fd5b6130668585856131b6565b5050505050565b60006130b483602001518367ffffffffffffffff16856080015167ffffffffffffffff16866040015167ffffffffffffffff16876060015167ffffffffffffffff16612499565b905092915050565b60008167ffffffffffffffff168367ffffffffffffffff1610156130e057816130e2565b825b905092915050565b6000808284029050613113600085148061310e575083858381151561310b57fe5b04145b613016565b8091505092915050565b600080828481151561312b57fe5b0490508091505092915050565b338161314482426121e2565b81111561315057600080fd5b61315a8484613476565b50505050565b600061318261316f848461306d565b84602001516111cd90919063ffffffff16565b905092915050565b600061319583611bcd565b905092915050565b60008183106131ac57816131ae565b825b905092915050565b6000606060048101600036905010156131ce57600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915061329f83600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061333483600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061338a83836111cd90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6040600481016000369050101561348c57600080fd5b6134de82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111cd90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357382600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461302590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b81548183558181151161364d5760030281600302836000526020600020918201910161364c9190613684565b5b505050565b81548183558181151161367f5760030281600302836000526020600020918201910161367e9190613684565b5b505050565b61374891905b8082111561374457600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549067ffffffffffffffff02191690556002820160186101000a81549060ff02191690556002820160196101000a81549060ff02191690555060030161368a565b5090565b905600a165627a7a72305820fd51d23ff478714c9695a611193e4f8c56d82e519fb310d14178c38d911119b70029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001d5353124a0552b7a5969b6924227d6cee3d1d2b00000000000000000000000014a681b1362872a490ddf9e34d2cf34300c94867000000000000000000000000000000000000000000000000000000005a180510000000000000000000000000000000000000000000000000000000005a180510000000000000000000000000000000000000000000000000000000000000681a0000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d00000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d00000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f900000000000000000000000000000000000000000000000000000000000007d0
-----Decoded View---------------
Arg [0] : _multisig (address): 0x1D5353124A0552B7A5969B6924227D6ceE3d1d2B
Arg [1] : _wpxTeam (address): 0x14a681B1362872a490dDF9e34d2cF34300C94867
Arg [2] : _publicStartTime (uint256): 1511523600
Arg [3] : _privateStartTime (uint256): 1511523600
Arg [4] : _hardcapInEth (uint256): 26650
Arg [5] : _prebuy1 (address): 0x2d795905a3e3943900Ac38ce58E53a2Ce1f005f9
Arg [6] : _preBuyPrice1 (uint256): 2000
Arg [7] : _prebuy2 (address): 0x2d795905a3e3943900Ac38ce58E53a2Ce1f005f9
Arg [8] : _preBuyPrice2 (uint256): 2000
Arg [9] : _prebuy3 (address): 0x2d795905a3e3943900Ac38ce58E53a2Ce1f005f9
Arg [10] : _preBuyPrice3 (uint256): 2000
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d5353124a0552b7a5969b6924227d6cee3d1d2b
Arg [1] : 00000000000000000000000014a681b1362872a490ddf9e34d2cf34300c94867
Arg [2] : 000000000000000000000000000000000000000000000000000000005a180510
Arg [3] : 000000000000000000000000000000000000000000000000000000005a180510
Arg [4] : 000000000000000000000000000000000000000000000000000000000000681a
Arg [5] : 0000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f9
Arg [6] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [7] : 0000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f9
Arg [8] : 00000000000000000000000000000000000000000000000000000000000007d0
Arg [9] : 0000000000000000000000002d795905a3e3943900ac38ce58e53a2ce1f005f9
Arg [10] : 00000000000000000000000000000000000000000000000000000000000007d0
Swarm Source
bzzr://fd51d23ff478714c9695a611193e4f8c56d82e519fb310d14178c38d911119b7
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.