ETH Price: $2,555.28 (+4.89%)

Contract

0xd9Ff8cc0433C995F3A9711F1400329cD6A40387f
 

Overview

ETH Balance

0.157723362828513393 ETH

Eth Value

$403.03 (@ $2,555.28/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Init Race120662502021-03-19 1:44:331281 days ago1616118273IN
0xd9Ff8cc0...D6A40387f
0 ETH0.02323584157
Withdraw Gains105991642020-08-05 10:19:151507 days ago1596622755IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0027640446
Init Race105958772020-08-04 22:05:501507 days ago1596578750IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0074957435
Close Entry105929972020-08-04 11:30:301508 days ago1596540630IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0120836173
Buy Share105872322020-08-03 14:06:161508 days ago1596463576IN
0xd9Ff8cc0...D6A40387f
0.03 ETH0.031856192
Init Race98918102020-04-17 19:24:471616 days ago1587151487IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001284916
Withdraw Gains98899122020-04-17 12:33:321616 days ago1587126812IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000360526
Close Entry98889282020-04-17 8:45:191617 days ago1587113119IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001324238
Withdraw Gains98831752020-04-16 11:15:401618 days ago1587035740IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0008567215
Buy Share98831642020-04-16 11:13:391618 days ago1587035619IN
0xd9Ff8cc0...D6A40387f
0.025 ETH0.0051939315
Withdraw Gains98831532020-04-16 11:11:001618 days ago1587035460IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0009013215
Init Race98830432020-04-16 10:44:071618 days ago1587033847IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0034266216
Close Entry98801642020-04-16 0:06:451618 days ago1586995605IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000993176
Withdraw Gains98745192020-04-15 3:13:371619 days ago1586920417IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000364965
Buy Share With D...98743982020-04-15 2:44:231619 days ago1586918663IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001485924
Init Race98728662020-04-14 21:01:131619 days ago1586898073IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0032122815
Withdraw Gains98714642020-04-14 15:44:401619 days ago1586879080IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000300445
Close Entry98699852020-04-14 10:23:551620 days ago1586859835IN
0xd9Ff8cc0...D6A40387f
0 ETH0.0019863412
Withdraw Gains98673142020-04-14 0:33:011620 days ago1586824381IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000057111
Buy Share With D...98642212020-04-13 13:23:151620 days ago1586784195IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001729015
Buy Share98634762020-04-13 10:40:021621 days ago1586774402IN
0xd9Ff8cc0...D6A40387f
0.01 ETH0.000741832.1
Withdraw Gains98576572020-04-12 13:05:291621 days ago1586696729IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000289965
Withdraw Gains98576402020-04-12 13:02:301621 days ago1586696550IN
0xd9Ff8cc0...D6A40387f
0 ETH0.000300445
Init Race98525462020-04-11 18:19:021622 days ago1586629142IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001070765
Close Entry98496682020-04-11 7:39:531623 days ago1586590793IN
0xd9Ff8cc0...D6A40387f
0 ETH0.001324238
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
105991642020-08-05 10:19:151507 days ago1596622755
0xd9Ff8cc0...D6A40387f
0.02355408 ETH
105929972020-08-04 11:30:301508 days ago1596540630
0xd9Ff8cc0...D6A40387f
0.00392613 ETH
105929972020-08-04 11:30:301508 days ago1596540630
0xd9Ff8cc0...D6A40387f
0.00078522 ETH
105872322020-08-03 14:06:161508 days ago1596463576
0xd9Ff8cc0...D6A40387f
0.0015 ETH
98899122020-04-17 12:33:321616 days ago1587126812
0xd9Ff8cc0...D6A40387f
0.00801536 ETH
98889282020-04-17 8:45:191617 days ago1587113119
0xd9Ff8cc0...D6A40387f
0.00333973 ETH
98889282020-04-17 8:45:191617 days ago1587113119
0xd9Ff8cc0...D6A40387f
0.00066794 ETH
98831752020-04-16 11:15:401618 days ago1587035740
0xd9Ff8cc0...D6A40387f
0.01175527 ETH
98831642020-04-16 11:13:391618 days ago1587035619
0xd9Ff8cc0...D6A40387f
0.00125 ETH
98831532020-04-16 11:11:001618 days ago1587035460
0xd9Ff8cc0...D6A40387f
0.01991928 ETH
98801642020-04-16 0:06:451618 days ago1586995605
0xd9Ff8cc0...D6A40387f
0.00341053 ETH
98801642020-04-16 0:06:451618 days ago1586995605
0xd9Ff8cc0...D6A40387f
0.0006821 ETH
98745192020-04-15 3:13:371619 days ago1586920417
0xd9Ff8cc0...D6A40387f
0.00512226 ETH
98743982020-04-15 2:44:231619 days ago1586918663
0xd9Ff8cc0...D6A40387f
0.00124999 ETH
98743982020-04-15 2:44:231619 days ago1586918663
0xd9Ff8cc0...D6A40387f
0.02499999 ETH
98714642020-04-14 15:44:401619 days ago1586879080
0xd9Ff8cc0...D6A40387f
0.00975684 ETH
98699852020-04-14 10:23:551620 days ago1586859835
0xd9Ff8cc0...D6A40387f
0.00406535 ETH
98699852020-04-14 10:23:551620 days ago1586859835
0xd9Ff8cc0...D6A40387f
0.00081307 ETH
98673142020-04-14 0:33:011620 days ago1586824381
0xd9Ff8cc0...D6A40387f
0.00888028 ETH
98642212020-04-13 13:23:151620 days ago1586784195
0xd9Ff8cc0...D6A40387f
0.00099999 ETH
98642212020-04-13 13:23:151620 days ago1586784195
0xd9Ff8cc0...D6A40387f
0.01999999 ETH
98634762020-04-13 10:40:021621 days ago1586774402
0xd9Ff8cc0...D6A40387f
0.0005 ETH
98576572020-04-12 13:05:291621 days ago1586696729
0xd9Ff8cc0...D6A40387f
0.00502356 ETH
98576402020-04-12 13:02:301621 days ago1586696550
0xd9Ff8cc0...D6A40387f
0.01942567 ETH
98496682020-04-11 7:39:531623 days ago1586590793
0xd9Ff8cc0...D6A40387f
0.00440988 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherKnightGame

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-01
*/

/*

Introducing "ETHERKNIGHT" 3.1 our first HDX20 POWERED GAME running on the Ethereum Blockchain got a 2nd upgrade 
"ETHERKNIGHT" is playable @ http://etherknightgame.io

About the game :
4 Knight Characters racing against each other to be the first to reach the goal and win the pot of gold.

How to play ETHERKNIGHT:
The Race will start after at least 1 player has bought shares of any Knight Racer then for every new item activated
a 24H countdown will reset. At the end of the countdown, the players on the first Racer will share the Treasure and
everybody else will receive their payout (no one is leaving the table without values).
In addition, when you buy shares of your favorite Racer 5% of the price will buy you HDX20 Token earning you Ethereum
from the volume of any HDX20 POWERED GAMES (visit https://hdx20.io/ for details).
Please remember, at every new buy, the price of the share is increasing a little and so will be your payout even
if you are not the winner, buying shares at the beginning of the race is highly advised.

Play for the big WIN, Play for the TREASURE, Play for staking HDX20 TOKEN or Play for all at once...Your Choice!

We wish you Good Luck!

PAYOUTS DISTRIBUTION:
.60% to the winners of the race distributed proportionally to their shares.
.25% to the community of HDX20 gamers/holders distributed as price appreciation.
.5% to developer for running, developing and expanding the platform.
.10% for provisioning the TREASURE for the next Race.

UPDATE:

we updated:
.from 1 eth played 40%(50% before) will charge the treasure, 40% (30% before) will buy shares, 5% will buy HDX20 for the player and 15% will appreciate the share price.
.adjusted the item price increase function. 

This product is copyrighted. Any unauthorized copy, modification, or use without express written consent from HyperDevbox is prohibited.

Copyright 2018 HyperDevbox

*/


pragma solidity ^0.4.25;


interface HDX20Interface
{
    function() payable external;
    
    
    function buyTokenFromGame( address _customerAddress , address _referrer_address ) payable external returns(uint256);
  
    function payWithToken( uint256 _eth , address _player_address ) external returns(uint256);
  
    function appreciateTokenPrice() payable external;
   
    function totalSupply() external view returns(uint256); 
    
    function ethBalanceOf(address _customerAddress) external view returns(uint256);
  
    function balanceOf(address _playerAddress) external view returns(uint256);
    
    function sellingPrice( bool includeFees) external view returns(uint256);
  
}

contract EtherKnightGame
{
     HDX20Interface private HDXcontract = HDX20Interface(0x8942a5995bd168f347f7ec58f25a54a9a064f882);
     
     using SafeMath for uint256;
      using SafeMath128 for uint128;
     
     /*==============================
    =            EVENTS            =
    ==============================*/
    event OwnershipTransferred(
        
         address previousOwner,
         address nextOwner,
          uint256 timeStamp
         );
         
    event HDXcontractChanged(
        
         address previous,
         address next,
         uint256 timeStamp
         );
 
   
    
     event onWithdrawGains(
        address customerAddress,
        uint256 ethereumWithdrawn,
        uint256 timeStamp
    );
    
    event onNewRound(
        uint256       gRND,
        uint32        turnRound,
        uint32        eventType,
        uint32        eventTarget,
        uint32[4]     persoEnergy,
        uint32[4]     persoDistance,
        uint32[4]     powerUpSpeed,
        uint32[4]     powerUpShield,
        uint256       blockNumberTimeout,
        uint256       treasureAmountFind,
        address       customerAddress
        
       
       
    );
    
    
    event onNewRace(
        
        uint256 gRND,
        uint8[4] persoType,
        uint256  blockNumber
        
        );
        
    event onBuyShare(
        address     customerAddress,
        uint256     gRND,
        uint32      perso,
        uint256     nbToken,
        uint32      actionType,
        uint32      actionValue
        );    
        
        
     event onMaintenance(
        bool        mode,
        uint256     timeStamp

        );    
        
    event onRefund(
        address     indexed customerAddress,
        uint256     eth,
        uint256     timeStamp
         
        );   
        
    event onCloseEntry(
        
         uint256 gRND
         
        );    
        
    event onChangeBlockTimeAverage(
        
         uint256 blocktimeavg
         
        );    
        
    /*==============================
    =            MODIFIERS         =
    ==============================*/
    modifier onlyOwner
    {
        require (msg.sender == owner );
        _;
    }
    
    modifier onlyFromHDXToken
    {
        require (msg.sender == address( HDXcontract ));
        _;
    }
   
     modifier onlyDirectTransaction
    {
        require (msg.sender == tx.origin);
        _;
    }
   
   
     modifier isPlayer
    {
        require (PlayerData[ msg.sender].gRND !=0);
        _;
    }
    
    modifier isMaintenance
    {
        require (maintenanceMode==true);
        _;
    }
    
     modifier isNotMaintenance
    {
        require (maintenanceMode==false);
        _;
    }
   
    // Changing ownership of the contract safely
    address public owner;
  
    
   
    
     /// Contract governance.

    constructor () public
    {
        owner = msg.sender;
       
        
        if ( address(this).balance > 0)
        {
            owner.transfer( address(this).balance );
        }
    }
    
    function changeOwner(address _nextOwner) public
    onlyOwner
    {
        require (_nextOwner != owner);
        require(_nextOwner != address(0));
         
        emit OwnershipTransferred(owner, _nextOwner , now);
         
        owner = _nextOwner;
    }
    
    function changeHDXcontract(address _next) public
    onlyOwner
    {
        require (_next != address( HDXcontract ));
        require( _next != address(0));
         
        emit HDXcontractChanged(address(HDXcontract), _next , now);
         
        HDXcontract  = HDX20Interface( _next);
    }
  
  
    
    function changeBlockTimeAverage( uint256 blocktimeavg) public
    onlyOwner
    {
        require ( blocktimeavg>0 );
        
       
        blockTimeAverage = blocktimeavg;
        
        emit onChangeBlockTimeAverage( blockTimeAverage );
         
    }
    
    function enableMaintenance() public
    onlyOwner
    {
        maintenanceMode = true;
        
        emit onMaintenance( maintenanceMode , now);
        
    }

    function disableMaintenance() public
    onlyOwner
    {
        uint8[4] memory perso =[0,1,2,3];
        
        maintenanceMode = false;
        
        emit onMaintenance( maintenanceMode , now);
        
        //reset with a new race
        initRace( perso );
    }
    
  
    
    
   
    function refundMe() public
    isMaintenance
    {
        address _playerAddress = msg.sender;
         
        
      
        require( this_gRND>0 && GameRoundData[ this_gRND].extraData[0]>0 && GameRoundData[ this_gRND].extraData[0]<(1<<30) && PlayerData[ _playerAddress ].gRND==this_gRND);
        
        uint256 _eth = 0;

        for( uint i=0;i<4;i++)
        {
            _eth = _eth.add( PlayerGameRound[ _playerAddress][this_gRND].shares[i] * GameRoundData[ this_gRND].sharePrice);
            
            PlayerGameRound[ _playerAddress][this_gRND].shares[i] = 0;
        }
        
        if (_eth>0)
        {
               _playerAddress.transfer( _eth );  
               
               emit onRefund( _playerAddress , _eth , now );
        }
        
    }
    
     /*================================
    =       GAMES VARIABLES         =
    ================================*/
    
    struct PlayerData_s
    {
   
        uint256 chest;  
        uint256 payoutsTo;
        uint256 gRND;  
       
    }
    
    struct PlayerGameRound_s
    {
        uint256[4]      shares;
        uint128         treasure_payoutsTo;    
        uint128         token;
      
       
    }
    
    struct GameRoundData_s
    {
       uint256              blockNumber;
       uint256              blockNumberTimeout;
       uint256              sharePrice;
       uint256[4]           sharePots;
       uint256              shareEthBalance;
       uint256              shareSupply;
       uint256              treasureSupply;
      
     
       //this time we want to stream the HDX20 apprecition and dev fees on the way
       uint256              allFeeSupply;       //to separate the fees from the actual treasure
       uint256              hdx20AppreciationPayout;
       uint256              devAppreciationPayout;
       //
       
       uint256              totalTreasureFound;
       uint256[6]           actionBlockNumber;
      
       uint128[4]           treasurePerShare; 
       uint32[8]            persoData; //energy[4] distance[4]
       uint32[8]            powerUpData; //Speed[4] Shield[4]
       
       uint32[6]            actionValue;
       
       uint32[6]            extraData;//[0]==this_TurnRound , [1]==winner , [2-5] totalPlayers
  
    }
    
  
   
    
 
    
   
    mapping (address => PlayerData_s)   private PlayerData;
    
   
    mapping (address => mapping (uint256 => PlayerGameRound_s)) private PlayerGameRound;
    
   
    mapping (uint256 => GameRoundData_s)   private GameRoundData;
    
   
    bool        private maintenanceMode=false;     
   
    uint256     private this_gRND =0;
  
 
  
  
    //85 , missing 15% for shares appreciation eg:share price increase
    uint8 constant private HDX20BuyFees = 5;
    uint8 constant private TREASUREBuyFees = 40;
    uint8 constant private BUYPercentage = 40;
    
    
    //the part to keep from the treasure for next round treasure + hdx20 appreciation + dev 
    uint8 constant private DevFees = 5;
    uint8 constant private TreasureFees = 10;
    uint8 constant private AppreciationFees = 25;
    uint8 constant private AddedFees = DevFees+TreasureFees+AppreciationFees;
  
   
    uint256 constant internal magnitude = 1e18;
  
    uint256 private genTreasure = 0;
   
    uint256 constant private minimumSharePrice = 0.001 ether;
    
    uint256 private blockTimeAverage = 15;  //seconds per block                          
    
 
    uint8[4]    private this_Perso_Type;
    
   
      
    /*================================
    =       PUBLIC FUNCTIONS         =
    ================================*/
    
    //fallback will be called only from the HDX token contract to fund the game from customers's HDX20
    
     function()
     payable
     public
     onlyFromHDXToken 
    {
       
      
      
          
    }
    
    
    function ChargeTreasure() public payable
    {
        genTreasure = SafeMath.add( genTreasure , msg.value);     
    }
    
    
    function buyTreasureShares(GameRoundData_s storage  _GameRoundData , uint256 _eth ) private
    returns( uint256)
    {
        uint256 _nbshares = (_eth.mul( magnitude)) / _GameRoundData.sharePrice;
        uint256 _nbsharesForTreasure = (_nbshares.mul( 100-DevFees-TreasureFees-AppreciationFees)) / 100;
       
        //now we do separate for streamline payment
        _GameRoundData.treasureSupply = _GameRoundData.treasureSupply.add( _nbsharesForTreasure );
        //the difference is for the allFeeSupply
        _GameRoundData.allFeeSupply = _GameRoundData.allFeeSupply.add( _nbshares - _nbsharesForTreasure);
        
        
        _GameRoundData.shareSupply =   _GameRoundData.shareSupply.add( _nbshares );
        
        return( _nbshares);
    }
   
    
    function initRace( uint8[4] p ) public
    onlyOwner
    isNotMaintenance
    {
 
        
        this_gRND++;
        
        GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ];
       
        for( uint i=0;i<4;i++)
        {
           this_Perso_Type[i] = p[i];
       
            _GameRoundData.persoData[i] = 100;
            _GameRoundData.persoData[4+i] = 25;
            
        }
       
        _GameRoundData.blockNumber = block.number;
        
        _GameRoundData.blockNumberTimeout = block.number + (360*10*24*3600); 
        
        uint256 _sharePrice = 0.001 ether; // minimumSharePrice;
        
        _GameRoundData.sharePrice = _sharePrice;
        
        uint256 _nbshares = buyTreasureShares(_GameRoundData, genTreasure );
     
        //convert into ETH
        _nbshares = _nbshares.mul( _sharePrice ) / magnitude;
        
        //start balance   
        _GameRoundData.shareEthBalance = _nbshares;
        
        genTreasure = genTreasure.sub( _nbshares);
     
       
        emit onNewRace( this_gRND , p , block.number);
        
    }
    
    
   
    function get_TotalPayout(  GameRoundData_s storage  _GameRoundData ) private view
    returns( uint256)
    {
      
       uint256 _payout = 0;
        
       uint256 _sharePrice = _GameRoundData.sharePrice;
     
       for(uint i=0;i<4;i++)
       {
           uint256 _bet = _GameRoundData.sharePots[i];
           
           _payout = _payout.add( _bet.mul (_sharePrice) / magnitude );
       }           
         
       //from the whole treasure now since new version         
       uint256 _potValue = (_GameRoundData.treasureSupply.mul( _sharePrice )) / magnitude;
       
       
       _payout = _payout.add( _potValue ).add(_GameRoundData.totalTreasureFound );
       
   
       return( _payout );
        
    }
    
    
  
    function get_PendingGains( address _player_address , uint256 _gRND) private view
    returns( uint256)
    {
       
       //did not play 
       if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 );
       
       GameRoundData_s storage  _GameRoundData = GameRoundData[ _gRND ];
       
     
       uint32 _winner = _GameRoundData.extraData[1];
       
       uint256 _gains = 0;
       uint256 _treasure = 0;
       uint256 _sharePrice = _GameRoundData.sharePrice;
       uint256 _shares;
       
       PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][_gRND];
       
       for(uint i=0;i<4;i++)
       {
           _shares = _PlayerGameRound.shares[ i ];
            
           _gains = _gains.add( _shares.mul( _sharePrice) / magnitude );
        
           
           _treasure = _treasure.add(_shares.mul( _GameRoundData.treasurePerShare[ i ] ) / magnitude);
           
       }
       
        if (_treasure >=  _PlayerGameRound.treasure_payoutsTo) _treasure = _treasure.sub(_PlayerGameRound.treasure_payoutsTo );
       else _treasure = 0;
           
       _gains = _gains.add(_treasure );
       
       //if the race payment is made (race is over) then we add also the winner prize
       if (_winner>0 && _GameRoundData.extraData[0] >= (1<<30))
       {
           _shares = _PlayerGameRound.shares[ _winner-1 ];
           
           if (_shares>0)
           {
               //from the whole treasure now since new version   
               _treasure = (_GameRoundData.treasureSupply.mul( _sharePrice )) / magnitude;
       
               
               _gains = _gains.add(  _treasure.mul( _shares ) / _GameRoundData.sharePots[ _winner-1]  );
               
           }
           
       }
    
       
        return( _gains );
        
    }
    
    
    //only for the Result Data Screen on the game not used for the payout
    
    function get_PendingGainsAll( address _player_address , uint256 _gRND) private view
    returns( uint256)
    {
       
       //did not play 
       if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 );
       
       GameRoundData_s storage  _GameRoundData = GameRoundData[ _gRND ];
       
     
       uint32 _winner = _GameRoundData.extraData[1];
       
       uint256 _gains = 0;
       uint256 _treasure = 0;
       uint256 _sharePrice = _GameRoundData.sharePrice;
       uint256 _shares;
       
       PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][_gRND];
       
       for(uint i=0;i<4;i++)
       {
           _shares = _PlayerGameRound.shares[ i ];
            
           _gains = _gains.add( _shares.mul( _sharePrice) / magnitude );
        
           
           _treasure = _treasure.add(_shares.mul( _GameRoundData.treasurePerShare[ i ] ) / magnitude);
           
       }
       
        if (_treasure >=  _PlayerGameRound.treasure_payoutsTo) _treasure = _treasure.sub(_PlayerGameRound.treasure_payoutsTo );
       else _treasure = 0;
           
       _gains = _gains.add(_treasure );
       
     
       if (_winner>0)
       {
           _shares = _PlayerGameRound.shares[ _winner-1 ];
           
           if (_shares>0)
           {
               //from the whole treasure now since new version 
               _treasure = (_GameRoundData.treasureSupply.mul( _sharePrice )) / magnitude;
       
               
               _gains = _gains.add(  _treasure.mul( _shares ) / _GameRoundData.sharePots[ _winner-1]  );
               
           }
           
       }
    
       
        return( _gains );
        
    }
    
       //process streaming HDX20 appreciation and dev fees appreciation
    function process_sub_Taxes(  GameRoundData_s storage _GameRoundData , uint256 minimum) private
    {
        uint256 _sharePrice = _GameRoundData.sharePrice;
             
        uint256 _potValue = _GameRoundData.allFeeSupply.mul( _sharePrice ) / magnitude;
            
        uint256 _appreciation = SafeMath.mul( _potValue , AppreciationFees) / AddedFees; 
          
        uint256 _dev = SafeMath.mul( _potValue , DevFees) / AddedFees;   
        
        if (_dev > _GameRoundData.devAppreciationPayout)
        {
            _dev -= _GameRoundData.devAppreciationPayout;
            
            if (_dev>minimum)
            {
              _GameRoundData.devAppreciationPayout = _GameRoundData.devAppreciationPayout.add( _dev );
              
               HDXcontract.buyTokenFromGame.value( _dev )( owner , address(0));
              
            }
        }
        
        if (_appreciation> _GameRoundData.hdx20AppreciationPayout)
        {
            _appreciation -= _GameRoundData.hdx20AppreciationPayout;
            
            if (_appreciation>minimum)
            {
                _GameRoundData.hdx20AppreciationPayout = _GameRoundData.hdx20AppreciationPayout.add( _appreciation );
                
                 HDXcontract.appreciateTokenPrice.value( _appreciation )();
                
            }
        }
        
    }
    
    //process the fees, hdx20 appreciation, calcul results at the end of the race
    function process_Taxes(  GameRoundData_s storage _GameRoundData ) private
    {
        uint32 turnround = _GameRoundData.extraData[0];
        
        if (turnround>0 && turnround<(1<<30))
        {  
            _GameRoundData.extraData[0] = turnround | (1<<30);
            
            uint256 _sharePrice = _GameRoundData.sharePrice;
             
            uint256 _potValue = _GameRoundData.allFeeSupply.mul( _sharePrice ) / magnitude;
     
           
            uint256 _treasure = SafeMath.mul( _potValue , TreasureFees) / AddedFees; 
         
           
            genTreasure = genTreasure.add( _treasure );
            
            //take care of any left over
            process_sub_Taxes( _GameRoundData , 0);
            
            
        }
     
    }
    
    
    
    function BuyShareWithDividends( uint32 perso , uint256 eth , uint32 action, address _referrer_address ) public
    onlyDirectTransaction
    {
  
        require( maintenanceMode==false  && this_gRND>0 && (eth>=minimumSharePrice) && (eth <=100 ether) &&  perso<=3 && action <=5 && block.number <GameRoundData[ this_gRND ].blockNumberTimeout );
  
        address _customer_address = msg.sender;
        
        eth = HDXcontract.payWithToken( eth , _customer_address );
       
        require( eth>0 );
         
        CoreBuyShare( _customer_address , perso , eth , action , _referrer_address );
        
       
    }
    
    function BuyShare(   uint32 perso , uint32 action , address _referrer_address ) public payable
    onlyDirectTransaction
    {
     
         
        address _customer_address = msg.sender;
        uint256 eth = msg.value;
        
        require( maintenanceMode==false  && this_gRND>0 && (eth>=minimumSharePrice) &&(eth <=100 ether) && perso<=3 && action <=5 && block.number <GameRoundData[ this_gRND ].blockNumberTimeout);
   
         
        CoreBuyShare( _customer_address , perso , eth , action , _referrer_address);
     
    }
    
    /*================================
    =       CORE BUY FUNCTIONS       =
    ================================*/
    
    function CoreBuyShare( address _player_address , uint32 perso , uint256 eth , uint32 action ,  address _referrer_address ) private
    {
    
        PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][ this_gRND];
        
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
        
      
        if (PlayerData[ _player_address].gRND != this_gRND)
        {
           
            if (PlayerData[_player_address].gRND !=0)
            {
                uint256 _gains = get_PendingGains( _player_address , PlayerData[ _player_address].gRND  );
            
                 PlayerData[ _player_address].chest = PlayerData[ _player_address].chest.add( _gains);
            }
          
          
            PlayerData[ _player_address ].gRND = this_gRND;
           
   
        }
        
        //HDX20BuyFees
        uint256 _tempo = (eth.mul(HDX20BuyFees)) / 100;
        
        _GameRoundData.shareEthBalance =  _GameRoundData.shareEthBalance.add( eth-_tempo );  //minus the hdx20 fees
        
        uint256 _nb_token =   HDXcontract.buyTokenFromGame.value( _tempo )( _player_address , _referrer_address);
        
         //keep track for result UI screen how many token bought in this game round
        _PlayerGameRound.token += uint128(_nb_token);
        
        //increase the treasure shares
        buyTreasureShares(_GameRoundData , (eth.mul(TREASUREBuyFees)) / 100 );
   
        //what is left for the player
        eth = eth.mul( BUYPercentage) / 100;
        
        uint256 _nbshare =  (eth.mul( magnitude)) / _GameRoundData.sharePrice;
        
        _GameRoundData.shareSupply =  _GameRoundData.shareSupply.add( _nbshare );
        _GameRoundData.sharePots[ perso ] =  _GameRoundData.sharePots[ perso ].add( _nbshare);
        
        _tempo =  _PlayerGameRound.shares[ perso ];
        
        if (_tempo==0)
        {
            _GameRoundData.extraData[ 2+perso ]++; 
        }
        
        _PlayerGameRound.shares[ perso ] =  _tempo.add( _nbshare);
   
        //this will always raise the price after 1 share
        if (_GameRoundData.shareSupply>magnitude)
        {
            _GameRoundData.sharePrice = (_GameRoundData.shareEthBalance.mul( magnitude)) / _GameRoundData.shareSupply;
        }
       
       
        _PlayerGameRound.treasure_payoutsTo = _PlayerGameRound.treasure_payoutsTo.add( uint128(_nbshare.mul(   _GameRoundData.treasurePerShare[ perso ]  ) / magnitude) );
     
        //HDX20 streaming appreciation
        process_sub_Taxes( _GameRoundData , 0.2 ether);
        
        uint32 actionValue = ApplyAction( perso , action , _nbshare , _player_address);
        
        _GameRoundData.actionValue[ action] = actionValue;
        
        emit onBuyShare( _player_address , this_gRND , perso , _nb_token , action, actionValue  );
                         
        
    }
    
     struct GameVar_s
    {
        uint32[4]   perso_energy;
        uint32[4]   perso_distance;
        uint32[4]   powerUpShield;
        uint32[4]   powerUpSpeed;
        
        uint32      event_type;
        uint32      event_target;
     
        uint32      winner;
        
        uint256     this_gRND;
        
        uint256     treasureAmountFind;
        
        bytes32     seed;
        
        uint256     blockNumberTimeout;
        
        uint32      turnround;
      
    }
    
    function actionPowerUpShield( uint32 perso , GameVar_s gamevar) pure private
    {
        
        gamevar.powerUpShield[ perso ] = 100;
        
    }
    
    function actionPowerUpSpeed( uint32 perso , GameVar_s gamevar) pure private
    {
        
        gamevar.powerUpSpeed[ perso ] = 100;
        
    }
    
   
    
    function actionApple( uint32 perso , GameVar_s gamevar) pure private
    {
        
        gamevar.event_type = 6;     //apple / banana etc...
        
        gamevar.event_target = 1<<(perso*3);
        
        gamevar.perso_energy[ perso ] += 20; 
        
        if (gamevar.perso_energy[ perso] > 150) gamevar.perso_energy[ perso ] = 150;
        
    }
    
    function actionBanana(  GameVar_s gamevar ) pure private
    {
        
        gamevar.event_type = 6;     //apple / banana etc...
        
        uint32 result = 2;
        
        uint32 target = get_modulo_value(gamevar.seed,18, 4);
        
        if (gamevar.winner>0) target = gamevar.winner-1;
    
        
        uint32 shield = uint32(gamevar.powerUpShield[ target ]);
        
        if (shield>20) result = 5; //jumping banana
        else
        {
                    uint32 dd = 4 * (101 - shield);
                                   
                  
                    
                    if (gamevar.perso_distance[ target ]>=dd)  gamevar.perso_distance[ target ] -= dd;
                    else  gamevar.perso_distance[ target ] = 0;
                    
        }
        
        gamevar.event_target = result<<(target*3);
        
       
        
    }
    
    function getTreasureProbabilityType( bytes32 seed ) private pure
    returns( uint32 )
    {
           uint8[22] memory this_TreasureProbability =[
    
        1,1,1,1,1,1,1,1,1,1,1,1,    //12 chances to have 10%
        2,2,2,2,2,2,                //6 chances to have 15%
        3,3,3,                      //3 chances to have 20%
        4                           //1 chance to have 25%
       
        ];       
        
        return( this_TreasureProbability[ get_modulo_value(seed,24, 22) ] );
    }
    
   
    
    function distribute_treasure( uint32 type2 , uint32 target , GameVar_s gamevar) private
    {
        uint8[5] memory this_TreasureValue =[
        
        1,
        10,
        15,
        20,
        25
      
        ];  
        
        //from the whole treasure now since new version 
        uint256 _treasureSupply = GameRoundData[ gamevar.this_gRND].treasureSupply;
      
        
        uint256 _sharePrice = GameRoundData[ gamevar.this_gRND].sharePrice;
        uint256 _shareSupply = GameRoundData[ gamevar.this_gRND].shareSupply;
       
        //how many shares to sell
        uint256  _amount = _treasureSupply.mul(this_TreasureValue[ type2 ] )  / 100;
       
        GameRoundData[ gamevar.this_gRND].treasureSupply = _treasureSupply.sub( _amount );
        GameRoundData[ gamevar.this_gRND].shareSupply =  _shareSupply.sub( _amount );
        
        //in eth
        _amount = _amount.mul( _sharePrice ) / magnitude;
        
        //price of shares should not change
        GameRoundData[ gamevar.this_gRND].shareEthBalance =  GameRoundData[ gamevar.this_gRND].shareEthBalance.sub( _amount );
        
        gamevar.treasureAmountFind = _amount;
       
        GameRoundData[ gamevar.this_gRND].totalTreasureFound =   GameRoundData[ gamevar.this_gRND].totalTreasureFound.add( _amount );
       
        uint256 _shares = GameRoundData[ gamevar.this_gRND].sharePots[ target ];
    
        if (_shares>0)
        {
           
            GameRoundData[ gamevar.this_gRND].treasurePerShare[ target ] =  GameRoundData[ gamevar.this_gRND].treasurePerShare[ target ].add( uint128(((_amount.mul(magnitude)) / _shares)));
        }
        
    }
    
    function actionTreasure( uint32 perso, GameVar_s gamevar ) private
    {
        gamevar.event_target =  get_modulo_value(gamevar.seed,18,  14);
        gamevar.event_type = getTreasureProbabilityType( gamevar.seed );
                                                    
        if (gamevar.event_target==perso)
        {

                distribute_treasure( gamevar.event_type , gamevar.event_target, gamevar);
        }
        
       
    }
    
    function apply_attack( uint32 perso, uint32 target , GameVar_s gamevar) pure private
    {
        for(uint i=0;i<4;i++)
        {
            uint32 damage = (1+(target % 3)) * 10;
            
            uint32 shield = uint32(  gamevar.powerUpShield[i] );
            
            if (damage<= shield || i==perso) damage = 0;
            else damage -=  shield;
            
            if (damage<gamevar.perso_energy[i]) gamevar.perso_energy[i] -= damage;
            else gamevar.perso_energy[i] = 1;   //minimum
            
            target >>= 2;
            
        }
        
    }
    
    
    function actionAttack( uint32 perso , GameVar_s gamevar ) pure private
    {
            gamevar.event_type =  5; 
            gamevar.event_target = get_modulo_value(gamevar.seed,24,256);     //8 bits 4x2
            
            apply_attack( perso , gamevar.event_target , gamevar);    
    }
    
    function ApplyAction( uint32 perso ,  uint32 action , uint256 nbshare , address _player_address) private
    returns( uint32)
    {
        uint32 actionValue = GameRoundData[ this_gRND].actionValue[ action ];
        
        //only the last one is activating within the same block
        if (block.number<= GameRoundData[ this_gRND].actionBlockNumber[ action]) return( actionValue);
        
        GameVar_s memory gamevar;
          
        gamevar.turnround = GameRoundData[ this_gRND ].extraData[0];
        
        //now we introduce a new price increase for the items
        nbshare = nbshare.mul(100*100);
        nbshare /= (100+(gamevar.turnround/6));
        
        nbshare /= magnitude;
      
        nbshare += 10;
        
        if (nbshare>5000) nbshare = 5000;
        
        actionValue += uint32( nbshare );
        
    
         uint16[6] memory actionPrice =[
        
        1000,   //apple
        4000,   //powerup shield
        5000,   //powerup speed 
        2000,   //chest
        1000,   //banana action
        3000   //attack
      
        ];  
        
        if (actionValue<actionPrice[action] && gamevar.turnround>0)
        {
           
            return( actionValue );
        }
        
        if (actionValue>=actionPrice[action])
        {
            GameRoundData[ this_gRND].actionBlockNumber[ action] = block.number;
             
            actionValue = 0;
        }
        else action = 100; //this is the first action
        
        gamevar.turnround++;
     
        
      
        
        gamevar.this_gRND = this_gRND;
        gamevar.winner = GameRoundData[ gamevar.this_gRND].extraData[1];
      
        
        uint i;
            
        for( i=0;i<4;i++)
        {
                gamevar.perso_energy[i] = GameRoundData[ gamevar.this_gRND].persoData[i];
                gamevar.perso_distance[i] = GameRoundData[ gamevar.this_gRND].persoData[4+i];
                gamevar.powerUpSpeed[i] = GameRoundData[ gamevar.this_gRND].powerUpData[i] / 2;
                gamevar.powerUpShield[i] = GameRoundData[ gamevar.this_gRND].powerUpData[4+i] / 2;
    
        }
        
        
        
        //a little boost for the fist action maker 
        if (gamevar.turnround==1) gamevar.perso_energy[ perso ] += 5;
        
        getSeed( gamevar);
    
      
        if (action==0) actionApple( perso , gamevar );
        if (action==1) actionPowerUpShield( perso , gamevar);
        if (action==2) actionPowerUpSpeed( perso , gamevar );
        if (action==3) actionTreasure( perso, gamevar);
        if (action==4) actionBanana(  gamevar);
        if (action==5) actionAttack( perso , gamevar);
        
        gamevar.event_type |= (perso<<16);

        uint32 CurrentWinnerXpos = 0; //gamevar.perso_distance[0]; //this.Racers[n].perso_distance;
       
        for( i=0; i<4;i++)
        {
      
                //tiredness
                gamevar.perso_energy[ i ] *= 95;
                gamevar.perso_energy[ i ] /= 100;
                
                                           
                uint32 spd1 =  (gamevar.perso_energy[ i ]*10) + (gamevar.powerUpSpeed[ i ]*10); 
                                       
                gamevar.perso_distance[ i ] = (  (gamevar.perso_distance[ i ]*95) + (spd1*100)  )/100; 
                         
               if (gamevar.perso_distance[i] > CurrentWinnerXpos)
               {
                   CurrentWinnerXpos = gamevar.perso_distance[i];
                   gamevar.winner = uint8(i);
               }
               
                GameRoundData[ gamevar.this_gRND].persoData[i] = gamevar.perso_energy[i];
                GameRoundData[ gamevar.this_gRND].persoData[4+i] = gamevar.perso_distance[i];
                GameRoundData[ gamevar.this_gRND].powerUpData[i] = gamevar.powerUpSpeed[i];
                GameRoundData[ gamevar.this_gRND].powerUpData[4+i] = gamevar.powerUpShield[i];
        
        }
         
        GameRoundData[ gamevar.this_gRND ].extraData[0] = gamevar.turnround;
        
        GameRoundData[ gamevar.this_gRND].extraData[1] = 1+gamevar.winner;
        
        gamevar.blockNumberTimeout = block.number + ((24*3600) / blockTimeAverage);
        
        GameRoundData[ gamevar.this_gRND].blockNumberTimeout = gamevar.blockNumberTimeout;
        
    
        
        emitRound( gamevar , _player_address);
        
        return( actionValue );
    }
  
    function emitRound(GameVar_s gamevar , address _player_address) private
    {
           emit onNewRound(
            gamevar.this_gRND,   
            gamevar.turnround,
            gamevar.event_type,
            gamevar.event_target,
            gamevar.perso_energy,
            gamevar.perso_distance,
            gamevar.powerUpSpeed,
            gamevar.powerUpShield,
            gamevar.blockNumberTimeout,
            gamevar.treasureAmountFind,
            _player_address
           
        );
        
    }
   
    
    function get_Gains(address _player_address) private view
    returns( uint256)
    {
       
        uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND ) );
        
        if (_gains > PlayerData[ _player_address].payoutsTo)
        {
            _gains -= PlayerData[ _player_address].payoutsTo;
        }
        else _gains = 0;
     
    
        return( _gains );
        
    }
    
    
    function WithdrawGains() public 
    isPlayer
    {
        address _customer_address = msg.sender;
        
        uint256 _gains = get_Gains( _customer_address );
        
        require( _gains>0);
        
        PlayerData[ _customer_address ].payoutsTo = PlayerData[ _customer_address ].payoutsTo.add( _gains );
        
      
        emit onWithdrawGains( _customer_address , _gains , now);
        
        _customer_address.transfer( _gains );
        
        
    }
    
    function getSeed(GameVar_s gamevar) private view
   
    {
            uint256 _seed =  uint256( blockhash( block.number-1) );
            _seed ^= uint256( blockhash( block.number-2) );
            _seed ^= uint256(block.coinbase) / now;
            _seed += gamevar.perso_distance[0];
            _seed += gamevar.perso_distance[1];
            _seed += gamevar.perso_distance[2];
            _seed += gamevar.perso_distance[3];
            
            _seed += gasleft();
            
            gamevar.seed = keccak256(abi.encodePacked( _seed));
        
            
    }
    
    function CloseEntry() public
    onlyOwner
    isNotMaintenance
    {
    
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
         
        process_Taxes( _GameRoundData);
          
        emit onCloseEntry( this_gRND );
      
    }
    
   
    
    
    function get_probability( bytes32 seed ,  uint32 bytepos , uint32 percentage) pure private
    returns( bool )
    {
       uint32 v = uint32(seed[bytepos]);
       
       if (v<= ((255*percentage)/100)) return( true );
       else return( false );
     
    }
    
    function get_modulo_value( bytes32 seed , uint32 bytepos, uint32 mod) pure private
    returns( uint32 )
    {
      
        return( ((uint32(seed[ bytepos])*256)+(uint32(seed[ bytepos+1]))) % mod);
    }
    
  
    
  
  
    
     /*================================
    =  VIEW AND HELPERS FUNCTIONS    =
    ================================*/
  
    
    function view_get_Treasure() public
    view
    returns(uint256)
    {
      
      return( genTreasure);  
    }
    
    function view_get_allFees() public
    view
    returns(uint256)
    {
      
      return( (GameRoundData[ this_gRND].allFeeSupply * GameRoundData[ this_gRND].sharePrice) / magnitude);  
    }
 
    function view_get_gameData() public
    view
    returns( uint256 sharePrice, uint256[4] sharePots, uint256 shareSupply , uint256 shareEthBalance, uint128[4] treasurePerShare, uint32[4] totalPlayers , uint32[6] actionValue , uint256[4] shares , uint256 treasure_payoutsTo ,uint256 treasureSupply  )
    {
        address _player_address = msg.sender;
         
        sharePrice = GameRoundData[ this_gRND].sharePrice;
        sharePots = GameRoundData[ this_gRND].sharePots;
        shareSupply = GameRoundData[ this_gRND].shareSupply;
        shareEthBalance = GameRoundData[ this_gRND].shareEthBalance;
        treasurePerShare = GameRoundData[ this_gRND].treasurePerShare;
        
        treasureSupply = GameRoundData[ this_gRND].treasureSupply;
        
        uint32[4] memory totalPlayersm;
       
        totalPlayersm[0] = GameRoundData[ this_gRND].extraData[2];
        totalPlayersm[1] = GameRoundData[ this_gRND].extraData[3];
        totalPlayersm[2] = GameRoundData[ this_gRND].extraData[4];
        totalPlayersm[3] = GameRoundData[ this_gRND].extraData[5];
        
       
        totalPlayers = totalPlayersm;
        actionValue = GameRoundData[ this_gRND].actionValue;
        
        shares = PlayerGameRound[_player_address][this_gRND].shares;
        
        treasure_payoutsTo = PlayerGameRound[_player_address][this_gRND].treasure_payoutsTo;
    }
  
    
    function view_get_Gains()
    public
    view
    returns( uint256 gains)
    {
        
        address _player_address = msg.sender;
   
      
        uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND) );
        
        if (_gains > PlayerData[ _player_address].payoutsTo)
        {
            _gains -= PlayerData[ _player_address].payoutsTo;
        }
        else _gains = 0;
     
    
        return( _gains );
        
    }
  
  
    
    function view_get_gameStates() public 
    view
    returns(uint8[4] types, uint256 grnd, uint32 turnround, uint256 minimumshare , uint256 blockNumber , uint256 blockNumberTimeout, uint32[6] actionValue , uint32[8] persoData , uint32[8] powerUpData , uint256 blockNumberCurrent , uint256 blockTimeAvg)
    {
        return( this_Perso_Type, this_gRND , GameRoundData[ this_gRND].extraData[0] , minimumSharePrice , GameRoundData[ this_gRND].blockNumber,GameRoundData[ this_gRND].blockNumberTimeout, GameRoundData[ this_gRND].actionValue , GameRoundData[ this_gRND].persoData , GameRoundData[ this_gRND].powerUpData, block.number , blockTimeAverage /*, view_get_MyRacer()*/);
    }
    
    function view_get_ResultData() public
    view
    returns(uint32 TotalPlayer, uint256 TotalPayout ,uint256 MyTokenValue, uint256 MyToken, uint256 MyGains , uint256 MyTreasureFound )
    {
        address _player_address = msg.sender;
        
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
        
        TotalPlayer = _GameRoundData.extraData[2]+_GameRoundData.extraData[3]+_GameRoundData.extraData[4]+_GameRoundData.extraData[5];
     
        TotalPayout = get_TotalPayout( _GameRoundData );
      
        MyToken =  PlayerGameRound[ _player_address][ this_gRND].token;
          
        MyTokenValue = MyToken * HDXcontract.sellingPrice( true );
        MyTokenValue /= magnitude;
      
        MyGains = 0;
        MyTreasureFound = 0;
        
        if (PlayerData[ _player_address].gRND == this_gRND)
        {
       
           MyGains =  get_PendingGainsAll( _player_address , this_gRND ); //just here for the view function so not used for any payout
        
           
           for(uint i=0;i<4;i++)
           {
             MyTreasureFound += PlayerGameRound[_player_address][ this_gRND].shares[ i ].mul( _GameRoundData.treasurePerShare[ i ] ) / magnitude;
           }
       
       
            if (MyTreasureFound >=  PlayerGameRound[_player_address][this_gRND].treasure_payoutsTo) MyTreasureFound = MyTreasureFound.sub(  PlayerGameRound[_player_address][this_gRND].treasure_payoutsTo );
            else MyTreasureFound = 0;
              
           
            
        }
        
        
    }    
 
 
    function totalEthereumBalance()
    public
    view
    returns(uint256)
    {
        return address(this).balance;
    }
    
    function view_get_maintenanceMode()
    public
    view
    returns(bool)
    {
        return( maintenanceMode);
    }
    
    function view_get_blockNumbers()
    public
    view
    returns( uint256 b1 , uint256 b2 )
    {
        return( block.number , GameRoundData[ this_gRND ].blockNumberTimeout);
        
    }
    
   
}


