ETH Price: $3,160.86 (+2.92%)
Gas: 1 Gwei

Contract

0xd9bCf875d0Ca721eC89fE49b57C144e7C1f6451E
 

Overview

ETH Balance

11.722207715728709255 ETH

Eth Value

$37,052.28 (@ $3,160.86/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer150979462022-07-07 21:55:33736 days ago1657230933IN
0xd9bCf875...7C1f6451E
0.001 ETH0.0066149839.24876461
Withdraw70423262019-01-10 12:08:282010 days ago1547122108IN
0xd9bCf875...7C1f6451E
0 ETH0.0002357210
Withdraw70423092019-01-10 12:05:242010 days ago1547121924IN
0xd9bCf875...7C1f6451E
0 ETH0.0002357210
Withdraw70294292019-01-08 4:45:022013 days ago1546922702IN
0xd9bCf875...7C1f6451E
0 ETH0.00033312
Re Load Xaddr70183032019-01-06 4:53:102015 days ago1546750390IN
0xd9bCf875...7C1f6451E
0 ETH0.000072543
Re Load Xaddr70183002019-01-06 4:52:432015 days ago1546750363IN
0xd9bCf875...7C1f6451E
0 ETH0.000072543
Withdraw69721632018-12-29 5:25:202023 days ago1546061120IN
0xd9bCf875...7C1f6451E
0 ETH0.000128234.18
Register Name69616442018-12-27 10:51:082025 days ago1545907868IN
0xd9bCf875...7C1f6451E
0.01 ETH0.003872896
Withdraw69422232018-12-24 4:07:192028 days ago1545624439IN
0xd9bCf875...7C1f6451E
0 ETH0.00033312
Withdraw68770802018-12-13 4:55:252039 days ago1544676925IN
0xd9bCf875...7C1f6451E
0 ETH0.0003681312
Withdraw68745222018-12-12 18:48:472039 days ago1544640527IN
0xd9bCf875...7C1f6451E
0 ETH0.00033312
Withdraw68161532018-12-03 3:16:162049 days ago1543806976IN
0xd9bCf875...7C1f6451E
0 ETH0.0002228
Withdraw68158882018-12-03 2:14:002049 days ago1543803240IN
0xd9bCf875...7C1f6451E
0 ETH0.0003681312
Withdraw67392742018-11-20 11:29:442061 days ago1542713384IN
0xd9bCf875...7C1f6451E
0 ETH0.0003067810
Transfer67311572018-11-19 3:12:492063 days ago1542597169IN
0xd9bCf875...7C1f6451E
0.1 ETH0.001270269
Withdraw67219442018-11-17 15:12:522064 days ago1542467572IN
0xd9bCf875...7C1f6451E
0 ETH0.0003613812
Withdraw67218292018-11-17 14:47:472064 days ago1542466067IN
0xd9bCf875...7C1f6451E
0 ETH0.0002706912
Transfer67218192018-11-17 14:44:482064 days ago1542465888IN
0xd9bCf875...7C1f6451E
1 ETH0.0083739910
Transfer67144422018-11-16 9:32:302066 days ago1542360750IN
0xd9bCf875...7C1f6451E
1.12 ETH0.0025054420
Transfer67092452018-11-15 13:25:422066 days ago1542288342IN
0xd9bCf875...7C1f6451E
1.2 ETH0.0021040815
Transfer67033542018-11-14 14:14:092067 days ago1542204849IN
0xd9bCf875...7C1f6451E
1.11 ETH0.0025054420
Transfer66973962018-11-13 14:45:592068 days ago1542120359IN
0xd9bCf875...7C1f6451E
1.1 ETH0.0018790815
Transfer66912812018-11-12 14:52:362069 days ago1542034356IN
0xd9bCf875...7C1f6451E
1.1 ETH0.0028054420
Transfer66854862018-11-11 16:00:582070 days ago1541952058IN
0xd9bCf875...7C1f6451E
1.09 ETH0.0021040815
Transfer66793842018-11-10 16:10:102071 days ago1541866210IN
0xd9bCf875...7C1f6451E
1.1 ETH0.0028442410
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
69721632018-12-29 5:25:202023 days ago1546061120
0xd9bCf875...7C1f6451E
0.03340148 ETH
69616442018-12-27 10:51:082025 days ago1545907868
0xd9bCf875...7C1f6451E
0.01 ETH
68770802018-12-13 4:55:252039 days ago1544676925
0xd9bCf875...7C1f6451E
0.53520311 ETH
68158882018-12-03 2:14:002049 days ago1543803240
0xd9bCf875...7C1f6451E
0.04573012 ETH
67392742018-11-20 11:29:442061 days ago1542713384
0xd9bCf875...7C1f6451E
0.09666608 ETH
67219442018-11-17 15:12:522064 days ago1542467572
0xd9bCf875...7C1f6451E
0.02418788 ETH
67218292018-11-17 14:47:472064 days ago1542466067
0xd9bCf875...7C1f6451E
10.04827919 ETH
67218192018-11-17 14:44:482064 days ago1542465888
0xd9bCf875...7C1f6451E
7.18831655 ETH
67218192018-11-17 14:44:482064 days ago1542465888
0xd9bCf875...7C1f6451E
0.89853956 ETH
67144422018-11-16 9:32:302066 days ago1542360750
0xd9bCf875...7C1f6451E
0.02236029 ETH
67092452018-11-15 13:25:422066 days ago1542288342
0xd9bCf875...7C1f6451E
0.02218282 ETH
67033542018-11-14 14:14:092067 days ago1542204849
0xd9bCf875...7C1f6451E
0.02200677 ETH
66973962018-11-13 14:45:592068 days ago1542120359
0xd9bCf875...7C1f6451E
0.02183211 ETH
66912812018-11-12 14:52:362069 days ago1542034356
0xd9bCf875...7C1f6451E
0.02165884 ETH
66854862018-11-11 16:00:582070 days ago1541952058
0xd9bCf875...7C1f6451E
0.02148695 ETH
66793842018-11-10 16:10:102071 days ago1541866210
0xd9bCf875...7C1f6451E
0.02131641 ETH
66793412018-11-10 16:00:152071 days ago1541865615
0xd9bCf875...7C1f6451E
0.02114724 ETH
66741632018-11-09 19:34:432072 days ago1541792083
0xd9bCf875...7C1f6451E
0.0209794 ETH
66739092018-11-09 18:32:092072 days ago1541788329
0xd9bCf875...7C1f6451E
0.0208129 ETH
66707452018-11-09 6:14:402073 days ago1541744080
0xd9bCf875...7C1f6451E
0.02064772 ETH
66647222018-11-08 6:21:562074 days ago1541658116
0xd9bCf875...7C1f6451E
0.02048385 ETH
66586872018-11-07 6:51:012075 days ago1541573461
0xd9bCf875...7C1f6451E
0.02032128 ETH
66526722018-11-06 7:02:342076 days ago1541487754
0xd9bCf875...7C1f6451E
0.02016 ETH
66519052018-11-06 4:01:562076 days ago1541476916
0xd9bCf875...7C1f6451E
0.79197959 ETH
66482902018-11-05 13:41:022076 days ago1541425262
0xd9bCf875...7C1f6451E
0.25727194 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReserveBag

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-27
*/

pragma solidity ^0.4.24;

// File: contracts/interface/PlayerBookInterface.sol

interface PlayerBookInterface {
    function getPlayerID(address _addr) external returns(uint256);
    function getPlayerName(uint256 _pID) external view returns(bytes32);
    function getPlayerLAff(uint256 _pID) external view returns(uint256);
    function getPlayerAddr(uint256 _pID) external view returns(address);
    function getNameFee() external view returns(uint256);
    function registerNameXIDFromDapp(address _addr, bytes32 _name, uint256 _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXaddrFromDapp(address _addr, bytes32 _name, address _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXnameFromDapp(address _addr, bytes32 _name, bytes32 _affCode, bool _all) external payable returns(bool, uint256);
}

// File: contracts/interface/TeamPerfitForwarderInterface.sol

interface TeamPerfitForwarderInterface {
    function deposit() external payable returns(bool);
    function status() external view returns(address, address);
}

// File: contracts/interface/DRSCoinInterface.sol

interface DRSCoinInterface {
    function mint(address _to, uint256 _amount) external;
    function profitEth() external payable;
}

// File: contracts/library/SafeMath.sol

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 * change notes:  original SafeMath library from OpenZeppelin modified by Inventor
 * - added sqrt
 * - added sq
 * - added pwr 
 * - changed asserts to requires with error log outputs
 * - removed div, its useless
 */
library SafeMath {
    
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    
    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    
    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

// File: contracts/library/NameFilter.sol

library NameFilter {
    /**
     * @dev filters name strings
     * -converts uppercase to lower case.  
     * -makes sure it does not start/end with a space
     * -makes sure it does not contain multiple spaces in a row
     * -cannot be only numbers
     * -cannot start with 0x 
     * -restricts characters to A-Z, a-z, 0-9, and space.
     * @return reprocessed string in bytes32 format
     */
    function nameFilter(string _input)
        internal
        pure
        returns(bytes32)
    {
        bytes memory _temp = bytes(_input);
        uint256 _length = _temp.length;
        
        //sorry limited to 32 characters
        require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters");
        // make sure it doesnt start with or end with space
        require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space");
        // make sure first two characters are not 0x
        if (_temp[0] == 0x30)
        {
            require(_temp[1] != 0x78, "string cannot start with 0x");
            require(_temp[1] != 0x58, "string cannot start with 0X");
        }
        
        // create a bool to track if we have a non number character
        bool _hasNonNumber;
        
        // convert & check
        for (uint256 i = 0; i < _length; i++)
        {
            // if its uppercase A-Z
            if (_temp[i] > 0x40 && _temp[i] < 0x5b)
            {
                // convert to lower case a-z
                _temp[i] = byte(uint(_temp[i]) + 32);
                
                // we have a non number
                if (_hasNonNumber == false)
                    _hasNonNumber = true;
            } else {
                require
                (
                    // require character is a space
                    _temp[i] == 0x20 || 
                    // OR lowercase a-z
                    (_temp[i] > 0x60 && _temp[i] < 0x7b) ||
                    // or 0-9
                    (_temp[i] > 0x2f && _temp[i] < 0x3a),
                    "string contains invalid characters"
                );
                // make sure theres not 2x spaces in a row
                if (_temp[i] == 0x20)
                    require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces");
                
                // see if we have a character other than a number
                if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39))
                    _hasNonNumber = true;    
            }
        }
        
        require(_hasNonNumber == true, "string cannot be only numbers");
        
        bytes32 _ret;
        assembly {
            _ret := mload(add(_temp, 32))
        }
        return (_ret);
    }
}

// File: contracts/library/DRSDatasets.sol

// structs ==============================================================================
library DRSDatasets {
    //compressedData key
    // [24-14][13-3][2][1][0]
        // 0 - new player (bool)
        // 1 - joined round (bool)
        // 2 - new  leader (bool)
        // 3-13 - round end time
        // 14 - 24 timestamp

    //compressedIDs key
    // [77-52][51-26][25-0]
        // 0-25 - pID 
        // 26-51 - winPID
        // 52-77 - rID
    struct EventReturns {
        uint256 compressedData;
        uint256 compressedIDs;

        address winnerAddr;         // winner address
        bytes32 winnerName;         // winner name
        uint256 amountWon;          // amount won

        uint256 newPot;             // amount in new pot
        uint256 genAmount;          // amount distributed to gen
        uint256 potAmount;          // amount added to pot

        address genAddr;
        uint256 genKeyPrice;
    }

    function setNewPlayerFlag(EventReturns _event) internal pure returns(EventReturns) {
        _event.compressedData = _event.compressedData + 1;
        return _event;
    }

    function setJoinedRoundFlag(EventReturns _event) internal pure returns(EventReturns) {
        _event.compressedData = _event.compressedData + 10;
        return _event;
    }

    function setNewLeaderFlag(EventReturns _event) internal pure returns(EventReturns) {
        _event.compressedData = _event.compressedData + 100;
        return _event;
    }

    function setRoundEndTime(EventReturns _event, uint256 roundEndTime) internal pure returns(EventReturns) {
        _event.compressedData = _event.compressedData + roundEndTime * (10**3);
        return _event;
    }

    function setTimestamp(EventReturns _event, uint256 timestamp) internal pure returns(EventReturns) {
        _event.compressedData = _event.compressedData + timestamp * (10**14);
        return _event;
    }

    function setPID(EventReturns _event, uint256 _pID) internal pure returns(EventReturns) {
        _event.compressedIDs = _event.compressedIDs + _pID;
        return _event;
    }

    function setWinPID(EventReturns _event, uint256 _winPID) internal pure returns(EventReturns) {
        _event.compressedIDs = _event.compressedIDs + (_winPID * (10**26));
        return _event;
    }

    function setRID(EventReturns _event, uint256 _rID) internal pure returns(EventReturns) {
        _event.compressedIDs = _event.compressedIDs + (_rID * (10**52));
        return _event;
    }

    function setWinner(EventReturns _event, address _winnerAddr, bytes32 _winnerName, uint256 _amountWon)
        internal pure returns(EventReturns) {
        _event.winnerAddr = _winnerAddr;
        _event.winnerName = _winnerName;
        _event.amountWon = _amountWon;
        return _event;
    }

    function setGenInfo(EventReturns _event, address _genAddr, uint256 _genKeyPrice)
        internal pure returns(EventReturns) {
        _event.genAddr = _genAddr;
        _event.genKeyPrice = _genKeyPrice;
    }

    function setNewPot(EventReturns _event, uint256 _newPot) internal pure returns(EventReturns) {
        _event.newPot = _newPot;
        return _event;
    }

    function setGenAmount(EventReturns _event, uint256 _genAmount) internal pure returns(EventReturns) {
        _event.genAmount = _genAmount;
        return _event;
    }

    function setPotAmount(EventReturns _event, uint256 _potAmount) internal pure returns(EventReturns) {
        _event.potAmount = _potAmount;
        return _event;
    }

    struct Player {
        address addr;   // player address
        bytes32 name;   // player name
        uint256 win;    // winnings vault
        uint256 gen;    // general vault
        // uint256 aff;    // affiliate vault
        uint256 lrnd;   // last round played
        // uint256 laff;   // last affiliate id used
    }

    struct PlayerRound {
        uint256 eth;    // eth player has added to round (used for eth limiter)
        uint256 keys;   // keys
    }

    struct Round {
        uint256 plyr;   // pID of player in lead

        uint256 end;    // time ends/ended
        bool ended;     // has round end function been ran
        uint256 strt;   // time round started
        uint256 keys;   // keys
        uint256 eth;    // total eth in
        uint256 pot;    // eth to pot (during round) / final amount paid to winner (after round ends)
    }

    struct BuyInfo {
        address addr;   // player address
        bytes32 name;   // player name
        uint256 pid;    // player id
        uint256 keyPrice;
        uint256 keyIndex;
    }
}

// File: contracts/DRSEvents.sol

contract DRSEvents {
    // fired whenever a player registers a name
    event onNewName
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        bool isNewPlayer,
        // uint256 affiliateID,
        // address affiliateAddress,
        // bytes32 affiliateName,
        uint256 amountPaid,
        uint256 timeStamp
    );

    // fired at end of buy or reload
    event onEndTx
    (
        uint256 compressedData,
        uint256 compressedIDs,

        bytes32 playerName,
        address playerAddress,
        uint256 ethIn,
        uint256 keyIndex,

        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,

        uint256 newPot,
        uint256 genAmount,
        uint256 potAmount,

        address genAddr,
        uint256 genKeyPrice
    );

    // fired whenever theres a withdraw
    event onWithdraw
    (
        uint256 indexed playerID,
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 timeStamp
    );

    // fired whenever a withdraw forces end round to be ran
    event onWithdrawAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 compressedData,

        uint256 compressedIDs,

        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,

        uint256 newPot,
        uint256 genAmount
    );

    // fired whenever a player tries a buy after round timer
    // hit zero, and causes end round to be ran.
    event onBuyAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 ethIn,
        uint256 compressedData,

        uint256 compressedIDs,

        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,

        uint256 newPot,
        uint256 genAmount
    );

    // fired whenever a player tries a reload after round timer
    // hit zero, and causes end round to be ran.
    event onReLoadAndDistribute
    (
        address playerAddress,
        bytes32 playerName,
        uint256 compressedData,

        uint256 compressedIDs,

        address winnerAddr,
        bytes32 winnerName,
        uint256 amountWon,

        uint256 newPot,
        uint256 genAmount
    );

    event onBuyKeyFailure
    (
        uint256 roundID,
        uint256 indexed playerID,
        uint256 amount,
        uint256 keyPrice,
        uint256 timeStamp
    );
}

