ETH Price: $2,644.57 (+6.49%)
Gas: 4 Gwei

Contract

0xA4337c343132E134A23439D5386c29C610B93D5B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy57176782018-06-02 4:36:462260 days ago1527914206IN
0xA4337c34...610B93D5B
0.6 ETH0.00011675.1
Buy57173782018-06-02 3:20:132260 days ago1527909613IN
0xA4337c34...610B93D5B
1.2 ETH0.000572125
Buy57173782018-06-02 3:20:132260 days ago1527909613IN
0xA4337c34...610B93D5B
0.2 ETH0.0003624615
Withdraw All57088752018-05-31 15:06:352261 days ago1527779195IN
0xA4337c34...610B93D5B
0 ETH0.0005990620
Buy57083952018-05-31 13:00:332261 days ago1527771633IN
0xA4337c34...610B93D5B
4.5 ETH0.0107646930
Buy57083912018-05-31 12:59:272261 days ago1527771567IN
0xA4337c34...610B93D5B
4.1 ETH0.0096214530
Buy57083892018-05-31 12:59:112261 days ago1527771551IN
0xA4337c34...610B93D5B
3.9 ETH0.0096242435.1
Buy57081542018-05-31 12:04:022262 days ago1527768242IN
0xA4337c34...610B93D5B
3.5 ETH0.0045185323
Buy57081422018-05-31 12:00:232262 days ago1527768023IN
0xA4337c34...610B93D5B
3.6 ETH0.0009176440.1
Buy57081392018-05-31 11:59:532262 days ago1527767993IN
0xA4337c34...610B93D5B
3.5 ETH0.0009425532.1
Buy57081372018-05-31 11:58:352262 days ago1527767915IN
0xA4337c34...610B93D5B
3.5 ETH0.005038530
Buy57080702018-05-31 11:43:412262 days ago1527767021IN
0xA4337c34...610B93D5B
3 ETH0.0056454525
Buy57079722018-05-31 11:19:562262 days ago1527765596IN
0xA4337c34...610B93D5B
2.4 ETH0.0043391221
Buy57079582018-05-31 11:16:002262 days ago1527765360IN
0xA4337c34...610B93D5B
1.6 ETH0.00499524
Buy57079562018-05-31 11:15:462262 days ago1527765346IN
0xA4337c34...610B93D5B
1.2 ETH0.0007047124
Buy57079352018-05-31 11:09:362262 days ago1527764976IN
0xA4337c34...610B93D5B
1.5 ETH0.0052045426.1
Buy57079032018-05-31 11:00:072262 days ago1527764407IN
0xA4337c34...610B93D5B
2.7 ETH0.004664220
Buy57078952018-05-31 10:57:252262 days ago1527764245IN
0xA4337c34...610B93D5B
1.6 ETH0.0037462518
Buy57078802018-05-31 10:53:512262 days ago1527764031IN
0xA4337c34...610B93D5B
3.1 ETH0.0004832820
Buy57078772018-05-31 10:52:432262 days ago1527763963IN
0xA4337c34...610B93D5B
3 ETH0.0080017334
Buy57078772018-05-31 10:52:432262 days ago1527763963IN
0xA4337c34...610B93D5B
2.7 ETH0.0152767463
Buy57078752018-05-31 10:51:392262 days ago1527763899IN
0xA4337c34...610B93D5B
2.6 ETH0.004592420
Buy57078692018-05-31 10:50:412262 days ago1527763841IN
0xA4337c34...610B93D5B
2.4 ETH0.0087545934
Buy57078652018-05-31 10:50:092262 days ago1527763809IN
0xA4337c34...610B93D5B
1.5 ETH0.0029792716.1
Buy57078502018-05-31 10:47:362262 days ago1527763656IN
0xA4337c34...610B93D5B
2.1 ETH0.00401820
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
57088752018-05-31 15:06:352261 days ago1527779195
0xA4337c34...610B93D5B
7.6 ETH
57083952018-05-31 13:00:332261 days ago1527771633
0xA4337c34...610B93D5B
3.9 ETH
57083892018-05-31 12:59:112261 days ago1527771551
0xA4337c34...610B93D5B
3.5 ETH
57081542018-05-31 12:04:022262 days ago1527768242
0xA4337c34...610B93D5B
2.4 ETH
57081372018-05-31 11:58:352262 days ago1527767915
0xA4337c34...610B93D5B
3 ETH
57080702018-05-31 11:43:412262 days ago1527767021
0xA4337c34...610B93D5B
2.7 ETH
57079722018-05-31 11:19:562262 days ago1527765596
0xA4337c34...610B93D5B
1.6 ETH
57079582018-05-31 11:16:002262 days ago1527765360
0xA4337c34...610B93D5B
1.5 ETH
57079352018-05-31 11:09:362262 days ago1527764976
0xA4337c34...610B93D5B
1.1 ETH
57079032018-05-31 11:00:072262 days ago1527764407
0xA4337c34...610B93D5B
1.6 ETH
57078952018-05-31 10:57:252262 days ago1527764245
0xA4337c34...610B93D5B
1.5 ETH
57078772018-05-31 10:52:432262 days ago1527763963
0xA4337c34...610B93D5B
2.7 ETH
57078772018-05-31 10:52:432262 days ago1527763963
0xA4337c34...610B93D5B
2.6 ETH
57078752018-05-31 10:51:392262 days ago1527763899
0xA4337c34...610B93D5B
2.4 ETH
57078692018-05-31 10:50:412262 days ago1527763841
0xA4337c34...610B93D5B
2.1 ETH
57078652018-05-31 10:50:092262 days ago1527763809
0xA4337c34...610B93D5B
1.2 ETH
57078502018-05-31 10:47:362262 days ago1527763656
0xA4337c34...610B93D5B
1.7 ETH
57078452018-05-31 10:46:172262 days ago1527763577
0xA4337c34...610B93D5B
1.5 ETH
57078142018-05-31 10:38:002262 days ago1527763080
0xA4337c34...610B93D5B
1.2 ETH
57077912018-05-31 10:33:192262 days ago1527762799
0xA4337c34...610B93D5B
1.1 ETH
57076912018-05-31 10:04:182262 days ago1527761058
0xA4337c34...610B93D5B
4.4 ETH
57050742018-05-30 22:55:402262 days ago1527720940
0xA4337c34...610B93D5B
1 ETH
57049862018-05-30 22:34:172262 days ago1527719657
0xA4337c34...610B93D5B
0.8 ETH
57033422018-05-30 15:43:142262 days ago1527694994
0xA4337c34...610B93D5B
0.9 ETH
57032122018-05-30 15:06:272262 days ago1527692787
0xA4337c34...610B93D5B
1 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoAndDragonsAuction

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-05-24
*/