library SafeMath {
    
   
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

   
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a);
        return a - b;
    }

   
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a);
        return c;
    }
    
   
    
  
    
   
}


library SafeMath128 {
    
   
    function mul(uint128 a, uint128 b) 
        internal 
        pure 
        returns (uint128 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

   
    function sub(uint128 a, uint128 b)
        internal
        pure
        returns (uint128) 
    {
        require(b <= a);
        return a - b;
    }

   
    function add(uint128 a, uint128 b)
        internal
        pure
        returns (uint128 c) 
    {
        c = a + b;
        require(c >= a);
        return c;
    }
    
   
    
  
    
   
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"view_get_Treasure","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_maintenanceMode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameStates","outputs":[{"name":"types","type":"uint8[4]"},{"name":"grnd","type":"uint256"},{"name":"turnround","type":"uint32"},{"name":"minimumshare","type":"uint256"},{"name":"blockNumber","type":"uint256"},{"name":"blockNumberTimeout","type":"uint256"},{"name":"actionValue","type":"uint32[6]"},{"name":"persoData","type":"uint32[8]"},{"name":"powerUpData","type":"uint32[8]"},{"name":"blockNumberCurrent","type":"uint256"},{"name":"blockTimeAvg","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"p","type":"uint8[4]"}],"name":"initRace","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"CloseEntry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"blocktimeavg","type":"uint256"}],"name":"changeBlockTimeAverage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"perso","type":"uint32"},{"name":"eth","type":"uint256"},{"name":"action","type":"uint32"},{"name":"_referrer_address","type":"address"}],"name":"BuyShareWithDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refundMe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_next","type":"address"}],"name":"changeHDXcontract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_Gains","outputs":[{"name":"gains","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameData","outputs":[{"name":"sharePrice","type":"uint256"},{"name":"sharePots","type":"uint256[4]"},{"name":"shareSupply","type":"uint256"},{"name":"shareEthBalance","type":"uint256"},{"name":"treasurePerShare","type":"uint128[4]"},{"name":"totalPlayers","type":"uint32[4]"},{"name":"actionValue","type":"uint32[6]"},{"name":"shares","type":"uint256[4]"},{"name":"treasure_payoutsTo","type":"uint256"},{"name":"treasureSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nextOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_ResultData","outputs":[{"name":"TotalPlayer","type":"uint32"},{"name":"TotalPayout","type":"uint256"},{"name":"MyTokenValue","type":"uint256"},{"name":"MyToken","type":"uint256"},{"name":"MyGains","type":"uint256"},{"name":"MyTreasureFound","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_blockNumbers","outputs":[{"name":"b1","type":"uint256"},{"name":"b2","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"WithdrawGains","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"perso","type":"uint32"},{"name":"action","type":"uint32"},{"name":"_referrer_address","type":"address"}],"name":"BuyShare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_allFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ChargeTreasure","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"nextOwner","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previous","type":"address"},{"indexed":false,"name":"next","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"HDXcontractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdrawGains","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"turnRound","type":"uint32"},{"indexed":false,"name":"eventType","type":"uint32"},{"indexed":false,"name":"eventTarget","type":"uint32"},{"indexed":false,"name":"persoEnergy","type":"uint32[4]"},{"indexed":false,"name":"persoDistance","type":"uint32[4]"},{"indexed":false,"name":"powerUpSpeed","type":"uint32[4]"},{"indexed":false,"name":"powerUpShield","type":"uint32[4]"},{"indexed":false,"name":"blockNumberTimeout","type":"uint256"},{"indexed":false,"name":"treasureAmountFind","type":"uint256"},{"indexed":false,"name":"customerAddress","type":"address"}],"name":"onNewRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"persoType","type":"uint8[4]"},{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"onNewRace","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"perso","type":"uint32"},{"indexed":false,"name":"nbToken","type":"uint256"},{"indexed":false,"name":"actionType","type":"uint32"},{"indexed":false,"name":"actionValue","type":"uint32"}],"name":"onBuyShare","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mode","type":"bool"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onMaintenance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"}],"name":"onCloseEntry","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktimeavg","type":"uint256"}],"name":"onChangeBlockTimeAverage","type":"event"}]