// File: contracts/ReserveBag.sol

contract ReserveBag is DRSEvents {
    using SafeMath for uint256;
    using NameFilter for string;
    using DRSDatasets for DRSDatasets.EventReturns;

    TeamPerfitForwarderInterface public teamPerfit;
    PlayerBookInterface public playerBook;
    DRSCoinInterface public drsCoin;

    // game settings
    string constant public name = "Reserve Bag";
    string constant public symbol = "RB";

    uint256 constant private initKeyPrice = (10**18);

    uint256 private rndExtra_ = 0;       // length of the very first ICO 
    uint256 private rndGap_ = 0;         // length of ICO phase, set to 1 year for EOS.

    uint256 constant private rndMax_ = 24 hours;                // max length a round timer can be
    // uint256 constant private rndMax_ = 5 seconds;                // max length a round timer can be

    uint256 public rID_;    // round id number / total rounds that have happened

    uint256 public keyPrice = initKeyPrice;
    uint256 public keyBought = 0;

    address public owner;

    uint256 public teamPerfitAmuont = 0;

    uint256 public rewardInternal = 36;
    // uint256 public potRatio = 8;
    uint256 public keyPriceIncreaseRatio = 8;
    uint256 public genRatio = 90;

    uint256 public drsCoinDividendRatio = 40;
    uint256 public teamPerfitRatio = 5;

    uint256 public ethMintDRSCoinRate = 100;

    bool public activated_ = false;

    // PLAYER DATA
    mapping(address => uint256) public pIDxAddr_;          // (addr => pID) returns player id by address
    mapping(bytes32 => uint256) public pIDxName_;          // (name => pID) returns player id by name
    mapping(uint256 => DRSDatasets.Player) public plyr_;   // (pID => data) player data
    mapping(uint256 => mapping(uint256 => DRSDatasets.PlayerRound)) public plyrRnds_;    // (pID => rID => data) player round data by player id & round id
    mapping(uint256 => mapping(bytes32 => bool)) public plyrNames_; // (pID => name => bool) list of names a player owns.  (used so you can change your display name amongst any name you own)

    DRSDatasets.BuyInfo[] buyinfos;
    uint256 private startIndex;
    uint256 private endIndex;

    // ROUND DATA 
    mapping(uint256 => DRSDatasets.Round) public round_;   // (rID => data) round data

    // event Info(uint256 _value);

    constructor(address _teamPerfit, address _playBook, address _drsCoin) public
    {
        owner = msg.sender;

        teamPerfit = TeamPerfitForwarderInterface(_teamPerfit);
        playerBook = PlayerBookInterface(_playBook);
        drsCoin = DRSCoinInterface(_drsCoin);

        startIndex = 0;
        endIndex = 0;
    }

    modifier onlyOwner {
        assert(owner == msg.sender);
        _;
    }

    /**
     * @dev prevents contracts from interacting with ReserveBag 
     */
    modifier isHuman() {
        address _addr = msg.sender;
        require(_addr == tx.origin);

        uint256 _codeLength;
        
        assembly {_codeLength := extcodesize(_addr)}
        require(_codeLength == 0, "sorry humans only");
        _;
    }

    /**
     * @dev sets boundaries for incoming tx 
     */
    modifier isWithinLimits(uint256 _eth) {
        require(_eth >= 1000000000, "pocket lint: not a valid currency");
        require(_eth <= 100000 * (10**18), "no vitalik, no");
        _;
    }

    function pushBuyInfo(DRSDatasets.BuyInfo info) internal {
        if(endIndex == buyinfos.length) {
            buyinfos.push(info);
        } else if(endIndex < buyinfos.length) {
            buyinfos[endIndex] = info;
        } else {
            // cannot happen
            revert();
        }

        endIndex = (endIndex + 1) % (rewardInternal + 1);

        if(endIndex == startIndex) {
            startIndex = (startIndex + 1) % (rewardInternal + 1);
        }
    }

    /**
     * @dev emergency buy uses last stored affiliate ID and team snek
     */
    function()
        isActivated()
        isHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        // set up our tx event data and determine if player is new or not
        DRSDatasets.EventReturns memory _eventData_;
        _eventData_ = determinePID(_eventData_);

        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];

        // buy core 
        buyCore(_pID, _eventData_);
    }

    function buyKey()
        isActivated()
        isHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        // set up our tx event data and determine if player is new or not
        DRSDatasets.EventReturns memory _eventData_;
        _eventData_ = determinePID(_eventData_);

        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];

        // buy core 
        buyCore(_pID, _eventData_);
    }

    function reLoadXaddr(uint256 _eth)
        isActivated()
        isHuman()
        isWithinLimits(_eth)
        public
    {
        // fetch player ID
        uint256 _pID = pIDxAddr_[msg.sender];

        require(_pID != 0, "reLoadXaddr can not be called by new players");

        // set up our tx event data
        DRSDatasets.EventReturns memory _eventData_;

        // reload core
        reLoadCore(_pID, _eth, _eventData_);
    }

    function withdrawTeamPerfit()
        isActivated()
        onlyOwner()
        public
    {
        if(teamPerfitAmuont > 0) {
            uint256 _perfit = teamPerfitAmuont;

            teamPerfitAmuont = 0;

            owner.transfer(_perfit);
        }
    }

    function getTeamPerfitAmuont() public view returns(uint256) {
        return teamPerfitAmuont;
    }

    /**
     * @dev withdraws all of your earnings.
     * -functionhash- 0x3ccfd60b
     */
    function withdraw()
        isActivated()
        isHuman()
        public
    {
        // fetch player ID
        uint256 _pID = pIDxAddr_[msg.sender];

        require(_pID != 0, "withdraw can not be called by new players");

        // setup local rID
        uint256 _rID = rID_;

        // grab time
        uint256 _now = now;

        // setup temp var for player eth
        uint256 _eth;

        // check to see if round has ended and no one has run round end yet
        if(_now > round_[_rID].end && !round_[_rID].ended && round_[_rID].plyr != 0)
        {
            // set up our tx event data
            DRSDatasets.EventReturns memory _eventData_;

            // end the round (distributes pot)
            round_[_rID].ended = true;
            _eventData_ = endRound(_eventData_);

            // get their earnings
            _eth = withdrawEarnings(_pID);

            // withdraw eth
            if(_eth > 0) {
                plyr_[_pID].addr.transfer(_eth);    
            }

            // build event data
            _eventData_ = _eventData_.setTimestamp(_now);
            _eventData_ = _eventData_.setPID(_pID);

            // fire withdraw and distribute event
            emit DRSEvents.onWithdrawAndDistribute
            (
                msg.sender,
                plyr_[_pID].name,
                _eth,
                _eventData_.compressedData,
                _eventData_.compressedIDs,

                _eventData_.winnerAddr,
                _eventData_.winnerName,
                _eventData_.amountWon,

                _eventData_.newPot,
                _eventData_.genAmount
            );
        } else {
            // get their earnings
            _eth = withdrawEarnings(_pID);

            // withdraw eth
            if(_eth > 0) {
                plyr_[_pID].addr.transfer(_eth);
            }

            // fire withdraw event
            emit DRSEvents.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now);
        }
    }

    function registerName(string _nameString, bool _all)
        isHuman()
        public
        payable
    {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, ) = playerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, address(0), _all);

        uint256 _pID = pIDxAddr_[_addr];

        emit DRSEvents.onNewName(_pID, _addr, _name, _isNewPlayer, _paid, now);
    }

    /**
     * @dev return the price buyer will pay for next 1 individual key.
     * -functionhash- 0x018a25e8
     * @return price for next key bought (in wei format)
     */
    function getBuyPrice() public view returns(uint256)
    {  
        return keyPrice;
    }

    /**
     * @dev returns time left.  dont spam this, you'll ddos yourself from your node provider
     * -functionhash- 0xc7e284b8
     * @return time left in seconds
     */
    function getTimeLeft() public view returns(uint256)
    {
        uint256 _rID = rID_;

        uint256 _now = now;

        if(_now < round_[_rID].end)
            if(_now > round_[_rID].strt + rndGap_)
                return (round_[_rID].end).sub(_now);
            else
                return (round_[_rID].strt + rndGap_).sub(_now);
        else
            return 0;
    }

    /**
     * @dev returns player earnings per vaults 
     * -functionhash- 0x63066434
     * @return winnings vault
     * @return general vault
     */
    function getPlayerVaults(uint256 _pID) public view returns(uint256, uint256)
    {
        uint256 _rID = rID_;

        uint256 _now = now;

        // if round has ended.  but round end has not been run (so contract has not distributed winnings)
        if(_now > round_[_rID].end && !round_[_rID].ended && round_[_rID].plyr != 0) {
            // if player is winner 
            if(round_[_rID].plyr == _pID) {
                return
                (
                    (plyr_[_pID].win).add(getWin(round_[_rID].pot)),
                    plyr_[_pID].gen
                );
            }
        }

        return (plyr_[_pID].win, plyr_[_pID].gen);
    }

    /**
     * @dev returns all current round info needed for front end
     * -functionhash- 0x747dff42
     * @return round id 
     * @return total keys for round 
     * @return time round ends
     * @return time round started
     * @return current pot

     * @return key price
     * @return current key

     * @return current player ID in lead
     * @return current player address in leads
     * @return current player name in leads
     */
    function getCurrentRoundInfo() public view
        returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bytes32)
    {
        uint256 _rID = rID_;

        uint256 _winPID = round_[_rID].plyr;

        return
        (
            _rID,                           //0
            round_[_rID].end,               //1
            round_[_rID].strt,              //2
            round_[_rID].pot,               //3

            keyPrice,                       //4
            keyBought.add(1),               //5

            _winPID,                        //6
            plyr_[_winPID].addr,            //7
            plyr_[_winPID].name             //8
        );
    }

    /**
     * @dev returns player info based on address.  if no address is given, it will
     * use msg.sender
     * -functionhash- 0xee0b5d8b
     * @param _addr address of the player you want to lookup
     * @return player ID
     * @return player name
     * @return keys owned (current round)
     * @return winnings vault
     * @return general vault
     * @return player round eth
     */
    function getPlayerInfoByAddress(address _addr) public view
        returns(uint256, bytes32, uint256, uint256, uint256, uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        if(_addr == address(0)) {
            _addr == msg.sender;
        }

        uint256 _pID = pIDxAddr_[_addr];

        if(_pID == 0) {
            return (0, "", 0, 0, 0, 0);
        }

        return
        (
            _pID,                               //0
            plyr_[_pID].name,                   //1
            plyrRnds_[_pID][_rID].keys,         //2
            plyr_[_pID].win,                    //3
            plyr_[_pID].gen,                    //4
            plyrRnds_[_pID][_rID].eth           //5
        );
    }

    /**
     * @dev logic runs whenever a buy order is executed.  determines how to handle 
     * incoming eth depending on if we are in an active round or not
     */
    function buyCore(uint256 _pID, DRSDatasets.EventReturns memory _eventData_) private
    {
        uint256 _rID = rID_;

        // grab time
        uint256 _now = now;

        // if round is active
        if(_now >= round_[_rID].strt.add(rndGap_) && (_now <= round_[_rID].end || round_[_rID].plyr == 0)) {
            // call core
            core(_rID, _pID, msg.value, _eventData_);

        // if round is not active
        } else {
            // check to see if end round needs to be ran
            if(_now > round_[_rID].end && !round_[_rID].ended) {
                // end the round (distributes pot) & start new round
                round_[_rID].ended = true;
                _eventData_ = endRound(_eventData_);

                // build event data
                _eventData_ = _eventData_.setTimestamp(_now);
                _eventData_ = _eventData_.setPID(_pID);

                // fire buy and distribute event
                emit DRSEvents.onBuyAndDistribute
                (
                    msg.sender,
                    plyr_[_pID].name,
                    msg.value,
                    _eventData_.compressedData,
                    _eventData_.compressedIDs,

                    _eventData_.winnerAddr,
                    _eventData_.winnerName,
                    _eventData_.amountWon,

                    _eventData_.newPot,
                    _eventData_.genAmount
                );
            }

            // put eth in players vault 
            plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
        }
    }

    /**
     * @dev logic runs whenever a reload order is executed.  determines how to handle
     * incoming eth depending on if we are in an active round or not
     */
    function reLoadCore(uint256 _pID, uint256 _eth, DRSDatasets.EventReturns memory _eventData_) private
    {
        uint256 _rID = rID_;

        uint256 _now = now;

        // if round is active
        if(_now > round_[_rID].strt.add(rndGap_) && (_now <= round_[_rID].end || round_[_rID].plyr == 0)) {
            // get earnings from all vaults and return unused to gen vault
            // because we use a custom safemath library.  this will throw if player
            // tried to spend more eth than they have.
            plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth);

            // call core
            core(_rID, _pID, _eth, _eventData_);

        // if round is not active and end round needs to be ran
        } else {
            // check to see if end round needs to be ran
            if(_now > round_[_rID].end && !round_[_rID].ended) {
                // end the round (distributes pot) & start new round
                round_[_rID].ended = true;
                _eventData_ = endRound(_eventData_);

                // build event data
                _eventData_ = _eventData_.setTimestamp(_now);
                _eventData_ = _eventData_.setPID(_pID);

                // fire buy and distribute event
                emit DRSEvents.onReLoadAndDistribute
                (
                    msg.sender,
                    plyr_[_pID].name,
                    _eventData_.compressedData,
                    _eventData_.compressedIDs,

                    _eventData_.winnerAddr,
                    _eventData_.winnerName,
                    _eventData_.amountWon,

                    _eventData_.newPot,
                    _eventData_.genAmount
                );
            }
        }
    }

    /**
     * @dev this is the core logic for any buy/reload that happens while a round is live.
     */
    function core(uint256 _rID, uint256 _pID, uint256 _eth, DRSDatasets.EventReturns memory _eventData_) private
    {
        if(_eth < keyPrice) {
            plyr_[_pID].gen = plyr_[_pID].gen.add(_eth);
            emit onBuyKeyFailure(_rID, _pID, _eth, keyPrice, now);
            return;
        }

        // if player is new to round
        if(plyrRnds_[_pID][_rID].keys == 0) {
            _eventData_ = managePlayer(_pID, _eventData_);
        }

        // mint the new key
        uint256 _keys = 1;

        uint256 _ethUsed = keyPrice;
        uint256 _ethLeft = _eth.sub(keyPrice);

        updateTimer(_rID);

        // set new leaders
        if(round_[_rID].plyr != _pID) {
            round_[_rID].plyr = _pID;
        }

        // set the new leader bool to true
        _eventData_ = _eventData_.setNewLeaderFlag();

        // update player 
        plyrRnds_[_pID][_rID].keys = _keys.add(plyrRnds_[_pID][_rID].keys);
        plyrRnds_[_pID][_rID].eth = _ethUsed.add(plyrRnds_[_pID][_rID].eth);

        // update round
        round_[_rID].keys = _keys.add(round_[_rID].keys);
        round_[_rID].eth = _ethUsed.add(round_[_rID].eth);

        // distribute eth
        uint256 _ethExt = distributeExternal(_ethUsed);
        _eventData_ = distributeInternal(_rID, _ethUsed, _ethExt, _eventData_);

        bytes32 _name = plyr_[_pID].name;

        pushBuyInfo(DRSDatasets.BuyInfo(msg.sender, _name, _pID, keyPrice, keyBought));

        // key index player bought
        uint256 _keyIndex = keyBought;

        keyBought = keyBought.add(1);
        keyPrice = keyPrice.mul(1000 + keyPriceIncreaseRatio).div(1000);

        if(_ethLeft > 0) {
            plyr_[_pID].gen = _ethLeft.add(plyr_[_pID].gen);
        }

        // call end tx function to fire end tx event.
        endTx(_pID, _ethUsed, _keyIndex, _eventData_);
    }

    /**
     * @dev receives name/player info from names contract 
     */
    function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name) external
    {
        require(msg.sender == address(playerBook), "your not playerNames contract.");

        if(pIDxAddr_[_addr] != _pID)
            pIDxAddr_[_addr] = _pID;

        if(pIDxName_[_name] != _pID)
            pIDxName_[_name] = _pID;

        if(plyr_[_pID].addr != _addr)
            plyr_[_pID].addr = _addr;

        if(plyr_[_pID].name != _name)
            plyr_[_pID].name = _name;

        if(!plyrNames_[_pID][_name])
            plyrNames_[_pID][_name] = true;
    }

    /**
     * @dev receives entire player name list 
     */
    function receivePlayerNameList(uint256 _pID, bytes32 _name) external
    {
        require(msg.sender == address(playerBook), "your not playerNames contract.");

        if(!plyrNames_[_pID][_name])
            plyrNames_[_pID][_name] = true;
    }

    /**
     * @dev gets existing or registers new pID.  use this when a player may be new
     * @return pID 
     */
    function determinePID(DRSDatasets.EventReturns memory _eventData_) private returns(DRSDatasets.EventReturns)
    {
        uint256 _pID = pIDxAddr_[msg.sender];

        // if player is new to this version of ReserveBag
        if(_pID == 0)
        {
            // grab their player ID, name from player names contract
            _pID = playerBook.getPlayerID(msg.sender);
            bytes32 _name = playerBook.getPlayerName(_pID);

            // set up player account
            pIDxAddr_[msg.sender] = _pID;
            plyr_[_pID].addr = msg.sender;

            if(_name != "")
            {
                pIDxName_[_name] = _pID;
                plyr_[_pID].name = _name;
                plyrNames_[_pID][_name] = true;
            }

            // set the new player bool to true
            _eventData_ = _eventData_.setNewPlayerFlag();
        }

        return _eventData_;
    }

    function managePlayer(uint256 _pID, DRSDatasets.EventReturns memory _eventData_)
        private
        returns(DRSDatasets.EventReturns)
    {
        // update player's last round played
        plyr_[_pID].lrnd = rID_;

        // set the joined round bool to true
        _eventData_ = _eventData_.setJoinedRoundFlag();
        
        return _eventData_;
    }

    function getWin(uint256 _pot) private pure returns(uint256) {
        return _pot / 2;
    }

    function getDRSCoinDividend(uint256 _pot) private view returns(uint256) {
        return _pot.mul(drsCoinDividendRatio).div(100);
    }

    function getTeamPerfit(uint256 _pot) private view returns(uint256) {
        return _pot.mul(teamPerfitRatio).div(100);
    }

    function mintDRSCoin() private {
        // empty buyinfos
        if(startIndex == endIndex) {
            return;
        }

        // have one element
        if((startIndex + 1) % (rewardInternal + 1) == endIndex) {
            return;
        }

        // have more than one element
        for(uint256 i = startIndex; (i + 1) % (rewardInternal + 1) != endIndex; i = (i + 1) % (rewardInternal + 1)) {
            drsCoin.mint(buyinfos[i].addr, buyinfos[i].keyPrice.mul(ethMintDRSCoinRate).div(100));
        }
    }

    /**
     * @dev ends the round. manages paying out winner/splitting up pot
     */
    function endRound(DRSDatasets.EventReturns memory _eventData_)
        private
        returns(DRSDatasets.EventReturns)
    {
        uint256 _rID = rID_;

        uint256 _winPID = round_[_rID].plyr;

        uint256 _pot = round_[_rID].pot;

        // eth for last player's prize
        uint256 _win = getWin(_pot);

        // eth for drsCoin dividend
        uint256 _drsCoinDividend = getDRSCoinDividend(_pot);

        // eth for team perfit
        uint256 _com = getTeamPerfit(_pot);

        // eth put to next round's pot
        uint256 _newPot = _pot.sub(_win).sub(_drsCoinDividend).sub(_com);

        // deposit team perfit
        depositTeamPerfit(_com);

        // pay our winner
        plyr_[_winPID].win = _win.add(plyr_[_winPID].win);

        // mint DRSCoin
        mintDRSCoin();

        // distribute eth to drsCoin holders
        drsCoin.profitEth.value(_drsCoinDividend)();

        // prepare event data
        _eventData_ = _eventData_.setRoundEndTime(round_[_rID].end);
        _eventData_ = _eventData_.setWinPID(_winPID);
        _eventData_ = _eventData_.setWinner(plyr_[_winPID].addr, plyr_[_winPID].name, _win);
        _eventData_ = _eventData_.setNewPot(_newPot);

        // start next round
        rID_++;
        _rID++;
        round_[_rID].strt = now;
        round_[_rID].end = now.add(rndMax_).add(rndGap_);

        keyPrice = initKeyPrice;
        keyBought = 0;

        startIndex = 0;
        endIndex = 0;

        // add rest eth to next round's pot
        round_[_rID].pot = _newPot;

        return _eventData_;
    }

    /**
     * @dev updates round timer based on number of whole keys bought.
     */
    function updateTimer(uint256 _rID) private
    {
        round_[_rID].end = rndMax_.add(now);
    }

    function depositTeamPerfit(uint256 _eth) private {
        if(teamPerfit == address(0)) {
            teamPerfitAmuont = teamPerfitAmuont.add(_eth);
            return;
        }

        bool res = teamPerfit.deposit.value(_eth)();
        if(!res) {
            teamPerfitAmuont = teamPerfitAmuont.add(_eth);
            return;
        }
    }

    /**
     * @dev distributes eth based on fees to team
     */
    function distributeExternal(uint256 _eth) private returns(uint256)
    {
        // pay 2% out to community rewards
        uint256 _com = _eth / 50;

        depositTeamPerfit(_com);

        return _com;
    }

    /**
     * @dev distributes eth based on fees to gen and pot
     */
    function distributeInternal(uint256 _rID, uint256 _eth, uint256 _ethExt, DRSDatasets.EventReturns memory _eventData_)
        private
        returns(DRSDatasets.EventReturns)
    {
        uint256 _gen = 0;
        uint256 _pot = 0;

        if(keyBought < rewardInternal) {
            _gen = 0;
            _pot = _eth.sub(_ethExt);
        } else {
            _gen = _eth.mul(genRatio).div(100);
            _pot = _eth.sub(_ethExt).sub(_gen);

            DRSDatasets.BuyInfo memory info = buyinfos[startIndex];

            uint256 firstPID = info.pid;
            plyr_[firstPID].gen = _gen.add(plyr_[firstPID].gen);

            _eventData_.setGenInfo(info.addr, info.keyPrice);
        }

        if(_pot > 0) {
            round_[_rID].pot = _pot.add(round_[_rID].pot);
        }

        _eventData_.setGenAmount(_gen.add(_eventData_.genAmount));
        _eventData_.setPotAmount(_pot);

        return _eventData_;
    }

    /**
     * @dev adds up unmasked earnings, & vault earnings, sets them all to 0
     * @return earnings in wei format
     */
    function withdrawEarnings(uint256 _pID) private returns(uint256)
    {
        uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen);
        if(_earnings > 0)
        {
            plyr_[_pID].win = 0;
            plyr_[_pID].gen = 0;
        }

        return _earnings;
    }

    /**
     * @dev prepares compression data and fires event for buy or reload tx's
     */
    function endTx(uint256 _pID, uint256 _eth, uint256 _keyIndex, DRSDatasets.EventReturns memory _eventData_) private
    {
        _eventData_ = _eventData_.setTimestamp(now);
        _eventData_ = _eventData_.setPID(_pID);
        _eventData_ = _eventData_.setRID(rID_);

        emit DRSEvents.onEndTx
        (
            _eventData_.compressedData,
            _eventData_.compressedIDs,

            plyr_[_pID].name,
            msg.sender,
            _eth,
            _keyIndex,

            _eventData_.winnerAddr,
            _eventData_.winnerName,
            _eventData_.amountWon,

            _eventData_.newPot,
            _eventData_.genAmount,
            _eventData_.potAmount,

            _eventData_.genAddr,
            _eventData_.genKeyPrice
        );
    }

    modifier isActivated() {
        require(activated_, "its not activated yet.");
        _;
    }

    function activate() onlyOwner() public
    {
        // can only be ran once
        require(!activated_, "ReserveBag already activated");

        uint256 _now = now;

        // activate the contract 
        activated_ = true;

        // lets start first round
        rID_ = 1;
        round_[1].strt = _now.add(rndExtra_).sub(rndGap_);
        round_[1].end = _now.add(rndMax_).add(rndExtra_);
    }

    function getActivated() public view returns(bool) {
        return activated_;
    }

    function setTeamPerfitAddress(address _newTeamPerfitAddress) onlyOwner() public {
        teamPerfit = TeamPerfitForwarderInterface(_newTeamPerfitAddress);
    }

    function setPlayerBookAddress(address _newPlayerBookAddress) onlyOwner() public {
        playerBook = PlayerBookInterface(_newPlayerBookAddress);
    }

    function setDRSCoinAddress(address _newDRSCoinAddress) onlyOwner() public {
        drsCoin = DRSCoinInterface(_newDRSCoinAddress);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"genRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"keyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"plyr","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"strt","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"playerBook","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawTeamPerfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_eth","type":"uint256"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"drsCoinDividendRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfit","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardInternal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_all","type":"bool"}],"name":"registerName","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pID","type":"uint256"}],"name":"getPlayerVaults","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"drsCoin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getActivated","outputs":[{"name":"","type":"bool"}],"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":"_pID","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerNameList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDRSCoinAddress","type":"address"}],"name":"setDRSCoinAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfitAmuont","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newPlayerBookAddress","type":"address"}],"name":"setPlayerBookAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethMintDRSCoinRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newTeamPerfitAddress","type":"address"}],"name":"setTeamPerfitAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"lrnd","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"keyBought","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTeamPerfitAmuont","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyKey","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"keyPriceIncreaseRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamPerfitRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_teamPerfit","type":"address"},{"name":"_playBook","type":"address"},{"name":"_drsCoin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"keyIndex","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"},{"indexed":false,"name":"potAmount","type":"uint256"},{"indexed":false,"name":"genAddr","type":"address"},{"indexed":false,"name":"genKeyPrice","type":"uint256"}],"name":"onEndTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onWithdrawAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethIn","type":"uint256"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onBuyAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"compressedData","type":"uint256"},{"indexed":false,"name":"compressedIDs","type":"uint256"},{"indexed":false,"name":"winnerAddr","type":"address"},{"indexed":false,"name":"winnerName","type":"bytes32"},{"indexed":false,"name":"amountWon","type":"uint256"},{"indexed":false,"name":"newPot","type":"uint256"},{"indexed":false,"name":"genAmount","type":"uint256"}],"name":"onReLoadAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"roundID","type":"uint256"},{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"keyPrice","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onBuyKeyFailure","type":"event"}]