pragma solidity ^0.4.19;
contract AccessControl {
    address public owner;
    // address[] public moderators;
    uint16 public totalModerators = 0;
    mapping (address => bool) public moderators;
    bool public isMaintaining = false;

    function AccessControl() public {
        owner = msg.sender;
        moderators[msg.sender] = true;
    }

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

    modifier onlyModerators() {
        require(moderators[msg.sender] == true);
        _;
    }

    modifier isActive {
        require(!isMaintaining);
        _;
    }

    function ChangeOwner(address _newOwner) onlyOwner public {
        if (_newOwner != address(0)) {
            owner = _newOwner;
        }
    }

    function AddModerator(address _newModerator) onlyOwner public {
        if (moderators[_newModerator] == false) {
            moderators[_newModerator] = true;
            totalModerators += 1;
        }
    }

    function RemoveModerator(address _oldModerator) onlyOwner public {
        if (moderators[_oldModerator] == true) {
            moderators[_oldModerator] = false;
            totalModerators -= 1;
        }
    }

    function UpdateMaintaining(bool _isMaintaining) onlyOwner public {
        isMaintaining = _isMaintaining;
    }
}

contract DTT is AccessControl{
  function approve(address _spender, uint256 _value) public returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
  function balanceOf(address _addr) public returns (uint);
  mapping (address => mapping (address => uint256)) public allowance;
}

contract DataBase is AccessControl{
  function addMonsterObj(uint64 _monsterId,uint256 _genes,uint32 _classId,address _master,string _name,string _skills) public;
  function getTotalMonster() constant public returns(uint64);
  function setMonsterGene(uint64 _monsterId,uint256 _genes) public;
}
contract NFTToken is AccessControl{
  function transferAuction(address _from, address _to, uint256 _value) external;
  function ownerOf(uint256 _tokenId) public constant returns (address owner);
}