608060405260008054600160a060020a031916738942a5995bd168f347f7ec58f25a54a9a064f8821781556005805460ff191690556006819055600755600f60085534801561004d57600080fd5b5060018054600160a060020a031916331790556000303111156100a657600154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156100a4573d6000803e3d6000fd5b505b613bb680620000b66000396000f3006080604052600436106101275763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea0811461014057806310b7d9ae146101675780631449c321146101905780631e98d3341461029e578063212a6fd3146102e057806332dc04aa146102f5578063342d1c321461030d5780635a9e426b146103415780635b366096146103565780636b2f463214610377578063844d38ee1461038c57806388037e1c146103a15780638da5cb5b146104c1578063a6f9dae1146104f2578063ae5dbd4314610513578063b395f27814610562578063bd679ab214610590578063bdc0ba8e146105a5578063cc0e13e2146105ba578063e8657538146105cf578063ee142686146105f2578063fee1382314610607575b600054600160a060020a0316331461013e57600080fd5b005b34801561014c57600080fd5b5061015561060f565b60408051918252519081900360200190f35b34801561017357600080fd5b5061017c610615565b604080519115158252519081900360200190f35b34801561019c57600080fd5b506101a561061e565b604051808c608080838360005b838110156101ca5781810151838201526020016101b2565b505050509050018b81526020018a63ffffffff1663ffffffff16815260200189815260200188815260200187815260200186600660200280838360005b8381101561021f578181015183820152602001610207565b5050505090500185600860200280838360005b8381101561024a578181015183820152602001610232565b5050505090500184600860200280838360005b8381101561027557818101518382015260200161025d565b505050509050018381526020018281526020019b50505050505050505050505060405180910390f35b3480156102aa57600080fd5b5060408051608081810190925261013e913691600491608491908390819083908290808284375093965061084395505050505050565b3480156102ec57600080fd5b5061013e610a49565b34801561030157600080fd5b5061013e600435610ac6565b34801561031957600080fd5b5061013e63ffffffff6004358116906024359060443516600160a060020a0360643516610b25565b34801561034d57600080fd5b5061013e610c82565b34801561036257600080fd5b5061013e600160a060020a0360043516610e53565b34801561038357600080fd5b50610155610f15565b34801561039857600080fd5b50610155610f1a565b3480156103ad57600080fd5b506103b6610fb9565b6040518a8152602081018a608080838360005b838110156103e15781810151838201526020016103c9565b5050505090500189815260200188815260200187600460200280838360005b83811015610418578181015183820152602001610400565b5050505090500186600460200280838360005b8381101561044357818101518382015260200161042b565b5050505090500185600660200280838360005b8381101561046e578181015183820152602001610456565b5050505090500184600460200280838360005b83811015610499578181015183820152602001610481565b505050509050018381526020018281526020019a505050505050505050505060405180910390f35b3480156104cd57600080fd5b506104d661133d565b60408051600160a060020a039092168252519081900360200190f35b3480156104fe57600080fd5b5061013e600160a060020a036004351661134c565b34801561051f57600080fd5b5061052861140e565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561056e57600080fd5b506105776116e0565b6040805192835260208301919091528051918290030190f35b34801561059c57600080fd5b5061013e6116f9565b3480156105b157600080fd5b5061013e6117f5565b3480156105c657600080fd5b5061013e611889565b61013e63ffffffff60043581169060243516600160a060020a03604435166118f1565b3480156105fe57600080fd5b506101556119a0565b61013e6119cb565b60075490565b60055460ff1690565b610626613a72565b6000806000806000610636613a91565b61063e613ab0565b610646613ab0565b600654600081815260046020526040812090918291600991906019018360088082049290920154600654600090815260046020819052604080832080546001820154975483516080810194859052600790981685026101000a90960463ffffffff169766038d7ea4c680009791969095601884019560168501956017909501944394928e9291908390855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116106d157905050506040805160c08101909152939e508892506006915083905082826020028201916000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161072557505060408051610100810191829052959a508994506008935091508390506000855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610781575050604080516101008101918290529599508894506008935091508390506000855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116107dd579050505050505092509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b600154600090819081908190600160a060020a0316331461086357600080fd5b60055460ff161561087357600080fd5b60068054600101908190556000908152600460205260408120945092505b6004831015610960578483600481106108a657fe5b6020020151600984600481106108b857fe5b602091828204019190066101000a81548160ff021916908360ff160217905550606484601601846008811015156108eb57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506019846016018460040160088110151561092a57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280600101935050610891565b4380855563128a180001600185015566038d7ea4c680006002850181905560075490925061098f9085906119dc565b9050670de0b6b3a76400006109aa828463ffffffff611a8a16565b8115156109b357fe5b046007808601829055549091506109d0908263ffffffff611ab616565b6007556006546040518181527f56bb87056d3ab27d1f849434662a0094311af359f66c9c50e1a3a0f2941e34f79190879043906020810183608080838360005b83811015610a28578181015183820152602001610a10565b50505050905001828152602001935050505060405180910390a15050505050565b600154600090600160a060020a03163314610a6357600080fd5b60055460ff1615610a7357600080fd5b506006546000908152600460205260409020610a8e81611acb565b60065460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610add57600080fd5b60008111610aea57600080fd5b60088190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b6000333214610b3357600080fd5b60055460ff16158015610b4857506000600654115b8015610b5b575066038d7ea4c680008410155b8015610b70575068056bc75e2d631000008411155b8015610b83575060038563ffffffff1611155b8015610b96575060058363ffffffff1611155b8015610bb5575060065460009081526004602052604090206001015443105b1515610bc057600080fd5b5060008054604080517f52dde1c300000000000000000000000000000000000000000000000000000000815260048101879052336024820181905291519193600160a060020a03909316926352dde1c3926044808401936020939083900390910190829087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b5051935060008411610c6e57600080fd5b610c7b8186868686611b86565b5050505050565b6005546000908190819060ff161515600114610c9d57600080fd5b3392506000600654118015610cca575060065460009081526004602052604081206019015463ffffffff16115b8015610cf55750600654600090815260046020526040902060190154634000000063ffffffff909116105b8015610d1e5750600654600160a060020a03841660009081526002602081905260409091200154145b1515610d2957600080fd5b5060009050805b6004811015610dcb57600654600081815260046020818152604080842060020154600160a060020a03891685526003835281852095855294909152909120610d8d929184908110610d7d57fe5b015484910263ffffffff6120cd16565b600160a060020a038416600090815260036020908152604080832060065484529091528120919350908260048110610dc157fe5b0155600101610d30565b6000821115610e4e57604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015610e0a573d6000803e3d6000fd5b50604080518381524260208201528151600160a060020a038616927fe139691e7435f1fb40ec50ed3729009226be49087fd00e9e5bac276c2a8f40cf928290030190a25b505050565b600154600160a060020a03163314610e6a57600080fd5b600054600160a060020a0382811691161415610e8557600080fd5b600160a060020a0381161515610e9a57600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b303190565b336000818152600260208190526040822001549091908290610f6690610f419084906120dd565b600160a060020a0384166000908152600260205260409020549063ffffffff6120cd16565b600160a060020a038316600090815260026020526040902060010154909150811115610faf57600160a060020a0382166000908152600260205260409020600101549003610fb3565b5060005b92915050565b6000610fc3613a72565b600080610fce613a72565b610fd6613a72565b610fde613a91565b610fe6613a72565b6000806000610ff3613a72565b60065460009081526004602081905260409182902060028101548351608081019094529e50339450600301908282826020028201915b8154815260200190600101908083116110295750505050509a506004600060065481526020019081526020016000206008015499506004600060065481526020019081526020016000206007015498506004600060065481526020019081526020016000206014016004806020026040519081016040528092919082600480156110fa576020028201916000905b82829054906101000a90046001608060020a03166001608060020a031681526020019060100190602082600f010492830192600103820291508084116110b75790505b505060065460009081526004602052604090206009810154949c5093965050601990920191506002905060088104919091015460079091166004026101000a900463ffffffff1681600063ffffffff909216602092830291909101526006546000908152600490915260409020601901600360088104919091015460079091166004026101000a900463ffffffff1681600163ffffffff909216602092830291909101526006546000908152600491829052604090206019019060088104919091015460079091166004026101000a900463ffffffff1681600263ffffffff909216602092830291909101526006546000908152600490915260409020601901600560088104919091015460079091166004026101000a900463ffffffff1681600363ffffffff929092166020928302919091015260068054600090815260049092526040808320815160c0810192839052949a508a949360189091019291908390855b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161125e5750505050600160a060020a038516600090815260036020908152604080832060065484529091529081902081516080810192839052949a5092506004915082845b8154815260200190600101908083116112d957505050600160a060020a03909416600090815260036020908152604080832060065484529091529020600401549d9e9c9d9b9c9a9b999a9899979891976001608060020a0316965093945092505050565b600154600160a060020a031681565b600154600160a060020a0316331461136357600080fd5b600154600160a060020a038281169116141561137e57600080fd5b600160a060020a038116151561139357600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6006546000908152600460205260408120601981015468010000000000000000810463ffffffff9081166c01000000000000000000000000830482160170010000000000000000000000000000000083048216017401000000000000000000000000000000000000000090920416019190819081908190819033908261149382612346565b600160a060020a03848116600090815260036020908152604080832060065484528252808320600490810154845483517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001938101939093529251969e5070010000000000000000000000000000000090046001608060020a03169b50931693631097b9ee93602480820194918390030190829087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506040513d602081101561156357600080fd5b5051600654600160a060020a038516600090815260026020819052604082200154670de0b6b3a7640000938a02939093049950965086955014156116d5576115ad836006546123f6565b9450600090505b600481101561164e57670de0b6b3a76400006116376014840183600481106115d857fe5b600281049190910154600160a060020a03871660009081526003602090815260408083206006548452909152902060019092166010026101000a90046001608060020a031690846004811061162957fe5b01549063ffffffff611a8a16565b81151561164057fe5b0493909301926001016115b4565b600160a060020a038316600090815260036020908152604080832060065484529091529020600401546001608060020a031684106116d057600160a060020a038316600090815260036020908152604080832060065484529091529020600401546116c99085906001608060020a031663ffffffff611ab616565b93506116d5565b600093505b505050909192939495565b6006546000908152600460205260409020600101544391565b336000908152600260208190526040822001548190151561171957600080fd5b33915061172582612573565b90506000811161173457600080fd5b600160a060020a038216600090815260026020526040902060010154611760908263ffffffff6120cd16565b600160a060020a038316600081815260026020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b6117fd613a72565b600154600160a060020a0316331461181457600080fd5b506040805160808101825260008082526001602080840191909152600283850152600360608401526005805460ff1916905583519182524290820152825191927fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e5692918290030190a161188681610843565b50565b600154600160a060020a031633146118a057600080fd5b6005805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b60008033321461190057600080fd5b50506005543390349060ff1615801561191b57506000600654115b801561192e575066038d7ea4c680008110155b8015611943575068056bc75e2d631000008111155b8015611956575060038563ffffffff1611155b8015611969575060058463ffffffff1611155b8015611988575060065460009081526004602052604090206001015443105b151561199357600080fd5b610c7b8286838787611b86565b60065460009081526004602052604090206002810154600a90910154670de0b6b3a764000091020490565b6119d7600754346120cd565b600755565b60008060008460020154611a01670de0b6b3a764000086611a8a90919063ffffffff16565b811515611a0a57fe5b0491506064611a2083603c63ffffffff611a8a16565b811515611a2957fe5b049050611a438186600901546120cd90919063ffffffff16565b6009860155600a850154611a5f9082840363ffffffff6120cd16565b600a8601556008850154611a79908363ffffffff6120cd16565b600895909501949094559392505050565b6000821515611a9b57506000610fb3565b50818102818382811515611aab57fe5b0414610fb357600080fd5b600082821115611ac557600080fd5b50900390565b601981015463ffffffff16600080808084118015611af2575063400000008463ffffffff16105b15610c7b5760198501805463ffffffff19166340000000861763ffffffff908116919091179091556002860154600a870154909450670de0b6b3a764000091611b3e91908690611a8a16565b811515611b4757fe5b0491506028611b5783600a611a8a565b811515611b6057fe5b049050611b78816007546120cd90919063ffffffff16565b600755610c7b85600061260e565b600160a060020a0385166000818152600360209081526040808320600654808552908352818420600484528285209585526002938490529184209092015490939291829182918291829114611c8657600160a060020a038c166000908152600260208190526040909120015415611c6557600160a060020a038c1660009081526002602081905260409091200154611c1f908d906120dd565b600160a060020a038d16600090815260026020526040902054909550611c4b908663ffffffff6120cd16565b600160a060020a038d166000908152600260205260409020555b600654600160a060020a038d16600090815260026020819052604090912001555b6064611c998b600563ffffffff611a8a16565b811515611ca257fe5b049350611cbe848b0387600701546120cd90919063ffffffff16565b6007870155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038f811660048301528b811660248301529151919092169163c671b93491879160448082019260209290919082900301818588803b158015611d3557600080fd5b505af1158015611d49573d6000803e3d6000fd5b50505050506040513d6020811015611d6057600080fd5b50516004880180546001608060020a037001000000000000000000000000000000008083048216850182160291161790559250611db9866064611daa8d602863ffffffff611a8a16565b811515611db357fe5b046119dc565b506064611dcd8b602863ffffffff611a8a16565b811515611dd657fe5b60028801549190049a50611df88b670de0b6b3a764000063ffffffff611a8a16565b811515611e0157fe5b049150611e1b8287600801546120cd90919063ffffffff16565b6008870155611e47826003880163ffffffff8e1660048110611e3957fe5b01549063ffffffff6120cd16565b6003870163ffffffff8d1660048110611e5c57fe5b01558663ffffffff8c1660048110611e7057fe5b01549350831515611ec6576019860163ffffffff60028d011660068110611e9357fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811660010116029190911790555b611ed6848363ffffffff6120cd16565b8763ffffffff8d1660048110611ee857fe5b01556008860154670de0b6b3a76400001015611f305760088601546007870154611f2090670de0b6b3a764000063ffffffff611a8a16565b811515611f2957fe5b0460028701555b611f9e670de0b6b3a7640000611f796014890163ffffffff8f1660048110611f5457fe5b60028104919091015486916001166010026101000a90046001608060020a0316611a8a565b811515611f8257fe5b60048a01546001608060020a031691900463ffffffff61280416565b6004880180546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055611fdb866702c68af0bb14000061260e565b611fe78b8a848f612820565b9050806018870163ffffffff8b1660068110611fff57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507f12ca57ddb41cb2f73bbe08965d3d608bb3c1947bc95672ef54022490f55360218c6006548d868d866040518087600160a060020a0316600160a060020a031681526020018681526020018563ffffffff1663ffffffff1681526020018481526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b81810182811015610fb357600080fd5b600080600080600080600080600089600260008d600160a060020a0316600160a060020a0316815260200190815260200160002060020154141580612120575089155b1561212e5760009850612338565b5050600088815260046020908152604080832060198101546002820154600160a060020a038f168652600385528386208e875290945291842090995064010000000090910463ffffffff1697509195508594509250835b60048110156122395781816004811061219a57fe5b015492506121d2670de0b6b3a76400006121ba858763ffffffff611a8a16565b8115156121c357fe5b8891900463ffffffff6120cd16565b955061222f670de0b6b3a764000061221760148b0184600481106121f257fe5b60028104919091015487916001166010026101000a90046001608060020a0316611a8a565b81151561222057fe5b8791900463ffffffff6120cd16565b9450600101612185565b60048201546001608060020a0316851061227357600482015461226c9086906001608060020a031663ffffffff611ab616565b9450612278565b600094505b612288868663ffffffff6120cd16565b955060008763ffffffff161180156122b057506019880154634000000063ffffffff90911610155b15612334578163ffffffff600019890116600481106122cb57fe5b015492506000831115612334576009880154670de0b6b3a7640000906122f7908663ffffffff611a8a16565b81151561230057fe5b0494506123316003890163ffffffff6000198a01166004811061231f57fe5b01546121ba878663ffffffff611a8a16565b95505b8598505b505050505050505092915050565b600281015460009081908180805b60048310156123995760038701836004811061236c57fe5b0154915061238c670de0b6b3a7640000612217848763ffffffff611a8a16565b9450600190920191612354565b6009870154670de0b6b3a7640000906123b8908663ffffffff611a8a16565b8115156123c157fe5b0490506123eb87600d01546123df83886120cd90919063ffffffff16565b9063ffffffff6120cd16565b979650505050505050565b600080600080600080600080600089600260008d600160a060020a0316600160a060020a0316815260200190815260200160002060020154141580612439575089155b156124475760009850612338565b5050600088815260046020908152604080832060198101546002820154600160a060020a038f168652600385528386208e875290945291842090995064010000000090910463ffffffff1697509195508594509250835b60048110156124fd578181600481106124b357fe5b015492506124d3670de0b6b3a76400006121ba858763ffffffff611a8a16565b95506124f3670de0b6b3a764000061221760148b0184600481106121f257fe5b945060010161249e565b60048201546001608060020a031685106125375760048201546125309086906001608060020a031663ffffffff611ab616565b945061253c565b600094505b61254c868663ffffffff6120cd16565b955060008763ffffffff161115612334578163ffffffff600019890116600481106122cb57fe5b600160a060020a03811660009081526002602081905260408220015481906125c5906125a09085906120dd565b600160a060020a0385166000908152600260205260409020549063ffffffff6120cd16565b600160a060020a038416600090815260026020526040902060010154909150811115610faf57600160a060020a0383166000908152600260205260409020600101549003610fb3565b6002820154600a83015460009081908190670de0b6b3a764000090612639908663ffffffff611a8a16565b81151561264257fe5b0492506028612652846019611a8a565b81151561265b57fe5b049150602861266b846005611a8a565b81151561267457fe5b04905085600c015481111561274d57600c86015490038481111561274d57600c8601546126a7908263ffffffff6120cd16565b600c87015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50505050506040513d602081101561274a57600080fd5b50505b85600b01548211156127fc5785600b015482039150848211156127fc57600b86015461277f908363ffffffff6120cd16565b600b87015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b50505050505b505050505050565b8181016001608060020a038084169082161015610fb357600080fd5b60008061282b613ad0565b612833613a91565b60008060006004600060065481526020019081526020016000206018018a63ffffffff1660068110151561286357fe5b600891828204019190066004029054906101000a900463ffffffff169550600460006006548152602001908152602001600020600e018a63ffffffff166006811015156128ac57fe5b015443116128bc578596506130a5565b60065460009081526004602052604090206019015463ffffffff9081166101608701526128ef908a9061271090611a8a16565b61016086015190995060069063ffffffff160460640163ffffffff168981151561291557fe5b049850670de0b6b3a76400008904600a0198506113888911156129385761138898505b6040805160c0810182526103e8808252610fa06020830152611388928201929092526107d060608201526080810191909152610bb860a08201529589019593508363ffffffff8b166006811061298a57fe5b602002015161ffff168663ffffffff161080156129b25750600085610160015163ffffffff16115b156129bf578596506130a5565b8363ffffffff8b16600681106129d157fe5b602002015161ffff1663ffffffff871610612a1d5743600460006006548152602001908152602001600020600e018b63ffffffff16600681101515612a1257fe5b015560009550612a22565b606499505b6101608501805160010163ffffffff90811690915260065460e08701819052600090815260046020526040812060190154640100000000900490911660c087015292505b6004831015612c2a5760e085015160009081526004602052604090206016018360088110612a9057fe5b600891828204019190066004029054906101000a900463ffffffff16856000015184600481101515612abe57fe5b63ffffffff9092166020928302919091015260e086015160009081526004918290526040902060160190840160088110612af457fe5b600891828204019190066004029054906101000a900463ffffffff16856020015184600481101515612b2257fe5b63ffffffff9092166020928302919091015260e086015160009081526004909152604090206002906017018460088110612b5857fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612b8357fe5b04856060015184600481101515612b9657fe5b63ffffffff9092166020928302919091015260e0860151600090815260049182905260409020600291601790910190850160088110612bd157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612bfc57fe5b04856040015184600481101515612c0f57fe5b63ffffffff9092166020929092020152600190920191612a66565b84610160015163ffffffff1660011415612c6757845160059063ffffffff8d1660048110612c5457fe5b6020020180519190910163ffffffff1690525b612c70856130b3565b63ffffffff8a161515612c8757612c878b86613195565b8963ffffffff1660011415612ca057612ca08b86613220565b8963ffffffff1660021415612cb957612cb98b86613239565b8963ffffffff1660031415612cd257612cd28b86613252565b8963ffffffff1660041415612cea57612cea856132ae565b8963ffffffff1660051415612d0357612d038b866133d8565b60808501805163ffffffff8d81166201000002909117169052600092508291505b6004831015613001578451605f908460048110612d3d57fe5b6020020180519190910263ffffffff16905284516064908460048110612d5f57fe5b6020020181815163ffffffff16811515612d7557fe5b0463ffffffff1690525060608501518360048110612d8f57fe5b60200201518551600a909102908460048110612da757fe5b6020020151600a02019050606481606402866020015185600481101515612dca57fe5b6020020151605f020163ffffffff16811515612de257fe5b04856020015184600481101515612df557fe5b602002019063ffffffff16908163ffffffff16815250508163ffffffff16856020015184600481101515612e2557fe5b602002015163ffffffff161115612e575760208501518360048110612e4657fe5b602002015160ff841660c087015291505b84518360048110612e6457fe5b6020020151600460008760e00151815260200190815260200160002060160184600881101515612e9057fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846020015183600481101515612ecb57fe5b6020020151600460008760e00151815260200190815260200160002060160184600401600881101515612efa57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846060015183600481101515612f3557fe5b6020020151600460008760e00151815260200190815260200160002060170184600881101515612f6157fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846040015183600481101515612f9c57fe5b6020020151600460008760e00151815260200190815260200160002060170184600401600881101515612fcb57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280600101935050612d24565b61016085015160e0860180516000908152600460205260408082206019908101805463ffffffff96871663ffffffff1990911617905560c08a01519351835291200180546001929092019092166401000000000267ffffffff00000000199091161790556008546201518081151561307557fe5b044301610140860181905260e08601516000908152600460205260409020600101556130a1858961340c565b8596505b505050505050949350505050565b6001194390810140600019909101401842418115156130ce57fe5b602084810151805191810151604082015160609092015163ffffffff90811691811695909404959095189183169190910192909201911601015a8101905080604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061315b5780518252601f19909201916020918201910161313c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120610120959095019490945250505050565b6006608082015263ffffffff60038302811660020a811660a083015281516014918416600481106131c257fe5b60200201805163ffffffff92018216905281516096918416600481106131e457fe5b602002015163ffffffff16111561321c57805160969063ffffffff84166004811061320b57fe5b63ffffffff90921660209290920201525b5050565b604081015160649063ffffffff84166004811061320b57fe5b606081015160649063ffffffff84166004811061320b57fe5b6132648161012001516012600e61358c565b63ffffffff1660a082015261012081015161327e906135f4565b63ffffffff908116608083015260a08201518116908316141561321c5761321c81608001518260a00151836136dd565b60066080820152610120810151600290600090819081906132d2906012600461358c565b925060008560c0015163ffffffff1611156132f25760018560c001510392505b604085015163ffffffff84166004811061330857fe5b6020020151915060148263ffffffff16111561332757600593506133b8565b8160650360040290508063ffffffff1685602001518463ffffffff1660048110151561334f57fe5b602002015163ffffffff161061338e576020850151819063ffffffff85166004811061337757fe5b6020020180519190910363ffffffff1690526133b8565b602085015160009063ffffffff8516600481106133a757fe5b63ffffffff90921660209290920201525b505063ffffffff918216600391909102821660020a021660a09190910152565b600560808201526101208101516133f390601861010061358c565b63ffffffff1660a0820181905261321c90839083613981565b7f5a250066b073a4ff8db1911b1f4467cf987e161fd19daa3dfa3f4c7518d81b638260e0015183610160015184608001518560a0015186600001518760200151886060015189604001518a61014001518b61010001518b604051808c81526020018b63ffffffff1663ffffffff1681526020018a63ffffffff1663ffffffff1681526020018963ffffffff1663ffffffff16815260200188600460200280838360005b838110156134c75781810151838201526020016134af565b5050505090500187600460200280838360005b838110156134f25781810151838201526020016134da565b5050505090500186600460200280838360005b8381101561351d578181015183820152602001613505565b5050505090500185600460200280838360005b83811015613548578181015183820152602001613530565b5050505090500184815260200183815260200182600160a060020a0316600160a060020a031681526020019b50505050505050505050505060405180910390a15050565b60008163ffffffff16848460010163ffffffff166020811015156135ac57fe5b60f860020a91901a8102048563ffffffff8616602081106135c957fe5b1a60f860020a0260f860020a9004610100020163ffffffff168115156135eb57fe5b06949350505050565b60006135fe613b4b565b50604080516102c081018252600180825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152600261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082015260036102408201819052610260820181905261028082015260046102a0820152806136be846018601661358c565b63ffffffff16601681106136ce57fe5b602002015160ff169392505050565b6136e5613b6b565b506040805160a08101825260018152600a602080830191909152600f82840152601460608301526019608083015260e08401805160009081526004909252838220600901548151835284832060020154915183529382206008015492939290918060646137728763ffffffff8c166005811061375d57fe5b6020020151879060ff1663ffffffff611a8a16565b81151561377b57fe5b04915061378e858363ffffffff611ab616565b60e08801516000908152600460205260409020600901556137b5838363ffffffff611ab616565b60e0880151600090815260046020526040902060080155670de0b6b3a76400006137e5838663ffffffff611a8a16565b8115156137ee57fe5b60e0890151600090815260046020526040902060070154919004925061381a908363ffffffff611ab616565b60e0880180516000908152600460208181526040808420600701959095556101008c018790529251825290915220600d015461385c908363ffffffff6120cd16565b60e0880180516000908152600460208190526040808320600d019490945591518152919091206003019063ffffffff8a1690811061389657fe5b0154905060008111156139765761391c816138bf84670de0b6b3a764000063ffffffff611a8a16565b8115156138c857fe5b04600460008a60e0015181526020019081526020016000206014018a63ffffffff166004811015156138f657fe5b60028104919091015460019091166010026101000a90046001608060020a031690612804565b60e088015160009081526004602081905260409091206014019063ffffffff8b1690811061394657fe5b600291828204019190066010026101000a8154816001608060020a0302191690836001608060020a031602179055505b505050505050505050565b600080805b60048310156127fc576040840151600a6001600363ffffffff8916060102925083600481106139b157fe5b602002015190508063ffffffff168263ffffffff161115806139d857508563ffffffff1683145b156139e657600091506139ec565b80820391505b835183600481106139f957fe5b602002015163ffffffff168263ffffffff161015613a3757835182908460048110613a2057fe5b6020020180519190910363ffffffff169052613a58565b83516001908460048110613a4757fe5b63ffffffff90921660209290920201525b600463ffffffff9095169490940493600190920191613986565b6080604051908101604052806004906020820280388339509192915050565b60c0604051908101604052806006906020820280388339509192915050565b610100604051908101604052806008906020820280388339509192915050565b61030060405190810160405280613ae5613a72565b8152602001613af2613a72565b8152602001613aff613a72565b8152602001613b0c613a72565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101009091015290565b6102c0604051908101604052806016906020820280388339509192915050565b60a06040519081016040528060059060208202803883395091929150505600a165627a7a723058200a3f7e0d78e2dc9e106361c06668727f9b354baa9c91352f455a0b3aa7d6e23f0029