6080604052600060038190556004819055670de0b6b3a764000060065560078190556009556024600a556008600b55605a600c556028600d556005600e556064600f556010805460ff1916905534801561005857600080fd5b50604051606080613b5c83398101604090815281516020830151919092015160088054600160a060020a0319908116331790915560008054600160a060020a03958616908316178155600180549486169483169490941790935560028054949092169316929092179091556017819055601855613a82806100da6000396000f3006080604052600436106101df5763ffffffff60e060020a600035041663018a25e8811461039e57806304272424146103c557806306fdde03146103da5780630f15f4c01461046457806310e569731461047b57806310f01eba146104905780631fda5b45146104b157806324c33d33146104d85780632660316e146105285780632e19ebdc146105575780632fa241fc1461056f5780633ccfd60b146105a057806345a2a3df146105b55780634c38c366146105ca5780634f9a37c9146105e25780634fea1538146105f75780635cf2ff171461060c5780636050024514610621578063624ae5c01461067157806363066434146106865780636a5784ce146106b7578063747dff42146106cc5780638893eb13146107315780638da5cb5b146107465780638f7140ea1461075b57806395d89b4114610776578063a2bccae91461078b578063b2879d45146107a6578063b33f4e9f146107c7578063c7e284b8146107dc578063cd11731d146107f1578063cf86f67414610812578063d53b267914610827578063d543f9d61461083c578063de7874f31461085d578063df2fcc4c146108aa578063e2d31df4146108bf578063e95db6f9146108d4578063edf54dcb146108dc578063ee0b5d8b146108f1578063f5732d6f14610945575b6101e761397f565b60105460009060ff161515610234576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461024357600080fd5b50803b801561028a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca0081101561030d576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af680000081111561036f576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6103788561095a565b3360009081526011602052604090205490955093506103978486610b30565b5050505050005b3480156103aa57600080fd5b506103b3610d10565b60408051918252519081900360200190f35b3480156103d157600080fd5b506103b3610d16565b3480156103e657600080fd5b506103ef610d1c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047057600080fd5b50610479610d53565b005b34801561048757600080fd5b506103b3610e83565b34801561049c57600080fd5b506103b3600160a060020a0360043516610e89565b3480156104bd57600080fd5b50610479600435600160a060020a0360243516604435610e9b565b3480156104e457600080fd5b506104f0600435611022565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053457600080fd5b50610543600435602435611063565b604080519115158252519081900360200190f35b34801561056357600080fd5b506103b3600435611083565b34801561057b57600080fd5b50610584611095565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506104796110a4565b3480156105c157600080fd5b50610479611488565b3480156105d657600080fd5b5061047960043561153f565b3480156105ee57600080fd5b506103b3611770565b34801561060357600080fd5b50610584611776565b34801561061857600080fd5b506103b3611785565b6040805160206004803580820135601f810184900484028501840190955284845261047994369492936024939284019190819084018382808284375094975050505091351515925061178b915050565b34801561067d57600080fd5b506103b3611910565b34801561069257600080fd5b5061069e600435611916565b6040805192835260208301919091528051918290030190f35b3480156106c357600080fd5b50610584611a04565b3480156106d857600080fd5b506106e1611a13565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c0850152600160a060020a031660e084015261010083015251908190036101200190f35b34801561073d57600080fd5b50610543611aca565b34801561075257600080fd5b50610584611ad3565b34801561076757600080fd5b50610479600435602435611ae2565b34801561078257600080fd5b506103ef611b8f565b34801561079757600080fd5b5061069e600435602435611bc6565b3480156107b257600080fd5b50610479600160a060020a0360043516611bea565b3480156107d357600080fd5b506103b3611c20565b3480156107e857600080fd5b506103b3611c26565b3480156107fd57600080fd5b50610479600160a060020a0360043516611cbd565b34801561081e57600080fd5b506103b3611cf3565b34801561083357600080fd5b50610543611cf9565b34801561084857600080fd5b50610479600160a060020a0360043516611d02565b34801561086957600080fd5b50610875600435611d38565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156108b657600080fd5b506103b3611d71565b3480156108cb57600080fd5b506103b3611d77565b610479611d7d565b3480156108e857600080fd5b506103b3611f3c565b3480156108fd57600080fd5b50610912600160a060020a0360043516611f42565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561095157600080fd5b506103b3611fe2565b61096261397f565b3360009081526011602052604081205490811515610b2857600154604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b5051600154604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929450600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b505050506040513d6020811015610aa057600080fd5b5051336000818152601160209081526040808320879055868352601390915290208054600160a060020a031916909117905590508015610b1c57600081815260126020908152604080832085905584835260138252808320600190810185905560158352818420858552909252909120805460ff191690911790555b610b2584611fe8565b93505b509192915050565b6005546004546000828152601960205260409020600301544291610b5a919063ffffffff611ffb16565b8110158015610b90575060008281526019602052604090206001015481111580610b905750600082815260196020526040902054155b15610ba657610ba18285348661205c565b610d0a565b60008281526019602052604090206001015481118015610bd8575060008281526019602052604090206002015460ff16155b15610cd5576000828152601960205260409020600201805460ff19166001179055610c028361234a565b9250610c14838263ffffffff61256416565b9250610c26838563ffffffff61258016565b60008581526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b52348c8e0152958b019890985291890195909552600160a060020a039093169287019290925285015260e084015261010083015261012082015290519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b600084815260136020526040902060030154610cf7903463ffffffff611ffb16565b6000858152601360205260409020600301555b50505050565b60065490565b600c5481565b60408051808201909152600b81527f5265736572766520426167000000000000000000000000000000000000000000602082015281565b600854600090600160a060020a03163314610d6a57fe5b60105460ff1615610dc5576040805160e560020a62461bcd02815260206004820152601c60248201527f5265736572766542616720616c72656164792061637469766174656400000000604482015290519081900360640190fd5b506010805460ff191660019081179091556005556004546003544291610e0291610df690849063ffffffff611ffb16565b9063ffffffff61259816565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da09291755600354610e5490610e48836201518063ffffffff611ffb16565b9063ffffffff611ffb16565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da0929155550565b60065481565b60116020526000908152604090205481565b600154600160a060020a03163314610efd576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600160a060020a0382166000908152601160205260409020548314610f3857600160a060020a03821660009081526011602052604090208390555b6000818152601260205260409020548314610f5f5760008181526012602052604090208390555b600083815260136020526040902054600160a060020a03838116911614610fa85760008381526013602052604090208054600160a060020a031916600160a060020a0384161790555b6000838152601360205260409020600101548114610fd55760008381526013602052604090206001018190555b600083815260156020908152604080832084845290915290205460ff16151561101d5760008381526015602090815260408083208484529091529020805460ff191660011790555b505050565b60196020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b601560209081526000928352604080842090915290825290205460ff1681565b60126020526000908152604090205481565b600154600160a060020a031681565b6000806000806110b261397f565b60105460ff1615156110fc576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461110b57600080fd5b50803b8015611152576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b3360009081526011602052604090205496508615156111e1576040805160e560020a62461bcd02815260206004820152602960248201527f77697468647261772063616e206e6f742062652063616c6c6564206279206e6560448201527f7720706c61796572730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546000818152601960205260409020600101549096504295508511801561121c575060008681526019602052604090206002015460ff16155b8015611235575060008681526019602052604090205415155b156113c9576000868152601960205260409020600201805460ff1916600117905561125f8361234a565b925061126a876125f8565b935060008411156112bb57600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156112b9573d6000803e3d6000fd5b505b6112cb838663ffffffff61256416565b92506112dd838863ffffffff61258016565b92507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333601360008a8152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a161147f565b6113d2876125f8565b9350600084111561142357600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611421573d6000803e3d6000fd5b505b6000878152601360209081526040918290206001015482513381529182015280820186905260608101879052905188917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b60105460009060ff1615156114d5576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b600854600160a060020a031633146114e957fe5b6000600954111561153c5750600980546000918290556008546040519192600160a060020a039091169183156108fc0291849190818181858888f1935050505015801561153a573d6000803e3d6000fd5b505b50565b600061154961397f565b60105460ff161515611593576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b3360003282146115a257600080fd5b50803b80156115e9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b84633b9aca0081101561166c576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156116ce576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260116020526040902054945084151561175d576040805160e560020a62461bcd02815260206004820152602c60248201527f72654c6f616458616464722063616e206e6f742062652063616c6c656420627960448201527f206e657720706c61796572730000000000000000000000000000000000000000606482015290519081900360840190fd5b61176885878661264d565b505050505050565b600d5481565b600054600160a060020a031681565b600a5481565b600080808080338132821461179f57600080fd5b50803b80156117e6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b6117ef89612813565b600154604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600060448301528c151560648301528251949b509950349850600160a060020a039092169263aa4d490b928992608480830193919282900301818588803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50505050506040513d604081101561189d57600080fd5b5051600160a060020a03871660008181526011602090815260409182902054825185151581529182018a905242828401529151939750909550899286917f9513976e3c07d9fef6952de4c2b3157458f24b4043d491729c9209d8d9c64541919081900360600190a4505050505050505050565b60055481565b60055460008181526019602052604081206001015490918291429081118015611951575060008281526019602052604090206002015460ff16155b801561196a575060008281526019602052604090205415155b156119de576000828152601960205260409020548514156119de576000828152601960205260409020600601546119c2906119a490613026565b6000878152601360205260409020600201549063ffffffff611ffb16565b60008681526013602052604090206003015490945092506119fd565b6000858152601360205260409020600281015460039091015490945092505b5050915091565b600254600160a060020a031681565b60055460008181526019602052604081208054600180830154600384015460069485015494546007549697889788978897889788978897889788979694958795939492939092611a69919063ffffffff611ffb16565b866013600089815260200190815260200160002060000160009054906101000a9004600160a060020a0316601360008a8152602001908152602001600020600101549a509a509a509a509a509a509a509a509a505050909192939495969798565b60105460ff1690565b600854600160a060020a031681565b600154600160a060020a03163314611b44576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600082815260156020908152604080832084845290915290205460ff16151561153a5760008281526015602090815260408083208484529091529020805460ff191660011790555050565b60408051808201909152600281527f5242000000000000000000000000000000000000000000000000000000000000602082015281565b60146020908152600092835260408084209091529082529020805460019091015482565b600854600160a060020a03163314611bfe57fe5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60095481565b6005546000818152601960205260408120600101549091904290811015611cb35760045460008381526019602052604090206003015401811115611c8d57600082815260196020526040902060010154611c86908263ffffffff61259816565b9250611cb8565b600454600083815260196020526040902060030154611c8691018263ffffffff61259816565b600092505b505090565b600854600160a060020a03163314611cd157fe5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b60105460ff1681565b600854600160a060020a03163314611d1657fe5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60136020526000908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60075481565b60095490565b611d8561397f565b60105460009060ff161515611dd2576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b336000328214611de157600080fd5b50803b8015611e28576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca00811015611eab576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f0d576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611f168561095a565b336000908152601160205260409020549095509350611f358486610b30565b5050505050565b600b5481565b600080600080600080600080600554915050600160a060020a038816600090815260116020526040902054801515611f8c5760009750879650869550859450849350839250611fd7565b600081815260136020908152604080832060018082015460148552838620888752909452919093209081015460028401546003909401549154949b5091995090975090955093509150865b505091939550919395565b600e5481565b611ff061397f565b508051600101815290565b81810182811015612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000806000806000806006548810156120f557600089815260136020526040902060030154612091908963ffffffff611ffb16565b60008a8152601360209081526040918290206003019290925560065481518d81529283018b905282820152426060830152518a917f085abcef752f58a6914d7bc87d7c4f55a03b723d72e677889be09a9db9395e10919081900360800190a261233e565b60008981526014602090815260408083208d8452909152902060010154151561212557612122898861302d565b96505b60065460019650945061213e888663ffffffff61259816565b93506121498a61305a565b60008a81526019602052604090205489146121705760008a81526019602052604090208990555b61217987613082565b60008a81526014602090815260408083208e84529091529020600101549097506121aa90879063ffffffff611ffb16565b60008a81526014602090815260408083208e845290915290206001810191909155546121d7908690611ffb565b60008a81526014602090815260408083208e845282528083209390935560199052206004015461220e90879063ffffffff611ffb16565b60008b815260196020526040902060048101919091556005015461223990869063ffffffff611ffb16565b60008b81526019602052604090206005015561225485613095565b92506122628a86858a6130a4565b60008a81526013602090815260409182902060010154825160a0810184523381529182018190529181018c90526006546060820152600754608082015291985092506122ad90613253565b506007546122c281600163ffffffff611ffb16565b600755600b546006546122f0916103e8916122e491830163ffffffff61342316565b9063ffffffff61349a16565b60065560008411156123325760008981526013602052604090206003015461231f90859063ffffffff611ffb16565b60008a8152601360205260409020600301555b61233e8986838a6134ba565b50505050505050505050565b61235261397f565b60055460008181526019602052604081208054600690910154909180808061237985613026565b935061238485613620565b925061238f8561363c565b91506123a782610df68581898963ffffffff61259816565b90506123b282613658565b6000868152601360205260409020600201546123d590859063ffffffff611ffb16565b6000878152601360205260409020600201556123ef613721565b600260009054906101000a9004600160a060020a0316600160a060020a0316638b77071c846040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b50505060008981526019602052604090206001015461247e92508b915063ffffffff61387b16565b9850612490898763ffffffff61389316565b60008781526013602052604090208054600190910154919a506124c5918b91600160a060020a0316908763ffffffff6138ba16565b98506124d7898263ffffffff6138e116565b600580546001908101909155979097016000818152601960205260409020426003909101819055600454989a50909761251d91610e48906201518063ffffffff611ffb16565b60008881526019602052604081206001810192909255670de0b6b3a76400006006908155600782905560178290556018919091550181905588975050505050505050919050565b61256c61397f565b508151655af3107a40009190910201815290565b61258861397f565b5060208201805191909101905290565b6000828211156125f2576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600081815260136020526040812060038101546002909101548291612623919063ffffffff611ffb16565b90506000811115612056576000838152601360205260408120600281018290556003015592915050565b6005546004546000828152601960205260409020600301544291612677919063ffffffff611ffb16565b811180156126ac5750600082815260196020526040902060010154811115806126ac5750600082815260196020526040902054155b156126e1576126be84610df6876125f8565b6000868152601360205260409020600301556126dc8286868661205c565b611f35565b60008281526019602052604090206001015481118015612713575060008281526019602052604090206002015460ff16155b15611f35576000828152601960205260409020600201805460ff1916600117905561273d8361234a565b925061274f838263ffffffff61256416565b9250612761838663ffffffff61258016565b60008681526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b528b8d0199909952948a0196909652600160a060020a0390941690880152928601929092529184019190915260e083015261010082015290519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a15050505050565b805160009082908280806020841180159061282e5750600084115b15156128aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156128b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612920575084600185038151811015156128f857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561299c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156129ab57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415612aee578460018151811015156129e557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612a62576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515612a7157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515612aee576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015612fbe5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110612b2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612b9f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110612b8057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15612c0c578482815181101515612bb257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515612be357fe5b906020010190600160f860020a031916908160001a905350821515612c0757600192505b612fb3565b8482815181101515612c1a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480612cea575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110612c7657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612cea575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110612ccb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612d94575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110612d2057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612d94575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110612d7557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515612e10576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515612e1e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415612efd578482600101815181101515612e5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515612efd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015612fa9575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110612f3657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080612fa9575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110612f8a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15612fb357600192505b600190910190612af3565b600183151514613018576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6002900490565b61303561397f565b600554600084815260136020526040902060040155613053826138f2565b9392505050565b61306d620151804263ffffffff611ffb16565b60009182526019602052604090912060010155565b61308a61397f565b508051606401815290565b60006032820461205681613658565b6130ac61397f565b6000806130b76139e8565b600080935060009250600a5460075410156130e757600093506130e0888863ffffffff61259816565b92506131ce565b61310160646122e4600c548b61342390919063ffffffff16565b935061311784610df68a8a63ffffffff61259816565b9250601660175481548110151561312a57fe5b600091825260208083206040805160a08101825260059094029091018054600160a060020a0316845260018101548484015260028101548483018190526003808301546060870152600490920154608086015280865260139093529320909201549093509091506131a290859063ffffffff611ffb16565b600082815260136020526040902060030155815160608301516131cc91889163ffffffff61390516565b505b600083111561320d576000898152601960205260409020600601546131fa90849063ffffffff611ffb16565b60008a8152601960205260409020600601555b6132346132278760c0015186611ffb90919063ffffffff16565b879063ffffffff61392b16565b50613245868463ffffffff61393c16565b509498975050505050505050565b6016546018541415613361576016805460018101825560009190915281517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960059092029182018054600160a060020a031916600160a060020a0390921691909117905560208201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a82015560408201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015560608201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c82015560808201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428d909101556133e3565b60165460185410156133de5780601660185481548110151561337f57fe5b60009182526020918290208351600592909202018054600160a060020a031916600160a060020a0390921691909117815590820151600182015560408201516002820155606082015160038201556080909101516004909101556133e3565b600080fd5b600a546001016018546001018115156133f857fe5b066018819055601754141561153c57600a5460010160175460010181151561341c57fe5b0660175550565b600082151561343457506000612056565b5081810281838281151561344457fe5b0414612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000808083116134a657fe5b82848115156134b157fe5b04949350505050565b6134ca814263ffffffff61256416565b90506134dc818563ffffffff61258016565b90506134f36005548261394d90919063ffffffff16565b90507f20ace7b7423dc4f598c42394a4c732bf0d6a6b3a3addf84f4543c42d6468c5628160000151826020015160136000888152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d61010001518e6101200151604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019e50505050505050505050505050505060405180910390a150505050565b600061205660646122e4600d548561342390919063ffffffff16565b600061205660646122e4600e548561342390919063ffffffff16565b60008054600160a060020a031615156136865760095461367e908363ffffffff611ffb16565b60095561153a565b6000809054906101000a9004600160a060020a0316600160a060020a031663d0e30db0836040518263ffffffff1660e060020a0281526004016020604051808303818588803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b50505050506040513d602081101561370357600080fd5b5051905080151561153a5760095461367e908363ffffffff611ffb16565b600060185460175414156137345761153c565b601854600a5460010160175460010181151561374c57fe5b0614156137585761153c565b506017545b601854600a546001018260010181151561377357fe5b061461153c5760025460168054600160a060020a03909216916340c10f1991908490811061379d57fe5b6000918252602090912060059091020154600f5460168054600160a060020a03909316926137f6926064926122e492899081106137d657fe5b90600052602060002090600502016003015461342390919063ffffffff16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561384857600080fd5b505af115801561385c573d6000803e3d6000fd5b50505050600a546001018160010181151561387357fe5b06905061375d565b61388361397f565b5081516103e89190910201815290565b61389b61397f565b506020820180516a52b7d2dcc80cd2e400000083020190528192915050565b6138c261397f565b50600160a060020a039290921660408401526060830152608082015290565b6138e961397f565b5060a082015290565b6138fa61397f565b508051600a01815290565b61390d61397f565b600160a060020a039092166101008401526101209092019190915290565b61393361397f565b5060c082015290565b61394461397f565b5060e082015290565b61395561397f565b50602082018051751aba4714957d300d0e549208b31adb1000000000000083020190528192915050565b6101406040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600697473206e6f7420616374697661746564207965742e00000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a7230582048290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced421002900000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144