contract CryptoAndDragonsAuction is AccessControl{
  event Bought (uint256 indexed _itemId, address indexed _owner, uint256 _price);
  event Sold (uint256 indexed _itemId, address indexed _owner, uint256 _price);
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
  event Hatch(address indexed _owner, uint16 _tableId);

  address public thisAddress;
  address public dragonTreasureToken;
  address public databaseContract;
  address public ERC721Contract;

  uint256 public totalAuction;
  uint256 private increaseRate = 0.1 ether;

  mapping (address => address) public masterToReferral;

  function setNewMonster(uint256 _genes,uint32 _classId,address _master,string _name,string _skills) onlyModerators public returns(uint64 _monsterId) {
    DataBase data = DataBase(databaseContract);
    uint64 monsterId = data.getTotalMonster() + 1;
    data.addMonsterObj(monsterId,_genes,_classId,_master,_name,_skills);
    return monsterId;
  }
  function setMasterToReferral(address _master, address _referral) onlyOwner public{
    masterToReferral[_master] = _referral;
  }

  function setAddresses(address _dragonTreasureToken,address _databaseContract,address _ERC721Contract) onlyOwner public{
    dragonTreasureToken = _dragonTreasureToken;
    databaseContract = _databaseContract;
    ERC721Contract = _ERC721Contract;
  }

  struct Auction {
    uint256 classId;
    uint256 monsterId;
    uint256 price;
    uint256 endTime;
    uint8 rarity;
    address bidder;
  }
  Auction[] public auctions;


  uint randNonce = 0;
  function randMod(uint _modulus) internal returns(uint) {
    randNonce++;
    return uint(keccak256(now, msg.sender, randNonce)) % _modulus;
  }


  function getSortedArray(uint[] storageInt) public pure returns(uint[]) {
      uint[] memory a = getCloneArray(storageInt);
      quicksort(a);
      return a;
  }
  function getCloneArray(uint[] a) private pure returns(uint[]) {
      return a;
  }
  function swap(uint[] a, uint l, uint r) private pure {
      uint t = a[l];
      a[l] = a[r];
      a[r] = t;
  }
  function getPivot(uint a, uint b, uint c) private pure returns(uint) {
      if(a > b){
          if(b > c){
              return b;
          }else{
              return a > c ? c : a ;
          }
      }else{
          if(a > c){
              return a;
          }else{
              return b > c ? c : b ;
          }
      }
  }
  function quicksort(uint[] a) private pure {
      uint left = 0;
      uint right = a.length - 1;
      quicksort_core(a, left, right);
  }
  function quicksort_core(uint[] a, uint left, uint right) private pure {
      if(right <= left){
          return;
      }
      uint l = left;
      uint r = right;
      uint p = getPivot(a[l], a[l+1], a[r]);
      while(true){
          while(a[l] < p){
              l++;
          }
          while(p < a[r]){
              r--;
          }
          if(r <= l){
              break;
          }
          swap(a, l, r);
          l++;
          r--;
      }
      quicksort_core(a, left, l-1);
      quicksort_core(a, r+1, right);
  }

  /* Withdraw */
  /*
    NOTICE: These functions withdraw the developer's cut which is left
    in the contract by `buy`. User funds are immediately sent to the old
    owner in `buy`, no user funds are left in the contract.
  */
  function withdrawAll () onlyOwner public {
    msg.sender.transfer(this.balance);
  }

  function withdrawAmount (uint256 _amount) onlyOwner public {
    msg.sender.transfer(_amount);
  }


  function addAuction(uint32 _classId, uint256 _monsterId, uint256 _price, uint8 _rarity, uint32 _endTime) onlyOwner public {
    Auction memory auction = Auction({
      classId: _classId,
      monsterId: _monsterId,
      price: _price,
      rarity: _rarity,
      endTime: _endTime + now,
      bidder: msg.sender
    });
    auctions.push(auction);
    totalAuction += 1;
  }

  function burnAuction() onlyOwner external {
    uint256 counter = 0;
    for (uint256 i = 0; i < totalAuction; i++) {
      if(auctions[i].endTime < now - 86400 * 3){
        delete auctions[i];
        counter++;
      }
    }
    totalAuction -= counter;
  }

  /* Buying */

  function ceil(uint a) public pure returns (uint ) {
    return uint(int(a * 100) / 100);
  }
  /*
     Buy a country directly from the contract for the calculated price
     which ensures that the owner gets a profit.  All countries that
     have been listed can be bought by this method. User funds are sent
     directly to the previous owner and are never stored in the contract.
  */
  function setGenes(uint256 _price, uint256 _monsterId) internal{
    DataBase data = DataBase(databaseContract);
    uint256 gene = _price / 100000000000000000;
    if(gene > 255)
      gene = 255;
    uint256 genes = 0;
    genes += gene * 1000000000000000;
    genes += gene * 1000000000000;
    genes += gene * 1000000000;
    genes += gene * 1000000;
    genes += gene * 1000;
    genes += gene;
    if(genes > 255255255255255255)
      genes = 255255255255255255;
    data.setMonsterGene(uint64(_monsterId),genes);
  }

  function buy (uint256 _auctionId, address _referral) payable public {
    NFTToken CNDERC721 = NFTToken(ERC721Contract);
    require(auctions[_auctionId].endTime > now);
    require(CNDERC721.ownerOf(auctions[_auctionId].monsterId) != address(0));
    require(ceil(msg.value) >= ceil(auctions[_auctionId].price + increaseRate));
    require(CNDERC721.ownerOf(auctions[_auctionId].monsterId) != msg.sender);
    require(!isContract(msg.sender));
    require(msg.sender != address(0));
    address oldOwner = CNDERC721.ownerOf(auctions[_auctionId].monsterId);
    address newOwner = msg.sender;
    uint256 oldPrice = auctions[_auctionId].price;
    uint256 price = ceil(msg.value);
    setGenes(price,auctions[_auctionId].monsterId);
    CNDERC721.transferAuction(oldOwner, newOwner, auctions[_auctionId].monsterId);
    auctions[_auctionId].price = ceil(price);
    auctions[_auctionId].bidder = msg.sender;
    DTT DTTtoken = DTT(dragonTreasureToken);
    if(masterToReferral[msg.sender] != address(0) && masterToReferral[msg.sender] != msg.sender){
      DTTtoken.approve(masterToReferral[msg.sender], DTTtoken.allowance(this,masterToReferral[msg.sender]) + (price - oldPrice) / 1000000000 * 5);
    }else if(_referral != address(0) && _referral != msg.sender){
      masterToReferral[msg.sender] = _referral;
      DTTtoken.approve(_referral, DTTtoken.allowance(this,_referral) + (price - oldPrice) / 1000000000 * 5);
    }

    DTTtoken.approve(msg.sender, DTTtoken.allowance(this,msg.sender) + (price - oldPrice) / 1000000000 * 5);
    if(oldPrice > 0)
      oldOwner.transfer(oldPrice);
    Bought(auctions[_auctionId].monsterId, newOwner, price);
    Sold(auctions[_auctionId].monsterId, oldOwner, price);
  }

  function monstersForSale (uint8 optSort) external view returns (uint256[] _monsters){
    uint256[] memory mcount = new uint256[](totalAuction);
    uint256 counter = 0;
    for (uint256 i = 0; i < totalAuction; i++) {
        mcount[counter] = i;
        counter++;
    }
    if(optSort != 0){
      sortAuction(mcount);
    }
    return mcount;
  }
  function sortAuction (uint256[] _mcount) public view returns (uint256[] _monsters){
    uint256[] memory mcount = new uint256[](_mcount.length);
    for(uint256 i = 0; i < _mcount.length; i++){
      mcount[i] = auctions[i].price * 10000000000 + i;
    }
    uint256[] memory tmps = getSortedArray(_mcount);
    uint256[] memory result = new uint256[](tmps.length);
    for(uint256 i2 = 0; i2 < tmps.length; i2++){
      result[i2] = tmps[i2] % 10000000000;
    }
    return result;
  }

  /* Util */
  function isContract(address addr) internal view returns (bool) {
    uint size;
    assembly { size := extcodesize(addr) } // solium-disable-line
    return size > 0;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"storageInt","type":"uint256[]"}],"name":"getSortedArray","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_master","type":"address"},{"name":"_referral","type":"address"}],"name":"setMasterToReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dragonTreasureToken","type":"address"},{"name":"_databaseContract","type":"address"},{"name":"_ERC721Contract","type":"address"}],"name":"setAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ERC721Contract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"ceil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"auctions","outputs":[{"name":"classId","type":"uint256"},{"name":"monsterId","type":"uint256"},{"name":"price","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"rarity","type":"uint8"},{"name":"bidder","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"uint256"},{"name":"_classId","type":"uint32"},{"name":"_master","type":"address"},{"name":"_name","type":"string"},{"name":"_skills","type":"string"}],"name":"setNewMonster","outputs":[{"name":"_monsterId","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"databaseContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"masterToReferral","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_monsterId","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_rarity","type":"uint8"},{"name":"_endTime","type":"uint32"}],"name":"addAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_auctionId","type":"uint256"},{"name":"_referral","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalAuction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"optSort","type":"uint8"}],"name":"monstersForSale","outputs":[{"name":"_monsters","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_mcount","type":"uint256[]"}],"name":"sortAuction","outputs":[{"name":"_monsters","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dragonTreasureToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burnAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"thisAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_tableId","type":"uint16"}],"name":"Hatch","type":"event"}]

