Overview
ETH Balance
1,003.624048369852000001 ETH
Eth Value
$3,555,162.74 (@ $3,542.33/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 230 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Refund My Ico In... | 18089197 | 203 days ago | IN | 0 ETH | 0.27037573 | ||||
Refund My Ico In... | 5824822 | 2108 days ago | IN | 0 ETH | 0.00353126 | ||||
Refund My Ico In... | 5824816 | 2108 days ago | IN | 0 ETH | 0.00010906 | ||||
0x51fa7efd | 5514801 | 2163 days ago | IN | 0 ETH | 0.00006 | ||||
Transfer | 5514801 | 2163 days ago | IN | 0 ETH | 0.00053437 | ||||
Refund My Ico In... | 4754127 | 2293 days ago | IN | 0 ETH | 0.0012 | ||||
0xfb52d71e | 4523292 | 2331 days ago | IN | 0 ETH | 0.00000355 | ||||
0x2417d7b8 | 4464688 | 2340 days ago | IN | 0 ETH | 0.0008 | ||||
0xa09e746f | 4362480 | 2358 days ago | IN | 0.0001 ETH | 0.000483 | ||||
Refund | 4362470 | 2358 days ago | IN | 0.0001 ETH | 0.000483 | ||||
Transfer | 4362468 | 2358 days ago | IN | 0.0001 ETH | 0.000483 | ||||
0x4c2d71b3 | 4347442 | 2364 days ago | IN | 0 ETH | 0.00053258 | ||||
Add Admin | 4347435 | 2364 days ago | IN | 0 ETH | 0.00053258 | ||||
Add Admin | 4347432 | 2364 days ago | IN | 0 ETH | 0.00029258 | ||||
0x2417d7b8 | 4345709 | 2364 days ago | IN | 0 ETH | 0.00155137 | ||||
0x68fda46a | 4345697 | 2364 days ago | IN | 0 ETH | 0.00155137 | ||||
0x2417d7b8 | 4345691 | 2364 days ago | IN | 0 ETH | 0.00155137 | ||||
0x2417d7b8 | 4345684 | 2364 days ago | IN | 0 ETH | 0.00035137 | ||||
0x1254328d | 4335948 | 2368 days ago | IN | 0 ETH | 0.00052535 | ||||
0x2417d7b8 | 4335928 | 2368 days ago | IN | 0 ETH | 0.00052535 | ||||
Refund My Ico In... | 3946181 | 2465 days ago | IN | 0 ETH | 0.0021 | ||||
Transfer | 3869421 | 2480 days ago | IN | 0.01 ETH | 0.00388888 | ||||
Transfer | 3869342 | 2480 days ago | IN | 1 wei | 0.00047858 | ||||
Transfer | 3758697 | 2501 days ago | IN | 0 ETH | 0.0021 | ||||
Refund My Ico In... | 3750785 | 2502 days ago | IN | 0 ETH | 0.00068901 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
5430372 | 2177 days ago | 0 ETH | ||||
2668622 | 2684 days ago | 3 ETH | ||||
2440530 | 2722 days ago | 0 ETH | ||||
2440527 | 2722 days ago | 0 ETH | ||||
2439600 | 2722 days ago | 0 ETH | ||||
2439594 | 2722 days ago | 0 ETH | ||||
2439592 | 2722 days ago | 0 ETH | ||||
2439149 | 2722 days ago | 0 ETH | ||||
2439074 | 2722 days ago | 0 ETH | ||||
2438948 | 2722 days ago | 0 ETH | ||||
2438936 | 2722 days ago | 0 ETH | ||||
2438863 | 2722 days ago | 0 ETH | ||||
2438724 | 2723 days ago | 0 ETH | ||||
2438517 | 2723 days ago | 0 ETH | ||||
2438507 | 2723 days ago | 0 ETH | ||||
2438465 | 2723 days ago | 0 ETH | ||||
2438459 | 2723 days ago | 0 ETH | ||||
2438438 | 2723 days ago | 0 ETH | ||||
2438435 | 2723 days ago | 0 ETH | ||||
2438433 | 2723 days ago | 0 ETH | ||||
2438388 | 2723 days ago | 0 ETH | ||||
2438383 | 2723 days ago | 0 ETH | ||||
2438332 | 2723 days ago | 0 ETH | ||||
2438321 | 2723 days ago | 0 ETH | ||||
2438287 | 2723 days ago | 0 ETH |
Loading...
Loading
Contract Name:
HONG
Compiler Version
v0.3.5+commit.5f97274
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-06-13 */ /* Verified by 3esmit - Bytecode Verification performed was compared on second iteration - This file is part of the HONG. The HONG is free software: you can redistribute it and/or modify it under the terms of the GNU lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The HONG is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU lesser General Public License for more details. You should have received a copy of the GNU lesser General Public License along with the HONG. If not, see <http://www.gnu.org/licenses/>. */ /* * Parent contract that contains all of the configurable parameters of the main contract. */ contract HongConfiguration { uint public closingTime; uint public weiPerInitialHONG = 10**16; string public name = "HONG"; string public symbol = "Ħ"; uint8 public decimals = 0; uint public maxBountyTokens = 2 * (10**6); uint public closingTimeExtensionPeriod = 30 days; uint public minTokensToCreate = 100 * (10**6); uint public maxTokensToCreate = 250 * (10**6); uint public tokensPerTier = 50 * (10**6); uint public lastKickoffDateBuffer = 304 days; uint public mgmtRewardPercentage = 20; uint public mgmtFeePercentage = 8; uint public harvestQuorumPercent = 20; uint public freezeQuorumPercent = 50; uint public kickoffQuorumPercent = 20; } contract ErrorHandler { bool public isInTestMode = false; event evRecord(address msg_sender, uint msg_value, string message); function doThrow(string message) internal { evRecord(msg.sender, msg.value, message); if(!isInTestMode){ throw; } } } contract TokenInterface is ErrorHandler { mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; uint256 public tokensCreated; function balanceOf(address _owner) constant returns (uint256 balance); function transfer(address _to, uint256 _amount) returns (bool success); event evTransfer(address msg_sender, uint msg_value, address indexed _from, address indexed _to, uint256 _amount); // Modifier that allows only token holders to trigger modifier onlyTokenHolders { if (balanceOf(msg.sender) == 0) doThrow("onlyTokenHolders"); else {_} } } contract Token is TokenInterface { // Protects users by preventing the execution of method calls that // inadvertently also transferred ether modifier noEther() {if (msg.value > 0) doThrow("noEther"); else{_}} modifier hasEther() {if (msg.value <= 0) doThrow("hasEther"); else{_}} function balanceOf(address _owner) constant returns (uint256 balance) { return balances[_owner]; } function transfer(address _to, uint256 _amount) noEther returns (bool success) { if (_amount <= 0) return false; if (balances[msg.sender] < _amount) return false; if (balances[_to] + _amount < balances[_to]) return false; balances[msg.sender] -= _amount; balances[_to] += _amount; evTransfer(msg.sender, msg.value, msg.sender, _to, _amount); return true; } } contract OwnedAccount is ErrorHandler { address public owner; bool acceptDeposits = true; event evPayOut(address msg_sender, uint msg_value, address indexed _recipient, uint _amount); modifier onlyOwner() { if (msg.sender != owner) doThrow("onlyOwner"); else {_} } modifier noEther() { if (msg.value > 0) doThrow("noEther"); else {_} } function OwnedAccount(address _owner) { owner = _owner; } function payOutPercentage(address _recipient, uint _percent) internal onlyOwner noEther { payOutAmount(_recipient, (this.balance * _percent) / 100); } function payOutAmount(address _recipient, uint _amount) internal onlyOwner noEther { // send does not forward enough gas to see that this is a managed account call if (!_recipient.call.value(_amount)()) doThrow("payOut:sendFailed"); else evPayOut(msg.sender, msg.value, _recipient, _amount); } function () returns (bool success) { if (!acceptDeposits) throw; return true; } } contract ReturnWallet is OwnedAccount { address public mgmtBodyWalletAddress; bool public inDistributionMode; uint public amountToDistribute; uint public totalTokens; uint public weiPerToken; function ReturnWallet(address _mgmtBodyWalletAddress) OwnedAccount(msg.sender) { mgmtBodyWalletAddress = _mgmtBodyWalletAddress; } function payManagementBodyPercent(uint _percent) { payOutPercentage(mgmtBodyWalletAddress, _percent); } function switchToDistributionMode(uint _totalTokens) onlyOwner { inDistributionMode = true; acceptDeposits = false; totalTokens = _totalTokens; amountToDistribute = this.balance; weiPerToken = amountToDistribute / totalTokens; } function payTokenHolderBasedOnTokenCount(address _tokenHolderAddress, uint _tokens) onlyOwner { payOutAmount(_tokenHolderAddress, weiPerToken * _tokens); } } contract ExtraBalanceWallet is OwnedAccount { address returnWalletAddress; function ExtraBalanceWallet(address _returnWalletAddress) OwnedAccount(msg.sender) { returnWalletAddress = _returnWalletAddress; } function returnBalanceToMainAccount() { acceptDeposits = false; payOutAmount(owner, this.balance); } function returnAmountToMainAccount(uint _amount) { payOutAmount(owner, _amount); } function payBalanceToReturnWallet() { acceptDeposits = false; payOutAmount(returnWalletAddress, this.balance); } } contract RewardWallet is OwnedAccount { address public returnWalletAddress; function RewardWallet(address _returnWalletAddress) OwnedAccount(msg.sender) { returnWalletAddress = _returnWalletAddress; } function payBalanceToReturnWallet() { acceptDeposits = false; payOutAmount(returnWalletAddress, this.balance); } } contract ManagementFeeWallet is OwnedAccount { address public mgmtBodyAddress; address public returnWalletAddress; function ManagementFeeWallet(address _mgmtBodyAddress, address _returnWalletAddress) OwnedAccount(msg.sender) { mgmtBodyAddress = _mgmtBodyAddress; returnWalletAddress = _returnWalletAddress; } function payManagementBodyAmount(uint _amount) { payOutAmount(mgmtBodyAddress, _amount); } function payBalanceToReturnWallet() { acceptDeposits = false; payOutAmount(returnWalletAddress, this.balance); } } /* * Token Creation contract, similar to other organization,for issuing tokens and initialize * its ether fund. */ contract TokenCreationInterface is HongConfiguration { address public managementBodyAddress; ExtraBalanceWallet public extraBalanceWallet; mapping (address => uint256) weiGiven; mapping (address => uint256) public taxPaid; function createTokenProxy(address _tokenHolder) internal returns (bool success); function refundMyIcoInvestment(); function divisor() constant returns (uint divisor); event evMinTokensReached(address msg_sender, uint msg_value, uint value); event evCreatedToken(address msg_sender, uint msg_value, address indexed to, uint amount); event evRefund(address msg_sender, uint msg_value, address indexed to, uint value, bool result); } contract GovernanceInterface is ErrorHandler, HongConfiguration { // The variable indicating whether the fund has achieved the inital goal or not. // This value is automatically set, and CANNOT be reversed. bool public isFundLocked; bool public isFundReleased; modifier notLocked() {if (isFundLocked) doThrow("notLocked"); else {_}} modifier onlyLocked() {if (!isFundLocked) doThrow("onlyLocked"); else {_}} modifier notReleased() {if (isFundReleased) doThrow("notReleased"); else {_}} modifier onlyHarvestEnabled() {if (!isHarvestEnabled) doThrow("onlyHarvestEnabled"); else {_}} modifier onlyDistributionNotInProgress() {if (isDistributionInProgress) doThrow("onlyDistributionNotInProgress"); else {_}} modifier onlyDistributionNotReady() {if (isDistributionReady) doThrow("onlyDistributionNotReady"); else {_}} modifier onlyDistributionReady() {if (!isDistributionReady) doThrow("onlyDistributionReady"); else {_}} modifier onlyCanIssueBountyToken(uint _amount) { if (bountyTokensCreated + _amount > maxBountyTokens){ doThrow("hitMaxBounty"); } else {_} } modifier onlyFinalFiscalYear() { // Only call harvest() in the final fiscal year if (currentFiscalYear < 4) doThrow("currentFiscalYear<4"); else {_} } modifier notFinalFiscalYear() { // Token holders cannot freeze fund at the 4th Fiscal Year after passing `kickoff(4)` voting if (currentFiscalYear >= 4) doThrow("currentFiscalYear>=4"); else {_} } modifier onlyNotFrozen() { if (isFreezeEnabled) doThrow("onlyNotFrozen"); else {_} } bool public isDayThirtyChecked; bool public isDaySixtyChecked; uint256 public bountyTokensCreated; uint public currentFiscalYear; uint public lastKickoffDate; mapping (uint => bool) public isKickoffEnabled; bool public isFreezeEnabled; bool public isHarvestEnabled; bool public isDistributionInProgress; bool public isDistributionReady; ReturnWallet public returnWallet; RewardWallet public rewardWallet; ManagementFeeWallet public managementFeeWallet; // define the governance of this organization and critical functions function mgmtIssueBountyToken(address _recipientAddress, uint _amount) returns (bool); function mgmtDistribute(); function mgmtInvestProject( address _projectWallet, uint _amount ) returns (bool); event evIssueManagementFee(address msg_sender, uint msg_value, uint _amount, bool _success); event evMgmtIssueBountyToken(address msg_sender, uint msg_value, address _recipientAddress, uint _amount, bool _success); event evMgmtDistributed(address msg_sender, uint msg_value, uint256 _amount, bool _success); event evMgmtInvestProject(address msg_sender, uint msg_value, address _projectWallet, uint _amount, bool result); event evLockFund(address msg_sender, uint msg_value); event evReleaseFund(address msg_sender, uint msg_value); } contract TokenCreation is TokenCreationInterface, Token, GovernanceInterface { modifier onlyManagementBody { if(msg.sender != address(managementBodyAddress)) {doThrow("onlyManagementBody");} else {_} } function TokenCreation( address _managementBodyAddress, uint _closingTime) { managementBodyAddress = _managementBodyAddress; closingTime = _closingTime; } function createTokenProxy(address _tokenHolder) internal notLocked notReleased hasEther returns (bool success) { // Business logic (but no state changes) // setup transaction details uint tokensSupplied = 0; uint weiAccepted = 0; bool wasMinTokensReached = isMinTokensReached(); var weiPerLatestHONG = weiPerInitialHONG * divisor() / 100; uint remainingWei = msg.value; uint tokensAvailable = tokensAvailableAtCurrentTier(); if (tokensAvailable == 0) { doThrow("noTokensToSell"); return false; } // Sell tokens in batches based on the current price. while (remainingWei >= weiPerLatestHONG) { uint tokensRequested = remainingWei / weiPerLatestHONG; uint tokensToSellInBatch = min(tokensAvailable, tokensRequested); // special case. Allow the last purchase to go over the max if (tokensAvailable == 0 && tokensCreated == maxTokensToCreate) { tokensToSellInBatch = tokensRequested; } uint priceForBatch = tokensToSellInBatch * weiPerLatestHONG; // track to total wei accepted and total tokens supplied weiAccepted += priceForBatch; tokensSupplied += tokensToSellInBatch; // update state balances[_tokenHolder] += tokensToSellInBatch; tokensCreated += tokensToSellInBatch; weiGiven[_tokenHolder] += priceForBatch; // update dependent values (state has changed) weiPerLatestHONG = weiPerInitialHONG * divisor() / 100; remainingWei = msg.value - weiAccepted; tokensAvailable = tokensAvailableAtCurrentTier(); } // the caller will still pay this amount, even though it didn't buy any tokens. weiGiven[_tokenHolder] += remainingWei; // when the caller is paying more than 10**16 wei (0.01 Ether) per token, the extra is basically a tax. uint256 totalTaxLevied = weiAccepted - tokensSupplied * weiPerInitialHONG; taxPaid[_tokenHolder] += totalTaxLevied; // State Changes (no external calls) tryToLockFund(); // External calls if (totalTaxLevied > 0) { if (!extraBalanceWallet.send(totalTaxLevied)){ doThrow("extraBalance:sendFail"); return; } } // Events. Safe to publish these now that we know it all worked evCreatedToken(msg.sender, msg.value, _tokenHolder, tokensSupplied); if (!wasMinTokensReached && isMinTokensReached()) evMinTokensReached(msg.sender, msg.value, tokensCreated); if (isFundLocked) evLockFund(msg.sender, msg.value); if (isFundReleased) evReleaseFund(msg.sender, msg.value); return true; } function refundMyIcoInvestment() noEther notLocked onlyTokenHolders { // 1: Preconditions if (weiGiven[msg.sender] == 0) { doThrow("noWeiGiven"); return; } if (balances[msg.sender] > tokensCreated) { doThrow("invalidTokenCount"); return; } // 2: Business logic bool wasMinTokensReached = isMinTokensReached(); var tmpWeiGiven = weiGiven[msg.sender]; var tmpTaxPaidBySender = taxPaid[msg.sender]; var tmpSenderBalance = balances[msg.sender]; var amountToRefund = tmpWeiGiven; // 3: state changes. balances[msg.sender] = 0; weiGiven[msg.sender] = 0; taxPaid[msg.sender] = 0; tokensCreated -= tmpSenderBalance; // 4: external calls // Pull taxes paid back into this contract (they would have been paid into the extraBalance account) extraBalanceWallet.returnAmountToMainAccount(tmpTaxPaidBySender); // If that works, then do a refund if (!msg.sender.send(amountToRefund)) { evRefund(msg.sender, msg.value, msg.sender, amountToRefund, false); doThrow("refund:SendFailed"); return; } evRefund(msg.sender, msg.value, msg.sender, amountToRefund, true); if (!wasMinTokensReached && isMinTokensReached()) evMinTokensReached(msg.sender, msg.value, tokensCreated); } // Using a function rather than a state variable, as it reduces the risk of inconsistent state function isMinTokensReached() constant returns (bool) { return tokensCreated >= minTokensToCreate; } function isMaxTokensReached() constant returns (bool) { return tokensCreated >= maxTokensToCreate; } function mgmtIssueBountyToken( address _recipientAddress, uint _amount ) noEther onlyManagementBody onlyCanIssueBountyToken(_amount) returns (bool){ // send token to the specified address balances[_recipientAddress] += _amount; bountyTokensCreated += _amount; // event evMgmtIssueBountyToken(msg.sender, msg.value, _recipientAddress, _amount, true); } function mgmtDistribute() onlyManagementBody hasEther onlyHarvestEnabled onlyDistributionNotReady { distributeDownstream(mgmtRewardPercentage); } function distributeDownstream(uint _mgmtPercentage) internal onlyDistributionNotInProgress { // transfer all balance from the following accounts // (1) HONG main account, // (2) managementFeeWallet, // (3) rewardWallet // (4) extraBalanceWallet // to returnWallet // And allocate _mgmtPercentage of the fund to ManagementBody // State changes first (even though it feels backwards) isDistributionInProgress = true; isDistributionReady = true; payBalanceToReturnWallet(); managementFeeWallet.payBalanceToReturnWallet(); rewardWallet.payBalanceToReturnWallet(); extraBalanceWallet.payBalanceToReturnWallet(); // transfer _mgmtPercentage of returns to mgmt Wallet if (_mgmtPercentage > 0) returnWallet.payManagementBodyPercent(_mgmtPercentage); returnWallet.switchToDistributionMode(tokensCreated + bountyTokensCreated); // Token holder can claim the remaining fund (the total amount harvested/ to be distributed) starting from here evMgmtDistributed(msg.sender, msg.value, returnWallet.balance, true); isDistributionInProgress = false; } function payBalanceToReturnWallet() internal { if (!returnWallet.send(this.balance)) doThrow("payBalanceToReturnWallet:sendFailed"); return; } function min(uint a, uint b) constant internal returns (uint) { return (a < b) ? a : b; } function tryToLockFund() internal { // ICO Diagram: https://github.com/hongcoin/DO/wiki/ICO-Period-and-Target if (isFundReleased) { // Do not change the state anymore return; } // Case A isFundLocked = isMaxTokensReached(); // if we've reached the 30 day mark, try to lock the fund if (!isFundLocked && !isDayThirtyChecked && (now >= closingTime)) { if (isMinTokensReached()) { // Case B isFundLocked = true; } isDayThirtyChecked = true; } // if we've reached the 60 day mark, try to lock the fund if (!isFundLocked && !isDaySixtyChecked && (now >= (closingTime + closingTimeExtensionPeriod))) { if (isMinTokensReached()) { // Case C isFundLocked = true; } isDaySixtyChecked = true; } if (isDaySixtyChecked && !isMinTokensReached()) { // Case D // Mark the release state. No fund should be accepted anymore isFundReleased = true; } } function tokensAvailableAtTierInternal(uint8 _currentTier, uint _tokensPerTier, uint _tokensCreated) constant returns (uint) { uint tierThreshold = (_currentTier+1) * _tokensPerTier; // never go above maxTokensToCreate, which could happen if the max is not a multiple of _tokensPerTier if (tierThreshold > maxTokensToCreate) { tierThreshold = maxTokensToCreate; } // this can happen on the final purchase in the last tier if (_tokensCreated > tierThreshold) { return 0; } return tierThreshold - _tokensCreated; } function tokensAvailableAtCurrentTier() constant returns (uint) { return tokensAvailableAtTierInternal(getCurrentTier(), tokensPerTier, tokensCreated); } function getCurrentTier() constant returns (uint8) { uint8 tier = (uint8) (tokensCreated / tokensPerTier); return (tier > 4) ? 4 : tier; } function pricePerTokenAtCurrentTier() constant returns (uint) { return weiPerInitialHONG * divisor() / 100; } function divisor() constant returns (uint divisor) { // Quantity divisor model: based on total quantity of coins issued // Price ranged from 1.0 to 1.20 Ether for all HONG Tokens with a 0.05 ETH increase for each tier // The number of (base unit) tokens per wei is calculated // as `msg.value` * 100 / `divisor` return 100 + getCurrentTier() * 5; } } contract HONGInterface is ErrorHandler, HongConfiguration { // we do not have grace period. Once the goal is reached, the fund is secured address public managementBodyAddress; // 3 most important votings in blockchain mapping (uint => mapping (address => uint)) public votedKickoff; mapping (address => uint) public votedFreeze; mapping (address => uint) public votedHarvest; mapping (uint => uint256) public supportKickoffQuorum; uint256 public supportFreezeQuorum; uint256 public supportHarvestQuorum; uint public totalInitialBalance; uint public annualManagementFee; function voteToKickoffNewFiscalYear(); function voteToFreezeFund(); function recallVoteToFreezeFund(); function voteToHarvestFund(); function collectMyReturn(); // Trigger the following events when the voting result is available event evKickoff(address msg_sender, uint msg_value, uint _fiscal); event evFreeze(address msg_sender, uint msg_value); event evHarvest(address msg_sender, uint msg_value); } // The HONG contract itself contract HONG is HONGInterface, Token, TokenCreation { function HONG( address _managementBodyAddress, uint _closingTime, uint _closingTimeExtensionPeriod, uint _lastKickoffDateBuffer, uint _minTokensToCreate, uint _maxTokensToCreate, uint _tokensPerTier, bool _isInTestMode ) TokenCreation(_managementBodyAddress, _closingTime) { managementBodyAddress = _managementBodyAddress; closingTimeExtensionPeriod = _closingTimeExtensionPeriod; lastKickoffDateBuffer = _lastKickoffDateBuffer; minTokensToCreate = _minTokensToCreate; maxTokensToCreate = _maxTokensToCreate; tokensPerTier = _tokensPerTier; isInTestMode = _isInTestMode; returnWallet = new ReturnWallet(managementBodyAddress); rewardWallet = new RewardWallet(address(returnWallet)); managementFeeWallet = new ManagementFeeWallet(managementBodyAddress, address(returnWallet)); extraBalanceWallet = new ExtraBalanceWallet(address(returnWallet)); if (address(extraBalanceWallet) == 0) doThrow("extraBalanceWallet:0"); if (address(returnWallet) == 0) doThrow("returnWallet:0"); if (address(rewardWallet) == 0) doThrow("rewardWallet:0"); if (address(managementFeeWallet) == 0) doThrow("managementFeeWallet:0"); } function () returns (bool success) { if (!isFromManagedAccount()) { // We do not accept donation here. Any extra amount sent to us after fund locking process, will be refunded return createTokenProxy(msg.sender); } else { evRecord(msg.sender, msg.value, "Recevied ether from ManagedAccount"); return true; } } function isFromManagedAccount() internal returns (bool) { return msg.sender == address(extraBalanceWallet) || msg.sender == address(returnWallet) || msg.sender == address(rewardWallet) || msg.sender == address(managementFeeWallet); } /* * Voting for some critical steps, on blockchain */ function voteToKickoffNewFiscalYear() onlyTokenHolders noEther onlyLocked { // this is the only valid fiscal year parameter, so there's no point in letting the caller pass it in. // Best case is they get it wrong and we throw, worst case is the get it wrong and there's some exploit uint _fiscal = currentFiscalYear + 1; if(!isKickoffEnabled[1]){ // if the first fiscal year is not kicked off yet // accept voting }else if(currentFiscalYear <= 3){ // if there was any kickoff() enabled before already if(lastKickoffDate + lastKickoffDateBuffer < now){ // 2 months from the end of the fiscal year // accept voting }else{ // we do not accept early kickoff doThrow("kickOff:tooEarly"); return; } }else{ // do not accept kickoff anymore after the 4th year doThrow("kickOff:4thYear"); return; } supportKickoffQuorum[_fiscal] -= votedKickoff[_fiscal][msg.sender]; supportKickoffQuorum[_fiscal] += balances[msg.sender]; votedKickoff[_fiscal][msg.sender] = balances[msg.sender]; uint threshold = (kickoffQuorumPercent*(tokensCreated + bountyTokensCreated)) / 100; if(supportKickoffQuorum[_fiscal] > threshold) { if(_fiscal == 1){ // transfer fund in extraBalance to main account extraBalanceWallet.returnBalanceToMainAccount(); // reserve mgmtFeePercentage of whole fund to ManagementFeePoolWallet totalInitialBalance = this.balance; uint fundToReserve = (totalInitialBalance * mgmtFeePercentage) / 100; annualManagementFee = fundToReserve / 4; if(!managementFeeWallet.send(fundToReserve)){ doThrow("kickoff:ManagementFeePoolWalletFail"); return; } } isKickoffEnabled[_fiscal] = true; currentFiscalYear = _fiscal; lastKickoffDate = now; // transfer annual management fee from reservedWallet to mgmtWallet (external) managementFeeWallet.payManagementBodyAmount(annualManagementFee); evKickoff(msg.sender, msg.value, _fiscal); evIssueManagementFee(msg.sender, msg.value, annualManagementFee, true); } } function voteToFreezeFund() onlyTokenHolders noEther onlyLocked notFinalFiscalYear onlyDistributionNotInProgress { supportFreezeQuorum -= votedFreeze[msg.sender]; supportFreezeQuorum += balances[msg.sender]; votedFreeze[msg.sender] = balances[msg.sender]; uint threshold = ((tokensCreated + bountyTokensCreated) * freezeQuorumPercent) / 100; if(supportFreezeQuorum > threshold){ isFreezeEnabled = true; distributeDownstream(0); evFreeze(msg.sender, msg.value); } } function recallVoteToFreezeFund() onlyTokenHolders onlyNotFrozen noEther { supportFreezeQuorum -= votedFreeze[msg.sender]; votedFreeze[msg.sender] = 0; } function voteToHarvestFund() onlyTokenHolders noEther onlyLocked onlyFinalFiscalYear { supportHarvestQuorum -= votedHarvest[msg.sender]; supportHarvestQuorum += balances[msg.sender]; votedHarvest[msg.sender] = balances[msg.sender]; uint threshold = ((tokensCreated + bountyTokensCreated) * harvestQuorumPercent) / 100; if(supportHarvestQuorum > threshold) { isHarvestEnabled = true; evHarvest(msg.sender, msg.value); } } function collectMyReturn() onlyTokenHolders noEther onlyDistributionReady { uint tokens = balances[msg.sender]; balances[msg.sender] = 0; returnWallet.payTokenHolderBasedOnTokenCount(msg.sender, tokens); } function mgmtInvestProject( address _projectWallet, uint _amount ) onlyManagementBody hasEther returns (bool _success) { if(!isKickoffEnabled[currentFiscalYear] || isFreezeEnabled || isHarvestEnabled){ evMgmtInvestProject(msg.sender, msg.value, _projectWallet, _amount, false); return; } if(_amount >= this.balance){ doThrow("failed:mgmtInvestProject: amount >= actualBalance"); return; } // send the balance (_amount) to _projectWallet if (!_projectWallet.call.value(_amount)()) { doThrow("failed:mgmtInvestProject: cannot send to _projectWallet"); return; } evMgmtInvestProject(msg.sender, msg.value, _projectWallet, _amount, true); } function transfer(address _to, uint256 _value) returns (bool success) { // Update kickoff voting record for the next fiscal year for an address, and the total quorum if(currentFiscalYear < 4){ if(votedKickoff[currentFiscalYear+1][msg.sender] > _value){ votedKickoff[currentFiscalYear+1][msg.sender] -= _value; supportKickoffQuorum[currentFiscalYear+1] -= _value; }else{ supportKickoffQuorum[currentFiscalYear+1] -= votedKickoff[currentFiscalYear+1][msg.sender]; votedKickoff[currentFiscalYear+1][msg.sender] = 0; } } // Update Freeze and Harvest voting records for an address, and the total quorum if(votedFreeze[msg.sender] > _value){ votedFreeze[msg.sender] -= _value; supportFreezeQuorum -= _value; }else{ supportFreezeQuorum -= votedFreeze[msg.sender]; votedFreeze[msg.sender] = 0; } if(votedHarvest[msg.sender] > _value){ votedHarvest[msg.sender] -= _value; supportHarvestQuorum -= _value; }else{ supportHarvestQuorum -= votedHarvest[msg.sender]; votedHarvest[msg.sender] = 0; } if (isFundLocked && super.transfer(_to, _value)) { return true; } else { if(!isFundLocked){ doThrow("failed:transfer: isFundLocked is false"); }else{ doThrow("failed:transfer: cannot send send to _projectWallet"); } return; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"isFundReleased","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"mgmtDistribute","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":true,"inputs":[],"name":"weiPerInitialHONG","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"votedHarvest","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"minTokensToCreate","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"supportHarvestQuorum","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"extraBalanceWallet","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"totalInitialBalance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"divisor","outputs":[{"name":"divisor","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"voteToHarvestFund","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[],"name":"pricePerTokenAtCurrentTier","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"mgmtFeePercentage","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"tokensCreated","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"isDistributionReady","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"closingTimeExtensionPeriod","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"votedKickoff","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"closingTime","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"lastKickoffDateBuffer","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"isDayThirtyChecked","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"isFreezeEnabled","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"collectMyReturn","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"isMinTokensReached","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"isDistributionInProgress","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"lastKickoffDate","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"managementFeeWallet","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"supportFreezeQuorum","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"tokensAvailableAtCurrentTier","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getCurrentTier","outputs":[{"name":"","type":"uint8"}],"type":"function"},{"constant":true,"inputs":[],"name":"isFundLocked","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"votedFreeze","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"returnWallet","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"kickoffQuorumPercent","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"isMaxTokensReached","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"freezeQuorumPercent","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"type":"function"},{"constant":true,"inputs":[],"name":"maxTokensToCreate","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_projectWallet","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mgmtInvestProject","outputs":[{"name":"_success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"isHarvestEnabled","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"tokensPerTier","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"taxPaid","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"maxBountyTokens","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"voteToKickoffNewFiscalYear","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"supportKickoffQuorum","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"isInTestMode","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"managementBodyAddress","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"harvestQuorumPercent","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"isKickoffEnabled","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"mgmtRewardPercentage","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"recallVoteToFreezeFund","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensCreated","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"annualManagementFee","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"_currentTier","type":"uint8"},{"name":"_tokensPerTier","type":"uint256"},{"name":"_tokensCreated","type":"uint256"}],"name":"tokensAvailableAtTierInternal","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"isDaySixtyChecked","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"voteToFreezeFund","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"refundMyIcoInvestment","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"rewardWallet","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_recipientAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mgmtIssueBountyToken","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"currentFiscalYear","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"_managementBodyAddress","type":"address"},{"name":"_closingTime","type":"uint256"},{"name":"_closingTimeExtensionPeriod","type":"uint256"},{"name":"_lastKickoffDateBuffer","type":"uint256"},{"name":"_minTokensToCreate","type":"uint256"},{"name":"_maxTokensToCreate","type":"uint256"},{"name":"_tokensPerTier","type":"uint256"},{"name":"_isInTestMode","type":"bool"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_success","type":"bool"}],"name":"evIssueManagementFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"_recipientAddress","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_success","type":"bool"}],"name":"evMgmtIssueBountyToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_success","type":"bool"}],"name":"evMgmtDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"_projectWallet","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"result","type":"bool"}],"name":"evMgmtInvestProject","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"}],"name":"evLockFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"}],"name":"evReleaseFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"evTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"evMinTokensReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"evCreatedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"result","type":"bool"}],"name":"evRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"_fiscal","type":"uint256"}],"name":"evKickoff","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"}],"name":"evFreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"}],"name":"evHarvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"msg_sender","type":"address"},{"indexed":false,"name":"msg_value","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"evRecord","type":"event"}]
Contract Creation Code
6000805460ff19168155662386f26fc10000600290815560a060405260046060527f484f4e470000000000000000000000000000000000000000000000000000000060805260038054928190527f484f4e47000000000000000000000000000000000000000000000000000000088155916100ca917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b60206101006001851615026000190190931691909104601f01919091048101905b8082111561015a57600081556001016100b6565b50506040805180820190915260028082527fc4a60000000000000000000000000000000000000000000000000000000000006020928301908152600480546000829052915160ff1916811781559261015e927f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b6001841615610100026000190190931604601f01048101906100b6565b5090565b50506005805460ff19169055621e848060065562278d006007556305f5e1006008908155630ee6b2806009556302faf080600a55630190c800600b556014600c819055600d91909155600e8190556032600f5560105560405161010080614023833981016040528080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919050508787601a8054600160a060020a0319168317905560018190555050601a8054600160a060020a0319168917908190556007879055600b86905560088590556009849055600a8390556000805460ff191683179055604051600160a060020a0391909116906105938061060a8339018082600160a060020a03168152602001915050604051809103906000f0602660046101000a815481600160a060020a0302191690830217905550602660049054906101000a9004600160a060020a031660405161038680610b9d8339018082600160a060020a03168152602001915050604051809103906000f0602760006101000a815481600160a060020a0302191690830217905550601a60009054906101000a9004600160a060020a0316602660049054906101000a9004600160a060020a031660405161041a80610f238339018083600160a060020a0316815260200182600160a060020a0316815260200192505050604051809103906000f0602860006101000a815481600160a060020a0302191690830217905550602660049054906101000a9004600160a060020a03166040516104138061133d8339018082600160a060020a03168152602001915050604051809103906000f0601b8054600160a060020a0319169190911790819055600160a060020a0316600014156104f6576104f6604060405190810160405280601481526020017f657874726142616c616e636557616c6c65743a300000000000000000000000008152602001505b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104d65780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff16151561060757610002565b6026546401000000009004600160a060020a03166000141561054f5760408051808201909152600e81527f72657475726e57616c6c65743a30000000000000000000000000000000000000602082015261054f9061043d565b602754600160a060020a0316600014156105a05760408051808201909152600e81527f72657761726457616c6c65743a3000000000000000000000000000000000000060208201526105a09061043d565b602854600160a060020a0316600014156105f15760408051808201909152601581527f6d616e6167656d656e7446656557616c6c65743a30000000000000000000000060208201526105f19061043d565b50505050505050506128d3806117506000396000f35b5056606060408190526000805460ff60a860020a60ff0201191675010000000000000000000000000000000000000000001790556020806105938339506080604052513380600060016101000a815481600160a060020a03021916908302179055505080600160006101000a815481600160a060020a0302191690830217905550506105068061008d6000396000f3606060405236156100825760e060020a60003504632033d9ae81146100b1578063283a6e88146101b4578063345591ec146101c65780637e1c0c09146101d95780638da5cb5b146101e25780639f3ef430146101f9578063b656e9f41461024a578063b8b2776514610256578063dab8263a146102b4578063ed4460ef146102bd575b6102c66000805460ff75010000000000000000000000000000000000000000009091041615156102da57610002565b6102e06004356000546101009004600160a060020a03908116339091161461031157604080518082019091526009815260b960020a6837b7363ca7bbb732b9026020820152610373905b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101945780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff16151561037057610002565b6102e2600154600160a060020a031681565b6102c660015460a060020a900460ff1681565b6102ff60035481565b6102e26000546101009004600160a060020a031681565b6102e06004356024356000546101009004600160a060020a03908116339091161461037857604080518082019091526009815260b960020a6837b7363ca7bbb732b90260208201526103cd906100fb565b6102c660005460ff1681565b6102e060043560015461037090600160a060020a03168260005433600160a060020a0390811661010090920416146104ba57604080518082019091526009815260b960020a6837b7363ca7bbb732b90260208201526103cd906100fb565b6102ff60045481565b6102ff60025481565b604080519115158252519081900360200190f35b50600190565b005b60408051600160a060020a03929092168252519081900360200190f35b60408051918252519081900360200190f35b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556000805475ff00000000000000000000000000000000000000000019169055600381905530600160a060020a03163160028190558190046004555b50565b610370565b6103cd8282600460005054025b6000546101009004600160a060020a0390811633909116146103d157604080518082019091526009815260b960020a6837b7363ca7bbb732b90260208201526103cd906100fb565b5050565b600034111561040457604080518082019091526007815260c960020a663737a2ba3432b90260208201526103cd906100fb565b604051600160a060020a038316908290600081818185876185025a03f19250505015156104685760408051808201909152601181527f7061794f75743a73656e644661696c656400000000000000000000000000000060208201526103cd906100fb565b6040805133600160a060020a0390811682523460208301528183018490529151918416917f660c325e06928b5007bda0b9f8b5ce13ff32f2ccabf94c004b1b1994cb7186059181900360600190a25050565b60003411156104ed57604080518082019091526007815260c960020a663737a2ba3432b90260208201526103cd906100fb565b6103cd8260648330600160a060020a031631020461038556606060408190526000805460ff60a860020a60ff0201191675010000000000000000000000000000000000000000001790556020806103868339506080604052513380600060016101000a815481600160a060020a03021916908302179055505080600160006101000a815481600160a060020a0302191690830217905550506102f98061008d6000396000f3606060405236156100405760e060020a60003504635b2cdda3811461006f5780638da5cb5b14610081578063b656e9f414610098578063fc44fd28146100a4575b6101de6000805460ff75010000000000000000000000000000000000000000009091041615156101ea57610002565b6101f0600154600160a060020a031681565b6101f06000546101009004600160a060020a031681565b6101de60005460ff1681565b6000805475ff0000000000000000000000000000000000000000001916908190556001546102039161020591600160a060020a0390811691308216319133811661010090920416146102075760a0604052600960609081527f6f6e6c794f776e65720000000000000000000000000000000000000000000000608052610249905b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff1615156102f657610002565b15156060908152602090f35b50600190565b600160a060020a03166060908152602090f35b005b565b600034111561024e5760a0604052600760609081527f6e6f45746865720000000000000000000000000000000000000000000000000060805261024990610125565b6102f2565b81816060600081818185876185025a03f19250505015156102a65760408051808201909152601181527f7061794f75743a73656e644661696c6564000000000000000000000000000000602082015261024990610125565b6040805133600160a060020a03168152346020820152808201839052905183917f660c325e06928b5007bda0b9f8b5ce13ff32f2ccabf94c004b1b1994cb718605919081900360600190a25b5050565b5056606060408181526000805460ff60a860020a60ff0201191675010000000000000000000000000000000000000000001790558061041a833960a09052516080513380600060016101000a815481600160a060020a03021916908302179055505081600160006101000a815481600160a060020a030219169083021790555080600260006101000a815481600160a060020a0302191690830217905550505061036f806100ab6000396000f3606060405236156100565760e060020a60003504635b2cdda381146100855780638da5cb5b14610097578063a8bcbf3c146100ae578063b656e9f4146101d4578063bb582db6146101e0578063fc44fd28146101f2575b61022f6000805460ff750100000000000000000000000000000000000000000090910416151561024357610002565b610249600254600160a060020a031681565b6102496000546101009004600160a060020a031681565b61026660043560015461026890600160a060020a0316825b6000546101009004600160a060020a0390811633909116146102c05760408051808201909152600981527f6f6e6c794f776e657200000000000000000000000000000000000000000000006020820152610306905b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101b45780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff16151561026857610002565b61022f60005460ff1681565b610249600154600160a060020a031681565b6102666000805475ff0000000000000000000000000000000000000000001916905560025461026b90600160a060020a03908116903016316100c6565b604080519115158252519081900360200190f35b50600190565b60408051600160a060020a03929092168252519081900360200190f35b005b50565b565b6040805133600160a060020a0390811682523460208301528183018490529151918416917f660c325e06928b5007bda0b9f8b5ce13ff32f2ccabf94c004b1b1994cb7186059181900360600190a25b5050565b600034111561030b5760408051808201909152600781527f6e6f45746865720000000000000000000000000000000000000000000000000060208201526103069061011b565b6102bc565b604051600160a060020a038316908290600081818185876185025a03f192505050151561026d5760408051808201909152601181527f7061794f75743a73656e644661696c656400000000000000000000000000000060208201526103069061011b56606060408190526000805460ff60a860020a60ff0201191675010000000000000000000000000000000000000000001790556020806104138339506080604052513380600060016101000a815481600160a060020a03021916908302179055505080600160006101000a815481600160a060020a0302191690830217905550506103868061008d6000396000f36060604052361561004b5760e060020a600035046351fa7efd811461007a5780638da5cb5b146101a5578063b1a8b25a146101bc578063b656e9f4146101fd578063fc44fd2814610209575b6102466000805460ff750100000000000000000000000000000000000000000090910416151561025a57610002565b61026060043560005461027f906101009004600160a060020a0316825b6000546101009004600160a060020a0390811633909116146102d75760408051808201909152600981527f6f6e6c794f776e65720000000000000000000000000000000000000000000000602082015261031d905b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156101855780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff16151561027f57610002565b6102626000546101009004600160a060020a031681565b6102606000805475ff000000000000000000000000000000000000000000191690819055610282906101009004600160a060020a0390811690301631610097565b61024660005460ff1681565b6102606000805475ff0000000000000000000000000000000000000000001916905560015461028290600160a060020a0390811690301631610097565b604080519115158252519081900360200190f35b50600190565b005b60408051600160a060020a03929092168252519081900360200190f35b50565b565b6040805133600160a060020a0390811682523460208301528183018490529151918416917f660c325e06928b5007bda0b9f8b5ce13ff32f2ccabf94c004b1b1994cb7186059181900360600190a25b5050565b60003411156103225760408051808201909152600781527f6e6f457468657200000000000000000000000000000000000000000000000000602082015261031d906100ec565b6102d3565b604051600160a060020a038316908290600081818185876185025a03f19250505015156102845760408051808201909152601181527f7061794f75743a73656e644661696c6564000000000000000000000000000000602082015261031d906100ec56606060405236156102be5760e060020a600035046302410cf68114610337578063044a5f971461034857806306fdde031461039f578063089aa819146103fd5780630c103837146104065780630c3b7b961461041e5780630d40e8d61461042757806314841164146104305780631d107603146104425780631f2dc5ef1461044b57806321d3523c14610459578063313ce56714610467578063342d91851461047357806335d37dbb14610482578063427500201461048b57806344440a59146104945780634845d3f8146104a7578063490fc399146104b05780634b6753bc146104d557806353bc147e146104de5780635474fbd3146104e7578063558305f9146104f957806356a3f4ef146105055780635b6aa3c21461051357806360d3e4c51461052457806367cf91c9146105365780636b9c1d221461053f57806370606cda1461055157806370a082311461055a57806373f5f8ee1461057c5780637412c2231461058d5780637895f853146105ad5780637c2b8d0a146105b95780637e4a1731146105d157806381dd70db146105eb5780638c32e774146105f45780639496df3f1461060657806395d89b411461060f5780639bd90aae1461066d5780639cb74ab6146106765780639e47214a146106d6578063a8d5652e146106e7578063a9059cbb146106f0578063a988e3711461075e578063ab71b8ac14610776578063adbda5a81461077f578063aea3ad8c14610791578063b656e9f4146107a9578063ba0bface146107b5578063bf53e3ba146107c7578063c86a9dea146107d0578063cdd8d4e8146107eb578063cfebb88b146107f4578063da228f9c14610800578063dc7049bf14610809578063df23481514610812578063e0e325041461084c578063e2649caf1461085f578063e84f70541461086d578063fb75b2c7146108ad578063fea5d7b1146108bf578063ffa309e4146108fd575b610906600061091a601b5460009033600160a060020a03908116911614806102fd57506026546401000000009004600160a060020a0390811633909116145b806103175750602754600160a060020a0390811633909116145b80610a1e5750602854600160a060020a0390811633909116149050610a1b565b610906602154610100900460ff1681565b610a25601a54600160a060020a039081163390911614610fc05760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f647900000000000000000000000000006020820152610d7290610ba0565b6040805160038054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610a2793908301828280156111115780601f106110e657610100808354040283529160200191611111565b610a9560025481565b610a9560043560146020526000908152604090205481565b610a9560085481565b610a9560175481565b610aa7601b54600160a060020a031681565b610a9560185481565b610a955b6000611119610591565b610a25600061112933610561565b610ac460055460ff1681565b610a95600060646112cf61044f565b610a95600d5481565b610a9560205481565b6109066026546301000000900460ff1681565b610a9560075481565b601260209081526004356000908152604080822090925260243581522054610a959081565b610a9560015481565b610a95600b5481565b61090660215462010000900460ff1681565b61090660265460ff1681565b610a2560006112db33610561565b6109065b6008546020541015610a1b565b61090660265462010000900460ff1681565b610a9560245481565b610aa7602854600160a060020a031681565b610a9560165481565b610a956004355b600160a060020a03166000908152601e602052604090205490565b610a955b6000610a1e611420610591565b610ac45b600a546020546000919004600460ff82161161142c578061142f565b61090660215460ff1681565b610a9560043560136020526000908152604090205481565b610aa76026546401000000009004600160a060020a031681565b610a9560105481565b6109065b602054600954901015610a1b565b610a95600f5481565b6040805160048054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610a2793908301828280156111115780601f106110e657610100808354040283529160200191611111565b610a9560095481565b610906600435602435601a54600090600160a060020a0390811633909116146114355760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f64790000000000000000000000000000602082015261146890610ba0565b610906602654610100900460ff1681565b610a95600a5481565b6109066004356024356000600460236000505410156116c057602354600101815260126020908152604080832033600160a060020a031684529091528120548290111561166957604080822080548490039055602354600101825260156020528120805483900390556116c0565b610a95600435601d6020526000908152604090205481565b610a9560065481565b610a2560006000600061184a33610561565b610a9560043560156020526000908152604090205481565b61090660005460ff1681565b610aa7601a54600160a060020a031681565b610a95600e5481565b61090660043560256020526000908152604090205460ff1681565b610a95600c5481565b610a25611c6f33610561565b610a9560225481565b610a9560195481565b610a956004356024356044355b6009546000906001850160ff1684029081111561083b57506009545b80831115611d445760009150611d4a565b6109066021546301000000900460ff1681565b610a256000611d5233610561565b610a25600060006000600060006000341115611f4457604080518082019091526007815260c960020a663737a2ba3432b9026020820152611f7b90610ba0565b610aa7602754600160a060020a031681565b610906600435602435600060003411156122b257604080518082019091526007815260c960020a663737a2ba3432b902602082015261146890610ba0565b610a9560235481565b604080519115158252519081900360200190f35b151561097b57610a1e3360006000600060006000600060006000600060006000602160009054906101000a900460ff1615610adb57604080518082019091526009815260ba60020a681b9bdd131bd8dad959026020820152610b2d90610ba0565b6040805133600160a060020a0316815234602082015260608183018190526022908201527f52656365766965642065746865722066726f6d204d616e616765644163636f7560808201527f6e7400000000000000000000000000000000000000000000000000000000000060a082015290517fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9109181900360c00190a15060015b90565b9050610a1b565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610a875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b602154610100900460ff1615610c595760408051808201909152600b81527f6e6f7452656c65617365640000000000000000000000000000000000000000006020820152610b2d90610ba0565b60009a505b50505050505050505050919050565b611468606060405190810160405280603381526020017f6661696c65643a7472616e736665723a2063616e6e6f742073656e642073656e81526020017f6420746f205f70726f6a65637457616c6c6574000000000000000000000000008152602001505b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff1615156112cc57610002565b60003411610c8c57604080518082019091526008815260c160020a673430b9a2ba3432b9026020820152610b2d90610ba0565b6000995060009850610c9c610517565b97506064610ca861044f565b60025402049650349550610cba610580565b94508460001415610d055760408051808201909152600e81527f6e6f546f6b656e73546f53656c6c0000000000000000000000000000000000006020820152610b2890610ba0565b94505b868610610d25578686049350610d74858560008183106123d857816123da565b50600160a060020a038b166000908152601c60209081526040808320805489019055600254601d9092529091208054918b028a039182019055610df4602154610100900460ff16156123e1575b565b9250846000148015610d895750602054600954145b15610d92578392505b600160a060020a038c166000908152601e60209081526040808320805487019055815486018255601c90915290208054888502908101909155998301999889019891506064610ddf61044f565b60025402049650348990039550610d02610580565b6000811115610e6257604051601b54600160a060020a031690600090839082818181858883f193505050501515610e625760408051808201909152601581527f657874726142616c616e63653a73656e644661696c00000000000000000000006020820152610b2d90610ba0565b60408051600160a060020a0333811682523460208301528183018d90529151918e16917fe2cbb9b7dba3b339b259c4f199464ccf9c277a3ff556b2c0db2b0abacdbeedde9181900360600190a287158015610ec05750610ec0610517565b15610f1457602080546040805133600160a060020a03168152349381019390935282810191909152517f6bb4d57357a9a55fe03d55925e248fcb44bf65dfe36af0c16c22910ae3bb8fb29181900360600190a15b60215460ff1615610f63576040805133600160a060020a0316815234602082015281517fbb9b02a8573d9d68d38e541b0e14a32a2dfe031aade3a25dd3de928fbc3b309d929181900390910190a15b602154610100900460ff1615610fb7576040805133600160a060020a0316815234602082015281517f32f04209c78f4db9d444b9dc3182c73fc63bb6fdd517c19f36798ad870fb1cfe929181900390910190a15b60019a50610b2d565b60003411610ff357604080518082019091526008815260c160020a673430b9a2ba3432b9026020820152610d7290610ba0565b602654610100900460ff1615156110415760408051808201909152601281527f6f6e6c7948617276657374456e61626c656400000000000000000000000000006020820152610d7290610ba0565b6026546301000000900460ff16156110905760408051808201909152601881527f6f6e6c79446973747269627574696f6e4e6f74526561647900000000000000006020820152610d7290610ba0565b600c54610d72905b60265462010000900460ff16156124ec5760408051808201909152601d81527f6f6e6c79446973747269627574696f6e4e6f74496e50726f6772657373000000602082015261118f90610ba0565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b505050505081565b60050260640160ff169050610a1b565b6000141561115c5760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b600034111561119457604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b6112cc565b60215460ff1615156111cd5760408051808201909152600a815260b260020a691bdb9b1e531bd8dad95902602082015261118f90610ba0565b60235460049010156112165760408051808201909152601381527f63757272656e7446697363616c596561723c3400000000000000000000000000602082015261118f90610ba0565b5033600160a060020a0316600090815260146020818152604080842080546017805491909103808255601e85529290952080549290920185559054928252919091556022549054600e549254606491909201929092029190910490819011156112cc576026805461ff0019166101001790556040805133600160a060020a0316815234602082015281517fe6a8fe04d793748334015ee5de6eb69ddb7c3b29df2251bc5b376305ae5cd800929181900390910190a15b50565b60025402049050610a1b565b6000141561130e5760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b600034111561134157604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b6026546301000000900460ff1615156113915760408051808201909152601581527f6f6e6c79446973747269627574696f6e52656164790000000000000000000000602082015261118f90610ba0565b50600160a060020a033381166000818152601e602052604080822080549083905560265482517f9f3ef4300000000000000000000000000000000000000000000000000000000081526004810195909552602485018290529151909464010000000090920490911692639f3ef430926044808301939192829003018183876161da5a03f1156100025750505050565b602054600a549061081f565b60045b91505090565b6000341161146d57604080518082019091526008815260c160020a673430b9a2ba3432b902602082015261146890610ba0565b61155b565b60235460009081526025602052604090205460ff161580611490575060265460ff165b806114a25750602654610100900460ff165b156115615760408051600160a060020a033381168252346020830152851681830152606081018490526000608082015290517fd5de30e0bdd3cd6bfbc9d6142e5ded72ce738d3d230051400271eaa0c63b3be39181900360a00190a161155b565b60408051600160a060020a033381168252346020830152851681830152606081018490526001608082015290517fd5de30e0bdd3cd6bfbc9d6142e5ded72ce738d3d230051400271eaa0c63b3be39181900360a00190a15b92915050565b30600160a060020a03163182106115da57611468606060405190810160405280603181526020017f6661696c65643a6d676d74496e7665737450726f6a6563743a20616d6f756e7481526020017f203e3d2061637475616c42616c616e6365000000000000000000000000000000815260200150610ba0565b604051600160a060020a038416908390600081818185876185025a03f192505050151561150357611468606060405190810160405280603781526020017f6661696c65643a6d676d74496e7665737450726f6a6563743a2063616e6e6f7481526020017f2073656e6420746f205f70726f6a65637457616c6c6574000000000000000000815260200150610ba0565b602380546001908101600081815260126020818152604080842033600160a060020a031680865290835281852054958552601583528185208054969096039095559554909401825283528381209181529152908120555b33600160a060020a0316600090815260136020526040902054829011156116fb57604060002080548390039055601680548390039055611721565b33600160a060020a03166000908152601360205260408120805460168054919091039055555b33600160a060020a03166000908152601460205260409020548290111561175c57604060002080548390039055601780548390039055611782565b33600160a060020a03166000908152601460205260408120805460178054919091039055555b60215460ff1680156117c957506117c98383600060003411156127d357604080518082019091526007815260c960020a663737a2ba3432b902602082015261146890610ba0565b156117d65750600161155b565b60215460ff161515610b3c57611468606060405190810160405280602681526020017f6661696c65643a7472616e736665723a20697346756e644c6f636b656420697381526020017f2066616c73650000000000000000000000000000000000000000000000000000815260200150610ba0565b6000141561187d5760408051808201909152601081526000805160206128b383398151915260208201526118b090610ba0565b60003411156118b557604080518082019091526007815260c960020a663737a2ba3432b90260208201526118b090610ba0565b611c6a565b60215460ff1615156118ee5760408051808201909152600a815260b260020a691bdb9b1e531bd8dad9590260208201526118b090610ba0565b6023546001600081905260256020527f20a3e2dd35f58e582c5288344c035e137cace924bb9daf3762b8ef5a58327e26549101935060ff1615156119315761194c565b60235460039011611ace57600b546024544291011015611b0b575b6000838152601260209081526040808320600160a060020a03331680855290835281842080548886526015808652848720805492909203808355938752601e86529386208054909301815591549055602254835460105495899052929093525460649190920190920291909104925082901115611c6a578260011415611b4857601b60009054906101000a9004600160a060020a0316600160a060020a031663b1a8b25a6040518160e060020a0281526004018090506000604051808303816000876161da5a03f115610002575050505030600160a060020a03908116316018819055600d5460046064929091029190910490810460195560285460405191921690600090839082818181858883f193505050501515611b48576118b0606060405190810160405280602381526020017f6b69636b6f66663a4d616e6167656d656e74466565506f6f6c57616c6c65744681526020017f61696c0000000000000000000000000000000000000000000000000000000000815260200150610ba0565b60408051808201909152600f81527f6b69636b4f66663a34746859656172000000000000000000000000000000000060208201526118b090610ba0565b60408051808201909152601081527f6b69636b4f66663a746f6f4561726c790000000000000000000000000000000060208201526118b090610ba0565b600083815260256020526040808220805460ff19166001179055602385905542602490815581516028546019547fa8bcbf3c00000000000000000000000000000000000000000000000000000000835260048301529251600160a060020a03939093169363a8bcbf3c93838301939192909190829003018183876161da5a03f1156100025750506040805133600160a060020a0316815234602082015280820186905290517f43b50d8e46a4af80642a7d3903d182b8f5ab87b17e5bef9fd8ba4c3ba6ef9f0f92509081900360600190a16040805160195433600160a060020a03168252346020830152818301526001606082015290517f47fa1cbddad7488af88763b839f5f5436be7541a8bbfd7fa14d9c6c7581e8c1d9181900360800190a15b505050565b60001415611ca25760408051808201909152601081526000805160206128b38339815191526020820152610d7290610ba0565b60265460ff1615611cea5760408051808201909152600d81527f6f6e6c794e6f7446726f7a656e000000000000000000000000000000000000006020820152610d7290610ba0565b6000341115611d1d57604080518082019091526007815260c960020a663737a2ba3432b9026020820152610d7290610ba0565b33600160a060020a0316600090815260136020526040812080546016805491909103905555565b82810391505b509392505050565b60001415611d855760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b6000341115611db857604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b60215460ff161515611df15760408051808201909152600a815260b260020a691bdb9b1e531bd8dad95902602082015261118f90610ba0565b60235460049010611e395760408051808201909152601481527f63757272656e7446697363616c596561723e3d34000000000000000000000000602082015261118f90610ba0565b60265462010000900460ff1615611e875760408051808201909152601d81527f6f6e6c79446973747269627574696f6e4e6f74496e50726f6772657373000000602082015261118f90610ba0565b5033600160a060020a0316600090815260136020818152604080842080546016805491909103808255601e8552929095208054929092018555905492825291909155600f5460225491549254606493909201029190910490819011156112cc576026805460ff19166001179055611efe6000611098565b6040805133600160a060020a0316815234602082015281517fa3a0ee24545ff02dd0d20d670461167188c7adc4c2973fd0d1b294e1e576fc79929181900390910190a150565b60215460ff1615611f8057604080518082019091526009815260ba60020a681b9bdd131bd8dad959026020820152611f7b90610ba0565b6122ab565b611f8933610561565b60001415611fbc5760408051808201909152601081526000805160206128b38339815191526020820152611f7b90610ba0565b33600160a060020a03166000908152601c602052604081205414156120185760408051808201909152600a81527f6e6f576569476976656e000000000000000000000000000000000000000000006020820152611f7b90610ba0565b6020805433600160a060020a03166000908152601e90925260409091205411156120795760408051808201909152601181527f696e76616c6964546f6b656e436f756e740000000000000000000000000000006020820152611f7b90610ba0565b612081610517565b600160a060020a033381166000908152601c602090815260408083208054601d8085528386208054601e87528588208054908990559488905591865286905584548390039094558251601b547f51fa7efd000000000000000000000000000000000000000000000000000000008252600482018690529351979c50909a509298509650889550909216926351fa7efd926024818101939291829003018183876161da5a03f11561000257505060405133600160a060020a03169150600090839082818181858883f1935050505015156121f65733600160a060020a03167fba1c02018a9ab9c5ecec972230d1c4444bd911f121639f33da13896099655b3533348460006040518085600160a060020a03168152602001848152602001838152602001821515815260200194505050505060405180910390a260408051808201909152601181527f726566756e643a53656e644661696c65640000000000000000000000000000006020820152611f7b90610ba0565b6040805133600160a060020a03168082523460208301528183018490526001606083015291517fba1c02018a9ab9c5ecec972230d1c4444bd911f121639f33da13896099655b359181900360800190a2841580156122575750612257610517565b156122ab57602080546040805133600160a060020a03168152349381019390935282810191909152517f6bb4d57357a9a55fe03d55925e248fcb44bf65dfe36af0c16c22910ae3bb8fb29181900360600190a15b5050505050565b601a54600160a060020a0390811633909116146123065760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f64790000000000000000000000000000602082015261146890610ba0565b6022546006548391820111156123535760408051808201909152600c81527f6869744d6178426f756e7479000000000000000000000000000000000000000060208201526123d390610ba0565b600160a060020a038481166000818152601e6020908152604091829020805488019055602280548801905581513390941684523490840152828101919091526060820185905260016080830152517fd169a02076bf076f24fa9c265d5ed41dc57e6553208e7a8e7190cd90c365f1849181900360a00190a15b5092915050565b6123cc565b825b905061155b565b6123e96105f8565b6021805460ff19169091179081905560ff161580156124155750602160029054906101000a900460ff16155b801561242357506001544210155b1561245557612430610517565b15612443576021805460ff191660011790555b6021805462ff00001916620100001790555b60215460ff1615801561247257506021546301000000900460ff16155b80156124845750600754600154014210155b156124b857612491610517565b156124a4576021805460ff191660011790555b6021805463ff000000191663010000001790555b6021546301000000900460ff1680156124d657506124d4610517565b155b15610d72576021805461ff001916610100179055565b6026805463ff0000001962ff00001990911662010000171663010000001790556125ac602654604051640100000000909104600160a060020a03908116916000913016319082818181858883f193505050501515610d7257610d72606060405190810160405280602381526020017f70617942616c616e6365546f52657475726e57616c6c65743a73656e6446616981526020017f6c65640000000000000000000000000000000000000000000000000000000000815260200150610ba0565b602860009054906101000a9004600160a060020a0316600160a060020a031663fc44fd286040518160e060020a0281526004018090506000604051808303816000876161da5a03f11561000257506040805160275460e360020a631f889fa50282529151600160a060020a03929092169350600481810192600092909190829003018183876161da5a03f1156100025750601b546040805160e360020a631f889fa50281529051600160a060020a03929092169350600481810192600092909190829003018183876161da5a03f1156100025750505060008111156126e457602660049054906101000a9004600160a060020a0316600160a060020a031663b8b27765826040518260e060020a028152600401808281526020019150506000604051808303816000876161da5a03f115610002575050505b602654602254602054604080517f2033d9ae0000000000000000000000000000000000000000000000000000000081529190920160048201529051640100000000909204600160a060020a031691632033d9ae91602480820192600092909190829003018183876161da5a03f11561000257505060265460408051600160a060020a033381168252346020830152640100000000909304909216318282015260016060830152517f6816fcd617af2edc3ccc34b8a63bab368d79f315e065779259bb6a13541eaea292509081900360800190a16000602660026101000a81548160ff0219169083021790555050565b600082116127e35750600061155b565b33600160a060020a03166000908152601e60205260409020548290101561280c5750600061155b565b600160a060020a0383166000908152601e602052604090205480830110156128365750600061155b565b600160a060020a033381166000818152601e60209081526040808320805488900390559387168083529184902080548701905583518381523491810191909152808401869052925190927fe921528ef8652e1a832f8063bcbca0186d6c5a28413c90acecaf074846c412db919081900360600190a350600161155b566f6e6c79546f6b656e486f6c6465727300000000000000000000000000000000000000000000000000000000b79ab5993cef2e0b714a66f3eda73b55de812d310000000000000000000000000000000000000000000000000000000057ebbed00000000000000000000000000000000000000000000000000000000000278d00000000000000000000000000000000000000000000000000000000000190c8000000000000000000000000000000000000000000000000000000000008f0d180000000000000000000000000000000000000000000000000000000000ee6b2800000000000000000000000000000000000000000000000000000000002faf0800000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x606060405236156102be5760e060020a600035046302410cf68114610337578063044a5f971461034857806306fdde031461039f578063089aa819146103fd5780630c103837146104065780630c3b7b961461041e5780630d40e8d61461042757806314841164146104305780631d107603146104425780631f2dc5ef1461044b57806321d3523c14610459578063313ce56714610467578063342d91851461047357806335d37dbb14610482578063427500201461048b57806344440a59146104945780634845d3f8146104a7578063490fc399146104b05780634b6753bc146104d557806353bc147e146104de5780635474fbd3146104e7578063558305f9146104f957806356a3f4ef146105055780635b6aa3c21461051357806360d3e4c51461052457806367cf91c9146105365780636b9c1d221461053f57806370606cda1461055157806370a082311461055a57806373f5f8ee1461057c5780637412c2231461058d5780637895f853146105ad5780637c2b8d0a146105b95780637e4a1731146105d157806381dd70db146105eb5780638c32e774146105f45780639496df3f1461060657806395d89b411461060f5780639bd90aae1461066d5780639cb74ab6146106765780639e47214a146106d6578063a8d5652e146106e7578063a9059cbb146106f0578063a988e3711461075e578063ab71b8ac14610776578063adbda5a81461077f578063aea3ad8c14610791578063b656e9f4146107a9578063ba0bface146107b5578063bf53e3ba146107c7578063c86a9dea146107d0578063cdd8d4e8146107eb578063cfebb88b146107f4578063da228f9c14610800578063dc7049bf14610809578063df23481514610812578063e0e325041461084c578063e2649caf1461085f578063e84f70541461086d578063fb75b2c7146108ad578063fea5d7b1146108bf578063ffa309e4146108fd575b610906600061091a601b5460009033600160a060020a03908116911614806102fd57506026546401000000009004600160a060020a0390811633909116145b806103175750602754600160a060020a0390811633909116145b80610a1e5750602854600160a060020a0390811633909116149050610a1b565b610906602154610100900460ff1681565b610a25601a54600160a060020a039081163390911614610fc05760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f647900000000000000000000000000006020820152610d7290610ba0565b6040805160038054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610a2793908301828280156111115780601f106110e657610100808354040283529160200191611111565b610a9560025481565b610a9560043560146020526000908152604090205481565b610a9560085481565b610a9560175481565b610aa7601b54600160a060020a031681565b610a9560185481565b610a955b6000611119610591565b610a25600061112933610561565b610ac460055460ff1681565b610a95600060646112cf61044f565b610a95600d5481565b610a9560205481565b6109066026546301000000900460ff1681565b610a9560075481565b601260209081526004356000908152604080822090925260243581522054610a959081565b610a9560015481565b610a95600b5481565b61090660215462010000900460ff1681565b61090660265460ff1681565b610a2560006112db33610561565b6109065b6008546020541015610a1b565b61090660265462010000900460ff1681565b610a9560245481565b610aa7602854600160a060020a031681565b610a9560165481565b610a956004355b600160a060020a03166000908152601e602052604090205490565b610a955b6000610a1e611420610591565b610ac45b600a546020546000919004600460ff82161161142c578061142f565b61090660215460ff1681565b610a9560043560136020526000908152604090205481565b610aa76026546401000000009004600160a060020a031681565b610a9560105481565b6109065b602054600954901015610a1b565b610a95600f5481565b6040805160048054602060026001831615610100026000190190921691909104601f8101829004820284018201909452838352610a2793908301828280156111115780601f106110e657610100808354040283529160200191611111565b610a9560095481565b610906600435602435601a54600090600160a060020a0390811633909116146114355760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f64790000000000000000000000000000602082015261146890610ba0565b610906602654610100900460ff1681565b610a95600a5481565b6109066004356024356000600460236000505410156116c057602354600101815260126020908152604080832033600160a060020a031684529091528120548290111561166957604080822080548490039055602354600101825260156020528120805483900390556116c0565b610a95600435601d6020526000908152604090205481565b610a9560065481565b610a2560006000600061184a33610561565b610a9560043560156020526000908152604090205481565b61090660005460ff1681565b610aa7601a54600160a060020a031681565b610a95600e5481565b61090660043560256020526000908152604090205460ff1681565b610a95600c5481565b610a25611c6f33610561565b610a9560225481565b610a9560195481565b610a956004356024356044355b6009546000906001850160ff1684029081111561083b57506009545b80831115611d445760009150611d4a565b6109066021546301000000900460ff1681565b610a256000611d5233610561565b610a25600060006000600060006000341115611f4457604080518082019091526007815260c960020a663737a2ba3432b9026020820152611f7b90610ba0565b610aa7602754600160a060020a031681565b610906600435602435600060003411156122b257604080518082019091526007815260c960020a663737a2ba3432b902602082015261146890610ba0565b610a9560235481565b604080519115158252519081900360200190f35b151561097b57610a1e3360006000600060006000600060006000600060006000602160009054906101000a900460ff1615610adb57604080518082019091526009815260ba60020a681b9bdd131bd8dad959026020820152610b2d90610ba0565b6040805133600160a060020a0316815234602082015260608183018190526022908201527f52656365766965642065746865722066726f6d204d616e616765644163636f7560808201527f6e7400000000000000000000000000000000000000000000000000000000000060a082015290517fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9109181900360c00190a15060015b90565b9050610a1b565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610a875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b6040805160ff929092168252519081900360200190f35b602154610100900460ff1615610c595760408051808201909152600b81527f6e6f7452656c65617365640000000000000000000000000000000000000000006020820152610b2d90610ba0565b60009a505b50505050505050505050919050565b611468606060405190810160405280603381526020017f6661696c65643a7472616e736665723a2063616e6e6f742073656e642073656e81526020017f6420746f205f70726f6a65637457616c6c6574000000000000000000000000008152602001505b7fe9c64ad7aacefe9ed905822d2a5a6ca63ffdc82b257709dc05a534d60d92f9103334836040518084600160a060020a03168152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f168015610c395780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160005460ff1615156112cc57610002565b60003411610c8c57604080518082019091526008815260c160020a673430b9a2ba3432b9026020820152610b2d90610ba0565b6000995060009850610c9c610517565b97506064610ca861044f565b60025402049650349550610cba610580565b94508460001415610d055760408051808201909152600e81527f6e6f546f6b656e73546f53656c6c0000000000000000000000000000000000006020820152610b2890610ba0565b94505b868610610d25578686049350610d74858560008183106123d857816123da565b50600160a060020a038b166000908152601c60209081526040808320805489019055600254601d9092529091208054918b028a039182019055610df4602154610100900460ff16156123e1575b565b9250846000148015610d895750602054600954145b15610d92578392505b600160a060020a038c166000908152601e60209081526040808320805487019055815486018255601c90915290208054888502908101909155998301999889019891506064610ddf61044f565b60025402049650348990039550610d02610580565b6000811115610e6257604051601b54600160a060020a031690600090839082818181858883f193505050501515610e625760408051808201909152601581527f657874726142616c616e63653a73656e644661696c00000000000000000000006020820152610b2d90610ba0565b60408051600160a060020a0333811682523460208301528183018d90529151918e16917fe2cbb9b7dba3b339b259c4f199464ccf9c277a3ff556b2c0db2b0abacdbeedde9181900360600190a287158015610ec05750610ec0610517565b15610f1457602080546040805133600160a060020a03168152349381019390935282810191909152517f6bb4d57357a9a55fe03d55925e248fcb44bf65dfe36af0c16c22910ae3bb8fb29181900360600190a15b60215460ff1615610f63576040805133600160a060020a0316815234602082015281517fbb9b02a8573d9d68d38e541b0e14a32a2dfe031aade3a25dd3de928fbc3b309d929181900390910190a15b602154610100900460ff1615610fb7576040805133600160a060020a0316815234602082015281517f32f04209c78f4db9d444b9dc3182c73fc63bb6fdd517c19f36798ad870fb1cfe929181900390910190a15b60019a50610b2d565b60003411610ff357604080518082019091526008815260c160020a673430b9a2ba3432b9026020820152610d7290610ba0565b602654610100900460ff1615156110415760408051808201909152601281527f6f6e6c7948617276657374456e61626c656400000000000000000000000000006020820152610d7290610ba0565b6026546301000000900460ff16156110905760408051808201909152601881527f6f6e6c79446973747269627574696f6e4e6f74526561647900000000000000006020820152610d7290610ba0565b600c54610d72905b60265462010000900460ff16156124ec5760408051808201909152601d81527f6f6e6c79446973747269627574696f6e4e6f74496e50726f6772657373000000602082015261118f90610ba0565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b505050505081565b60050260640160ff169050610a1b565b6000141561115c5760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b600034111561119457604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b6112cc565b60215460ff1615156111cd5760408051808201909152600a815260b260020a691bdb9b1e531bd8dad95902602082015261118f90610ba0565b60235460049010156112165760408051808201909152601381527f63757272656e7446697363616c596561723c3400000000000000000000000000602082015261118f90610ba0565b5033600160a060020a0316600090815260146020818152604080842080546017805491909103808255601e85529290952080549290920185559054928252919091556022549054600e549254606491909201929092029190910490819011156112cc576026805461ff0019166101001790556040805133600160a060020a0316815234602082015281517fe6a8fe04d793748334015ee5de6eb69ddb7c3b29df2251bc5b376305ae5cd800929181900390910190a15b50565b60025402049050610a1b565b6000141561130e5760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b600034111561134157604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b6026546301000000900460ff1615156113915760408051808201909152601581527f6f6e6c79446973747269627574696f6e52656164790000000000000000000000602082015261118f90610ba0565b50600160a060020a033381166000818152601e602052604080822080549083905560265482517f9f3ef4300000000000000000000000000000000000000000000000000000000081526004810195909552602485018290529151909464010000000090920490911692639f3ef430926044808301939192829003018183876161da5a03f1156100025750505050565b602054600a549061081f565b60045b91505090565b6000341161146d57604080518082019091526008815260c160020a673430b9a2ba3432b902602082015261146890610ba0565b61155b565b60235460009081526025602052604090205460ff161580611490575060265460ff165b806114a25750602654610100900460ff165b156115615760408051600160a060020a033381168252346020830152851681830152606081018490526000608082015290517fd5de30e0bdd3cd6bfbc9d6142e5ded72ce738d3d230051400271eaa0c63b3be39181900360a00190a161155b565b60408051600160a060020a033381168252346020830152851681830152606081018490526001608082015290517fd5de30e0bdd3cd6bfbc9d6142e5ded72ce738d3d230051400271eaa0c63b3be39181900360a00190a15b92915050565b30600160a060020a03163182106115da57611468606060405190810160405280603181526020017f6661696c65643a6d676d74496e7665737450726f6a6563743a20616d6f756e7481526020017f203e3d2061637475616c42616c616e6365000000000000000000000000000000815260200150610ba0565b604051600160a060020a038416908390600081818185876185025a03f192505050151561150357611468606060405190810160405280603781526020017f6661696c65643a6d676d74496e7665737450726f6a6563743a2063616e6e6f7481526020017f2073656e6420746f205f70726f6a65637457616c6c6574000000000000000000815260200150610ba0565b602380546001908101600081815260126020818152604080842033600160a060020a031680865290835281852054958552601583528185208054969096039095559554909401825283528381209181529152908120555b33600160a060020a0316600090815260136020526040902054829011156116fb57604060002080548390039055601680548390039055611721565b33600160a060020a03166000908152601360205260408120805460168054919091039055555b33600160a060020a03166000908152601460205260409020548290111561175c57604060002080548390039055601780548390039055611782565b33600160a060020a03166000908152601460205260408120805460178054919091039055555b60215460ff1680156117c957506117c98383600060003411156127d357604080518082019091526007815260c960020a663737a2ba3432b902602082015261146890610ba0565b156117d65750600161155b565b60215460ff161515610b3c57611468606060405190810160405280602681526020017f6661696c65643a7472616e736665723a20697346756e644c6f636b656420697381526020017f2066616c73650000000000000000000000000000000000000000000000000000815260200150610ba0565b6000141561187d5760408051808201909152601081526000805160206128b383398151915260208201526118b090610ba0565b60003411156118b557604080518082019091526007815260c960020a663737a2ba3432b90260208201526118b090610ba0565b611c6a565b60215460ff1615156118ee5760408051808201909152600a815260b260020a691bdb9b1e531bd8dad9590260208201526118b090610ba0565b6023546001600081905260256020527f20a3e2dd35f58e582c5288344c035e137cace924bb9daf3762b8ef5a58327e26549101935060ff1615156119315761194c565b60235460039011611ace57600b546024544291011015611b0b575b6000838152601260209081526040808320600160a060020a03331680855290835281842080548886526015808652848720805492909203808355938752601e86529386208054909301815591549055602254835460105495899052929093525460649190920190920291909104925082901115611c6a578260011415611b4857601b60009054906101000a9004600160a060020a0316600160a060020a031663b1a8b25a6040518160e060020a0281526004018090506000604051808303816000876161da5a03f115610002575050505030600160a060020a03908116316018819055600d5460046064929091029190910490810460195560285460405191921690600090839082818181858883f193505050501515611b48576118b0606060405190810160405280602381526020017f6b69636b6f66663a4d616e6167656d656e74466565506f6f6c57616c6c65744681526020017f61696c0000000000000000000000000000000000000000000000000000000000815260200150610ba0565b60408051808201909152600f81527f6b69636b4f66663a34746859656172000000000000000000000000000000000060208201526118b090610ba0565b60408051808201909152601081527f6b69636b4f66663a746f6f4561726c790000000000000000000000000000000060208201526118b090610ba0565b600083815260256020526040808220805460ff19166001179055602385905542602490815581516028546019547fa8bcbf3c00000000000000000000000000000000000000000000000000000000835260048301529251600160a060020a03939093169363a8bcbf3c93838301939192909190829003018183876161da5a03f1156100025750506040805133600160a060020a0316815234602082015280820186905290517f43b50d8e46a4af80642a7d3903d182b8f5ab87b17e5bef9fd8ba4c3ba6ef9f0f92509081900360600190a16040805160195433600160a060020a03168252346020830152818301526001606082015290517f47fa1cbddad7488af88763b839f5f5436be7541a8bbfd7fa14d9c6c7581e8c1d9181900360800190a15b505050565b60001415611ca25760408051808201909152601081526000805160206128b38339815191526020820152610d7290610ba0565b60265460ff1615611cea5760408051808201909152600d81527f6f6e6c794e6f7446726f7a656e000000000000000000000000000000000000006020820152610d7290610ba0565b6000341115611d1d57604080518082019091526007815260c960020a663737a2ba3432b9026020820152610d7290610ba0565b33600160a060020a0316600090815260136020526040812080546016805491909103905555565b82810391505b509392505050565b60001415611d855760408051808201909152601081526000805160206128b3833981519152602082015261118f90610ba0565b6000341115611db857604080518082019091526007815260c960020a663737a2ba3432b902602082015261118f90610ba0565b60215460ff161515611df15760408051808201909152600a815260b260020a691bdb9b1e531bd8dad95902602082015261118f90610ba0565b60235460049010611e395760408051808201909152601481527f63757272656e7446697363616c596561723e3d34000000000000000000000000602082015261118f90610ba0565b60265462010000900460ff1615611e875760408051808201909152601d81527f6f6e6c79446973747269627574696f6e4e6f74496e50726f6772657373000000602082015261118f90610ba0565b5033600160a060020a0316600090815260136020818152604080842080546016805491909103808255601e8552929095208054929092018555905492825291909155600f5460225491549254606493909201029190910490819011156112cc576026805460ff19166001179055611efe6000611098565b6040805133600160a060020a0316815234602082015281517fa3a0ee24545ff02dd0d20d670461167188c7adc4c2973fd0d1b294e1e576fc79929181900390910190a150565b60215460ff1615611f8057604080518082019091526009815260ba60020a681b9bdd131bd8dad959026020820152611f7b90610ba0565b6122ab565b611f8933610561565b60001415611fbc5760408051808201909152601081526000805160206128b38339815191526020820152611f7b90610ba0565b33600160a060020a03166000908152601c602052604081205414156120185760408051808201909152600a81527f6e6f576569476976656e000000000000000000000000000000000000000000006020820152611f7b90610ba0565b6020805433600160a060020a03166000908152601e90925260409091205411156120795760408051808201909152601181527f696e76616c6964546f6b656e436f756e740000000000000000000000000000006020820152611f7b90610ba0565b612081610517565b600160a060020a033381166000908152601c602090815260408083208054601d8085528386208054601e87528588208054908990559488905591865286905584548390039094558251601b547f51fa7efd000000000000000000000000000000000000000000000000000000008252600482018690529351979c50909a509298509650889550909216926351fa7efd926024818101939291829003018183876161da5a03f11561000257505060405133600160a060020a03169150600090839082818181858883f1935050505015156121f65733600160a060020a03167fba1c02018a9ab9c5ecec972230d1c4444bd911f121639f33da13896099655b3533348460006040518085600160a060020a03168152602001848152602001838152602001821515815260200194505050505060405180910390a260408051808201909152601181527f726566756e643a53656e644661696c65640000000000000000000000000000006020820152611f7b90610ba0565b6040805133600160a060020a03168082523460208301528183018490526001606083015291517fba1c02018a9ab9c5ecec972230d1c4444bd911f121639f33da13896099655b359181900360800190a2841580156122575750612257610517565b156122ab57602080546040805133600160a060020a03168152349381019390935282810191909152517f6bb4d57357a9a55fe03d55925e248fcb44bf65dfe36af0c16c22910ae3bb8fb29181900360600190a15b5050505050565b601a54600160a060020a0390811633909116146123065760408051808201909152601281527f6f6e6c794d616e6167656d656e74426f64790000000000000000000000000000602082015261146890610ba0565b6022546006548391820111156123535760408051808201909152600c81527f6869744d6178426f756e7479000000000000000000000000000000000000000060208201526123d390610ba0565b600160a060020a038481166000818152601e6020908152604091829020805488019055602280548801905581513390941684523490840152828101919091526060820185905260016080830152517fd169a02076bf076f24fa9c265d5ed41dc57e6553208e7a8e7190cd90c365f1849181900360a00190a15b5092915050565b6123cc565b825b905061155b565b6123e96105f8565b6021805460ff19169091179081905560ff161580156124155750602160029054906101000a900460ff16155b801561242357506001544210155b1561245557612430610517565b15612443576021805460ff191660011790555b6021805462ff00001916620100001790555b60215460ff1615801561247257506021546301000000900460ff16155b80156124845750600754600154014210155b156124b857612491610517565b156124a4576021805460ff191660011790555b6021805463ff000000191663010000001790555b6021546301000000900460ff1680156124d657506124d4610517565b155b15610d72576021805461ff001916610100179055565b6026805463ff0000001962ff00001990911662010000171663010000001790556125ac602654604051640100000000909104600160a060020a03908116916000913016319082818181858883f193505050501515610d7257610d72606060405190810160405280602381526020017f70617942616c616e6365546f52657475726e57616c6c65743a73656e6446616981526020017f6c65640000000000000000000000000000000000000000000000000000000000815260200150610ba0565b602860009054906101000a9004600160a060020a0316600160a060020a031663fc44fd286040518160e060020a0281526004018090506000604051808303816000876161da5a03f11561000257506040805160275460e360020a631f889fa50282529151600160a060020a03929092169350600481810192600092909190829003018183876161da5a03f1156100025750601b546040805160e360020a631f889fa50281529051600160a060020a03929092169350600481810192600092909190829003018183876161da5a03f1156100025750505060008111156126e457602660049054906101000a9004600160a060020a0316600160a060020a031663b8b27765826040518260e060020a028152600401808281526020019150506000604051808303816000876161da5a03f115610002575050505b602654602254602054604080517f2033d9ae0000000000000000000000000000000000000000000000000000000081529190920160048201529051640100000000909204600160a060020a031691632033d9ae91602480820192600092909190829003018183876161da5a03f11561000257505060265460408051600160a060020a033381168252346020830152640100000000909304909216318282015260016060830152517f6816fcd617af2edc3ccc34b8a63bab368d79f315e065779259bb6a13541eaea292509081900360800190a16000602660026101000a81548160ff0219169083021790555050565b600082116127e35750600061155b565b33600160a060020a03166000908152601e60205260409020548290101561280c5750600061155b565b600160a060020a0383166000908152601e602052604090205480830110156128365750600061155b565b600160a060020a033381166000818152601e60209081526040808320805488900390559387168083529184902080548701905583518381523491810191909152808401869052925190927fe921528ef8652e1a832f8063bcbca0186d6c5a28413c90acecaf074846c412db919081900360600190a350600161155b566f6e6c79546f6b656e486f6c6465727300000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b79ab5993cef2e0b714a66f3eda73b55de812d310000000000000000000000000000000000000000000000000000000057ebbed00000000000000000000000000000000000000000000000000000000000278d00000000000000000000000000000000000000000000000000000000000190c8000000000000000000000000000000000000000000000000000000000008f0d180000000000000000000000000000000000000000000000000000000000ee6b2800000000000000000000000000000000000000000000000000000000002faf0800000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _managementBodyAddress (address): 0xb79Ab5993Cef2E0B714A66F3edA73b55DE812D31
Arg [1] : _closingTime (uint256): 1475067600
Arg [2] : _closingTimeExtensionPeriod (uint256): 2592000
Arg [3] : _lastKickoffDateBuffer (uint256): 26265600
Arg [4] : _minTokensToCreate (uint256): 150000000
Arg [5] : _maxTokensToCreate (uint256): 250000000
Arg [6] : _tokensPerTier (uint256): 50000000
Arg [7] : _isInTestMode (bool): False
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000b79ab5993cef2e0b714a66f3eda73b55de812d31
Arg [1] : 0000000000000000000000000000000000000000000000000000000057ebbed0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000278d00
Arg [3] : 000000000000000000000000000000000000000000000000000000000190c800
Arg [4] : 0000000000000000000000000000000000000000000000000000000008f0d180
Arg [5] : 000000000000000000000000000000000000000000000000000000000ee6b280
Arg [6] : 0000000000000000000000000000000000000000000000000000000002faf080
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
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.