Deployed Bytecode

0x6080604052600436106101df5763ffffffff60e060020a600035041663018a25e8811461039e57806304272424146103c557806306fdde03146103da5780630f15f4c01461046457806310e569731461047b57806310f01eba146104905780631fda5b45146104b157806324c33d33146104d85780632660316e146105285780632e19ebdc146105575780632fa241fc1461056f5780633ccfd60b146105a057806345a2a3df146105b55780634c38c366146105ca5780634f9a37c9146105e25780634fea1538146105f75780635cf2ff171461060c5780636050024514610621578063624ae5c01461067157806363066434146106865780636a5784ce146106b7578063747dff42146106cc5780638893eb13146107315780638da5cb5b146107465780638f7140ea1461075b57806395d89b4114610776578063a2bccae91461078b578063b2879d45146107a6578063b33f4e9f146107c7578063c7e284b8146107dc578063cd11731d146107f1578063cf86f67414610812578063d53b267914610827578063d543f9d61461083c578063de7874f31461085d578063df2fcc4c146108aa578063e2d31df4146108bf578063e95db6f9146108d4578063edf54dcb146108dc578063ee0b5d8b146108f1578063f5732d6f14610945575b6101e761397f565b60105460009060ff161515610234576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461024357600080fd5b50803b801561028a576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca0081101561030d576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af680000081111561036f576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b6103788561095a565b3360009081526011602052604090205490955093506103978486610b30565b5050505050005b3480156103aa57600080fd5b506103b3610d10565b60408051918252519081900360200190f35b3480156103d157600080fd5b506103b3610d16565b3480156103e657600080fd5b506103ef610d1c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561047057600080fd5b50610479610d53565b005b34801561048757600080fd5b506103b3610e83565b34801561049c57600080fd5b506103b3600160a060020a0360043516610e89565b3480156104bd57600080fd5b50610479600435600160a060020a0360243516604435610e9b565b3480156104e457600080fd5b506104f0600435611022565b604080519788526020880196909652931515868601526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561053457600080fd5b50610543600435602435611063565b604080519115158252519081900360200190f35b34801561056357600080fd5b506103b3600435611083565b34801561057b57600080fd5b50610584611095565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506104796110a4565b3480156105c157600080fd5b50610479611488565b3480156105d657600080fd5b5061047960043561153f565b3480156105ee57600080fd5b506103b3611770565b34801561060357600080fd5b50610584611776565b34801561061857600080fd5b506103b3611785565b6040805160206004803580820135601f810184900484028501840190955284845261047994369492936024939284019190819084018382808284375094975050505091351515925061178b915050565b34801561067d57600080fd5b506103b3611910565b34801561069257600080fd5b5061069e600435611916565b6040805192835260208301919091528051918290030190f35b3480156106c357600080fd5b50610584611a04565b3480156106d857600080fd5b506106e1611a13565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c0850152600160a060020a031660e084015261010083015251908190036101200190f35b34801561073d57600080fd5b50610543611aca565b34801561075257600080fd5b50610584611ad3565b34801561076757600080fd5b50610479600435602435611ae2565b34801561078257600080fd5b506103ef611b8f565b34801561079757600080fd5b5061069e600435602435611bc6565b3480156107b257600080fd5b50610479600160a060020a0360043516611bea565b3480156107d357600080fd5b506103b3611c20565b3480156107e857600080fd5b506103b3611c26565b3480156107fd57600080fd5b50610479600160a060020a0360043516611cbd565b34801561081e57600080fd5b506103b3611cf3565b34801561083357600080fd5b50610543611cf9565b34801561084857600080fd5b50610479600160a060020a0360043516611d02565b34801561086957600080fd5b50610875600435611d38565b60408051600160a060020a03909616865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156108b657600080fd5b506103b3611d71565b3480156108cb57600080fd5b506103b3611d77565b610479611d7d565b3480156108e857600080fd5b506103b3611f3c565b3480156108fd57600080fd5b50610912600160a060020a0360043516611f42565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561095157600080fd5b506103b3611fe2565b61096261397f565b3360009081526011602052604081205490811515610b2857600154604080517fe56556a90000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163e56556a9916024808201926020929091908290030181600087803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b5051600154604080517f82e37b2c000000000000000000000000000000000000000000000000000000008152600481018490529051929450600160a060020a03909116916382e37b2c916024808201926020929091908290030181600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b505050506040513d6020811015610aa057600080fd5b5051336000818152601160209081526040808320879055868352601390915290208054600160a060020a031916909117905590508015610b1c57600081815260126020908152604080832085905584835260138252808320600190810185905560158352818420858552909252909120805460ff191690911790555b610b2584611fe8565b93505b509192915050565b6005546004546000828152601960205260409020600301544291610b5a919063ffffffff611ffb16565b8110158015610b90575060008281526019602052604090206001015481111580610b905750600082815260196020526040902054155b15610ba657610ba18285348661205c565b610d0a565b60008281526019602052604090206001015481118015610bd8575060008281526019602052604090206002015460ff16155b15610cd5576000828152601960205260409020600201805460ff19166001179055610c028361234a565b9250610c14838263ffffffff61256416565b9250610c26838563ffffffff61258016565b60008581526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b52348c8e0152958b019890985291890195909552600160a060020a039093169287019290925285015260e084015261010083015261012082015290519194507f5905265be09e3f6f7813c1dce4febfad76d4b3a46288aa344d2531532c3519c991908190036101400190a15b600084815260136020526040902060030154610cf7903463ffffffff611ffb16565b6000858152601360205260409020600301555b50505050565b60065490565b600c5481565b60408051808201909152600b81527f5265736572766520426167000000000000000000000000000000000000000000602082015281565b600854600090600160a060020a03163314610d6a57fe5b60105460ff1615610dc5576040805160e560020a62461bcd02815260206004820152601c60248201527f5265736572766542616720616c72656164792061637469766174656400000000604482015290519081900360640190fd5b506010805460ff191660019081179091556005556004546003544291610e0291610df690849063ffffffff611ffb16565b9063ffffffff61259816565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da09291755600354610e5490610e48836201518063ffffffff611ffb16565b9063ffffffff611ffb16565b600160005260196020527ffc941c3961fb6541da34150022cddf959da0fb2353866a6bfbd249c2da0929155550565b60065481565b60116020526000908152604090205481565b600154600160a060020a03163314610efd576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600160a060020a0382166000908152601160205260409020548314610f3857600160a060020a03821660009081526011602052604090208390555b6000818152601260205260409020548314610f5f5760008181526012602052604090208390555b600083815260136020526040902054600160a060020a03838116911614610fa85760008381526013602052604090208054600160a060020a031916600160a060020a0384161790555b6000838152601360205260409020600101548114610fd55760008381526013602052604090206001018190555b600083815260156020908152604080832084845290915290205460ff16151561101d5760008381526015602090815260408083208484529091529020805460ff191660011790555b505050565b60196020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939460ff90931693919290919087565b601560209081526000928352604080842090915290825290205460ff1681565b60126020526000908152604090205481565b600154600160a060020a031681565b6000806000806110b261397f565b60105460ff1615156110fc576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b33600032821461110b57600080fd5b50803b8015611152576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b3360009081526011602052604090205496508615156111e1576040805160e560020a62461bcd02815260206004820152602960248201527f77697468647261772063616e206e6f742062652063616c6c6564206279206e6560448201527f7720706c61796572730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546000818152601960205260409020600101549096504295508511801561121c575060008681526019602052604090206002015460ff16155b8015611235575060008681526019602052604090205415155b156113c9576000868152601960205260409020600201805460ff1916600117905561125f8361234a565b925061126a876125f8565b935060008411156112bb57600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f193505050501580156112b9573d6000803e3d6000fd5b505b6112cb838663ffffffff61256416565b92506112dd838863ffffffff61258016565b92507f9e9c9331834267c84342f2dce38f9ba35eb0bfbcc207c64872e1e74f9706f2a333601360008a8152602001908152602001600020600101548686600001518760200151886040015189606001518a608001518b60a001518c60c00151604051808b600160a060020a0316600160a060020a031681526020018a6000191660001916815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600019166000191681526020018481526020018381526020018281526020019a505050505050505050505060405180910390a161147f565b6113d2876125f8565b9350600084111561142357600087815260136020526040808220549051600160a060020a039091169186156108fc02918791818181858888f19350505050158015611421573d6000803e3d6000fd5b505b6000878152601360209081526040918290206001015482513381529182015280820186905260608101879052905188917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b50505050505050565b60105460009060ff1615156114d5576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b600854600160a060020a031633146114e957fe5b6000600954111561153c5750600980546000918290556008546040519192600160a060020a039091169183156108fc0291849190818181858888f1935050505015801561153a573d6000803e3d6000fd5b505b50565b600061154961397f565b60105460ff161515611593576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b3360003282146115a257600080fd5b50803b80156115e9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b84633b9aca0081101561166c576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af68000008111156116ce576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260116020526040902054945084151561175d576040805160e560020a62461bcd02815260206004820152602c60248201527f72654c6f616458616464722063616e206e6f742062652063616c6c656420627960448201527f206e657720706c61796572730000000000000000000000000000000000000000606482015290519081900360840190fd5b61176885878661264d565b505050505050565b600d5481565b600054600160a060020a031681565b600a5481565b600080808080338132821461179f57600080fd5b50803b80156117e6576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b6117ef89612813565b600154604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052600060448301528c151560648301528251949b509950349850600160a060020a039092169263aa4d490b928992608480830193919282900301818588803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50505050506040513d604081101561189d57600080fd5b5051600160a060020a03871660008181526011602090815260409182902054825185151581529182018a905242828401529151939750909550899286917f9513976e3c07d9fef6952de4c2b3157458f24b4043d491729c9209d8d9c64541919081900360600190a4505050505050505050565b60055481565b60055460008181526019602052604081206001015490918291429081118015611951575060008281526019602052604090206002015460ff16155b801561196a575060008281526019602052604090205415155b156119de576000828152601960205260409020548514156119de576000828152601960205260409020600601546119c2906119a490613026565b6000878152601360205260409020600201549063ffffffff611ffb16565b60008681526013602052604090206003015490945092506119fd565b6000858152601360205260409020600281015460039091015490945092505b5050915091565b600254600160a060020a031681565b60055460008181526019602052604081208054600180830154600384015460069485015494546007549697889788978897889788978897889788979694958795939492939092611a69919063ffffffff611ffb16565b866013600089815260200190815260200160002060000160009054906101000a9004600160a060020a0316601360008a8152602001908152602001600020600101549a509a509a509a509a509a509a509a509a505050909192939495969798565b60105460ff1690565b600854600160a060020a031681565b600154600160a060020a03163314611b44576040805160e560020a62461bcd02815260206004820152601e60248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e0000604482015290519081900360640190fd5b600082815260156020908152604080832084845290915290205460ff16151561153a5760008281526015602090815260408083208484529091529020805460ff191660011790555050565b60408051808201909152600281527f5242000000000000000000000000000000000000000000000000000000000000602082015281565b60146020908152600092835260408084209091529082529020805460019091015482565b600854600160a060020a03163314611bfe57fe5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60095481565b6005546000818152601960205260408120600101549091904290811015611cb35760045460008381526019602052604090206003015401811115611c8d57600082815260196020526040902060010154611c86908263ffffffff61259816565b9250611cb8565b600454600083815260196020526040902060030154611c8691018263ffffffff61259816565b600092505b505090565b600854600160a060020a03163314611cd157fe5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b60105460ff1681565b600854600160a060020a03163314611d1657fe5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60136020526000908152604090208054600182015460028301546003840154600490940154600160a060020a0390931693919290919085565b60075481565b60095490565b611d8561397f565b60105460009060ff161515611dd2576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613a17833981519152604482015290519081900360640190fd5b336000328214611de157600080fd5b50803b8015611e28576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613a37833981519152604482015290519081900360640190fd5b34633b9aca00811015611eab576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f0d576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b611f168561095a565b336000908152601160205260409020549095509350611f358486610b30565b5050505050565b600b5481565b600080600080600080600080600554915050600160a060020a038816600090815260116020526040902054801515611f8c5760009750879650869550859450849350839250611fd7565b600081815260136020908152604080832060018082015460148552838620888752909452919093209081015460028401546003909401549154949b5091995090975090955093509150865b505091939550919395565b600e5481565b611ff061397f565b508051600101815290565b81810182811015612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000806000806000806006548810156120f557600089815260136020526040902060030154612091908963ffffffff611ffb16565b60008a8152601360209081526040918290206003019290925560065481518d81529283018b905282820152426060830152518a917f085abcef752f58a6914d7bc87d7c4f55a03b723d72e677889be09a9db9395e10919081900360800190a261233e565b60008981526014602090815260408083208d8452909152902060010154151561212557612122898861302d565b96505b60065460019650945061213e888663ffffffff61259816565b93506121498a61305a565b60008a81526019602052604090205489146121705760008a81526019602052604090208990555b61217987613082565b60008a81526014602090815260408083208e84529091529020600101549097506121aa90879063ffffffff611ffb16565b60008a81526014602090815260408083208e845290915290206001810191909155546121d7908690611ffb565b60008a81526014602090815260408083208e845282528083209390935560199052206004015461220e90879063ffffffff611ffb16565b60008b815260196020526040902060048101919091556005015461223990869063ffffffff611ffb16565b60008b81526019602052604090206005015561225485613095565b92506122628a86858a6130a4565b60008a81526013602090815260409182902060010154825160a0810184523381529182018190529181018c90526006546060820152600754608082015291985092506122ad90613253565b506007546122c281600163ffffffff611ffb16565b600755600b546006546122f0916103e8916122e491830163ffffffff61342316565b9063ffffffff61349a16565b60065560008411156123325760008981526013602052604090206003015461231f90859063ffffffff611ffb16565b60008a8152601360205260409020600301555b61233e8986838a6134ba565b50505050505050505050565b61235261397f565b60055460008181526019602052604081208054600690910154909180808061237985613026565b935061238485613620565b925061238f8561363c565b91506123a782610df68581898963ffffffff61259816565b90506123b282613658565b6000868152601360205260409020600201546123d590859063ffffffff611ffb16565b6000878152601360205260409020600201556123ef613721565b600260009054906101000a9004600160a060020a0316600160a060020a0316638b77071c846040518263ffffffff1660e060020a0281526004016000604051808303818588803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b50505060008981526019602052604090206001015461247e92508b915063ffffffff61387b16565b9850612490898763ffffffff61389316565b60008781526013602052604090208054600190910154919a506124c5918b91600160a060020a0316908763ffffffff6138ba16565b98506124d7898263ffffffff6138e116565b600580546001908101909155979097016000818152601960205260409020426003909101819055600454989a50909761251d91610e48906201518063ffffffff611ffb16565b60008881526019602052604081206001810192909255670de0b6b3a76400006006908155600782905560178290556018919091550181905588975050505050505050919050565b61256c61397f565b508151655af3107a40009190910201815290565b61258861397f565b5060208201805191909101905290565b6000828211156125f2576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b600081815260136020526040812060038101546002909101548291612623919063ffffffff611ffb16565b90506000811115612056576000838152601360205260408120600281018290556003015592915050565b6005546004546000828152601960205260409020600301544291612677919063ffffffff611ffb16565b811180156126ac5750600082815260196020526040902060010154811115806126ac5750600082815260196020526040902054155b156126e1576126be84610df6876125f8565b6000868152601360205260409020600301556126dc8286868661205c565b611f35565b60008281526019602052604090206001015481118015612713575060008281526019602052604090206002015460ff16155b15611f35576000828152601960205260409020600201805460ff1916600117905561273d8361234a565b925061274f838263ffffffff61256416565b9250612761838663ffffffff61258016565b60008681526013602090815260409182902060010154835182850151848601516060808801516080808a015160a0808c015160c0808e01518d513381529c8d019b909b528b8d0199909952948a0196909652600160a060020a0390941690880152928601929092529184019190915260e083015261010082015290519194507f603a740c9291cc914e0c8d16b355cdb091aefd5d9bbdf4f95371ce756f5e8a4091908190036101200190a15050505050565b805160009082908280806020841180159061282e5750600084115b15156128aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156128b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612920575084600185038151811015156128f857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b151561299c576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8460008151811015156129ab57fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a021415612aee578460018151811015156129e557fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612a62576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b846001815181101515612a7157fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a0214151515612aee576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b83821015612fbe5784517f400000000000000000000000000000000000000000000000000000000000000090869084908110612b2b57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612b9f575084517f5b0000000000000000000000000000000000000000000000000000000000000090869084908110612b8057fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b15612c0c578482815181101515612bb257fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a028583815181101515612be357fe5b906020010190600160f860020a031916908160001a905350821515612c0757600192505b612fb3565b8482815181101515612c1a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021480612cea575084517f600000000000000000000000000000000000000000000000000000000000000090869084908110612c7657fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612cea575084517f7b0000000000000000000000000000000000000000000000000000000000000090869084908110612ccb57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612d94575084517f2f0000000000000000000000000000000000000000000000000000000000000090869084908110612d2057fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612d94575084517f3a0000000000000000000000000000000000000000000000000000000000000090869084908110612d7557fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1515612e10576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8482815181101515612e1e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a021415612efd578482600101815181101515612e5a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214151515612efd576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82158015612fa9575084517f300000000000000000000000000000000000000000000000000000000000000090869084908110612f3657fe5b90602001015160f860020a900460f860020a02600160f860020a0319161080612fa9575084517f390000000000000000000000000000000000000000000000000000000000000090869084908110612f8a57fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b15612fb357600192505b600190910190612af3565b600183151514613018576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b6002900490565b61303561397f565b600554600084815260136020526040902060040155613053826138f2565b9392505050565b61306d620151804263ffffffff611ffb16565b60009182526019602052604090912060010155565b61308a61397f565b508051606401815290565b60006032820461205681613658565b6130ac61397f565b6000806130b76139e8565b600080935060009250600a5460075410156130e757600093506130e0888863ffffffff61259816565b92506131ce565b61310160646122e4600c548b61342390919063ffffffff16565b935061311784610df68a8a63ffffffff61259816565b9250601660175481548110151561312a57fe5b600091825260208083206040805160a08101825260059094029091018054600160a060020a0316845260018101548484015260028101548483018190526003808301546060870152600490920154608086015280865260139093529320909201549093509091506131a290859063ffffffff611ffb16565b600082815260136020526040902060030155815160608301516131cc91889163ffffffff61390516565b505b600083111561320d576000898152601960205260409020600601546131fa90849063ffffffff611ffb16565b60008a8152601960205260409020600601555b6132346132278760c0015186611ffb90919063ffffffff16565b879063ffffffff61392b16565b50613245868463ffffffff61393c16565b509498975050505050505050565b6016546018541415613361576016805460018101825560009190915281517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428960059092029182018054600160a060020a031916600160a060020a0390921691909117905560208201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428a82015560408201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428b82015560608201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428c82015560808201517fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b512428d909101556133e3565b60165460185410156133de5780601660185481548110151561337f57fe5b60009182526020918290208351600592909202018054600160a060020a031916600160a060020a0390921691909117815590820151600182015560408201516002820155606082015160038201556080909101516004909101556133e3565b600080fd5b600a546001016018546001018115156133f857fe5b066018819055601754141561153c57600a5460010160175460010181151561341c57fe5b0660175550565b600082151561343457506000612056565b5081810281838281151561344457fe5b0414612056576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b6000808083116134a657fe5b82848115156134b157fe5b04949350505050565b6134ca814263ffffffff61256416565b90506134dc818563ffffffff61258016565b90506134f36005548261394d90919063ffffffff16565b90507f20ace7b7423dc4f598c42394a4c732bf0d6a6b3a3addf84f4543c42d6468c5628160000151826020015160136000888152602001908152602001600020600101543387878760400151886060015189608001518a60a001518b60c001518c60e001518d61010001518e6101200151604051808f81526020018e81526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b81526020018a815260200189600160a060020a0316600160a060020a03168152602001886000191660001916815260200187815260200186815260200185815260200184815260200183600160a060020a0316600160a060020a031681526020018281526020019e50505050505050505050505050505060405180910390a150505050565b600061205660646122e4600d548561342390919063ffffffff16565b600061205660646122e4600e548561342390919063ffffffff16565b60008054600160a060020a031615156136865760095461367e908363ffffffff611ffb16565b60095561153a565b6000809054906101000a9004600160a060020a0316600160a060020a031663d0e30db0836040518263ffffffff1660e060020a0281526004016020604051808303818588803b1580156136d857600080fd5b505af11580156136ec573d6000803e3d6000fd5b50505050506040513d602081101561370357600080fd5b5051905080151561153a5760095461367e908363ffffffff611ffb16565b600060185460175414156137345761153c565b601854600a5460010160175460010181151561374c57fe5b0614156137585761153c565b506017545b601854600a546001018260010181151561377357fe5b061461153c5760025460168054600160a060020a03909216916340c10f1991908490811061379d57fe5b6000918252602090912060059091020154600f5460168054600160a060020a03909316926137f6926064926122e492899081106137d657fe5b90600052602060002090600502016003015461342390919063ffffffff16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561384857600080fd5b505af115801561385c573d6000803e3d6000fd5b50505050600a546001018160010181151561387357fe5b06905061375d565b61388361397f565b5081516103e89190910201815290565b61389b61397f565b506020820180516a52b7d2dcc80cd2e400000083020190528192915050565b6138c261397f565b50600160a060020a039290921660408401526060830152608082015290565b6138e961397f565b5060a082015290565b6138fa61397f565b508051600a01815290565b61390d61397f565b600160a060020a039092166101008401526101209092019190915290565b61393361397f565b5060c082015290565b61394461397f565b5060e082015290565b61395561397f565b50602082018051751aba4714957d300d0e549208b31adb1000000000000083020190528192915050565b6101406040519081016040528060008152602001600081526020016000600160a060020a0316815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000600160a060020a03168152602001600081525090565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152905600697473206e6f7420616374697661746564207965742e00000000000000000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a7230582048290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced4210029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144

-----Decoded View---------------
Arg [0] : _teamPerfit (address): 0x01CEb9DdDea083D647Fa7B09942474DECe629c7e
Arg [1] : _playBook (address): 0x567dc1d64Bbc362CACCFEbb7a3bb5B900D22EeFE
Arg [2] : _drsCoin (address): 0x6b249a94182219cb1aF58A197573DccD9aB94144

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000001ceb9dddea083d647fa7b09942474dece629c7e
Arg [1] : 000000000000000000000000567dc1d64bbc362caccfebb7a3bb5b900d22eefe
Arg [2] : 0000000000000000000000006b249a94182219cb1af58a197573dccd9ab94144


Swarm Source

bzzr://48290fc59c3e46a5aaa65a168fa42c5487bc909a96d25432522646122cced421

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.