Deployed Bytecode

0x6080604052600436106101275763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea0811461014057806310b7d9ae146101675780631449c321146101905780631e98d3341461029e578063212a6fd3146102e057806332dc04aa146102f5578063342d1c321461030d5780635a9e426b146103415780635b366096146103565780636b2f463214610377578063844d38ee1461038c57806388037e1c146103a15780638da5cb5b146104c1578063a6f9dae1146104f2578063ae5dbd4314610513578063b395f27814610562578063bd679ab214610590578063bdc0ba8e146105a5578063cc0e13e2146105ba578063e8657538146105cf578063ee142686146105f2578063fee1382314610607575b600054600160a060020a0316331461013e57600080fd5b005b34801561014c57600080fd5b5061015561060f565b60408051918252519081900360200190f35b34801561017357600080fd5b5061017c610615565b604080519115158252519081900360200190f35b34801561019c57600080fd5b506101a561061e565b604051808c608080838360005b838110156101ca5781810151838201526020016101b2565b505050509050018b81526020018a63ffffffff1663ffffffff16815260200189815260200188815260200187815260200186600660200280838360005b8381101561021f578181015183820152602001610207565b5050505090500185600860200280838360005b8381101561024a578181015183820152602001610232565b5050505090500184600860200280838360005b8381101561027557818101518382015260200161025d565b505050509050018381526020018281526020019b50505050505050505050505060405180910390f35b3480156102aa57600080fd5b5060408051608081810190925261013e913691600491608491908390819083908290808284375093965061084395505050505050565b3480156102ec57600080fd5b5061013e610a49565b34801561030157600080fd5b5061013e600435610ac6565b34801561031957600080fd5b5061013e63ffffffff6004358116906024359060443516600160a060020a0360643516610b25565b34801561034d57600080fd5b5061013e610c82565b34801561036257600080fd5b5061013e600160a060020a0360043516610e53565b34801561038357600080fd5b50610155610f15565b34801561039857600080fd5b50610155610f1a565b3480156103ad57600080fd5b506103b6610fb9565b6040518a8152602081018a608080838360005b838110156103e15781810151838201526020016103c9565b5050505090500189815260200188815260200187600460200280838360005b83811015610418578181015183820152602001610400565b5050505090500186600460200280838360005b8381101561044357818101518382015260200161042b565b5050505090500185600660200280838360005b8381101561046e578181015183820152602001610456565b5050505090500184600460200280838360005b83811015610499578181015183820152602001610481565b505050509050018381526020018281526020019a505050505050505050505060405180910390f35b3480156104cd57600080fd5b506104d661133d565b60408051600160a060020a039092168252519081900360200190f35b3480156104fe57600080fd5b5061013e600160a060020a036004351661134c565b34801561051f57600080fd5b5061052861140e565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561056e57600080fd5b506105776116e0565b6040805192835260208301919091528051918290030190f35b34801561059c57600080fd5b5061013e6116f9565b3480156105b157600080fd5b5061013e6117f5565b3480156105c657600080fd5b5061013e611889565b61013e63ffffffff60043581169060243516600160a060020a03604435166118f1565b3480156105fe57600080fd5b506101556119a0565b61013e6119cb565b60075490565b60055460ff1690565b610626613a72565b6000806000806000610636613a91565b61063e613ab0565b610646613ab0565b600654600081815260046020526040812090918291600991906019018360088082049290920154600654600090815260046020819052604080832080546001820154975483516080810194859052600790981685026101000a90960463ffffffff169766038d7ea4c680009791969095601884019560168501956017909501944394928e9291908390855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116106d157905050506040805160c08101909152939e508892506006915083905082826020028201916000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161072557505060408051610100810191829052959a508994506008935091508390506000855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610781575050604080516101008101918290529599508894506008935091508390506000855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116107dd579050505050505092509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b600154600090819081908190600160a060020a0316331461086357600080fd5b60055460ff161561087357600080fd5b60068054600101908190556000908152600460205260408120945092505b6004831015610960578483600481106108a657fe5b6020020151600984600481106108b857fe5b602091828204019190066101000a81548160ff021916908360ff160217905550606484601601846008811015156108eb57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506019846016018460040160088110151561092a57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280600101935050610891565b4380855563128a180001600185015566038d7ea4c680006002850181905560075490925061098f9085906119dc565b9050670de0b6b3a76400006109aa828463ffffffff611a8a16565b8115156109b357fe5b046007808601829055549091506109d0908263ffffffff611ab616565b6007556006546040518181527f56bb87056d3ab27d1f849434662a0094311af359f66c9c50e1a3a0f2941e34f79190879043906020810183608080838360005b83811015610a28578181015183820152602001610a10565b50505050905001828152602001935050505060405180910390a15050505050565b600154600090600160a060020a03163314610a6357600080fd5b60055460ff1615610a7357600080fd5b506006546000908152600460205260409020610a8e81611acb565b60065460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610add57600080fd5b60008111610aea57600080fd5b60088190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b6000333214610b3357600080fd5b60055460ff16158015610b4857506000600654115b8015610b5b575066038d7ea4c680008410155b8015610b70575068056bc75e2d631000008411155b8015610b83575060038563ffffffff1611155b8015610b96575060058363ffffffff1611155b8015610bb5575060065460009081526004602052604090206001015443105b1515610bc057600080fd5b5060008054604080517f52dde1c300000000000000000000000000000000000000000000000000000000815260048101879052336024820181905291519193600160a060020a03909316926352dde1c3926044808401936020939083900390910190829087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b5051935060008411610c6e57600080fd5b610c7b8186868686611b86565b5050505050565b6005546000908190819060ff161515600114610c9d57600080fd5b3392506000600654118015610cca575060065460009081526004602052604081206019015463ffffffff16115b8015610cf55750600654600090815260046020526040902060190154634000000063ffffffff909116105b8015610d1e5750600654600160a060020a03841660009081526002602081905260409091200154145b1515610d2957600080fd5b5060009050805b6004811015610dcb57600654600081815260046020818152604080842060020154600160a060020a03891685526003835281852095855294909152909120610d8d929184908110610d7d57fe5b015484910263ffffffff6120cd16565b600160a060020a038416600090815260036020908152604080832060065484529091528120919350908260048110610dc157fe5b0155600101610d30565b6000821115610e4e57604051600160a060020a0384169083156108fc029084906000818181858888f19350505050158015610e0a573d6000803e3d6000fd5b50604080518381524260208201528151600160a060020a038616927fe139691e7435f1fb40ec50ed3729009226be49087fd00e9e5bac276c2a8f40cf928290030190a25b505050565b600154600160a060020a03163314610e6a57600080fd5b600054600160a060020a0382811691161415610e8557600080fd5b600160a060020a0381161515610e9a57600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b303190565b336000818152600260208190526040822001549091908290610f6690610f419084906120dd565b600160a060020a0384166000908152600260205260409020549063ffffffff6120cd16565b600160a060020a038316600090815260026020526040902060010154909150811115610faf57600160a060020a0382166000908152600260205260409020600101549003610fb3565b5060005b92915050565b6000610fc3613a72565b600080610fce613a72565b610fd6613a72565b610fde613a91565b610fe6613a72565b6000806000610ff3613a72565b60065460009081526004602081905260409182902060028101548351608081019094529e50339450600301908282826020028201915b8154815260200190600101908083116110295750505050509a506004600060065481526020019081526020016000206008015499506004600060065481526020019081526020016000206007015498506004600060065481526020019081526020016000206014016004806020026040519081016040528092919082600480156110fa576020028201916000905b82829054906101000a90046001608060020a03166001608060020a031681526020019060100190602082600f010492830192600103820291508084116110b75790505b505060065460009081526004602052604090206009810154949c5093965050601990920191506002905060088104919091015460079091166004026101000a900463ffffffff1681600063ffffffff909216602092830291909101526006546000908152600490915260409020601901600360088104919091015460079091166004026101000a900463ffffffff1681600163ffffffff909216602092830291909101526006546000908152600491829052604090206019019060088104919091015460079091166004026101000a900463ffffffff1681600263ffffffff909216602092830291909101526006546000908152600490915260409020601901600560088104919091015460079091166004026101000a900463ffffffff1681600363ffffffff929092166020928302919091015260068054600090815260049092526040808320815160c0810192839052949a508a949360189091019291908390855b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161125e5750505050600160a060020a038516600090815260036020908152604080832060065484529091529081902081516080810192839052949a5092506004915082845b8154815260200190600101908083116112d957505050600160a060020a03909416600090815260036020908152604080832060065484529091529020600401549d9e9c9d9b9c9a9b999a9899979891976001608060020a0316965093945092505050565b600154600160a060020a031681565b600154600160a060020a0316331461136357600080fd5b600154600160a060020a038281169116141561137e57600080fd5b600160a060020a038116151561139357600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6006546000908152600460205260408120601981015468010000000000000000810463ffffffff9081166c01000000000000000000000000830482160170010000000000000000000000000000000083048216017401000000000000000000000000000000000000000090920416019190819081908190819033908261149382612346565b600160a060020a03848116600090815260036020908152604080832060065484528252808320600490810154845483517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001938101939093529251969e5070010000000000000000000000000000000090046001608060020a03169b50931693631097b9ee93602480820194918390030190829087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050506040513d602081101561156357600080fd5b5051600654600160a060020a038516600090815260026020819052604082200154670de0b6b3a7640000938a02939093049950965086955014156116d5576115ad836006546123f6565b9450600090505b600481101561164e57670de0b6b3a76400006116376014840183600481106115d857fe5b600281049190910154600160a060020a03871660009081526003602090815260408083206006548452909152902060019092166010026101000a90046001608060020a031690846004811061162957fe5b01549063ffffffff611a8a16565b81151561164057fe5b0493909301926001016115b4565b600160a060020a038316600090815260036020908152604080832060065484529091529020600401546001608060020a031684106116d057600160a060020a038316600090815260036020908152604080832060065484529091529020600401546116c99085906001608060020a031663ffffffff611ab616565b93506116d5565b600093505b505050909192939495565b6006546000908152600460205260409020600101544391565b336000908152600260208190526040822001548190151561171957600080fd5b33915061172582612573565b90506000811161173457600080fd5b600160a060020a038216600090815260026020526040902060010154611760908263ffffffff6120cd16565b600160a060020a038316600081815260026020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b6117fd613a72565b600154600160a060020a0316331461181457600080fd5b506040805160808101825260008082526001602080840191909152600283850152600360608401526005805460ff1916905583519182524290820152825191927fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e5692918290030190a161188681610843565b50565b600154600160a060020a031633146118a057600080fd5b6005805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b60008033321461190057600080fd5b50506005543390349060ff1615801561191b57506000600654115b801561192e575066038d7ea4c680008110155b8015611943575068056bc75e2d631000008111155b8015611956575060038563ffffffff1611155b8015611969575060058463ffffffff1611155b8015611988575060065460009081526004602052604090206001015443105b151561199357600080fd5b610c7b8286838787611b86565b60065460009081526004602052604090206002810154600a90910154670de0b6b3a764000091020490565b6119d7600754346120cd565b600755565b60008060008460020154611a01670de0b6b3a764000086611a8a90919063ffffffff16565b811515611a0a57fe5b0491506064611a2083603c63ffffffff611a8a16565b811515611a2957fe5b049050611a438186600901546120cd90919063ffffffff16565b6009860155600a850154611a5f9082840363ffffffff6120cd16565b600a8601556008850154611a79908363ffffffff6120cd16565b600895909501949094559392505050565b6000821515611a9b57506000610fb3565b50818102818382811515611aab57fe5b0414610fb357600080fd5b600082821115611ac557600080fd5b50900390565b601981015463ffffffff16600080808084118015611af2575063400000008463ffffffff16105b15610c7b5760198501805463ffffffff19166340000000861763ffffffff908116919091179091556002860154600a870154909450670de0b6b3a764000091611b3e91908690611a8a16565b811515611b4757fe5b0491506028611b5783600a611a8a565b811515611b6057fe5b049050611b78816007546120cd90919063ffffffff16565b600755610c7b85600061260e565b600160a060020a0385166000818152600360209081526040808320600654808552908352818420600484528285209585526002938490529184209092015490939291829182918291829114611c8657600160a060020a038c166000908152600260208190526040909120015415611c6557600160a060020a038c1660009081526002602081905260409091200154611c1f908d906120dd565b600160a060020a038d16600090815260026020526040902054909550611c4b908663ffffffff6120cd16565b600160a060020a038d166000908152600260205260409020555b600654600160a060020a038d16600090815260026020819052604090912001555b6064611c998b600563ffffffff611a8a16565b811515611ca257fe5b049350611cbe848b0387600701546120cd90919063ffffffff16565b6007870155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038f811660048301528b811660248301529151919092169163c671b93491879160448082019260209290919082900301818588803b158015611d3557600080fd5b505af1158015611d49573d6000803e3d6000fd5b50505050506040513d6020811015611d6057600080fd5b50516004880180546001608060020a037001000000000000000000000000000000008083048216850182160291161790559250611db9866064611daa8d602863ffffffff611a8a16565b811515611db357fe5b046119dc565b506064611dcd8b602863ffffffff611a8a16565b811515611dd657fe5b60028801549190049a50611df88b670de0b6b3a764000063ffffffff611a8a16565b811515611e0157fe5b049150611e1b8287600801546120cd90919063ffffffff16565b6008870155611e47826003880163ffffffff8e1660048110611e3957fe5b01549063ffffffff6120cd16565b6003870163ffffffff8d1660048110611e5c57fe5b01558663ffffffff8c1660048110611e7057fe5b01549350831515611ec6576019860163ffffffff60028d011660068110611e9357fe5b6008810491909101805460079092166004026101000a63ffffffff81810219841693829004811660010116029190911790555b611ed6848363ffffffff6120cd16565b8763ffffffff8d1660048110611ee857fe5b01556008860154670de0b6b3a76400001015611f305760088601546007870154611f2090670de0b6b3a764000063ffffffff611a8a16565b811515611f2957fe5b0460028701555b611f9e670de0b6b3a7640000611f796014890163ffffffff8f1660048110611f5457fe5b60028104919091015486916001166010026101000a90046001608060020a0316611a8a565b811515611f8257fe5b60048a01546001608060020a031691900463ffffffff61280416565b6004880180546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055611fdb866702c68af0bb14000061260e565b611fe78b8a848f612820565b9050806018870163ffffffff8b1660068110611fff57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507f12ca57ddb41cb2f73bbe08965d3d608bb3c1947bc95672ef54022490f55360218c6006548d868d866040518087600160a060020a0316600160a060020a031681526020018681526020018563ffffffff1663ffffffff1681526020018481526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b81810182811015610fb357600080fd5b600080600080600080600080600089600260008d600160a060020a0316600160a060020a0316815260200190815260200160002060020154141580612120575089155b1561212e5760009850612338565b5050600088815260046020908152604080832060198101546002820154600160a060020a038f168652600385528386208e875290945291842090995064010000000090910463ffffffff1697509195508594509250835b60048110156122395781816004811061219a57fe5b015492506121d2670de0b6b3a76400006121ba858763ffffffff611a8a16565b8115156121c357fe5b8891900463ffffffff6120cd16565b955061222f670de0b6b3a764000061221760148b0184600481106121f257fe5b60028104919091015487916001166010026101000a90046001608060020a0316611a8a565b81151561222057fe5b8791900463ffffffff6120cd16565b9450600101612185565b60048201546001608060020a0316851061227357600482015461226c9086906001608060020a031663ffffffff611ab616565b9450612278565b600094505b612288868663ffffffff6120cd16565b955060008763ffffffff161180156122b057506019880154634000000063ffffffff90911610155b15612334578163ffffffff600019890116600481106122cb57fe5b015492506000831115612334576009880154670de0b6b3a7640000906122f7908663ffffffff611a8a16565b81151561230057fe5b0494506123316003890163ffffffff6000198a01166004811061231f57fe5b01546121ba878663ffffffff611a8a16565b95505b8598505b505050505050505092915050565b600281015460009081908180805b60048310156123995760038701836004811061236c57fe5b0154915061238c670de0b6b3a7640000612217848763ffffffff611a8a16565b9450600190920191612354565b6009870154670de0b6b3a7640000906123b8908663ffffffff611a8a16565b8115156123c157fe5b0490506123eb87600d01546123df83886120cd90919063ffffffff16565b9063ffffffff6120cd16565b979650505050505050565b600080600080600080600080600089600260008d600160a060020a0316600160a060020a0316815260200190815260200160002060020154141580612439575089155b156124475760009850612338565b5050600088815260046020908152604080832060198101546002820154600160a060020a038f168652600385528386208e875290945291842090995064010000000090910463ffffffff1697509195508594509250835b60048110156124fd578181600481106124b357fe5b015492506124d3670de0b6b3a76400006121ba858763ffffffff611a8a16565b95506124f3670de0b6b3a764000061221760148b0184600481106121f257fe5b945060010161249e565b60048201546001608060020a031685106125375760048201546125309086906001608060020a031663ffffffff611ab616565b945061253c565b600094505b61254c868663ffffffff6120cd16565b955060008763ffffffff161115612334578163ffffffff600019890116600481106122cb57fe5b600160a060020a03811660009081526002602081905260408220015481906125c5906125a09085906120dd565b600160a060020a0385166000908152600260205260409020549063ffffffff6120cd16565b600160a060020a038416600090815260026020526040902060010154909150811115610faf57600160a060020a0383166000908152600260205260409020600101549003610fb3565b6002820154600a83015460009081908190670de0b6b3a764000090612639908663ffffffff611a8a16565b81151561264257fe5b0492506028612652846019611a8a565b81151561265b57fe5b049150602861266b846005611a8a565b81151561267457fe5b04905085600c015481111561274d57600c86015490038481111561274d57600c8601546126a7908263ffffffff6120cd16565b600c87015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b15801561271f57600080fd5b505af1158015612733573d6000803e3d6000fd5b50505050506040513d602081101561274a57600080fd5b50505b85600b01548211156127fc5785600b015482039150848211156127fc57600b86015461277f908363ffffffff6120cd16565b600b87015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b50505050505b505050505050565b8181016001608060020a038084169082161015610fb357600080fd5b60008061282b613ad0565b612833613a91565b60008060006004600060065481526020019081526020016000206018018a63ffffffff1660068110151561286357fe5b600891828204019190066004029054906101000a900463ffffffff169550600460006006548152602001908152602001600020600e018a63ffffffff166006811015156128ac57fe5b015443116128bc578596506130a5565b60065460009081526004602052604090206019015463ffffffff9081166101608701526128ef908a9061271090611a8a16565b61016086015190995060069063ffffffff160460640163ffffffff168981151561291557fe5b049850670de0b6b3a76400008904600a0198506113888911156129385761138898505b6040805160c0810182526103e8808252610fa06020830152611388928201929092526107d060608201526080810191909152610bb860a08201529589019593508363ffffffff8b166006811061298a57fe5b602002015161ffff168663ffffffff161080156129b25750600085610160015163ffffffff16115b156129bf578596506130a5565b8363ffffffff8b16600681106129d157fe5b602002015161ffff1663ffffffff871610612a1d5743600460006006548152602001908152602001600020600e018b63ffffffff16600681101515612a1257fe5b015560009550612a22565b606499505b6101608501805160010163ffffffff90811690915260065460e08701819052600090815260046020526040812060190154640100000000900490911660c087015292505b6004831015612c2a5760e085015160009081526004602052604090206016018360088110612a9057fe5b600891828204019190066004029054906101000a900463ffffffff16856000015184600481101515612abe57fe5b63ffffffff9092166020928302919091015260e086015160009081526004918290526040902060160190840160088110612af457fe5b600891828204019190066004029054906101000a900463ffffffff16856020015184600481101515612b2257fe5b63ffffffff9092166020928302919091015260e086015160009081526004909152604090206002906017018460088110612b5857fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612b8357fe5b04856060015184600481101515612b9657fe5b63ffffffff9092166020928302919091015260e0860151600090815260049182905260409020600291601790910190850160088110612bd157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612bfc57fe5b04856040015184600481101515612c0f57fe5b63ffffffff9092166020929092020152600190920191612a66565b84610160015163ffffffff1660011415612c6757845160059063ffffffff8d1660048110612c5457fe5b6020020180519190910163ffffffff1690525b612c70856130b3565b63ffffffff8a161515612c8757612c878b86613195565b8963ffffffff1660011415612ca057612ca08b86613220565b8963ffffffff1660021415612cb957612cb98b86613239565b8963ffffffff1660031415612cd257612cd28b86613252565b8963ffffffff1660041415612cea57612cea856132ae565b8963ffffffff1660051415612d0357612d038b866133d8565b60808501805163ffffffff8d81166201000002909117169052600092508291505b6004831015613001578451605f908460048110612d3d57fe5b6020020180519190910263ffffffff16905284516064908460048110612d5f57fe5b6020020181815163ffffffff16811515612d7557fe5b0463ffffffff1690525060608501518360048110612d8f57fe5b60200201518551600a909102908460048110612da757fe5b6020020151600a02019050606481606402866020015185600481101515612dca57fe5b6020020151605f020163ffffffff16811515612de257fe5b04856020015184600481101515612df557fe5b602002019063ffffffff16908163ffffffff16815250508163ffffffff16856020015184600481101515612e2557fe5b602002015163ffffffff161115612e575760208501518360048110612e4657fe5b602002015160ff841660c087015291505b84518360048110612e6457fe5b6020020151600460008760e00151815260200190815260200160002060160184600881101515612e9057fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846020015183600481101515612ecb57fe5b6020020151600460008760e00151815260200190815260200160002060160184600401600881101515612efa57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846060015183600481101515612f3557fe5b6020020151600460008760e00151815260200190815260200160002060170184600881101515612f6157fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550846040015183600481101515612f9c57fe5b6020020151600460008760e00151815260200190815260200160002060170184600401600881101515612fcb57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280600101935050612d24565b61016085015160e0860180516000908152600460205260408082206019908101805463ffffffff96871663ffffffff1990911617905560c08a01519351835291200180546001929092019092166401000000000267ffffffff00000000199091161790556008546201518081151561307557fe5b044301610140860181905260e08601516000908152600460205260409020600101556130a1858961340c565b8596505b505050505050949350505050565b6001194390810140600019909101401842418115156130ce57fe5b602084810151805191810151604082015160609092015163ffffffff90811691811695909404959095189183169190910192909201911601015a8101905080604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061315b5780518252601f19909201916020918201910161313c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120610120959095019490945250505050565b6006608082015263ffffffff60038302811660020a811660a083015281516014918416600481106131c257fe5b60200201805163ffffffff92018216905281516096918416600481106131e457fe5b602002015163ffffffff16111561321c57805160969063ffffffff84166004811061320b57fe5b63ffffffff90921660209290920201525b5050565b604081015160649063ffffffff84166004811061320b57fe5b606081015160649063ffffffff84166004811061320b57fe5b6132648161012001516012600e61358c565b63ffffffff1660a082015261012081015161327e906135f4565b63ffffffff908116608083015260a08201518116908316141561321c5761321c81608001518260a00151836136dd565b60066080820152610120810151600290600090819081906132d2906012600461358c565b925060008560c0015163ffffffff1611156132f25760018560c001510392505b604085015163ffffffff84166004811061330857fe5b6020020151915060148263ffffffff16111561332757600593506133b8565b8160650360040290508063ffffffff1685602001518463ffffffff1660048110151561334f57fe5b602002015163ffffffff161061338e576020850151819063ffffffff85166004811061337757fe5b6020020180519190910363ffffffff1690526133b8565b602085015160009063ffffffff8516600481106133a757fe5b63ffffffff90921660209290920201525b505063ffffffff918216600391909102821660020a021660a09190910152565b600560808201526101208101516133f390601861010061358c565b63ffffffff1660a0820181905261321c90839083613981565b7f5a250066b073a4ff8db1911b1f4467cf987e161fd19daa3dfa3f4c7518d81b638260e0015183610160015184608001518560a0015186600001518760200151886060015189604001518a61014001518b61010001518b604051808c81526020018b63ffffffff1663ffffffff1681526020018a63ffffffff1663ffffffff1681526020018963ffffffff1663ffffffff16815260200188600460200280838360005b838110156134c75781810151838201526020016134af565b5050505090500187600460200280838360005b838110156134f25781810151838201526020016134da565b5050505090500186600460200280838360005b8381101561351d578181015183820152602001613505565b5050505090500185600460200280838360005b83811015613548578181015183820152602001613530565b5050505090500184815260200183815260200182600160a060020a0316600160a060020a031681526020019b50505050505050505050505060405180910390a15050565b60008163ffffffff16848460010163ffffffff166020811015156135ac57fe5b60f860020a91901a8102048563ffffffff8616602081106135c957fe5b1a60f860020a0260f860020a9004610100020163ffffffff168115156135eb57fe5b06949350505050565b60006135fe613b4b565b50604080516102c081018252600180825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810191909152600261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082015260036102408201819052610260820181905261028082015260046102a0820152806136be846018601661358c565b63ffffffff16601681106136ce57fe5b602002015160ff169392505050565b6136e5613b6b565b506040805160a08101825260018152600a602080830191909152600f82840152601460608301526019608083015260e08401805160009081526004909252838220600901548151835284832060020154915183529382206008015492939290918060646137728763ffffffff8c166005811061375d57fe5b6020020151879060ff1663ffffffff611a8a16565b81151561377b57fe5b04915061378e858363ffffffff611ab616565b60e08801516000908152600460205260409020600901556137b5838363ffffffff611ab616565b60e0880151600090815260046020526040902060080155670de0b6b3a76400006137e5838663ffffffff611a8a16565b8115156137ee57fe5b60e0890151600090815260046020526040902060070154919004925061381a908363ffffffff611ab616565b60e0880180516000908152600460208181526040808420600701959095556101008c018790529251825290915220600d015461385c908363ffffffff6120cd16565b60e0880180516000908152600460208190526040808320600d019490945591518152919091206003019063ffffffff8a1690811061389657fe5b0154905060008111156139765761391c816138bf84670de0b6b3a764000063ffffffff611a8a16565b8115156138c857fe5b04600460008a60e0015181526020019081526020016000206014018a63ffffffff166004811015156138f657fe5b60028104919091015460019091166010026101000a90046001608060020a031690612804565b60e088015160009081526004602081905260409091206014019063ffffffff8b1690811061394657fe5b600291828204019190066010026101000a8154816001608060020a0302191690836001608060020a031602179055505b505050505050505050565b600080805b60048310156127fc576040840151600a6001600363ffffffff8916060102925083600481106139b157fe5b602002015190508063ffffffff168263ffffffff161115806139d857508563ffffffff1683145b156139e657600091506139ec565b80820391505b835183600481106139f957fe5b602002015163ffffffff168263ffffffff161015613a3757835182908460048110613a2057fe5b6020020180519190910363ffffffff169052613a58565b83516001908460048110613a4757fe5b63ffffffff90921660209290920201525b600463ffffffff9095169490940493600190920191613986565b6080604051908101604052806004906020820280388339509192915050565b60c0604051908101604052806006906020820280388339509192915050565b610100604051908101604052806008906020820280388339509192915050565b61030060405190810160405280613ae5613a72565b8152602001613af2613a72565b8152602001613aff613a72565b8152602001613b0c613a72565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101009091015290565b6102c0604051908101604052806016906020820280388339509192915050565b60a06040519081016040528060059060208202803883395091929150505600a165627a7a723058200a3f7e0d78e2dc9e106361c06668727f9b354baa9c91352f455a0b3aa7d6e23f0029

Swarm Source

bzzr://0a3f7e0d78e2dc9e106361c06668727f9b354baa9c91352f455a0b3aa7d6e23f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.