ETH Price: $3,706.12 (-5.75%)

Contract

0x26936b691450a838B6dF4965B58f2c53A9139D29
 

Overview

ETH Balance

0.920704976000677404 ETH

Eth Value

$3,412.24 (@ $3,706.12/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw206266792024-08-28 11:06:35112 days ago1724843195IN
0x26936b69...3A9139D29
0 ETH0.00028861.56893125
Withdraw77076222019-05-06 13:47:372053 days ago1557150457IN
0x26936b69...3A9139D29
0 ETH0.000310163
Withdraw77074872019-05-06 13:21:012053 days ago1557148861IN
0x26936b69...3A9139D29
0 ETH0.00033
Withdraw70700842019-01-15 11:12:042164 days ago1547550724IN
0x26936b69...3A9139D29
0 ETH0.000159863.6
Withdraw67970552018-11-29 23:25:512210 days ago1543533951IN
0x26936b69...3A9139D29
0 ETH0.000297035
Withdraw67641992018-11-24 13:36:362216 days ago1543066596IN
0x26936b69...3A9139D29
0 ETH0.000181858
Withdraw67641982018-11-24 13:36:302216 days ago1543066590IN
0x26936b69...3A9139D29
0 ETH0.000181858
Withdraw66688482018-11-08 22:37:192231 days ago1541716639IN
0x26936b69...3A9139D29
0 ETH0.000167014
Withdraw66667542018-11-08 14:24:302232 days ago1541687070IN
0x26936b69...3A9139D29
0 ETH0.000208765
Withdraw66666852018-11-08 14:08:352232 days ago1541686115IN
0x26936b69...3A9139D29
0 ETH0.0004199512
Withdraw66601642018-11-07 12:43:422233 days ago1541594622IN
0x26936b69...3A9139D29
0 ETH0.000457615.111
Withdraw66048892018-10-29 10:55:412242 days ago1540810541IN
0x26936b69...3A9139D29
0 ETH0.000299485
Withdraw65883152018-10-26 17:39:572245 days ago1540575597IN
0x26936b69...3A9139D29
0 ETH0.000355248
Withdraw65870912018-10-26 12:58:402245 days ago1540558720IN
0x26936b69...3A9139D29
0 ETH0.0004434910
Buy65862542018-10-26 9:35:042245 days ago1540546504IN
0x26936b69...3A9139D29
0.001 ETH0.003788958
Buy65844272018-10-26 2:20:112245 days ago1540520411IN
0x26936b69...3A9139D29
0.01 ETH0.0098621223
Withdraw65826892018-10-25 19:35:032246 days ago1540496103IN
0x26936b69...3A9139D29
0 ETH0.000170497.5
Withdraw65812412018-10-25 14:00:502246 days ago1540476050IN
0x26936b69...3A9139D29
0 ETH0.000222035
Withdraw65799572018-10-25 8:59:532246 days ago1540457993IN
0x26936b69...3A9139D29
0 ETH0.0004440610
Buy65785442018-10-25 3:25:422246 days ago1540437942IN
0x26936b69...3A9139D29
0.001 ETH0.004263089
Withdraw65780252018-10-25 1:19:102246 days ago1540430350IN
0x26936b69...3A9139D29
0 ETH0.000399659
Withdraw65779502018-10-25 0:59:152246 days ago1540429155IN
0x26936b69...3A9139D29
0 ETH0.000961688
Withdraw65778772018-10-25 0:40:092246 days ago1540428009IN
0x26936b69...3A9139D29
0 ETH0.000310847
Buy65777802018-10-25 0:20:222246 days ago1540426822IN
0x26936b69...3A9139D29
0.001 ETH0.0026434810.1613916
Buy65777792018-10-25 0:20:152246 days ago1540426815IN
0x26936b69...3A9139D29
0.028 ETH0.002315338.9
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
206266792024-08-28 11:06:35112 days ago1724843195
0x26936b69...3A9139D29
0.00177871 ETH
77076222019-05-06 13:47:372053 days ago1557150457
0x26936b69...3A9139D29
0.044 ETH
70700842019-01-15 11:12:042164 days ago1547550724
0x26936b69...3A9139D29
0.00210758 ETH
67970552018-11-29 23:25:512210 days ago1543533951
0x26936b69...3A9139D29
0.02415884 ETH
66688482018-11-08 22:37:192231 days ago1541716639
0x26936b69...3A9139D29
0.5230659 ETH
66667542018-11-08 14:24:302232 days ago1541687070
0x26936b69...3A9139D29
0.088 ETH
66601642018-11-07 12:43:422233 days ago1541594622
0x26936b69...3A9139D29
2.06950089 ETH
65883152018-10-26 17:39:572245 days ago1540575597
0x26936b69...3A9139D29
0.00831574 ETH
65870912018-10-26 12:58:402245 days ago1540558720
0x26936b69...3A9139D29
0.0092489 ETH
65862542018-10-26 9:35:042245 days ago1540546504
0x26936b69...3A9139D29
0.00002 ETH
65862542018-10-26 9:35:042245 days ago1540546504
0x26936b69...3A9139D29
0.00001 ETH
65844272018-10-26 2:20:112245 days ago1540520411
0x26936b69...3A9139D29
0.0002 ETH
65844272018-10-26 2:20:112245 days ago1540520411
0x26936b69...3A9139D29
0.0001 ETH
65812412018-10-25 14:00:502246 days ago1540476050
0x26936b69...3A9139D29
0.05901234 ETH
65799572018-10-25 8:59:532246 days ago1540457993
0x26936b69...3A9139D29
0.00210758 ETH
65785442018-10-25 3:25:422246 days ago1540437942
0x26936b69...3A9139D29
0.00002 ETH
65785442018-10-25 3:25:422246 days ago1540437942
0x26936b69...3A9139D29
0.00001 ETH
65780252018-10-25 1:19:102246 days ago1540430350
0x26936b69...3A9139D29
0.81062959 ETH
65779502018-10-25 0:59:152246 days ago1540429155
0x26936b69...3A9139D29
1.38273274 ETH
65778772018-10-25 0:40:092246 days ago1540428009
0x26936b69...3A9139D29
0.09264338 ETH
65777802018-10-25 0:20:222246 days ago1540426822
0x26936b69...3A9139D29
0.00002 ETH
65777802018-10-25 0:20:222246 days ago1540426822
0x26936b69...3A9139D29
0.00001 ETH
65777792018-10-25 0:20:152246 days ago1540426815
0x26936b69...3A9139D29
0.00056 ETH
65777792018-10-25 0:20:152246 days ago1540426815
0x26936b69...3A9139D29
0.00028 ETH
65777322018-10-25 0:10:182246 days ago1540426218
0x26936b69...3A9139D29
0.0010964 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FairBankFomo

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-16
*/

pragma solidity ^0.4.25;

/**
 *
 *  https://fairdapp.com/bankfomo/  https://fairdapp.com/bankfomo/   https://fairdapp.com/bankfomo/
 *   
 *       _______     _       ______  _______ ______ ______  
 *      (_______)   (_)     (______)(_______|_____ (_____ \ 
 *       _____ _____ _  ____ _     _ _______ _____) )____) )
 *      |  ___|____ | |/ ___) |   | |  ___  |  ____/  ____/ 
 *      | |   / ___ | | |   | |__/ /| |   | | |    | |      
 *      |_|   \_____|_|_|   |_____/ |_|   |_|_|    |_|      
 *                                                     
 *               ______              _                              
 *              (____  \            | |                             
 *               ____)  )_____ ____ | |  _                          
 *              |  __  ((____ |  _ \| |_/ )                         
 *              | |__)  ) ___ | | | |  _ (                          
 *              |______/\_____|_| |_|_| \_)                         
 *                                                    
 * 				  _______                
 * 				 (_______)               
 * 				  _____ ___  ____   ___  
 * 				 |  ___) _ \|    \ / _ \ 
 * 				 | |  | |_| | | | | |_| |
 * 				 |_|   \___/|_|_|_|\___/
 *   
 *  Warning:
 *     
 *  FairDAPP – Bank Fomo is a re-release of the original game FairDAPP - Bank Simulator.
 *  This version ties into the FairExchange and has about 3x more aggressive scaling. 
 *  This contract may only be used internally for study purposes and all could be 
 *  lost by sending anything to this contract address. 
 *  All users are prohibited to interact with this contract if this 
 *  contract is in conflict with user’s local regulations or laws.
 * 
 *  -Original Contract built by the FairDAPP Community
 *  -Code Audited by 8Bit & Etherguy (formula calculations are excluded from the audit)
 *  
 *  -The resetTime and reduceTime functions have an on and off switch which the developer owner can control.
 *  -No one can change anything else once the contract has been deployed.
 *  
 *  -The contract is fully solvent in any event (assuming there are no bugs).
 *  -ie. The contract will always payout what it owes. 
 *
**/


contract ERC721{
    
    function totalSupply() public view returns (uint256 total);
    function balanceOf(address _owner) public view returns (uint256 balance);
    function ownerOf(uint256 _tokenId) public view returns (address owner);
    function approve(address _to, uint256 _tokenId) public;
    function takeOwnership(uint256 _tokenId) public;
    function transfer(address _to, uint256 _tokenId) public;
    function transferFrom(address _from, address _to, uint256 _tokenId) public;
    
    event Transfer(address from, address to, uint256 tokenId);
    event Approval(address owner, address approved, uint256 tokenId);
}

contract FairBankFomo is ERC721{
    using SafeMath for uint256;
       
    address public developerAddr = 0xbC817A495f0114755Da5305c5AA84fc5ca7ebaBd;
    address public fairProfitContract = 0x53a39eeF083c4A91e36145176Cc9f52bE29B7288;

    string public name = "FairDAPP - Bank Simulator - Fomo";
    string public symbol = "FBankFomo";
    
    uint256 public stageDuration = 3600;
    uint256 public standardProtectRatio = 57;
    bool public modifyCountdown = false;
    uint256 public startTime = 1539997200;
    uint256 public cardTime = 1539993600;
    
    uint256 public rId = 1;
    uint256 public sId = 1;
    
    mapping (uint256 => FBankdatasets.Round) public round;
    mapping (uint256 => mapping (uint256 => FBankdatasets.Stage)) public stage;
    
    mapping (address => bool) public player;
    mapping (address => uint256[]) public playerGoodsList;
    mapping (address => uint256[]) public playerWithdrawList;
    
    /**
     * Anti clone protection.
     * Do not clone this contract without permission even if you manage to break the conceal. 
     * The concealed code contains core calculations necessary for this contract to function, read line 1058. 
     * This contract can be licensed for a fee, contact us instead of cloning!
     */ 
    FairBankCompute constant private bankCompute = FairBankCompute(0xdd033Ff7e98792694F6b358DaEB065d4FF01Bd5A);
    
    FBankdatasets.Goods[] public goodsList;
    
    FBankdatasets.Card[6] public cardList;
    mapping (uint256 => address) public cardIndexToApproved;
    
    modifier isDeveloperAddr() {
        require(msg.sender == developerAddr, "Permission denied");
        _;
    }
    
    modifier startTimeVerify() {
        require(now >= startTime); 
        _;
    }
    
    modifier cardTimeVerify() {
        require(now >= cardTime); 
        _;
    }
    
    modifier modifyCountdownVerify() {
        require(modifyCountdown == true, "this feature is not turned on or has been turned off"); 
        require(now >= stage[rId][sId].start, "Can only use the addtime/reduce time functions when game has started");  
        _;
    }
     
    modifier senderVerify() {
        require (msg.sender == tx.origin, "sender does not meet the rules");
        if(!player[msg.sender])
            player[msg.sender] = true;
        _;
    }
    
    /**
     * Don't toy or spam the contract, it may raise the gas cost for everyone else.
     * The scientists will take anything below 0.001 ETH sent to the contract.
     * Also added antiwhale settings. 	 
     * Thank you for your donation.
     */
    modifier buyVerify() {
          
        if(msg.value < 1000000000000000){
            developerAddr.send(msg.value);
        }else{
            require(msg.value >= 1000000000000000, "minimum amount is 0.001 ether");
            
            if(sId < 25)
                require(tx.gasprice <= 25000000000);
                
            if(sId < 25)
                require(msg.value <= 10 ether);
         _;
        }
    }
    
    modifier withdrawVerify() {
        require(playerGoodsList[msg.sender].length > 0, "user has not purchased the product or has completed the withdrawal");
        _;
    }
    
    modifier stepSizeVerify(uint256 _stepSize) {
        require(_stepSize <= 1000000, "step size must not exceed 1000000");
        _;
    }
    
    constructor()
        public
    {
        round[rId].start = startTime;
        stage[rId][sId].start = startTime;
        uint256 i;
        while(i < cardList.length){
            cardList[i].playerAddress = fairProfitContract;
            cardList[i].amount = 1 ether; 
            i++;
        }
    }
    
    function openModifyCountdown()
        senderVerify()
        isDeveloperAddr()
        public
    {
        require(modifyCountdown == false, "Time service is already open");
        
        modifyCountdown = true;
        
    }
    
    function closeModifyCountdown()
        senderVerify()
        isDeveloperAddr()
        public
    {
        require(modifyCountdown == true, "Time service is already open");
        
        modifyCountdown = false;
        
    }
    
    function purchaseCard(uint256 _cId)
        cardTimeVerify()
        senderVerify()
        payable
        public
    {
        
        address _player = msg.sender;
        uint256 _amount = msg.value;
        uint256 _purchasePrice = cardList[_cId].amount.mul(110) / 100;
        
        require(
            cardList[_cId].playerAddress != address(0) 
            && cardList[_cId].playerAddress != _player 
            && _amount >= _purchasePrice, 
            "Failed purchase"
        );
        
        if(cardIndexToApproved[_cId] != address(0)){
            cardIndexToApproved[_cId].send(
                cardList[_cId].amount.mul(105) / 100
                );
            delete cardIndexToApproved[_cId];
        }else
            cardList[_cId].playerAddress.send(
                cardList[_cId].amount.mul(105) / 100
                );
        
        fairProfitContract.send(cardList[_cId].amount.mul(5) / 100);
        if(_amount > _purchasePrice)
            _player.send(_amount.sub(_purchasePrice));
            
        cardList[_cId].amount = _purchasePrice;
        cardList[_cId].playerAddress = _player;
        
    }
    
    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        startTimeVerify()
        senderVerify()
        buyVerify()
        payable
        public
    {
        buyAnalysis(100, standardProtectRatio);
    }

    function buy(uint256 _stepSize, uint256 _protectRatio)
        startTimeVerify()
        senderVerify()
        buyVerify()
        stepSizeVerify(_stepSize)
        public
        payable
    {
        buyAnalysis(
            _stepSize <= 0 ? 100 : _stepSize, 
            _protectRatio <= 100 ? _protectRatio : standardProtectRatio
            );
    }
    
    /**
     * Standard withdraw function.
     */
    function withdraw()
        startTimeVerify()
        senderVerify()
        withdrawVerify()
        public
    {
        
        address _player = msg.sender;
        uint256[] memory _playerGoodsList = playerGoodsList[_player];
        uint256 length = _playerGoodsList.length;
        uint256 _totalAmount;
        uint256 _amount;
        uint256 _withdrawSid;
        uint256 _reachAmount;
        bool _finish;
        uint256 i;
        
        delete playerGoodsList[_player];
        while(i < length){
            
            (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_playerGoodsList[i]);
            
            if(_finish == true){
                playerWithdrawList[_player].push(_playerGoodsList[i]);
            }else{
                goodsList[_playerGoodsList[i]].withdrawSid = _withdrawSid;
                goodsList[_playerGoodsList[i]].reachAmount = _reachAmount;
                playerGoodsList[_player].push(_playerGoodsList[i]);
            }
            
            _totalAmount = _totalAmount.add(_amount);
            i++;
        }
        _player.transfer(_totalAmount);
    }
     
     /**
     * Backup withdraw function in case gas is too high to use standard withdraw.
     */
    function withdrawByGid(uint256 _gId)
        startTimeVerify()
        senderVerify()
        withdrawVerify()
        public
    {
        address _player = msg.sender;
        uint256 _amount;
        uint256 _withdrawSid;
        uint256 _reachAmount;
        bool _finish;
        
        (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_gId);
            
        if(_finish == true){
            
            for(uint256 i = 0; i < playerGoodsList[_player].length; i++){
                if(playerGoodsList[_player][i] == _gId)
                    break;
            }
            require(i < playerGoodsList[_player].length, "gid is wrong");
            
            playerWithdrawList[_player].push(_gId);
            playerGoodsList[_player][i] = playerGoodsList[_player][playerGoodsList[_player].length - 1];
            playerGoodsList[_player].length--;
        }else{
            goodsList[_gId].withdrawSid = _withdrawSid;
            goodsList[_gId].reachAmount = _reachAmount;
        }
        
        _player.transfer(_amount);
    }
    
    function resetTime()
        modifyCountdownVerify()
        senderVerify()
        public
        payable
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount = msg.value;
        uint256 _targetExpectedAmount = getStageTargetAmount(_sId);
        uint256 _targetAmount = 
            stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? 
            _targetExpectedAmount : stage[_rId][_sId].dividendAmount;
            _targetAmount = _targetAmount.mul(100) / 88;
        uint256 _costAmount = _targetAmount.mul(20) / 100;
        
        if(_costAmount > 3 ether)
            _costAmount = 3 ether;
        require(_amount >= _costAmount, "Not enough price");
        
        stage[_rId][_sId].start = now;
        
        cardList[5].playerAddress.send(_costAmount / 2);
        developerAddr.send(_costAmount / 2);
        
        if(_amount > _costAmount)
            msg.sender.send(_amount.sub(_costAmount));
        
    }
    
    function reduceTime()
        modifyCountdownVerify()
        senderVerify()
        public
        payable
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _amount = msg.value;
        uint256 _targetExpectedAmount = getStageTargetAmount(_sId);
        uint256 _targetAmount = 
            stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ?
            _targetExpectedAmount : stage[_rId][_sId].dividendAmount;
            _targetAmount = _targetAmount.mul(100) / 88;
        uint256 _costAmount = _targetAmount.mul(30) / 100;
        
        if(_costAmount > 3 ether)
            _costAmount = 3 ether;
        require(_amount >= _costAmount, "Not enough price");
        
        stage[_rId][_sId].start = now - stageDuration + 900;
        
        cardList[5].playerAddress.send(_costAmount / 2);
        developerAddr.send(_costAmount / 2);
        
        if(_amount > _costAmount)
            msg.sender.send(_amount.sub(_costAmount));
        
    }
    
    /**
     * Core logic to analyse buy behaviour. 
     */
    function buyAnalysis(uint256 _stepSize, uint256 _protectRatio)
        private
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _targetExpectedAmount = getStageTargetAmount(_sId);
        uint256 _targetAmount = 
            stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? 
            _targetExpectedAmount : stage[_rId][_sId].dividendAmount;
            _targetAmount = _targetAmount.mul(100) / 88;
        uint256 _stageTargetBalance = 
            stage[_rId][_sId].amount > 0 ? 
            _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount;
        
        if(now > stage[_rId][_sId].start.add(stageDuration) 
            && _targetAmount > stage[_rId][_sId].amount
        ){
            
            endRound(_rId, _sId);
            
            _rId = rId;
            _sId = sId;
            stage[_rId][_sId].start = now;
            
            _targetExpectedAmount = getStageTargetAmount(_sId);
            _targetAmount = 
                stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? 
                _targetExpectedAmount : stage[_rId][_sId].dividendAmount;
            _targetAmount = _targetAmount.mul(100) / 88;
            _stageTargetBalance = 
                stage[_rId][_sId].amount > 0 ? 
                _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount;
        }
        if(_stageTargetBalance > msg.value)
            buyDataRecord(
                _rId, 
                _sId, 
                _targetAmount, 
                msg.value, 
                _stepSize, 
                _protectRatio
                );
        else
            multiStake(
                msg.value, 
                _stepSize, 
                _protectRatio, 
                _targetAmount, 
                _stageTargetBalance
                );
        /* This is a backstop check to ensure that the contract will always be solvent.
        It would reject any stakes with a protection ratio that the contract may not be able to repay.
        This backstop should never be needed under current settings. */
        require(
            (
                round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100)
                .sub(round[_rId].protectAmount)
                .sub(round[_rId].dividendAmount)
            ) > 0, "data error"
        );    
        bankerFeeDataRecord(msg.value, _protectRatio);    
    }
    
    function multiStake(uint256 _amount, uint256 _stepSize, uint256 _protectRatio, uint256 _targetAmount, uint256 _stageTargetBalance)
        private
    {
        uint256 _rId = rId;
        uint256 _sId = sId;
        uint256 _crossStageNum = 1;
        uint256 _protectTotalAmount;
        uint256 _dividendTotalAmount;
            
        while(true){

            if(_crossStageNum == 1){
                playerDataRecord(
                    _rId, 
                    _sId, 
                    _amount, 
                    _stageTargetBalance, 
                    _stepSize, 
                    _protectRatio, 
                    _crossStageNum
                    );
                round[_rId].amount = round[_rId].amount.add(_amount);
                round[_rId].protectAmount = round[_rId].protectAmount.add(
                    _amount.mul(_protectRatio.mul(88)) / 10000);    
            }
                
            buyStageDataRecord(
                _rId, 
                _sId, 
                _targetAmount, 
                _stageTargetBalance, 
                _sId.
                add(_stepSize), 
                _protectRatio
                );
            _dividendTotalAmount = _dividendTotalAmount.add(stage[_rId][_sId].dividendAmount);
            _protectTotalAmount = _protectTotalAmount.add(stage[_rId][_sId].protectAmount);
            
            _sId++;
            _amount = _amount.sub(_stageTargetBalance);
            _targetAmount = 
                stage[_rId][_sId].dividendAmount <= getStageTargetAmount(_sId) ? 
                getStageTargetAmount(_sId) : stage[_rId][_sId].dividendAmount;
            _targetAmount = _targetAmount.mul(100) / 88;
            _stageTargetBalance = _targetAmount;
            _crossStageNum++;
            if(_stageTargetBalance >= _amount){
                buyStageDataRecord(
                    _rId, 
                    _sId, 
                    _targetAmount, 
                    _amount, 
                    _sId.add(_stepSize), 
                    _protectRatio
                    );
                playerDataRecord(
                    _rId, 
                    _sId, 
                    0, 
                    _amount, 
                    _stepSize, 
                    _protectRatio, 
                    _crossStageNum
                    );
                    
                if(_targetAmount == _amount)
                    _sId++;
                    
                stage[_rId][_sId].start = now;
                sId = _sId;
                
                round[_rId].protectAmount = round[_rId].protectAmount.sub(_protectTotalAmount);
                round[_rId].dividendAmount = round[_rId].dividendAmount.add(_dividendTotalAmount);
                break;
            }
        }
    }
    
    /**
     * Records all data.
     */
    function buyDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _stepSize, uint256 _protectRatio)
        private
    {
        uint256 _expectEndSid = _sId.add(_stepSize);
        uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000;
        
        round[_rId].amount = round[_rId].amount.add(_amount);
        round[_rId].protectAmount = round[_rId].protectAmount.add(_protectAmount);
        
        stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount);
        stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount);
        stage[_rId][_expectEndSid].dividendAmount = 
            stage[_rId][_expectEndSid].dividendAmount.add(
                computeEarningsAmount(_sId, 
                _amount, 
                _targetAmount, 
                _expectEndSid, 
                100 - _protectRatio
                )
                );
                
        FBankdatasets.Goods memory _goods;
        _goods.rId = _rId;
        _goods.startSid = _sId;
        _goods.amount = _amount;
        _goods.endSid = _expectEndSid;
        _goods.protectRatio = _protectRatio;
        playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1);
    }
    
    /**
     * Records the stage data.
     */
    function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _expectEndSid, uint256 _protectRatio)
        private
    {
        uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000;
        
        if(_targetAmount != _amount)
            stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount);
        stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount);
        stage[_rId][_expectEndSid].dividendAmount = 
            stage[_rId][_expectEndSid].dividendAmount.add(
                computeEarningsAmount(
                    _sId, 
                    _amount, 
                    _targetAmount, 
                    _expectEndSid, 
                    100 - _protectRatio
                    )
                );
    }
    
    /**
     * Records the player data.
     */
    function playerDataRecord(uint256 _rId, uint256 _sId, uint256 _totalAmount, uint256 _stageBuyAmount, uint256 _stepSize, uint256 _protectRatio, uint256 _crossStageNum)
        private
    {    
        if(_crossStageNum <= 1){
            FBankdatasets.Goods memory _goods;
            _goods.rId = _rId;
            _goods.startSid = _sId;
            _goods.amount = _totalAmount;
            _goods.stepSize = _stepSize;
            _goods.protectRatio = _protectRatio;
            if(_crossStageNum == 1)
                _goods.startAmount = _stageBuyAmount;
            playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1);
        }
        else{
            uint256 _goodsIndex = goodsList.length - 1;
            goodsList[_goodsIndex].endAmount = _stageBuyAmount;
            goodsList[_goodsIndex].endSid = _sId;
        }
        
    }
    
    function bankerFeeDataRecord(uint256 _amount, uint256 _protectRatio)
        private
    {
        round[rId].jackpotAmount = round[rId].jackpotAmount.add(_amount.mul(9).div(100));

        uint256 _cardAmount = _amount / 100;
        if(_protectRatio == 0)
            cardList[0].playerAddress.send(_cardAmount);
        else if(_protectRatio > 0 && _protectRatio < 57)
            cardList[1].playerAddress.send(_cardAmount);   
        else if(_protectRatio == 57)
            cardList[2].playerAddress.send(_cardAmount);   
        else if(_protectRatio > 57 && _protectRatio < 100)
            cardList[3].playerAddress.send(_cardAmount);   
        else if(_protectRatio == 100)
            cardList[4].playerAddress.send(_cardAmount);   
        
        fairProfitContract.send(_amount.div(50));
    }
    
    function endRound(uint256 _rId, uint256 _sId)
        private
    {
        round[_rId].end = now;
        round[_rId].ended = true;
        round[_rId].endSid = _sId;
        
        if(stage[_rId][_sId].amount > 0)
            round[_rId + 1].jackpotAmount = (
                round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100)
                .sub(round[_rId].protectAmount)
                .sub(round[_rId].dividendAmount)
            ).mul(20).div(100);
        else
            round[_rId + 1].jackpotAmount = (
                round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100)
                .sub(round[_rId].protectAmount)
                .sub(round[_rId].dividendAmount)
            );
        
        round[_rId + 1].start = now;
        rId++;
        sId = 1;
    }
    
    function getStageTargetAmount(uint256 _sId)
        public
        view
        returns(uint256)
    {
        return bankCompute.getStageTargetAmount(_sId);
    }
    
    function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio)
        public
        view
        returns(uint256)
    {
        return bankCompute.computeEarningsAmount(_sId, _amount, _currentTargetAmount, _expectEndSid, _ratio);
    }
    
    function getEarningsAmountByGoodsIndex(uint256 _goodsIndex)
        public
        view
        returns(uint256, uint256, uint256, bool)
    {
        FBankdatasets.Goods memory _goods = goodsList[_goodsIndex];
        uint256 _sId = sId;
        uint256 _amount;
        uint256 _targetExpectedAmount;
        uint256 _targetAmount;
        if(_goods.stepSize == 0){
            if(round[_goods.rId].ended == true){
                if(round[_goods.rId].endSid > _goods.endSid){
                    _targetExpectedAmount = getStageTargetAmount(_goods.startSid);
                    _targetAmount = 
                        stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? 
                        _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount;
                    _targetAmount = _targetAmount.mul(100) / 88;
                    _amount = computeEarningsAmount(
                        _goods.startSid, 
                        _goods.amount, 
                        _targetAmount, 
                        _goods.endSid, 
                        100 - _goods.protectRatio
                        );
                    
                }else
                    _amount = _goods.amount.mul(_goods.protectRatio.mul(88)) / 10000;
                    
                if(round[_goods.rId].endSid == _goods.startSid)
                    _amount = _amount.add(
                        _goods.amount.mul(
                            getRoundJackpot(_goods.rId)
                            ).div(stage[_goods.rId][_goods.startSid].amount)
                            );
                
                return (_amount, 0, 0, true);
            }else{
                if(_sId > _goods.endSid){
                    _targetExpectedAmount = getStageTargetAmount(_goods.startSid);
                    _targetAmount = 
                        stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ?
                        _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount;
                    _targetAmount = _targetAmount.mul(100) / 88;
                    _amount = computeEarningsAmount(
                        _goods.startSid, 
                        _goods.amount, 
                        _targetAmount, 
                        _goods.endSid, 
                        100 - _goods.protectRatio
                        );
                }else
                    return (0, 0, 0, false);
            }
            return (_amount, 0, 0, true);
            
        }else{
            
            uint256 _startSid = _goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid;
            uint256 _ratio = 100 - _goods.protectRatio;
            uint256 _reachAmount = _goods.reachAmount;
            if(round[_goods.rId].ended == true){
                
                while(true){
                    
                    if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){
                        return (_amount, _startSid, _reachAmount, false);
                    }
                    
                    if(round[_goods.rId].endSid > _startSid.add(_goods.stepSize)){
                        _targetExpectedAmount = getStageTargetAmount(_startSid);
                        _targetAmount = 
                            stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? 
                            _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount;
                        _targetAmount = _targetAmount.mul(100) / 88;
                        if(_startSid == _goods.endSid){
                            _amount = _amount.add(
                                computeEarningsAmount(
                                    _startSid, 
                                    _goods.endAmount, 
                                    _targetAmount, 
                                    _startSid.add(_goods.stepSize), 
                                    _ratio
                                    )
                                );
                            return (_amount, _goods.endSid, 0, true);
                        }
                        _amount = _amount.add(
                            computeEarningsAmount(
                                _startSid, 
                                _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, 
                                _targetAmount, 
                                _startSid.add(_goods.stepSize), 
                                _ratio
                                )
                            );
                        _reachAmount = 
                            _reachAmount.add(
                                _startSid == _goods.startSid ? _goods.startAmount : _targetAmount
                            );
                    }else{
                        
                        _amount = _amount.add(
                            (_goods.amount.sub(_reachAmount))
                            .mul(_goods.protectRatio.mul(88)) / 10000
                            );
                        
                        if(round[_goods.rId].endSid == _goods.endSid)
                            _amount = _amount.add(
                                _goods.endAmount.mul(getRoundJackpot(_goods.rId))
                                .div(stage[_goods.rId][_goods.endSid].amount)
                                );
                        
                        return (_amount, _goods.endSid, 0, true);
                    }
                    
                    _startSid++;
                }
                
            }else{
                while(true){
                    
                    if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){
                        return (_amount, _startSid, _reachAmount, false);
                    }
                    
                    if(_sId > _startSid.add(_goods.stepSize)){
                        _targetExpectedAmount = getStageTargetAmount(_startSid);
                        _targetAmount = 
                            stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? 
                            _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount;
                        _targetAmount = _targetAmount.mul(100) / 88;
                        if(_startSid == _goods.endSid){
                            _amount = _amount.add(
                                computeEarningsAmount(
                                    _startSid, 
                                    _goods.endAmount, 
                                    _targetAmount, 
                                    _startSid.add(_goods.stepSize), 
                                    _ratio
                                    )
                                );
                            return (_amount, _goods.endSid, 0, true);
                        }
                        _amount = _amount.add(
                            computeEarningsAmount(
                                _startSid, 
                                _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, 
                                _targetAmount, 
                                _startSid.add(_goods.stepSize), 
                                _ratio
                                )
                            );
                        _reachAmount = 
                            _reachAmount.add(
                                _startSid == _goods.startSid ? 
                                _goods.startAmount : _targetAmount
                            );
                    }else    
                        return (_amount, _startSid, _reachAmount, false);
                    
                    _startSid++;
                }
            }
        }
    }
    
    function getRoundJackpot(uint256 _rId)
        public
        view
        returns(uint256)
    {
        return (
            (
                round[_rId].jackpotAmount
                .add(round[_rId].amount.mul(88) / 100))
                .sub(round[_rId].protectAmount)
                .sub(round[_rId].dividendAmount)
            ).mul(80).div(100);
    }
    
    function getHeadInfo()
        public
        view
        returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256)
    {
        uint256 _targetExpectedAmount = getStageTargetAmount(sId);
        
        return
            (
                rId,
                sId,
                startTime,
                stage[rId][sId].start.add(stageDuration),
                stage[rId][sId].amount,
                (
                    stage[rId][sId].dividendAmount <= _targetExpectedAmount ? 
                    _targetExpectedAmount : stage[rId][sId].dividendAmount
                ).mul(100) / 88,
                round[rId].jackpotAmount.add(round[rId].amount.mul(88) / 100)
                .sub(round[rId].protectAmount)
                .sub(round[rId].dividendAmount)
            );
    }
    
    function getPlayerGoodList(address _player)
        public
        view
        returns(uint256[])
    {
        return playerGoodsList[_player];
    }

    function totalSupply() 
        public 
        view 
        returns (uint256 total)
    {
        return cardList.length;
    }
    
    function balanceOf(address _owner) 
        public 
        view 
        returns (uint256 balance)
    {
        uint256 _length = cardList.length;
        uint256 _count;
        for(uint256 i = 0; i < _length; i++){
            if(cardList[i].playerAddress == _owner)
                _count++;
        }
        
        return _count;
    }
    
    function ownerOf(uint256 _tokenId) 
        public 
        view 
        returns (address owner)
    {
        require(cardList.length > _tokenId, "tokenId error");
        owner = cardList[_tokenId].playerAddress;
        require(owner != address(0), "No owner");
    }
    
    function approve(address _to, uint256 _tokenId)
        senderVerify()
        public
    {
        require (player[_to], "Not a registered user");
        require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you");
        require (cardList.length > _tokenId, "tokenId error");
        require (cardIndexToApproved[_tokenId] == address(0), "Approved");
        
        cardIndexToApproved[_tokenId] = _to;
        
        emit Approval(msg.sender, _to, _tokenId);
    }
    
    function takeOwnership(uint256 _tokenId)
        senderVerify()
        public
    {
        address _newOwner = msg.sender;
        address _oldOwner = cardList[_tokenId].playerAddress;
        
        require(_newOwner != address(0), "Address error");
        require(_newOwner == cardIndexToApproved[_tokenId], "Without permission");
        
        cardList[_tokenId].playerAddress = _newOwner;
        delete cardIndexToApproved[_tokenId];
        
        emit Transfer(_oldOwner, _newOwner, _tokenId);
    }
    
    function transfer(address _to, uint256 _tokenId) 
        senderVerify()
        public
    {
        require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you");
        require(_to != address(0), "Address error");
        require(_to == cardIndexToApproved[_tokenId], "Without permission");
        
        cardList[_tokenId].playerAddress = _to;
        
        if(cardIndexToApproved[_tokenId] != address(0))
            delete cardIndexToApproved[_tokenId];
        
        emit Transfer(msg.sender, _to, _tokenId);
    }
    
    function transferFrom(address _from, address _to, uint256 _tokenId)
        senderVerify()
        public
    {
        require (_from == cardList[_tokenId].playerAddress, "Owner error");
        require(_to != address(0), "Address error");
        require(_to == cardIndexToApproved[_tokenId], "Without permission");
        
        cardList[_tokenId].playerAddress = _to;
        delete cardIndexToApproved[_tokenId];
        
        emit Transfer(_from, _to, _tokenId);
    }
    
}