606060405260008060146101000a81548161ffff021916908361ffff1602179055506000600260006101000a81548160ff02191690831515021790555067016345785d8a00006007556000600a55336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612eea806100f36000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630562b9f71461016457806314d0f1ba146101875780631e1d237e146101d8578063278a4c4f14610287578063363bf964146102df578063397e953f1461035657806340f0a21f146103ab57806348ef5aa8146103e25780634efb023e14610407578063571a26a0146104385780635b6a42b8146104c45780636c1247e5146105c35780636c81fd6d146106185780636df238c31461065157806376a310a5146106ca5780637deb6025146107205780638252ad9c14610757578063853828b6146107805780638da5cb5b146107955780639e1e1ca9146107ea578063a703078c14610865578063b85d627514610914578063c880fab11461094d578063c9f0a02d146109a2578063d4dca69b146109b7578063ee4e441614610a0c578063f285329214610a39575b600080fd5b341561016f57600080fd5b6101856004808035906020019091905050610a72565b005b341561019257600080fd5b6101be600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b10565b604051808215151515815260200191505060405180910390f35b34156101e357600080fd5b610230600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610b30565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610273578082015181840152602081019050610258565b505050509050019250505060405180910390f35b341561029257600080fd5b6102dd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b5d565b005b34156102ea57600080fd5b610354600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c3a565b005b341561036157600080fd5b610369610d5d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b657600080fd5b6103cc6004808035906020019091905050610d83565b6040518082815260200191505060405180910390f35b34156103ed57600080fd5b61040560048080351515906020019091905050610d9b565b005b341561041257600080fd5b61041a610e13565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561044357600080fd5b6104596004808035906020019091905050610e27565b604051808781526020018681526020018581526020018481526020018360ff1660ff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34156104cf57600080fd5b610599600480803590602001909190803563ffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e9f565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156105ce57600080fd5b6105d6611182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062357600080fd5b61064f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a8565b005b341561065c57600080fd5b610688600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106d557600080fd5b61071e600480803563ffffffff1690602001909190803590602001909190803590602001909190803560ff1690602001909190803563ffffffff1690602001909190505061131b565b005b610755600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114ab565b005b341561076257600080fd5b61076a6123b7565b6040518082815260200191505060405180910390f35b341561078b57600080fd5b6107936123bd565b005b34156107a057600080fd5b6107a8612471565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107f557600080fd5b61080e600480803560ff16906020019091905050612496565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610851578082015181840152602081019050610836565b505050509050019250505060405180910390f35b341561087057600080fd5b6108bd600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612534565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109005780820151818401526020810190506108e5565b505050509050019250505060405180910390f35b341561091f57600080fd5b61094b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612674565b005b341561095857600080fd5b6109606127b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109ad57600080fd5b6109b56127db565b005b34156109c257600080fd5b6109ca61291e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a1757600080fd5b610a1f612944565b604051808215151515815260200191505060405180910390f35b3415610a4457600080fd5b610a70600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612957565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610b0d57600080fd5b50565b60016020528060005260406000206000915054906101000a900460ff1681565b610b38612dae565b610b40612dae565b610b4983612a2c565b9050610b5481612a3c565b80915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bb857600080fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9557600080fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006064808302811515610d9357fe5b059050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610df657600080fd5b80600260006101000a81548160ff02191690831515021790555050565b600060149054906101000a900461ffff1681565b600981815481101515610e3657fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16908060040160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086565b600080600060011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515610f0357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060018273ffffffffffffffffffffffffffffffffffffffff166382ef351a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610f9657600080fd5b6102c65a03f11515610fa757600080fd5b505050604051805190500190508173ffffffffffffffffffffffffffffffffffffffff16634654b6e2828a8a8a8a8a6040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808767ffffffffffffffff1667ffffffffffffffff1681526020018681526020018563ffffffff1663ffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156110a957808201518184015260208101905061108e565b50505050905090810190601f1680156110d65780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561110f5780820151818401526020810190506110f4565b50505050905090810190601f16801561113c5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b151561116057600080fd5b6102c65a03f1151561117157600080fd5b505050809250505095945050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120357600080fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156112e55760018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160192506101000a81548161ffff021916908361ffff1602179055505b50565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611323612dc2565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561137e57600080fd5b60c0604051908101604052808763ffffffff168152602001868152602001858152602001428463ffffffff160181526020018460ff1681526020013373ffffffffffffffffffffffffffffffffffffffff168152509050600980548060010182816113e99190612e12565b916000526020600020906005020160008390919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160040160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506001600660008282540192505081905550505050505050565b600080600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550426009898154811015156114e957fe5b90600052602060002090600502016003015411151561150757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16636352211e60098b81548110151561154a57fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156115b657600080fd5b6102c65a03f115156115c757600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b61162160075460098a81548110151561160957fe5b90600052602060002090600502016002015401610d83565b61162a34610d83565b1015151561163757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16636352211e60098b81548110151561167957fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156116e557600080fd5b6102c65a03f115156116f657600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415151561172357600080fd5b61172c33612a5a565b15151561173857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561177457600080fd5b8573ffffffffffffffffffffffffffffffffffffffff16636352211e60098a81548110151561179f57fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561180b57600080fd5b6102c65a03f1151561181c57600080fd5b50505060405180519050945033935060098881548110151561183a57fe5b906000526020600020906005020160020154925061185734610d83565b91506118838260098a81548110151561186c57fe5b906000526020600020906005020160010154612a6d565b8573ffffffffffffffffffffffffffffffffffffffff1663d3fd9eba868660098c8154811015156118b057fe5b9060005260206000209060050201600101546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561197957600080fd5b6102c65a03f1151561198a57600080fd5b50505061199682610d83565b6009898154811015156119a557fe5b906000526020600020906005020160020181905550336009898154811015156119ca57fe5b906000526020600020906005020160040160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611b6557503373ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611dfb578073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005633b9aca00878703811515611bf957fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515611d3157600080fd5b6102c65a03f11515611d4257600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dda57600080fd5b6102c65a03f11515611deb57600080fd5b50505060405180519050506120b7565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015611e6457503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156120b65786600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3886005633b9aca00878703811515611f1757fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e308d6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515611ff057600080fd5b6102c65a03f1151561200157600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561209957600080fd5b6102c65a03f115156120aa57600080fd5b50505060405180519050505b5b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3336005633b9aca008787038115156120e757fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30336000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156121c057600080fd5b6102c65a03f115156121d157600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561226957600080fd5b6102c65a03f1151561227a57600080fd5b505050604051805190505060008311156122cf578473ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156122ce57600080fd5b5b8373ffffffffffffffffffffffffffffffffffffffff166009898154811015156122f557fe5b9060005260206000209060050201600101547fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040846040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff1660098981548110151561236457fe5b9060005260206000209060050201600101547f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d7846040518082815260200191505060405180910390a35050505050505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561241857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561246f57600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61249e612dae565b6124a6612dae565b6000806006546040518059106124b95750595b9080825280602002602001820160405250925060009150600090505b600654811015612511578083838151811015156124ee57fe5b9060200190602002018181525050818060010192505080806001019150506124d5565b60008560ff161415156125295761252783612534565b505b829350505050919050565b61253c612dae565b612544612dae565b600061254e612dae565b612556612dae565b600086516040518059106125675750595b90808252806020026020018201604052509450600093505b86518410156125db57836402540be40060098681548110151561259e57fe5b906000526020600020906005020160020154020185858151811015156125c057fe5b9060200190602002018181525050838060010194505061257f565b6125e487610b30565b925082516040518059106125f55750595b90808252806020026020018201604052509150600090505b8251811015612667576402540be400838281518110151561262a57fe5b9060200190602002015181151561263d57fe5b06828281518110151561264c57fe5b9060200190602002018181525050808060010191505061260d565b8195505050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126cf57600080fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156127b2576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160392506101000a81548161ffff021916908361ffff1602179055505b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561283957600080fd5b60009150600090505b60065481101561290a576203f480420360098281548110151561286157fe5b90600052602060002090600502016003015410156128fd5760098181548110151561288857fe5b90600052602060002090600502016000808201600090556001820160009055600282016000905560038201600090556004820160006101000a81549060ff02191690556004820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505081806001019250505b8080600101915050612842565b816006600082825403925050819055505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129b257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515612a2957806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612a34612dae565b819050919050565b6000806000915060018351039050612a55838383612bbd565b505050565b600080823b905060008111915050919050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925067016345785d8a000085811515612aaa57fe5b04915060ff821115612abb5760ff91505b6000905066038d7ea4c6800082028101905064e8d4a51000820281019050633b9aca00820281019050620f42408202810190506103e8820281019050818101905067038ad94d608a88d7811115612b185767038ad94d608a88d790505b8273ffffffffffffffffffffffffffffffffffffffff1663e931fa0c85836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808367ffffffffffffffff1667ffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515612ba257600080fd5b6102c65a03f11515612bb357600080fd5b5050505050505050565b60008060008484111515612bd057612cda565b849250839150612c298684815181101515612be757fe5b906020019060200201518760018601815181101515612c0257fe5b906020019060200201518885815181101515612c1a57fe5b90602001906020020151612ce2565b90505b600115612cbd575b808684815181101515612c4357fe5b906020019060200201511015612c60578280600101935050612c34565b5b8582815181101515612c6f57fe5b90602001906020020151811015612c8e57818060019003925050612c61565b8282111515612c9c57612cbd565b612ca7868484612d3b565b8280600101935050818060019003925050612c2c565b612ccb868660018603612bbd565b612cd9866001840186612bbd565b5b505050505050565b600082841115612d125781831115612cfc57829050612d34565b818411612d095783612d0b565b815b9050612d34565b81841115612d2257839050612d34565b818311612d2f5782612d31565b815b90505b9392505050565b60008383815181101515612d4b57fe5b9060200190602002015190508382815181101515612d6557fe5b906020019060200201518484815181101515612d7d57fe5b9060200190602002018181525050808483815181101515612d9a57fe5b906020019060200201818152505050505050565b602060405190810160405280600081525090565b60c06040519081016040528060008152602001600081526020016000815260200160008152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b815481835581811511612e3f57600502816005028360005260206000209182019101612e3e9190612e44565b5b505050565b612ebb91905b80821115612eb7576000808201600090556001820160009055600282016000905560038201600090556004820160006101000a81549060ff02191690556004820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600501612e4a565b5090565b905600a165627a7a7230582099746fc5cf64873286c50df11c7f965667e8632f3d0196bd9442b8035628d2ba0029

Deployed Bytecode

0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630562b9f71461016457806314d0f1ba146101875780631e1d237e146101d8578063278a4c4f14610287578063363bf964146102df578063397e953f1461035657806340f0a21f146103ab57806348ef5aa8146103e25780634efb023e14610407578063571a26a0146104385780635b6a42b8146104c45780636c1247e5146105c35780636c81fd6d146106185780636df238c31461065157806376a310a5146106ca5780637deb6025146107205780638252ad9c14610757578063853828b6146107805780638da5cb5b146107955780639e1e1ca9146107ea578063a703078c14610865578063b85d627514610914578063c880fab11461094d578063c9f0a02d146109a2578063d4dca69b146109b7578063ee4e441614610a0c578063f285329214610a39575b600080fd5b341561016f57600080fd5b6101856004808035906020019091905050610a72565b005b341561019257600080fd5b6101be600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b10565b604051808215151515815260200191505060405180910390f35b34156101e357600080fd5b610230600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610b30565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610273578082015181840152602081019050610258565b505050509050019250505060405180910390f35b341561029257600080fd5b6102dd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b5d565b005b34156102ea57600080fd5b610354600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c3a565b005b341561036157600080fd5b610369610d5d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b657600080fd5b6103cc6004808035906020019091905050610d83565b6040518082815260200191505060405180910390f35b34156103ed57600080fd5b61040560048080351515906020019091905050610d9b565b005b341561041257600080fd5b61041a610e13565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561044357600080fd5b6104596004808035906020019091905050610e27565b604051808781526020018681526020018581526020018481526020018360ff1660ff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34156104cf57600080fd5b610599600480803590602001909190803563ffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e9f565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b34156105ce57600080fd5b6105d6611182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062357600080fd5b61064f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a8565b005b341561065c57600080fd5b610688600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506112e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106d557600080fd5b61071e600480803563ffffffff1690602001909190803590602001909190803590602001909190803560ff1690602001909190803563ffffffff1690602001909190505061131b565b005b610755600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114ab565b005b341561076257600080fd5b61076a6123b7565b6040518082815260200191505060405180910390f35b341561078b57600080fd5b6107936123bd565b005b34156107a057600080fd5b6107a8612471565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107f557600080fd5b61080e600480803560ff16906020019091905050612496565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610851578082015181840152602081019050610836565b505050509050019250505060405180910390f35b341561087057600080fd5b6108bd600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612534565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109005780820151818401526020810190506108e5565b505050509050019250505060405180910390f35b341561091f57600080fd5b61094b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612674565b005b341561095857600080fd5b6109606127b5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109ad57600080fd5b6109b56127db565b005b34156109c257600080fd5b6109ca61291e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a1757600080fd5b610a1f612944565b604051808215151515815260200191505060405180910390f35b3415610a4457600080fd5b610a70600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612957565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610b0d57600080fd5b50565b60016020528060005260406000206000915054906101000a900460ff1681565b610b38612dae565b610b40612dae565b610b4983612a2c565b9050610b5481612a3c565b80915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bb857600080fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9557600080fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006064808302811515610d9357fe5b059050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610df657600080fd5b80600260006101000a81548160ff02191690831515021790555050565b600060149054906101000a900461ffff1681565b600981815481101515610e3657fe5b90600052602060002090600502016000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900460ff16908060040160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086565b600080600060011515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515610f0357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060018273ffffffffffffffffffffffffffffffffffffffff166382ef351a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610f9657600080fd5b6102c65a03f11515610fa757600080fd5b505050604051805190500190508173ffffffffffffffffffffffffffffffffffffffff16634654b6e2828a8a8a8a8a6040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808767ffffffffffffffff1667ffffffffffffffff1681526020018681526020018563ffffffff1663ffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156110a957808201518184015260208101905061108e565b50505050905090810190601f1680156110d65780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561110f5780820151818401526020810190506110f4565b50505050905090810190601f16801561113c5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b151561116057600080fd5b6102c65a03f1151561117157600080fd5b505050809250505095945050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120357600080fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156112e55760018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160192506101000a81548161ffff021916908361ffff1602179055505b50565b60086020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611323612dc2565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561137e57600080fd5b60c0604051908101604052808763ffffffff168152602001868152602001858152602001428463ffffffff160181526020018460ff1681526020013373ffffffffffffffffffffffffffffffffffffffff168152509050600980548060010182816113e99190612e12565b916000526020600020906005020160008390919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548160ff021916908360ff16021790555060a08201518160040160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506001600660008282540192505081905550505050505050565b600080600080600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550426009898154811015156114e957fe5b90600052602060002090600502016003015411151561150757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16636352211e60098b81548110151561154a57fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156115b657600080fd5b6102c65a03f115156115c757600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b61162160075460098a81548110151561160957fe5b90600052602060002090600502016002015401610d83565b61162a34610d83565b1015151561163757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16636352211e60098b81548110151561167957fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156116e557600080fd5b6102c65a03f115156116f657600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415151561172357600080fd5b61172c33612a5a565b15151561173857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561177457600080fd5b8573ffffffffffffffffffffffffffffffffffffffff16636352211e60098a81548110151561179f57fe5b9060005260206000209060050201600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b151561180b57600080fd5b6102c65a03f1151561181c57600080fd5b50505060405180519050945033935060098881548110151561183a57fe5b906000526020600020906005020160020154925061185734610d83565b91506118838260098a81548110151561186c57fe5b906000526020600020906005020160010154612a6d565b8573ffffffffffffffffffffffffffffffffffffffff1663d3fd9eba868660098c8154811015156118b057fe5b9060005260206000209060050201600101546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b151561197957600080fd5b6102c65a03f1151561198a57600080fd5b50505061199682610d83565b6009898154811015156119a557fe5b906000526020600020906005020160020181905550336009898154811015156119ca57fe5b906000526020600020906005020160040160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611b6557503373ffffffffffffffffffffffffffffffffffffffff16600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611dfb578073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005633b9aca00878703811515611bf957fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515611d3157600080fd5b6102c65a03f11515611d4257600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611dda57600080fd5b6102c65a03f11515611deb57600080fd5b50505060405180519050506120b7565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015611e6457503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156120b65786600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3886005633b9aca00878703811515611f1757fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e308d6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515611ff057600080fd5b6102c65a03f1151561200157600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561209957600080fd5b6102c65a03f115156120aa57600080fd5b50505060405180519050505b5b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3336005633b9aca008787038115156120e757fe5b04028473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30336000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156121c057600080fd5b6102c65a03f115156121d157600080fd5b50505060405180519050016000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561226957600080fd5b6102c65a03f1151561227a57600080fd5b505050604051805190505060008311156122cf578473ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156122ce57600080fd5b5b8373ffffffffffffffffffffffffffffffffffffffff166009898154811015156122f557fe5b9060005260206000209060050201600101547fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040846040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff1660098981548110151561236457fe5b9060005260206000209060050201600101547f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d7846040518082815260200191505060405180910390a35050505050505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561241857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561246f57600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61249e612dae565b6124a6612dae565b6000806006546040518059106124b95750595b9080825280602002602001820160405250925060009150600090505b600654811015612511578083838151811015156124ee57fe5b9060200190602002018181525050818060010192505080806001019150506124d5565b60008560ff161415156125295761252783612534565b505b829350505050919050565b61253c612dae565b612544612dae565b600061254e612dae565b612556612dae565b600086516040518059106125675750595b90808252806020026020018201604052509450600093505b86518410156125db57836402540be40060098681548110151561259e57fe5b906000526020600020906005020160020154020185858151811015156125c057fe5b9060200190602002018181525050838060010194505061257f565b6125e487610b30565b925082516040518059106125f55750595b90808252806020026020018201604052509150600090505b8251811015612667576402540be400838281518110151561262a57fe5b9060200190602002015181151561263d57fe5b06828281518110151561264c57fe5b9060200190602002018181525050808060010191505061260d565b8195505050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126cf57600080fd5b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156127b2576000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600060148282829054906101000a900461ffff160392506101000a81548161ffff021916908361ffff1602179055505b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561283957600080fd5b60009150600090505b60065481101561290a576203f480420360098281548110151561286157fe5b90600052602060002090600502016003015410156128fd5760098181548110151561288857fe5b90600052602060002090600502016000808201600090556001820160009055600282016000905560038201600090556004820160006101000a81549060ff02191690556004820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055505081806001019250505b8080600101915050612842565b816006600082825403925050819055505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129b257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515612a2957806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b612a34612dae565b819050919050565b6000806000915060018351039050612a55838383612bbd565b505050565b600080823b905060008111915050919050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925067016345785d8a000085811515612aaa57fe5b04915060ff821115612abb5760ff91505b6000905066038d7ea4c6800082028101905064e8d4a51000820281019050633b9aca00820281019050620f42408202810190506103e8820281019050818101905067038ad94d608a88d7811115612b185767038ad94d608a88d790505b8273ffffffffffffffffffffffffffffffffffffffff1663e931fa0c85836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808367ffffffffffffffff1667ffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515612ba257600080fd5b6102c65a03f11515612bb357600080fd5b5050505050505050565b60008060008484111515612bd057612cda565b849250839150612c298684815181101515612be757fe5b906020019060200201518760018601815181101515612c0257fe5b906020019060200201518885815181101515612c1a57fe5b90602001906020020151612ce2565b90505b600115612cbd575b808684815181101515612c4357fe5b906020019060200201511015612c60578280600101935050612c34565b5b8582815181101515612c6f57fe5b90602001906020020151811015612c8e57818060019003925050612c61565b8282111515612c9c57612cbd565b612ca7868484612d3b565b8280600101935050818060019003925050612c2c565b612ccb868660018603612bbd565b612cd9866001840186612bbd565b5b505050505050565b600082841115612d125781831115612cfc57829050612d34565b818411612d095783612d0b565b815b9050612d34565b81841115612d2257839050612d34565b818311612d2f5782612d31565b815b90505b9392505050565b60008383815181101515612d4b57fe5b9060200190602002015190508382815181101515612d6557fe5b906020019060200201518484815181101515612d7d57fe5b9060200190602002018181525050808483815181101515612d9a57fe5b906020019060200201818152505050505050565b602060405190810160405280600081525090565b60c06040519081016040528060008152602001600081526020016000815260200160008152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b815481835581811511612e3f57600502816005028360005260206000209182019101612e3e9190612e44565b5b505050565b612ebb91905b80821115612eb7576000808201600090556001820160009055600282016000905560038201600090556004820160006101000a81549060ff02191690556004820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600501612e4a565b5090565b905600a165627a7a7230582099746fc5cf64873286c50df11c7f965667e8632f3d0196bd9442b8035628d2ba0029

Swarm Source

bzzr://99746fc5cf64873286c50df11c7f965667e8632f3d0196bd9442b8035628d2ba

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.