library FBankdatasets {
    
    struct Round {
        uint256 start;
        uint256 end;
        bool ended;
        uint256 endSid;
        uint256 amount;
        uint256 protectAmount;
        uint256 dividendAmount;
        uint256 jackpotAmount;
    }
    
    struct Stage {
        uint256 start;
        uint256 amount;
        uint256 protectAmount;
        uint256 dividendAmount;
    }
    
    struct Goods {
        uint256 rId;
        uint256 startSid;
        uint256 endSid;
        uint256 withdrawSid;
        uint256 amount;
        uint256 startAmount;
        uint256 endAmount;
        uint256 reachAmount;
        uint256 stepSize;
        uint256 protectRatio;
    }
    
    struct Card {
        address playerAddress;
        uint256 amount;
    }
}

/**
 * Anti clone protection.
 * Do not clone this contract without permission even if you manage to break the conceal. 
 * The concealed code contains core calculations necessary for this contract to function. 
 * This contract can be licensed for a fee, contact us instead of cloning!
 */ 
interface FairBankCompute {
    function getStageTargetAmount(uint256 _sId) external view returns(uint256);
    function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) external view returns(uint256);
}

/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    
    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        uint256 c = a + b;
        assert(c >= a);
        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) 
    {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256) 
    {
        assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        assert(a == b * c + a % b); // There is no case in which this doesn't hold
        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);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"getPlayerGoodList","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerWithdrawList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"goodsList","outputs":[{"name":"rId","type":"uint256"},{"name":"startSid","type":"uint256"},{"name":"endSid","type":"uint256"},{"name":"withdrawSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"startAmount","type":"uint256"},{"name":"endAmount","type":"uint256"},{"name":"reachAmount","type":"uint256"},{"name":"stepSize","type":"uint256"},{"name":"protectRatio","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage","outputs":[{"name":"start","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"endSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"},{"name":"jackpotAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"player","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"standardProtectRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resetTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_goodsIndex","type":"uint256"}],"name":"getEarningsAmountByGoodsIndex","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_currentTargetAmount","type":"uint256"},{"name":"_expectEndSid","type":"uint256"},{"name":"_ratio","type":"uint256"}],"name":"computeEarningsAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fairProfitContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rId","type":"uint256"}],"name":"getRoundJackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cId","type":"uint256"}],"name":"purchaseCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stageDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gId","type":"uint256"}],"name":"withdrawByGid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"modifyCountdown","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerGoodsList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cardTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHeadInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_stepSize","type":"uint256"},{"name":"_protectRatio","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"}],"name":"getStageTargetAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardList","outputs":[{"name":"playerAddress","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reduceTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60008054600160a060020a031990811673bc817a495f0114755da5305c5aa84fc5ca7ebabd17909155600180549091167353a39eef083c4a91e36145176cc9f52be29b728817905560c0604052602060808190527f4661697244415050202d2042616e6b2053696d756c61746f72202d20466f6d6f60a0908152620000889160029190620001bf565b506040805180820190915260098082527f4642616e6b466f6d6f00000000000000000000000000000000000000000000006020909201918252620000cf91600391620001bf565b50610e1060045560396005556006805460ff19169055635bca7e10600755635bca700060085560016009819055600a553480156200010c57600080fd5b50600754600980546000908152600b6020908152604080832085905592548252600c8152828220600a5483529052908120919091555b6006811015620001b857600154600160a060020a0316601182600681106200016657fe5b600202018054600160a060020a031916600160a060020a0392909216919091179055670de0b6b3a7640000601182600681106200019f57fe5b6002020160010181905550808060010191505062000142565b5062000264565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b506200024092915062000244565b5090565b6200026191905b808211156200024057600081556001016200024b565b90565b6147f180620002746000396000f3006080604052600436106101ed5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461035e578063095ea7b3146103e8578063180392301461040c57806318160ddd1461047d57806323b872dd146104a457806323df93c1146104ce57806328d27f09146104f25780632d6ddfda1461055a57806333b6baf51461056f57806334aed7a0146105a057806334d5f37b146105e1578063394baa0b1461063a5780633ccfd60b146106525780634c54e1b514610667578063501976461461069c57806358761920146106b15780636352211e146106c657806365a114f1146106de578063678bbf24146106e657806370a082311461072657806378c9f9cf1461074757806378e979251461076b5780637c8edcfc1461078057806395d89b411461079557806398f04128146107aa578063a54447aa146107c2578063a9059cbb146107cd578063aafb088e146107f1578063b2e6ceeb14610806578063b604ed1b1461081e578063bed47ed814610836578063c5d3ce1e1461084b578063ce2b785414610860578063d1a392eb14610884578063d571dbac14610899578063d6febde8146108e6578063d9daa497146108f4578063d9f035aa1461090c578063ef8c2c5814610947578063f60436cd1461095c575b6007544210156101fc57600080fd5b333214610241576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561027557336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156102b35760008054604051600160a060020a03909116913480156108fc02929091818181858888f193505050505061035c565b66038d7ea4c68000341015610312576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a54101561032f576405d21dba003a111561032f57600080fd5b6019600a54101561034f57678ac7230489e8000034111561034f57600080fd5b61035c6064600554610964565b005b34801561036a57600080fd5b50610373610c9d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b5061035c600160a060020a0360043516602435610d28565b34801561041857600080fd5b5061042d600160a060020a0360043516610fb7565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610469578181015183820152602001610451565b505050509050019250505060405180910390f35b34801561048957600080fd5b50610492611024565b60408051918252519081900360200190f35b3480156104b057600080fd5b5061035c600160a060020a036004358116906024351660443561102a565b3480156104da57600080fd5b50610492600160a060020a0360043516602435611278565b3480156104fe57600080fd5b5061050a6004356112a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561056657600080fd5b5061035c61130a565b34801561057b57600080fd5b50610584611450565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506105bb60043560243561145f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105ed57600080fd5b506105f9600435611491565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561064657600080fd5b506105846004356114d8565b34801561065e57600080fd5b5061035c6114f3565b34801561067357600080fd5b50610688600160a060020a036004351661186f565b604080519115158252519081900360200190f35b3480156106a857600080fd5b50610492611884565b3480156106bd57600080fd5b5061049261188a565b3480156106d257600080fd5b50610584600435611890565b61035c61195e565b3480156106f257600080fd5b506106fe600435611cfa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561073257600080fd5b50610492600160a060020a0360043516612480565b34801561075357600080fd5b506104926004356024356044356064356084356124d1565b34801561077757600080fd5b50610492612593565b34801561078c57600080fd5b50610584612599565b3480156107a157600080fd5b506103736125a8565b3480156107b657600080fd5b50610492600435612603565b61035c600435612654565b3480156107d957600080fd5b5061035c600160a060020a036004351660243561298e565b3480156107fd57600080fd5b50610492612bf3565b34801561081257600080fd5b5061035c600435612bf9565b34801561082a57600080fd5b5061035c600435612df0565b34801561084257600080fd5b5061049261316a565b34801561085757600080fd5b50610688613170565b34801561086c57600080fd5b50610492600160a060020a0360043516602435613179565b34801561089057600080fd5b50610492613194565b3480156108a557600080fd5b506108ae61319a565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61035c6004356024356132ee565b34801561090057600080fd5b50610492600435613505565b34801561091857600080fd5b506109246004356135af565b60408051600160a060020a03909316835260208301919091528051918290030190f35b34801561095357600080fd5b5061035c6135d8565b61035c61371d565b600954600a546000808061097784613505565b6000868152600c602090815260408083208884529091529020600301549093508310156109c0576000858152600c602090815260408083208784529091529020600301546109c2565b825b915060586109d783606463ffffffff613a2f16565b8115156109e057fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610a0e5781610a3c565b6000858152600c60209081526040808320878452909152902060010154610a3c90839063ffffffff613a6516565b6004546000878152600c60209081526040808320898452909152902054919250610a6c919063ffffffff613a7716565b42118015610a9557506000858152600c6020908152604080832087845290915290206001015482115b15610b9c57610aa48585613a86565b600954600a546000828152600c6020908152604080832084845290915290204290559095509350610ad484613505565b6000868152600c60209081526040808320888452909152902060030154909350831015610b1d576000858152600c60209081526040808320878452909152902060030154610b1f565b825b91506058610b3483606463ffffffff613a2f16565b811515610b3d57fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610b6b5781610b99565b6000858152600c60209081526040808320878452909152902060010154610b9990839063ffffffff613a6516565b90505b34811115610bb757610bb2858584348b8b613bd4565b610bc4565b610bc43488888585613f2e565b6000858152600b6020526040812060068101546005820154600490920154610c3592610c29918290606490610c0090605863ffffffff613a2f16565b811515610c0957fe5b60008d8152600b602052604090206007015491900463ffffffff613a7716565b9063ffffffff613a6516565b11610c8a576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c9434876141c2565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b505050505081565b333214610d6d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515610da157336000908152600d60205260409020805460ff191660011790555b600160a060020a0382166000908152600d602052604090205460ff161515610e13576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b60118160068110610e2057fe5b6002020154600160a060020a03163314610e84576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610edc576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a031615610f49576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b600160a060020a0381166000908152600e602090815260409182902080548351818402810184019094528084526060939283018282801561101757602002820191906000526020600020905b815481526020019060010190808311611003575b505050505090505b919050565b60065b90565b33321461106f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156110a357336000908152600d60205260409020805460ff191660011790555b601181600681106110b057fe5b6002020154600160a060020a03848116911614611117576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611177576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a038381169116146111e8576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81601182600681106111f657fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601d602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600f6020528160005260406000208181548110151561129357fe5b90600052602060002001600091509150505481565b60108054829081106112b657fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461134f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561138357336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146113e5576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161515600114611444576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19169055565b600054600160a060020a031681565b600c60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600b60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601d60205260009081526040902054600160a060020a031681565b600060606000806000806000806000600754421015151561151357600080fd5b333214611558576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561158c57336000908152600d60205260409020805460ff191660011790555b336000908152600e60205260408120541161163d576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600e60209081526040918290208054835181840281018401909452808452939c5091929083018282801561169657602002820191906000526020600020905b815481526020019060010190808311611682575b50508351600160a060020a038e166000908152600e60205260408120959d50909b506116c794935091506146f29050565b8681101561182d576116ef88828151811015156116e057fe5b90602001906020020151611cfa565b929750909550935091506001821515141561174d57600160a060020a0389166000908152600f60205260409020885189908390811061172a57fe5b602090810290910181015182546001810184556000938452919092200155611813565b836010898381518110151561175e57fe5b602090810290910101518154811061177257fe5b90600052602060002090600a020160030181905550826010898381518110151561179857fe5b60209081029091010151815481106117ac57fe5b90600052602060002090600a020160070181905550600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156117f457fe5b6020908102909101810151825460018101845560009384529190922001555b611823868663ffffffff613a7716565b95506001016116c7565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611863573d6000803e3d6000fd5b50505050505050505050565b600d6020526000908152604090205460ff1681565b60095481565b60055481565b6000600682106118ea576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b601182600681106118f757fe5b6002020154600160a060020a0316905080151561101f576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6006546000908190819081908190819060ff1615156001146119f0576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015611ab3576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b333214611af8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515611b2c57336000908152600d60205260409020805460ff191660011790555b6009549550600a549450349350611b4285613505565b6000878152600c60209081526040808320898452909152902060030154909350831015611b8b576000868152600c60209081526040808320888452909152902060030154611b8d565b825b91506058611ba283606463ffffffff613a2f16565b811515611bab57fe5b0491506064611bc183601463ffffffff613a2f16565b811515611bca57fe5b0490506729a2241af62c0000811115611be857506729a2241af62c00005b80841015611c40576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6000868152600c602090815260408083208884529091529020429055601160055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f193505050505080841115611cf257336108fc611cda868463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080611d08614713565b600080600080600080600060108d815481101515611d2257fe5b90600052602060002090600a020161014060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509750600a549650876101000151600014156120445787516000908152600b602052604090206002015460ff16151560011415611f7b5760408089015189516000908152600b60205291909120600301541115611ea257611e048860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611e575787516000908152600c60209081526040808320828c01518452909152902060030154611e59565b845b93506058611e6e85606463ffffffff613a2f16565b811515611e7757fe5b049350611e9b88602001518960800151868b604001518c61012001516064036124d1565b9550611edf565b612710611ed2611ec160588b6101200151613a2f90919063ffffffff16565b60808b01519063ffffffff613a2f16565b811515611edb57fe5b0495505b60208089015189516000908152600b9092526040909120600301541415611f665787516000908152600c60209081526040808320828c015184529091529020600101548851611f6391611f5691611f4a90611f3990612603565b60808d01519063ffffffff613a2f16565b9063ffffffff61431216565b879063ffffffff613a7716565b95505b949a5060009950899850600197508a94612471565b876040015187111561203257611f948860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611fe75787516000908152600c60209081526040808320828c01518452909152902060030154611fe9565b845b93506058611ffe85606463ffffffff613a2f16565b81151561200757fe5b04935061202b88602001518960800151868b604001518c61012001516064036124d1565b9550611f66565b60009b508b9a508a9950899850612471565b60608801511561205857876060015161205e565b87602001515b61012089015160e08a01518a516000908152600b60205260409020600201549295506064919091039350915060ff1615156001141561231f575b606488606001516000146120b05788606001516120b6565b88602001515b840311156120d05785838260009b509b509b509b50612471565b6101008801516120e790849063ffffffff613a7716565b88516000908152600b602052604090206003015411156122325761210a83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156121575787516000908152600c60209081526040808320868452909152902060030154612159565b845b9350605861216e85606463ffffffff613a2f16565b81151561217757fe5b04935087604001518314156121cb576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b876124d1565b6040890151909c509a5060009950600198508b9550612471565b612202611f56848a6020015186146121e357866121e9565b8a60a001515b876121ab8d610100015189613a7790919063ffffffff16565b955061222b88602001518414612218578461221e565b8860a001515b829063ffffffff613a7716565b9050612314565b61228d61271061227561225460588c6101200151613a2f90919063ffffffff16565b60808c0151612269908663ffffffff613a6516565b9063ffffffff613a2f16565b81151561227e57fe5b8891900463ffffffff613a7716565b6040808a01518a516000908152600b602052919091206003015491975014156122fa5787516000908152600c60209081526040808320818c0151845290915290206001015488516121b191611f5691611f4a906122e990612603565b60c08d01519063ffffffff613a2f16565b858860400151600060018191509b509b509b509b50612471565b600190920191612098565b6064886060015160001461233757886060015161233d565b88602001515b840311156123575785838260009b509b509b509b50612471565b61010088015161236e90849063ffffffff613a7716565b8711156124545761237e83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156123cb5787516000908152600c602090815260408083208684529091529020600301546123cd565b845b935060586123e285606463ffffffff613a2f16565b8115156123eb57fe5b049350876040015183141561241f576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b612437611f56848a6020015186146121e357866121e9565b955061244d88602001518414612218578461221e565b9050612466565b85838260009b509b509b509b50612471565b60019092019161231f565b50505050505050509193509193565b6000600681805b828110156124c957600160a060020a038516601182600681106124a657fe5b6002020154600160a060020a031614156124c1576001909101905b600101612487565b509392505050565b604080517f78c9f9cf0000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064810184905260848101839052905160009173dd033ff7e98792694f6b358daeb065d4ff01bd5a916378c9f9cf9160a48082019260209290919082900301818787803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b505050506040513d602081101561258757600080fd5b50519695505050505050565b60075481565b600154600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b6000818152600b602052604081206006810154600582015460049092015461264e92606492611f4a926050926122699291610c29919082908890610c0090605863ffffffff613a2f16565b92915050565b6000806000600854421015151561266a57600080fd5b3332146126af576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156126e357336000908152600d60205260409020805460ff191660011790555b3392503491506064612713606e601187600681106126fd57fe5b6002020160010154613a2f90919063ffffffff16565b81151561271c57fe5b04905060006011856006811061272e57fe5b6002020154600160a060020a03161480159061276d5750600160a060020a0383166011856006811061275c57fe5b6002020154600160a060020a031614155b80156127795750808210155b15156127cf576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601d6020526040902054600160a060020a031615612861576000848152601d6020526040902054600160a060020a03166108fc606461281b6069601189600681106126fd57fe5b81151561282457fe5b049081150290604051600060405180830381858888f15050506000868152601d602052604090208054600160a060020a0319169055506128b89050565b6011846006811061286e57fe5b6002020154600160a060020a03166108fc60646128936069601189600681106126fd57fe5b81151561289c57fe5b049081150290604051600060405180830381858888f150505050505b600154600160a060020a03166108fc60646128db6005601189600681106126fd57fe5b8115156128e457fe5b049081150290604051600060405180830381858888f19350505050508082111561293d57600160a060020a0383166108fc612925848463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b806011856006811061294b57fe5b60020201600101819055508260118560068110151561296657fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b3332146129d3576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612a0757336000908152600d60205260409020805460ff191660011790555b60118160068110612a1457fe5b6002020154600160a060020a03163314612a78576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515612ad8576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a03838116911614612b49576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118260068110612b5757fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601d60205260409020541615612ba7576000818152601d602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60045481565b600080333214612c41576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612c7557336000908152600d60205260409020805460ff191660011790555b33915060118360068110612c8557fe5b6002020154600160a060020a03908116915082161515612cef576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601d6020526040902054600160a060020a03838116911614612d60576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118460068110612d6e57fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601d602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6000806000806000806007544210151515612e0a57600080fd5b333214612e4f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612e8357336000908152600d60205260409020805460ff191660011790555b336000908152600e602052604081205411612f34576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b339550612f4087611cfa565b92975090955093509150600182151514156130df575060005b600160a060020a0386166000908152600e6020526040902054811015612fbe57600160a060020a0386166000908152600e60205260409020805488919083908110612fa057fe5b90600052602060002001541415612fb657612fbe565b600101612f59565b600160a060020a0386166000908152600e6020526040902054811061302d576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600f602090815260408083208054600181018255908452828420018b9055928252600e9052208054600019810190811061307257fe5b6000918252602080832090910154600160a060020a0389168352600e90915260409091208054839081106130a257fe5b6000918252602080832090910192909255600160a060020a0388168152600e909152604090208054906130d9906000198301614767565b5061312a565b836010888154811015156130ef57fe5b90600052602060002090600a0201600301819055508260108881548110151561311457fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015613160573d6000803e3d6000fd5b5050505050505050565b600a5481565b60065460ff1681565b600e6020528160005260406000208181548110151561129357fe5b60085481565b6000806000806000806000806131b1600a54613505565b600954600a546007546004546000848152600c602090815260408083208684529091529020549495509293919290916131ef9163ffffffff613a7716565b6009546000908152600c60209081526040808320600a5484529091529020600181015460039091015460589061325d90606490891015613250576009546000908152600c60209081526040808320600a548452909152902060030154612269565b889063ffffffff613a2f16565b81151561326657fe5b6009546000908152600b602052604090206006810154600582015460049092015493909204926132d79291610c299182906064906132ab90605863ffffffff613a2f16565b8115156132b457fe5b6009546000908152600b602052604090206007015491900463ffffffff613a7716565b959e949d50929b5090995097509550909350915050565b6007544210156132fd57600080fd5b333214613342576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561337657336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156133b45760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050613501565b66038d7ea4c68000341015613413576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a541015613430576405d21dba003a111561343057600080fd5b6019600a54101561345057678ac7230489e8000034111561345057600080fd5b81620f42408111156134d2576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6134ff60008411156134e457836134e7565b60645b60648411156134f8576005546134fa565b835b610964565b505b5050565b600073dd033ff7e98792694f6b358daeb065d4ff01bd5a600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561357d57600080fd5b505af1158015613591573d6000803e3d6000fd5b505050506040513d60208110156135a757600080fd5b505192915050565b601181600681106135bc57fe5b600202018054600190910154600160a060020a03909116915082565b33321461361d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561365157336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146136b3576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161561370e576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6006546000908190819081908190819060ff1615156001146137af576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015613872576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3332146138b7576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156138eb57336000908152600d60205260409020805460ff191660011790555b6009549550600a54945034935061390185613505565b6000878152600c6020908152604080832089845290915290206003015490935083101561394a576000868152600c6020908152604080832088845290915290206003015461394c565b825b9150605861396183606463ffffffff613a2f16565b81151561396a57fe5b049150606461398083601e63ffffffff613a2f16565b81151561398957fe5b0490506729a2241af62c00008111156139a757506729a2241af62c00005b808410156139ff576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6004546000878152600c602090815260408083208984529091529020429190910361038401905560116005611c61565b600080831515613a425760009150613a5e565b50828202828482811515613a5257fe5b0414613a5a57fe5b8091505b5092915050565b600082821115613a7157fe5b50900390565b600082820183811015613a5a57fe5b6000828152600b602090815260408083204260018083019190915560028201805460ff1916821790556003909101859055600c8352818420858552909252822001541115613b34576000828152600b6020526040902060068101546005820154600490920154613b1992606492611f4a926014926122699291610c29919082908890610c0090605863ffffffff613a2f16565b600183016000908152600b6020526040902060070155613bb0565b6000828152600b6020526040902060068101546005820154600490920154613b9992610c29918290606490613b7090605863ffffffff613a2f16565b811515613b7957fe5b6000898152600b602052604090206007015491900463ffffffff613a7716565b600183016000908152600b60205260409020600701555b5060019081016000908152600b602052604090204290556009805482019055600a55565b600080613bdf614713565b613bef888663ffffffff613a7716565b9250612710613c0861325086605863ffffffff613a2f16565b811515613c1157fe5b60008b8152600b60205260409020600401549190049250613c38908763ffffffff613a7716565b60008a8152600b60205260409020600481019190915560050154613c62908363ffffffff613a7716565b60008a8152600b6020908152604080832060050193909355600c81528282208b835290522060010154613c9b908763ffffffff613a7716565b60008a8152600c602090815260408083208c8452909152808220600101929092558481522060020154613cce9083613a77565b60008a8152600c60209081526040808320878452909152902060020155613d28613cff89888a8760648a90036124d1565b60008b8152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b60008a8152600c602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600e8b5290812060108054600181810183559184528451600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6728101919091559b517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6738d015595517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6748c015560608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6758c015597517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768b015560a08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6778b015560c08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6788b015560e08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798b0155610100909201517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8a015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b9098019790975550855493840186559481529490942001919091555050565b600954600a5460016000805b8260011415613fe957613f5285858c898d8d89614346565b6000858152600b6020526040902060040154613f74908b63ffffffff613a7716565b6000868152600b6020526040902060040155613fd6612710613fad613fa08b605863ffffffff613a2f16565b8d9063ffffffff613a2f16565b811515613fb657fe5b6000888152600b602052604090206005015491900463ffffffff613a7716565b6000868152600b60205260409020600501555b61400685858989614000838f63ffffffff613a7716565b8d6145be565b6000858152600c6020908152604080832087845290915290206003015461403490829063ffffffff613a7716565b6000868152600c6020908152604080832088845290915290206002015490915061406590839063ffffffff613a7716565b600190940193915061407d8a8763ffffffff613a6516565b995061408884613505565b6000868152600c6020908152604080832088845290915290206003015411156140cd576000858152600c602090815260408083208784529091529020600301546140d6565b6140d684613505565b965060586140eb88606463ffffffff613a2f16565b8115156140f457fe5b0496508695506001909201918986106141bd5761411e8585898d614000838f63ffffffff613a7716565b61412e858560008d8d8d89614346565b8987141561413d576001909301925b6000858152600c602090815260408083208784528252808320429055600a879055878352600b90915290206005015461417c908363ffffffff613a6516565b6000868152600b602052604090206005810191909155600601546141a6908263ffffffff613a7716565b6000868152600b6020526040902060060155611863565b613f3a565b60006141fe6141dd6064611f4a86600963ffffffff613a2f16565b6009546000908152600b60205260409020600701549063ffffffff613a7716565b6009546000908152600b6020526040902060070155506064820481151561425557601160005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f19350505050506142d6565b6000821180156142655750603982105b156142735760116001614224565b81603914156142855760116002614224565b6039821180156142955750606482105b156142a35760116003614224565b81606414156142d657601954604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600154600160a060020a03166108fc6142f685603263ffffffff61431216565b6040518115909202916000818181858888f15050505050505050565b60008080831161431e57fe5b828481151561432957fe5b049050828481151561433757fe5b068184020184141515613a5a57fe5b61434e614713565b60006001831161456157888252602082018890526080820187905261010082018590526101208201849052600183141561438a5760a082018690525b336000908152600e6020908152604080832060108054600181810183559186528751600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672810191909155888601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae673820155938801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67485015560608801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67585015560808801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67685015560a08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67785015560c08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67885015560e08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798501556101008801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8501556101208801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b90940193909355815490810182559084529190922001556145b3565b506010805460001981019187918390811061457857fe5b90600052602060002090600a0201600601819055508760108281548110151561459d57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b60006127106145e46145d784605863ffffffff613a2f16565b869063ffffffff613a2f16565b8115156145ed57fe5b049050848414614642576000878152600c60209081526040808320898452909152902060010154614624908563ffffffff613a7716565b6000888152600c602090815260408083208a84529091529020600101555b6000878152600c6020908152604080832086845290915290206002015461466f908263ffffffff613a7716565b6000888152600c602090815260408083208784529091529020600201556146c96146a08786888760648890036124d1565b6000898152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b6000978852600c60209081526040808a20958a5294905292909620600301919091555050505050565b50805460008255906000526020600020908101906147109190614787565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156134ff576000838152602090206134ff9181019083015b61102791905b808211156147a1576000815560010161478d565b5090560073656e64657220646f6573206e6f74206d656574207468652072756c65730000a165627a7a723058201ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f0029

Deployed Bytecode

0x6080604052600436106101ed5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461035e578063095ea7b3146103e8578063180392301461040c57806318160ddd1461047d57806323b872dd146104a457806323df93c1146104ce57806328d27f09146104f25780632d6ddfda1461055a57806333b6baf51461056f57806334aed7a0146105a057806334d5f37b146105e1578063394baa0b1461063a5780633ccfd60b146106525780634c54e1b514610667578063501976461461069c57806358761920146106b15780636352211e146106c657806365a114f1146106de578063678bbf24146106e657806370a082311461072657806378c9f9cf1461074757806378e979251461076b5780637c8edcfc1461078057806395d89b411461079557806398f04128146107aa578063a54447aa146107c2578063a9059cbb146107cd578063aafb088e146107f1578063b2e6ceeb14610806578063b604ed1b1461081e578063bed47ed814610836578063c5d3ce1e1461084b578063ce2b785414610860578063d1a392eb14610884578063d571dbac14610899578063d6febde8146108e6578063d9daa497146108f4578063d9f035aa1461090c578063ef8c2c5814610947578063f60436cd1461095c575b6007544210156101fc57600080fd5b333214610241576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561027557336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156102b35760008054604051600160a060020a03909116913480156108fc02929091818181858888f193505050505061035c565b66038d7ea4c68000341015610312576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a54101561032f576405d21dba003a111561032f57600080fd5b6019600a54101561034f57678ac7230489e8000034111561034f57600080fd5b61035c6064600554610964565b005b34801561036a57600080fd5b50610373610c9d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b5061035c600160a060020a0360043516602435610d28565b34801561041857600080fd5b5061042d600160a060020a0360043516610fb7565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610469578181015183820152602001610451565b505050509050019250505060405180910390f35b34801561048957600080fd5b50610492611024565b60408051918252519081900360200190f35b3480156104b057600080fd5b5061035c600160a060020a036004358116906024351660443561102a565b3480156104da57600080fd5b50610492600160a060020a0360043516602435611278565b3480156104fe57600080fd5b5061050a6004356112a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561056657600080fd5b5061035c61130a565b34801561057b57600080fd5b50610584611450565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506105bb60043560243561145f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105ed57600080fd5b506105f9600435611491565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561064657600080fd5b506105846004356114d8565b34801561065e57600080fd5b5061035c6114f3565b34801561067357600080fd5b50610688600160a060020a036004351661186f565b604080519115158252519081900360200190f35b3480156106a857600080fd5b50610492611884565b3480156106bd57600080fd5b5061049261188a565b3480156106d257600080fd5b50610584600435611890565b61035c61195e565b3480156106f257600080fd5b506106fe600435611cfa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561073257600080fd5b50610492600160a060020a0360043516612480565b34801561075357600080fd5b506104926004356024356044356064356084356124d1565b34801561077757600080fd5b50610492612593565b34801561078c57600080fd5b50610584612599565b3480156107a157600080fd5b506103736125a8565b3480156107b657600080fd5b50610492600435612603565b61035c600435612654565b3480156107d957600080fd5b5061035c600160a060020a036004351660243561298e565b3480156107fd57600080fd5b50610492612bf3565b34801561081257600080fd5b5061035c600435612bf9565b34801561082a57600080fd5b5061035c600435612df0565b34801561084257600080fd5b5061049261316a565b34801561085757600080fd5b50610688613170565b34801561086c57600080fd5b50610492600160a060020a0360043516602435613179565b34801561089057600080fd5b50610492613194565b3480156108a557600080fd5b506108ae61319a565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61035c6004356024356132ee565b34801561090057600080fd5b50610492600435613505565b34801561091857600080fd5b506109246004356135af565b60408051600160a060020a03909316835260208301919091528051918290030190f35b34801561095357600080fd5b5061035c6135d8565b61035c61371d565b600954600a546000808061097784613505565b6000868152600c602090815260408083208884529091529020600301549093508310156109c0576000858152600c602090815260408083208784529091529020600301546109c2565b825b915060586109d783606463ffffffff613a2f16565b8115156109e057fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610a0e5781610a3c565b6000858152600c60209081526040808320878452909152902060010154610a3c90839063ffffffff613a6516565b6004546000878152600c60209081526040808320898452909152902054919250610a6c919063ffffffff613a7716565b42118015610a9557506000858152600c6020908152604080832087845290915290206001015482115b15610b9c57610aa48585613a86565b600954600a546000828152600c6020908152604080832084845290915290204290559095509350610ad484613505565b6000868152600c60209081526040808320888452909152902060030154909350831015610b1d576000858152600c60209081526040808320878452909152902060030154610b1f565b825b91506058610b3483606463ffffffff613a2f16565b811515610b3d57fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610b6b5781610b99565b6000858152600c60209081526040808320878452909152902060010154610b9990839063ffffffff613a6516565b90505b34811115610bb757610bb2858584348b8b613bd4565b610bc4565b610bc43488888585613f2e565b6000858152600b6020526040812060068101546005820154600490920154610c3592610c29918290606490610c0090605863ffffffff613a2f16565b811515610c0957fe5b60008d8152600b602052604090206007015491900463ffffffff613a7716565b9063ffffffff613a6516565b11610c8a576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c9434876141c2565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b505050505081565b333214610d6d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515610da157336000908152600d60205260409020805460ff191660011790555b600160a060020a0382166000908152600d602052604090205460ff161515610e13576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b60118160068110610e2057fe5b6002020154600160a060020a03163314610e84576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610edc576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a031615610f49576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b600160a060020a0381166000908152600e602090815260409182902080548351818402810184019094528084526060939283018282801561101757602002820191906000526020600020905b815481526020019060010190808311611003575b505050505090505b919050565b60065b90565b33321461106f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156110a357336000908152600d60205260409020805460ff191660011790555b601181600681106110b057fe5b6002020154600160a060020a03848116911614611117576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611177576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a038381169116146111e8576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81601182600681106111f657fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601d602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600f6020528160005260406000208181548110151561129357fe5b90600052602060002001600091509150505481565b60108054829081106112b657fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461134f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561138357336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146113e5576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161515600114611444576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19169055565b600054600160a060020a031681565b600c60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600b60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601d60205260009081526040902054600160a060020a031681565b600060606000806000806000806000600754421015151561151357600080fd5b333214611558576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561158c57336000908152600d60205260409020805460ff191660011790555b336000908152600e60205260408120541161163d576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600e60209081526040918290208054835181840281018401909452808452939c5091929083018282801561169657602002820191906000526020600020905b815481526020019060010190808311611682575b50508351600160a060020a038e166000908152600e60205260408120959d50909b506116c794935091506146f29050565b8681101561182d576116ef88828151811015156116e057fe5b90602001906020020151611cfa565b929750909550935091506001821515141561174d57600160a060020a0389166000908152600f60205260409020885189908390811061172a57fe5b602090810290910181015182546001810184556000938452919092200155611813565b836010898381518110151561175e57fe5b602090810290910101518154811061177257fe5b90600052602060002090600a020160030181905550826010898381518110151561179857fe5b60209081029091010151815481106117ac57fe5b90600052602060002090600a020160070181905550600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156117f457fe5b6020908102909101810151825460018101845560009384529190922001555b611823868663ffffffff613a7716565b95506001016116c7565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611863573d6000803e3d6000fd5b50505050505050505050565b600d6020526000908152604090205460ff1681565b60095481565b60055481565b6000600682106118ea576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b601182600681106118f757fe5b6002020154600160a060020a0316905080151561101f576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6006546000908190819081908190819060ff1615156001146119f0576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015611ab3576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b333214611af8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515611b2c57336000908152600d60205260409020805460ff191660011790555b6009549550600a549450349350611b4285613505565b6000878152600c60209081526040808320898452909152902060030154909350831015611b8b576000868152600c60209081526040808320888452909152902060030154611b8d565b825b91506058611ba283606463ffffffff613a2f16565b811515611bab57fe5b0491506064611bc183601463ffffffff613a2f16565b811515611bca57fe5b0490506729a2241af62c0000811115611be857506729a2241af62c00005b80841015611c40576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6000868152600c602090815260408083208884529091529020429055601160055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f193505050505080841115611cf257336108fc611cda868463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080611d08614713565b600080600080600080600060108d815481101515611d2257fe5b90600052602060002090600a020161014060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509750600a549650876101000151600014156120445787516000908152600b602052604090206002015460ff16151560011415611f7b5760408089015189516000908152600b60205291909120600301541115611ea257611e048860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611e575787516000908152600c60209081526040808320828c01518452909152902060030154611e59565b845b93506058611e6e85606463ffffffff613a2f16565b811515611e7757fe5b049350611e9b88602001518960800151868b604001518c61012001516064036124d1565b9550611edf565b612710611ed2611ec160588b6101200151613a2f90919063ffffffff16565b60808b01519063ffffffff613a2f16565b811515611edb57fe5b0495505b60208089015189516000908152600b9092526040909120600301541415611f665787516000908152600c60209081526040808320828c015184529091529020600101548851611f6391611f5691611f4a90611f3990612603565b60808d01519063ffffffff613a2f16565b9063ffffffff61431216565b879063ffffffff613a7716565b95505b949a5060009950899850600197508a94612471565b876040015187111561203257611f948860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611fe75787516000908152600c60209081526040808320828c01518452909152902060030154611fe9565b845b93506058611ffe85606463ffffffff613a2f16565b81151561200757fe5b04935061202b88602001518960800151868b604001518c61012001516064036124d1565b9550611f66565b60009b508b9a508a9950899850612471565b60608801511561205857876060015161205e565b87602001515b61012089015160e08a01518a516000908152600b60205260409020600201549295506064919091039350915060ff1615156001141561231f575b606488606001516000146120b05788606001516120b6565b88602001515b840311156120d05785838260009b509b509b509b50612471565b6101008801516120e790849063ffffffff613a7716565b88516000908152600b602052604090206003015411156122325761210a83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156121575787516000908152600c60209081526040808320868452909152902060030154612159565b845b9350605861216e85606463ffffffff613a2f16565b81151561217757fe5b04935087604001518314156121cb576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b876124d1565b6040890151909c509a5060009950600198508b9550612471565b612202611f56848a6020015186146121e357866121e9565b8a60a001515b876121ab8d610100015189613a7790919063ffffffff16565b955061222b88602001518414612218578461221e565b8860a001515b829063ffffffff613a7716565b9050612314565b61228d61271061227561225460588c6101200151613a2f90919063ffffffff16565b60808c0151612269908663ffffffff613a6516565b9063ffffffff613a2f16565b81151561227e57fe5b8891900463ffffffff613a7716565b6040808a01518a516000908152600b602052919091206003015491975014156122fa5787516000908152600c60209081526040808320818c0151845290915290206001015488516121b191611f5691611f4a906122e990612603565b60c08d01519063ffffffff613a2f16565b858860400151600060018191509b509b509b509b50612471565b600190920191612098565b6064886060015160001461233757886060015161233d565b88602001515b840311156123575785838260009b509b509b509b50612471565b61010088015161236e90849063ffffffff613a7716565b8711156124545761237e83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156123cb5787516000908152600c602090815260408083208684529091529020600301546123cd565b845b935060586123e285606463ffffffff613a2f16565b8115156123eb57fe5b049350876040015183141561241f576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b612437611f56848a6020015186146121e357866121e9565b955061244d88602001518414612218578461221e565b9050612466565b85838260009b509b509b509b50612471565b60019092019161231f565b50505050505050509193509193565b6000600681805b828110156124c957600160a060020a038516601182600681106124a657fe5b6002020154600160a060020a031614156124c1576001909101905b600101612487565b509392505050565b604080517f78c9f9cf0000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064810184905260848101839052905160009173dd033ff7e98792694f6b358daeb065d4ff01bd5a916378c9f9cf9160a48082019260209290919082900301818787803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b505050506040513d602081101561258757600080fd5b50519695505050505050565b60075481565b600154600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b6000818152600b602052604081206006810154600582015460049092015461264e92606492611f4a926050926122699291610c29919082908890610c0090605863ffffffff613a2f16565b92915050565b6000806000600854421015151561266a57600080fd5b3332146126af576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156126e357336000908152600d60205260409020805460ff191660011790555b3392503491506064612713606e601187600681106126fd57fe5b6002020160010154613a2f90919063ffffffff16565b81151561271c57fe5b04905060006011856006811061272e57fe5b6002020154600160a060020a03161480159061276d5750600160a060020a0383166011856006811061275c57fe5b6002020154600160a060020a031614155b80156127795750808210155b15156127cf576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601d6020526040902054600160a060020a031615612861576000848152601d6020526040902054600160a060020a03166108fc606461281b6069601189600681106126fd57fe5b81151561282457fe5b049081150290604051600060405180830381858888f15050506000868152601d602052604090208054600160a060020a0319169055506128b89050565b6011846006811061286e57fe5b6002020154600160a060020a03166108fc60646128936069601189600681106126fd57fe5b81151561289c57fe5b049081150290604051600060405180830381858888f150505050505b600154600160a060020a03166108fc60646128db6005601189600681106126fd57fe5b8115156128e457fe5b049081150290604051600060405180830381858888f19350505050508082111561293d57600160a060020a0383166108fc612925848463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b806011856006811061294b57fe5b60020201600101819055508260118560068110151561296657fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b3332146129d3576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612a0757336000908152600d60205260409020805460ff191660011790555b60118160068110612a1457fe5b6002020154600160a060020a03163314612a78576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515612ad8576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a03838116911614612b49576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118260068110612b5757fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601d60205260409020541615612ba7576000818152601d602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60045481565b600080333214612c41576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612c7557336000908152600d60205260409020805460ff191660011790555b33915060118360068110612c8557fe5b6002020154600160a060020a03908116915082161515612cef576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601d6020526040902054600160a060020a03838116911614612d60576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118460068110612d6e57fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601d602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6000806000806000806007544210151515612e0a57600080fd5b333214612e4f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612e8357336000908152600d60205260409020805460ff191660011790555b336000908152600e602052604081205411612f34576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b339550612f4087611cfa565b92975090955093509150600182151514156130df575060005b600160a060020a0386166000908152600e6020526040902054811015612fbe57600160a060020a0386166000908152600e60205260409020805488919083908110612fa057fe5b90600052602060002001541415612fb657612fbe565b600101612f59565b600160a060020a0386166000908152600e6020526040902054811061302d576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600f602090815260408083208054600181018255908452828420018b9055928252600e9052208054600019810190811061307257fe5b6000918252602080832090910154600160a060020a0389168352600e90915260409091208054839081106130a257fe5b6000918252602080832090910192909255600160a060020a0388168152600e909152604090208054906130d9906000198301614767565b5061312a565b836010888154811015156130ef57fe5b90600052602060002090600a0201600301819055508260108881548110151561311457fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015613160573d6000803e3d6000fd5b5050505050505050565b600a5481565b60065460ff1681565b600e6020528160005260406000208181548110151561129357fe5b60085481565b6000806000806000806000806131b1600a54613505565b600954600a546007546004546000848152600c602090815260408083208684529091529020549495509293919290916131ef9163ffffffff613a7716565b6009546000908152600c60209081526040808320600a5484529091529020600181015460039091015460589061325d90606490891015613250576009546000908152600c60209081526040808320600a548452909152902060030154612269565b889063ffffffff613a2f16565b81151561326657fe5b6009546000908152600b602052604090206006810154600582015460049092015493909204926132d79291610c299182906064906132ab90605863ffffffff613a2f16565b8115156132b457fe5b6009546000908152600b602052604090206007015491900463ffffffff613a7716565b959e949d50929b5090995097509550909350915050565b6007544210156132fd57600080fd5b333214613342576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561337657336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156133b45760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050613501565b66038d7ea4c68000341015613413576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a541015613430576405d21dba003a111561343057600080fd5b6019600a54101561345057678ac7230489e8000034111561345057600080fd5b81620f42408111156134d2576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6134ff60008411156134e457836134e7565b60645b60648411156134f8576005546134fa565b835b610964565b505b5050565b600073dd033ff7e98792694f6b358daeb065d4ff01bd5a600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561357d57600080fd5b505af1158015613591573d6000803e3d6000fd5b505050506040513d60208110156135a757600080fd5b505192915050565b601181600681106135bc57fe5b600202018054600190910154600160a060020a03909116915082565b33321461361d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561365157336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146136b3576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161561370e576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6006546000908190819081908190819060ff1615156001146137af576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015613872576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3332146138b7576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156138eb57336000908152600d60205260409020805460ff191660011790555b6009549550600a54945034935061390185613505565b6000878152600c6020908152604080832089845290915290206003015490935083101561394a576000868152600c6020908152604080832088845290915290206003015461394c565b825b9150605861396183606463ffffffff613a2f16565b81151561396a57fe5b049150606461398083601e63ffffffff613a2f16565b81151561398957fe5b0490506729a2241af62c00008111156139a757506729a2241af62c00005b808410156139ff576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6004546000878152600c602090815260408083208984529091529020429190910361038401905560116005611c61565b600080831515613a425760009150613a5e565b50828202828482811515613a5257fe5b0414613a5a57fe5b8091505b5092915050565b600082821115613a7157fe5b50900390565b600082820183811015613a5a57fe5b6000828152600b602090815260408083204260018083019190915560028201805460ff1916821790556003909101859055600c8352818420858552909252822001541115613b34576000828152600b6020526040902060068101546005820154600490920154613b1992606492611f4a926014926122699291610c29919082908890610c0090605863ffffffff613a2f16565b600183016000908152600b6020526040902060070155613bb0565b6000828152600b6020526040902060068101546005820154600490920154613b9992610c29918290606490613b7090605863ffffffff613a2f16565b811515613b7957fe5b6000898152600b602052604090206007015491900463ffffffff613a7716565b600183016000908152600b60205260409020600701555b5060019081016000908152600b602052604090204290556009805482019055600a55565b600080613bdf614713565b613bef888663ffffffff613a7716565b9250612710613c0861325086605863ffffffff613a2f16565b811515613c1157fe5b60008b8152600b60205260409020600401549190049250613c38908763ffffffff613a7716565b60008a8152600b60205260409020600481019190915560050154613c62908363ffffffff613a7716565b60008a8152600b6020908152604080832060050193909355600c81528282208b835290522060010154613c9b908763ffffffff613a7716565b60008a8152600c602090815260408083208c8452909152808220600101929092558481522060020154613cce9083613a77565b60008a8152600c60209081526040808320878452909152902060020155613d28613cff89888a8760648a90036124d1565b60008b8152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b60008a8152600c602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600e8b5290812060108054600181810183559184528451600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6728101919091559b517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6738d015595517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6748c015560608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6758c015597517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768b015560a08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6778b015560c08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6788b015560e08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798b0155610100909201517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8a015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b9098019790975550855493840186559481529490942001919091555050565b600954600a5460016000805b8260011415613fe957613f5285858c898d8d89614346565b6000858152600b6020526040902060040154613f74908b63ffffffff613a7716565b6000868152600b6020526040902060040155613fd6612710613fad613fa08b605863ffffffff613a2f16565b8d9063ffffffff613a2f16565b811515613fb657fe5b6000888152600b602052604090206005015491900463ffffffff613a7716565b6000868152600b60205260409020600501555b61400685858989614000838f63ffffffff613a7716565b8d6145be565b6000858152600c6020908152604080832087845290915290206003015461403490829063ffffffff613a7716565b6000868152600c6020908152604080832088845290915290206002015490915061406590839063ffffffff613a7716565b600190940193915061407d8a8763ffffffff613a6516565b995061408884613505565b6000868152600c6020908152604080832088845290915290206003015411156140cd576000858152600c602090815260408083208784529091529020600301546140d6565b6140d684613505565b965060586140eb88606463ffffffff613a2f16565b8115156140f457fe5b0496508695506001909201918986106141bd5761411e8585898d614000838f63ffffffff613a7716565b61412e858560008d8d8d89614346565b8987141561413d576001909301925b6000858152600c602090815260408083208784528252808320429055600a879055878352600b90915290206005015461417c908363ffffffff613a6516565b6000868152600b602052604090206005810191909155600601546141a6908263ffffffff613a7716565b6000868152600b6020526040902060060155611863565b613f3a565b60006141fe6141dd6064611f4a86600963ffffffff613a2f16565b6009546000908152600b60205260409020600701549063ffffffff613a7716565b6009546000908152600b6020526040902060070155506064820481151561425557601160005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f19350505050506142d6565b6000821180156142655750603982105b156142735760116001614224565b81603914156142855760116002614224565b6039821180156142955750606482105b156142a35760116003614224565b81606414156142d657601954604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600154600160a060020a03166108fc6142f685603263ffffffff61431216565b6040518115909202916000818181858888f15050505050505050565b60008080831161431e57fe5b828481151561432957fe5b049050828481151561433757fe5b068184020184141515613a5a57fe5b61434e614713565b60006001831161456157888252602082018890526080820187905261010082018590526101208201849052600183141561438a5760a082018690525b336000908152600e6020908152604080832060108054600181810183559186528751600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672810191909155888601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae673820155938801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67485015560608801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67585015560808801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67685015560a08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67785015560c08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67885015560e08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798501556101008801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8501556101208801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b90940193909355815490810182559084529190922001556145b3565b506010805460001981019187918390811061457857fe5b90600052602060002090600a0201600601819055508760108281548110151561459d57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b60006127106145e46145d784605863ffffffff613a2f16565b869063ffffffff613a2f16565b8115156145ed57fe5b049050848414614642576000878152600c60209081526040808320898452909152902060010154614624908563ffffffff613a7716565b6000888152600c602090815260408083208a84529091529020600101555b6000878152600c6020908152604080832086845290915290206002015461466f908263ffffffff613a7716565b6000888152600c602090815260408083208784529091529020600201556146c96146a08786888760648890036124d1565b6000898152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b6000978852600c60209081526040808a20958a5294905292909620600301919091555050505050565b50805460008255906000526020600020908101906147109190614787565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156134ff576000838152602090206134ff9181019083015b61102791905b808211156147a1576000815560010161478d565b5090560073656e64657220646f6573206e6f74206d656574207468652072756c65730000a165627a7a723058201ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f0029

Swarm Source

bzzr://1ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f

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.