ETH Price: $2,175.42 (+0.81%)

Contract

0xa7fAc90C03338beb1149799C100F8551738c6ecD
 

Overview

ETH Balance

0.01 ETH

Eth Value

$21.75 (@ $2,175.42/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Purchase Card103162882020-06-22 15:09:071720 days ago1592838547IN
0xa7fAc90C...1738c6ecD
0.01 ETH0.0021693927
Purchase Card97602482020-03-28 13:33:061806 days ago1585402386IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.000151481
Add Make74464902019-03-26 21:07:292173 days ago1553634449IN
0xa7fAc90C...1738c6ecD
0 ETH0.000100292
Purchase Card73077232019-03-05 6:22:142195 days ago1551766934IN
0xa7fAc90C...1738c6ecD
0.014742 ETH0.000691785
Purchase Card73076942019-03-05 6:15:112195 days ago1551766511IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.000653995
Purchase Card73076652019-03-05 6:09:002195 days ago1551766140IN
0xa7fAc90C...1738c6ecD
0.014742 ETH0.000691785
Purchase Card73076572019-03-05 6:07:342195 days ago1551766054IN
0xa7fAc90C...1738c6ecD
0.014742 ETH0.000691785
Purchase Card73075562019-03-05 5:46:412195 days ago1551764801IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.000492964
Purchase Card72075702019-02-11 17:19:312216 days ago1549905571IN
0xa7fAc90C...1738c6ecD
0.0162 ETH0.000369723
Purchase Card68027782018-11-30 22:02:332289 days ago1543615353IN
0xa7fAc90C...1738c6ecD
0.024964 ETH0.000597288
Purchase Card66742732018-11-09 19:59:352310 days ago1541793575IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.000653995
Purchase Card66741342018-11-09 19:28:482310 days ago1541791728IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.000392393
Purchase Card66741252018-11-09 19:26:182310 days ago1541791578IN
0xa7fAc90C...1738c6ecD
0.013122 ETH0.000392393
Purchase Card66740792018-11-09 19:14:032310 days ago1541790843IN
0xa7fAc90C...1738c6ecD
0.013284 ETH0.000691785
Purchase Card66738132018-11-09 18:13:432310 days ago1541787223IN
0xa7fAc90C...1738c6ecD
0.1 ETH0.000329195
Purchase Card66738052018-11-09 18:10:332310 days ago1541787033IN
0xa7fAc90C...1738c6ecD
0.04394295 ETH0.000654245
Purchase Card64933862018-10-11 5:52:532340 days ago1539237173IN
0xa7fAc90C...1738c6ecD
0.04394295 ETH0.000553464
Purchase Card64432492018-10-03 2:50:172348 days ago1538535017IN
0xa7fAc90C...1738c6ecD
0.3723875 ETH0.00028155
Purchase Card64432472018-10-03 2:50:022348 days ago1538535002IN
0xa7fAc90C...1738c6ecD
0.01 ETH0.000691825
Purchase Card64432452018-10-03 2:49:542348 days ago1538534994IN
0xa7fAc90C...1738c6ecD
0.013284 ETH0.000691825
Purchase Card64432452018-10-03 2:49:542348 days ago1538534994IN
0xa7fAc90C...1738c6ecD
0.03704641 ETH0.000654565
Purchase Card64432452018-10-03 2:49:542348 days ago1538534994IN
0xa7fAc90C...1738c6ecD
0.0162 ETH0.000653995
Purchase Card64432412018-10-03 2:49:182348 days ago1538534958IN
0xa7fAc90C...1738c6ecD
0.02388204 ETH0.001313779.5
Purchase Card64404652018-10-02 16:08:332349 days ago1538496513IN
0xa7fAc90C...1738c6ecD
0.013122 ETH0.0013563710.375
Purchase Card64404632018-10-02 16:08:272349 days ago1538496507IN
0xa7fAc90C...1738c6ecD
0.0081 ETH0.0014387811
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-103162882020-06-22 15:09:071720 days ago1592838547
0xa7fAc90C...1738c6ecD
0.00882352 ETH
-103162882020-06-22 15:09:071720 days ago1592838547
0xa7fAc90C...1738c6ecD
0.00029411 ETH
-103162882020-06-22 15:09:071720 days ago1592838547
0xa7fAc90C...1738c6ecD
0.00058823 ETH
-103162882020-06-22 15:09:071720 days ago1592838547
0xa7fAc90C...1738c6ecD
0.00029411 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00022252 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00022252 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00008901 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00667582 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00044505 ETH
-97602482020-03-28 13:33:061806 days ago1585402386
0xa7fAc90C...1738c6ecD
0.00044505 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00040059 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00040059 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00016023 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00016023 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.01201793 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00080119 ETH
-73077232019-03-05 6:22:142195 days ago1551766934
0xa7fAc90C...1738c6ecD
0.00080119 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00022252 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00022252 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00008901 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00667582 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00044505 ETH
-73076942019-03-05 6:15:112195 days ago1551766511
0xa7fAc90C...1738c6ecD
0.00044505 ETH
-73076652019-03-05 6:09:002195 days ago1551766140
0xa7fAc90C...1738c6ecD
0.00040059 ETH
-73076652019-03-05 6:09:002195 days ago1551766140
0xa7fAc90C...1738c6ecD
0.00040059 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoFlipCar2

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-08
*/

pragma solidity ^0.4.24;


library SafeMath {

  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;
  }
  
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


contract Manageable {

  address public owner;
  address public manager;
  bool public contractLock;
  
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  event ManagerTransferred(address indexed previousManager, address indexed newManager);
  event ContractLockChanged(address admin, bool state);

  constructor() public {
    owner = msg.sender;
    manager = msg.sender;
    contractLock = false;
  }

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

  modifier onlyAdmin() {
    require((msg.sender == manager) || (msg.sender == owner));
    _;
  }

  modifier isUnlocked() {
    require(!contractLock);
    _;
  }

  function transferManager(address newManager) public onlyAdmin {
    require(_addrNotNull(newManager));
    emit ManagerTransferred(manager, newManager);
    manager = newManager;
  }

  function transferOwner(address _newOwner) public onlyOwner {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }

  function setContractLock(bool setting) public onlyAdmin {
    contractLock = setting;
    emit ContractLockChanged(msg.sender, setting);
  }

  function _addrNotNull(address _to) internal pure returns (bool) {
    return(_to != address(0));
  }
}


contract CryptoFlipCar2 is Manageable {
  using SafeMath for uint256;

  uint256 private constant TYPE_CAR = 3;
  uint256 private constant TYPE_MAKE = 2;
  uint256 private constant TYPE_COMPANY = 1;
  uint256 private constant TYPE_WHALE = 0;

  uint256 private constant ADDR_M = (2**160)-1;
  uint256 private constant PRICE_M = (2**96)-1;
  uint256 private constant MAKE_PRICE_M = (2**91)-1;
  uint256 private constant COMPANY_ID_M = (2**5)-1;
  uint256 private constant RACE_ID_M = (2**96)-1;
  uint256 private constant RACE_BET_M = (2**128) - 1;
  uint256 private constant WINNER_M = (2**2)-1;
  uint256 private constant PINKSLIP_M = (2**1)-1;
  uint256 private constant STATE_M = (2**2)-1;

  uint256 private constant ADDR_S = 2**160;
  uint256 private constant MAKE_PRICE_S = 2**165;
  uint256 private constant RACE_ID_S = 2**162;
  uint256 private constant RACE_WINNER_S = 2**128;
  uint256 private constant PINKSLIP_S = 2**130;
  uint256 private constant STATE_S = 2**131;

  uint256 private constant RACE_READY = 0;
  uint256 private constant RACE_OPENED = 1;
  uint256 private constant RACE_FINISHED = 3;

  uint256 private constant AD_PRICE = 5000000000000000;
  uint256 private constant COMPANY_START_PRICE = 0.1 ether;
  uint256 private constant MAKE_START_PRICE = 0.01 ether;
  uint256 private constant CAR_START_PRICE = 0.005 ether;

/********************************************** EVENTS **********************************************/
  event RaceCreated(uint256 raceId, address player1, uint256 cardId, uint256 betAmount);
  event RaceFinished(uint256 raceId, address winner);

  event CardPurchased(uint256 cardType, uint256 cardId, address buyer, address seller, uint256 price);
  event CardTransferred(uint256 cardType, uint256 cardId, address buyer, address seller);
  event AdPurchased(uint256 cardType, uint256 cardId, address buyer, address seller, uint256 price);

  event CarAdded(uint256 id, uint256 makeId);
  event MakeAdded(uint256 id, uint256 companyId);
  event CompanyAdded(uint256 id);
/****************************************************************************************************/

/********************************************** STRUCTS *********************************************/
  struct Advert {
    uint256 data;
    string link;
    string text;
  }
  
  struct Car {
    address[4] owners;
    uint256 price;
    uint256 makeId;
    bool locked;
  }

  struct Race {
    uint256 player1Data;
    uint256 player2Data;
    uint256 metaData;
  }
/****************************************************************************************************/

/*********************************************** VARS ***********************************************/
  uint256 private whaleCard;

  mapping(uint256 => Race) private racesMap;
  mapping(uint256 => uint256) private companiesMap;
  mapping(uint256 => uint256) private makesMap;
  mapping(uint256 => Car) private carsMap;

  mapping(uint256 => mapping(uint256 => Advert)) private adsMap;

  uint256 public carCount;
  uint256 public makeCount;
  uint256 public companyCount;
  uint256 public openRaceCount;
  uint256 public finishedRaceCount;

  uint256 private adCardOwnerCut = 5;
  uint256 private ownerCut = 50;
  uint256 private whaleCut = 5;
  uint256 private devCut = 5;
  uint256 private parentCut = 10;
  uint256 private oldCarCut = 2;
  
  bool private initDone = false;
/****************************************************************************************************/

  function init() public onlyAdmin {
    require(!initDone);
    initDone = true;
    whaleCard = 544244940971561611450182022165966101192029151941515963475380724124;
    
    companiesMap[0] = 865561039198320994090019029559199471223345461753643689577969591538;
    companiesMap[1] = 865561039198320993054179444739682765137514550166591154999543755547;
    companiesMap[2] = 554846819998923714678602910082262521292860787724376787491777411291;
    companiesMap[3] = 355671038460848535541135615183955125321318851275538745891777411291;
    companiesMap[4] = 146150163733090292102777780770905740002982644405466239152731821942;
    companiesMap[5] = 355671038460848535508878910989526070534946658842850550567444902178;
    companiesMap[6] = 146150163733090292102777780770905740002982644405466239152731821942;
    companiesMap[7] = 146150163733090292102777780770905740002982644405466239152731821942;

    companyCount = 8;

    makesMap[0] = 4605053916465184876084057218227438981618782007393731932205532781978;
    makesMap[1] = 2914591086370370174599913075554161534533507828594490006968556374688;
    makesMap[2] = 1844677902766057073279966936236223278229324254247807717511561402428;
    makesMap[3] = 1844677902766057073279966936236223278229324254247807717511561402428;
    makesMap[4] = 4605053916465184876911990996766451400782681524689254663484418928006;
    makesMap[5] = 4605053916465184878081670562508085129910431352928816695390378405668;
    makesMap[6] = 1167517659978517137984061586248765661373868143008706876811221867930;
    makesMap[7] = 738935227834504519292893252751116942230691621264798552983426488380;
    makesMap[8] = 1167517659978517139445563223579668579577552975724989896467154410906;
    makesMap[9] = 738935227834504520754394890082019860434376453981081572639359031356;
    makesMap[10] = 738935227834504523289617387884832456129379376897516570443342499703;
    makesMap[11] = 1167517659978517142247011557709217019077442283260142618443342499703;
    makesMap[12] = 467680523945888942876598267953905513549396800157884357088327079798;

    makeCount = 13;

    carsMap[0] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x5C035Bb4Cb7dacbfeE076A5e61AA39a10da2E956, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 });  // solhint-disable-line max-line-length
    carsMap[1] = Car({locked: false, owners:[0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 });  // solhint-disable-line max-line-length
    carsMap[2] = Car({locked: false, owners:[0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 0 });   // solhint-disable-line max-line-length
    carsMap[3] = Car({locked: false, owners:[0x65A05c896d9A6f428B3936ac5db8df28752Ccd44, 0x71f35825a3B1528859dFa1A64b24242BC0d12990, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 13122000000000000, makeId: 0 });  // solhint-disable-line max-line-length
    carsMap[4] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 5 });  // solhint-disable-line max-line-length
    carsMap[5] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 1 });  // solhint-disable-line max-line-length
    carsMap[6] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 10000000000000000, makeId: 4 });  // solhint-disable-line max-line-length
    carsMap[7] = Car({locked: false, owners:[0x62D5Be95C330b512b35922E347319afD708dA981, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 16200000000000000, makeId: 4 });  // solhint-disable-line max-line-length
    carsMap[8] = Car({locked: false, owners:[0x3130259deEdb3052E24FAD9d5E1f490CB8CCcaa0, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 16200000000000000, makeId: 6 });  // solhint-disable-line max-line-length
    carsMap[9] = Car({locked: false, owners:[0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x7396176Ac6C1ef05d57180e7733b9188B3571d9A], price: 22051440000000000, makeId: 10});  // solhint-disable-line max-line-length
    carsMap[10] = Car({locked: false, owners:[0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x5e4b61220039823aeF8a54EfBe47773194494f77], price: 37046419200000000, makeId: 11}); // solhint-disable-line max-line-length
    carsMap[11] = Car({locked: false, owners:[0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 4 });  // solhint-disable-line max-line-length
    carsMap[12] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x7396176Ac6C1ef05d57180e7733b9188B3571d9A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 7 });  // solhint-disable-line max-line-length
    carsMap[13] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 10});  // solhint-disable-line max-line-length
    carsMap[14] = Car({locked: false, owners:[0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 11});  // solhint-disable-line max-line-length
    carsMap[15] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x5e4b61220039823aeF8a54EfBe47773194494f77, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 8 });  // solhint-disable-line max-line-length
    carsMap[16] = Car({locked: false, owners:[0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 9 });  // solhint-disable-line max-line-length
    carsMap[17] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x558F42Baf1A9352A955D301Fa644AD0F619B97d9, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 2 });  // solhint-disable-line max-line-length
    carsMap[18] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 3 });  // solhint-disable-line max-line-length
    carsMap[19] = Car({locked: false, owners:[0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x19fC7935fd9D0BC335b4D0df3bE86eD51aD2E62A, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 6 });  // solhint-disable-line max-line-length
    carsMap[20] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0xE9cfDadEa5FA5475861B62aA7d5dAA493C377122, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 10});  // solhint-disable-line max-line-length
    carsMap[21] = Car({locked: false, owners:[0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 0 });  // solhint-disable-line max-line-length
    carsMap[22] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 12});  // solhint-disable-line max-line-length
    carsMap[23] = Car({locked: false, owners:[0xac2b4B94eCA37Cb7c9cF7062fEfB2792c5792731, 0x263b604509D6a825719859Ee458b2D91fb7d330D, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000], price: 13284000000000000, makeId: 12});  //solhint-disable-line max-line-length
    carsMap[24] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x308e9C99Ac194101C971FFcAca897AC943843dE8, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 2 });  // solhint-disable-line max-line-length
    carsMap[25] = Car({locked: false, owners:[0x5632CA98e5788edDB2397757Aa82d1Ed6171e5aD, 0x504Af27f1Cef15772370b7C04b5D9d593Ee729f5, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 12});  // solhint-disable-line max-line-length
    carsMap[26] = Car({locked: false, owners:[0x9bD750685bF5bfCe24d1B8DE03a1ff3D2631ef5a, 0x3177Abbe93422c9525652b5d4e1101a248A99776, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], price: 8100000000000000, makeId: 11});  // solhint-disable-line max-line-length
     
    carCount = 27;
  }

/********************************************** RACES ***********************************************/
  function createRace(uint256 _cardId, uint256 _betAmount, uint256 pinkSlip) public payable isUnlocked {
    uint256 excess = msg.value.sub(_betAmount);
    require(_owns(msg.sender, TYPE_CAR, _cardId));
    require(!carsMap[_cardId].locked);
    carsMap[_cardId].locked = true;
    
    racesMap[openRaceCount+finishedRaceCount].player1Data = _packPlayerData(msg.sender, _cardId);
    racesMap[openRaceCount+finishedRaceCount].metaData = _packRaceData(_betAmount, 0, pinkSlip, RACE_OPENED);
    openRaceCount++;

    emit RaceCreated(openRaceCount+finishedRaceCount, msg.sender, _cardId, _betAmount);
    _pay(msg.sender, excess);
  }
  
  function joinRaceAndFinish (uint256 _raceId, uint256 _cardId) public payable isUnlocked {
    require(msg.sender == tx.origin);

    require(_owns(msg.sender, TYPE_CAR, _cardId));
    
    require(!carsMap[_cardId].locked);
    (uint256 bet, bool pinkslip) = _unpackRaceFinishData(racesMap[_raceId].metaData);
    
    require(_raceOpened(racesMap[_raceId].metaData));
    
    openRaceCount--;
    finishedRaceCount++; 
    
    racesMap[_raceId].player2Data = _packPlayerData(msg.sender, _cardId);
    address player1 = address(racesMap[_raceId].player1Data & ADDR_M);

    uint256 winner = _getRNGValue(_raceId);
    address winnerAddr = (winner == 1) ? player1 : msg.sender;

    _transferCar(winnerAddr, racesMap[_raceId].player1Data, pinkslip);
    _transferCar(winnerAddr, racesMap[_raceId].player2Data, pinkslip);

    uint256 devFee = bet.mul(2).mul(devCut) / 100;
    uint256 winnings = bet.mul(2).sub(devFee);
    
    _updateRaceWinner(_raceId, winner);
    emit RaceFinished(_raceId, winnerAddr);
    
    _pay(msg.sender, msg.value.sub(bet));
    _pay(owner, devFee);
    _pay(winnerAddr, winnings);
  }
/****************************************************************************************************/

/******************************************** PURCHASE **********************************************/
  function purchaseAd(uint256 _cardType, uint256 _cardId, string adText, string adLink) public payable isUnlocked {
    
    (address seller, uint256 price) = _unpackItemData(adsMap[_cardType][_cardId].data);
    price = (price == 0) ? AD_PRICE : price;
    seller = (seller == address(0)) ? owner : seller;
    
    uint256 excess = msg.value.sub(price);
    require(_released(_cardType, _cardId));
    require(_cardType != 0);
  
    uint256 totalPerc = 100 + adCardOwnerCut + ownerCut + devCut;
    uint256 newPrice = price.mul(totalPerc) / 100;

    uint256 cardsellerCommission = price.mul(adCardOwnerCut) / totalPerc;
    uint256 devFee = price.mul(devCut) / totalPerc;
    uint256 sellerCommission = price - (cardsellerCommission + devFee);
    uint256 adData = _packItemData(msg.sender, newPrice);

    adsMap[_cardType][_cardId] = Advert({text: adText, link: adLink, data: adData});
    
    emit AdPurchased(_cardType, _cardId, msg.sender, seller, price);

    _pay(ownerOf(_cardType, _cardId), cardsellerCommission);
    _pay(owner, devFee);
    _pay(seller, sellerCommission);
    _pay(msg.sender, excess);
  }

  function purchaseCard(uint256 _cardType, uint256 _cardId) public payable isUnlocked {
    if ( _cardType == TYPE_WHALE) {
      _purchaseWhaleCard();
    } else if (_cardType == TYPE_COMPANY) {
      _purchaseCompany(_cardId);
    } else if (_cardType == TYPE_MAKE) {
      _purchaseMake(_cardId);
    } else if (_cardType == TYPE_CAR) {
      _purchaseCar(_cardId);
    }
  }
/****************************************************************************************************/

/********************************************* GETTERS **********************************************/
  function getWhaleCard() public view returns (address _owner, uint256 _price) {
    (_owner, _price) = _unpackItemData(whaleCard);
  }

  function getCompany(uint256 _companyId) public view returns(address _owner, uint256 _price) {
    (_owner, _price) = _unpackItemData(companiesMap[_companyId]);
  }

  function getMake(uint256 _makeId) public view returns(address _owner, uint256 _price, uint256 _companyId) {
    (_owner, _companyId, _price) = _unpackMakeData(makesMap[_makeId]);
  }
  
  function getCar(uint256 _carId) public view returns (address[4] owners, uint256 price, uint256 makeId) {
    Car memory _car = carsMap[_carId];
    owners = _car.owners;
    price = _car.price;
    makeId = _car.makeId;
  }
  
  function getRace(uint256 _raceId) public view returns(uint256 _p1Data, uint256 _p2Data, uint256 _raceMetaData) {
    Race memory _race = racesMap[_raceId];
    _p1Data = _race.player1Data;
    _p2Data = _race.player2Data;
    _raceMetaData = _race.metaData;
  }
  
  function getFullRace(uint256 _raceId) public view returns(
    address p1, uint256 p1Id,
    address p2, uint256 p2Id,
    uint256 bet, uint256 winner, bool pinkslip, uint256 state) {
    Race memory _race = racesMap[_raceId];
    (p1, p1Id) = _unpackPlayerData(_race.player1Data);
    (p2, p2Id) = _unpackPlayerData(_race.player2Data);
    (bet, winner, pinkslip, state) = _unpackRaceData(_race.metaData);
  }

  function getAd(uint256 _cardType, uint256 _cardId) public view returns(string text, string link, address seller, uint256 price) {
    Advert memory ad = adsMap[_cardType][_cardId];
    (seller, price) = _unpackItemData(ad.data);
    price = (price == 0) ? AD_PRICE : price;
    seller = (seller == address(0)) ? owner : seller;
    text = ad.text;
    link = ad.link;
  }
  
  function getCuts() public view returns(uint256[6] cuts) {
    cuts = [adCardOwnerCut, ownerCut, whaleCut, devCut, parentCut, oldCarCut];
  }

  function ownerOf(uint256 cardType, uint256 cardId) public view returns(address cardOwner) {
    if (cardType == TYPE_WHALE) {
      cardOwner = address(whaleCard & ADDR_M);
    } else if (cardType == TYPE_COMPANY) {
      cardOwner = address(companiesMap[cardId] & ADDR_M);
    } else if (cardType == TYPE_MAKE) {
      cardOwner = address(makesMap[cardId] & ADDR_M);
    } else if (cardType == TYPE_CAR) {
      cardOwner = carsMap[cardId].owners[0];
    }
  }
/****************************************************************************************************/

/********************************************* RELEASE **********************************************/   
  function transferCard(address _newOwner, uint256 _cardType, uint256 _cardId) public onlyAdmin {
    _transferCard(_newOwner, _cardType, _cardId);
  }
/****************************************************************************************************/

/******************************************** ADD CARDS *********************************************/
  function addCompany() public onlyAdmin {
    companiesMap[companyCount] = _packItemData(owner, COMPANY_START_PRICE);
    emit CompanyAdded(companyCount++);
  }

  function addMake(uint256 _companyId) public onlyAdmin {
    makesMap[makeCount] = _packMakeData(owner, MAKE_START_PRICE, _companyId);
    emit MakeAdded(makeCount++, _companyId);
  }
  
  function addCar(uint256 _makeId) public onlyAdmin {
    carsMap[carCount] = Car({price: CAR_START_PRICE, owners: [owner, address(0), address(0), address(0)], makeId: _makeId, locked : false});
    emit CarAdded(carCount++, _makeId);
  }
  
  function addAd(address _ownerAddr, uint256 _price, uint256 _cardType, uint256 _cardId, string _text, string _link) public onlyAdmin {
    require(_addrNotNull(_ownerAddr) && (_price != 0));
    uint256 _data = _packItemData(_ownerAddr, _price);
    adsMap[_cardType][_cardId] = Advert({text: _text, link: _link, data: _data});
  }
  
  function editCuts(uint256[6] cuts) public onlyAdmin {
    adCardOwnerCut = (cuts[0] == 0) ? adCardOwnerCut : cuts[0];
    ownerCut = (cuts[1] == 0) ? ownerCut : cuts[1];
    whaleCut = (cuts[2] == 0) ? whaleCut : cuts[2];
    devCut = (cuts[3] == 0) ? devCut : cuts[3];
    parentCut = (cuts[4] == 0) ? parentCut : cuts[4];
    oldCarCut = (cuts[5] == 0) ? oldCarCut : cuts[5];
  }
/****************************************************************************************************/

/********************************************* PRIVATE **********************************************/

  function _editPriceOf(uint256 cardType, uint256 cardId, uint256 _newPrice) private {
    if (cardType == TYPE_WHALE) {
      whaleCard = (~(PRICE_M*ADDR_S) & whaleCard) | ((_newPrice & PRICE_M) * ADDR_S);
    } else if (cardType == TYPE_COMPANY) {
      companiesMap[cardId] = (~(PRICE_M*ADDR_S) & companiesMap[cardId]) | ((_newPrice & PRICE_M) * ADDR_S);
    } else if (cardType == TYPE_MAKE) {
      makesMap[cardId] = (~(MAKE_PRICE_M*MAKE_PRICE_S) & makesMap[cardId]) | ((_newPrice & MAKE_PRICE_M) * MAKE_PRICE_S);
    } else if (cardType == TYPE_CAR) {
      carsMap[cardId].price = _newPrice;
    }
  }

  function _priceOf(uint256 cardType, uint256 cardId) private view returns(uint256 _price) {
    if (cardType == TYPE_WHALE) {
      _price = (PRICE_M & (whaleCard / ADDR_S));
    } else if (cardType == TYPE_COMPANY) {
      _price = (PRICE_M & (companiesMap[cardId] / ADDR_S));
    } else if (cardType == TYPE_MAKE) {
      _price = (MAKE_PRICE_M & (makesMap[cardId] / MAKE_PRICE_S));
    } else if (cardType == TYPE_CAR) {
      _price = carsMap[cardId].price;
    }
  }

  function _owns(address _owner, uint256 cardType, uint256 cardId) private view returns(bool) {
    address _toCheck = ownerOf(cardType, cardId);
    return(_owner == _toCheck);
  }

  function _released(uint256 cardType, uint256 cardId) private view returns(bool) {
    return(_addrNotNull(ownerOf(cardType, cardId)));
  }
  
  function _transferCard(address newOwner, uint256 cardType, uint256 cardId) private returns (bool) {   
    require(_released(cardType, cardId));
    address seller = ownerOf(cardType, cardId);
    if ( newOwner == seller) {
    } else if (cardType == TYPE_WHALE) {
      whaleCard = (~(ADDR_M) & whaleCard) | (uint256(newOwner) & ADDR_M);
    } else if (cardType == TYPE_COMPANY) {
      companiesMap[cardId] = (~(ADDR_M) & companiesMap[cardId]) | (uint256(newOwner) & ADDR_M);
    } else if (cardType == TYPE_MAKE) {
      makesMap[cardId] = (~(ADDR_M) & makesMap[cardId]) | (uint256(newOwner) & ADDR_M);
    } else if (cardType == TYPE_CAR) {
      carsMap[cardId].owners[3] = carsMap[cardId].owners[2];
      carsMap[cardId].owners[2] = carsMap[cardId].owners[1];    
      carsMap[cardId].owners[1] = carsMap[cardId].owners[0];
      carsMap[cardId].owners[0] = newOwner;
    }
    emit CardTransferred(cardType, cardId, newOwner, seller);
  }

  function _pay(address _to, uint256 _value) private {
    if ( _addrNotNull(_to) && _value != 0) {
      _to.transfer(_value);
    }
  }

  function _transferCar(address newOwner, uint256 _data, bool pinkslip) private returns (bool) {
    uint256 id = _getRacerCar(_data);
    carsMap[id].locked = false;
    if ( pinkslip) {
      _transferCard(newOwner, TYPE_CAR, id);
    }
  }    

  function _oldOwnersOf(uint256 _carId) private view returns(uint256) {
    Car memory _car = carsMap[_carId];
    uint256 count = _addrNotNull(_car.owners[1]) ? 1 : 0;
    count += (_addrNotNull(_car.owners[2]) ? 1 : 0);
    count += (_addrNotNull(_car.owners[3]) ? 1 : 0);
    return(count);
  }

  function _packItemData(address itemOwner, uint256 price) public pure returns(uint256) {
    uint256 _data = (~(ADDR_M) & _data) | (uint256(itemOwner) & ADDR_M);
    _data = (~(PRICE_M*ADDR_S) & _data) | ((price & PRICE_M) * ADDR_S);
    return(_data);
  }
  
  function _unpackItemData(uint256 _data) private pure returns(address itemOwner, uint256 price) {
    itemOwner = address(_data & ADDR_M);
    price = PRICE_M & (_data / ADDR_S);
  }

  function _packMakeData(address makeOwner, uint256 price, uint256 companyId) private pure returns(uint256 _data) {
    _data = (~(ADDR_M) & _data) | (uint256(makeOwner) & ADDR_M);
    _data = (~(COMPANY_ID_M*ADDR_S) & _data) | ((companyId & COMPANY_ID_M) * ADDR_S);
    _data = (~(MAKE_PRICE_M*MAKE_PRICE_S) & _data) | ((price & MAKE_PRICE_M) * MAKE_PRICE_S);
  }

  function _unpackMakeData(uint256 _data) private pure returns(address makeOwner, uint256 companyId, uint256 price) {
    makeOwner = address(_data & ADDR_M);
    companyId = COMPANY_ID_M & (_data / ADDR_S);
    price = (MAKE_PRICE_M & (_data / MAKE_PRICE_S));
  }

  function _purchaseCar(uint256 _cardId) private {
    Car memory car = carsMap[_cardId];
    require(!car.locked);

    uint256 excess = msg.value.sub(car.price);

    require(msg.sender != car.owners[0]);

    uint256 totalPerc = 100 + ownerCut + devCut + whaleCut + (2 * parentCut) + (oldCarCut * _oldOwnersOf(_cardId));
    
    uint256 parentFee = car.price.mul(parentCut) / totalPerc;    
    uint256 oldCarFee = car.price.mul(oldCarCut) / totalPerc;  
    uint256 whaleFee = car.price.mul(whaleCut) / totalPerc;  
    uint256 devFee = car.price.mul(devCut) / totalPerc;
    
    uint256 sellerCommission = car.price - ((oldCarFee * _oldOwnersOf(_cardId)) + (2 * parentFee) + devFee + whaleFee);

    uint256 companyId = COMPANY_ID_M & (makesMap[car.makeId] / ADDR_S);

    emit CardPurchased(TYPE_CAR, _cardId, msg.sender, car.owners[0], car.price);

    _transferCard(msg.sender, TYPE_CAR, _cardId);
    _editPriceOf(TYPE_CAR, _cardId, car.price.mul(totalPerc) / 100);
     
    _pay(ownerOf(TYPE_COMPANY, companyId), parentFee);
    _pay(ownerOf(TYPE_MAKE, car.makeId), parentFee);

    _pay(car.owners[0], sellerCommission);
    _pay(car.owners[1], oldCarFee);
    _pay(car.owners[2], oldCarFee);
    _pay(car.owners[3], oldCarFee);
    
    _pay(ownerOf(0, 0), whaleFee);
    _pay(owner, devFee);
    _pay(msg.sender, excess);
  }

  function _purchaseMake(uint256 _cardId) private isUnlocked {
    (address seller, uint256 price, uint256 companyId) = getMake(_cardId);
    uint256 excess = msg.value.sub(price);

    require(msg.sender != seller);
    
    uint256 totalPerc = 100 + ownerCut + devCut + parentCut + whaleCut;
    
    uint256 parentFee = price.mul(parentCut) / totalPerc;
    uint256 whaleFee = price.mul(whaleCut) / totalPerc;
    uint256 devFee = price.mul(devCut) / totalPerc;

    uint256 newPrice = price.mul(totalPerc) / 100;
  
    uint256 sellerCommission = price - (parentFee+whaleFee+devFee);
    
    _transferCard(msg.sender, 2, _cardId);
    _editPriceOf(2, _cardId, newPrice);
    
    emit CardPurchased(2, _cardId, msg.sender, seller, price);

    _pay(ownerOf(TYPE_WHALE, 0), whaleFee);
    _pay(ownerOf(TYPE_COMPANY, companyId), parentFee);     
    _pay(owner, devFee);
    _pay(seller, sellerCommission);
    _pay(msg.sender, excess);
  }

  function _purchaseCompany(uint256 _cardId) private isUnlocked {
    (address seller, uint256 price) = getCompany(_cardId);
    uint256 excess = msg.value.sub(price);

    require(msg.sender != seller);

    uint256 totalPerc = 100+ownerCut+devCut+whaleCut;
    uint256 newPrice = price.mul(totalPerc) / 100;
    
    _transferCard(msg.sender, 1, _cardId);
    _editPriceOf(1, _cardId, newPrice);
    
    uint256 whaleFee = price.mul(whaleCut) / totalPerc;
    uint256 devFee = price.mul(devCut) / totalPerc;
    uint256 sellerCommission = price - (whaleFee + devFee);
    
    emit CardPurchased(1, _cardId, msg.sender, seller, price);
    
    _pay(ownerOf(0,0), whaleFee);
    _pay(owner, devFee);
    _pay(seller,sellerCommission);
    _pay(msg.sender, excess);
  }

  function _purchaseWhaleCard() private isUnlocked {
    (address seller, uint256 price) = getWhaleCard();
    uint256 excess = msg.value.sub(price);
    
    require(msg.sender != seller);

    uint256 totalPerc = 100 + ownerCut + devCut;
    uint256 devFee = price.mul(devCut) / totalPerc;

    uint256 sellerCommission = price - devFee;
    uint256 newPrice = price.mul(totalPerc) / 100;

    _transferCard(msg.sender, TYPE_WHALE, TYPE_WHALE);
    _editPriceOf(TYPE_WHALE, TYPE_WHALE, newPrice);
    
    emit CardPurchased(TYPE_WHALE, TYPE_WHALE, msg.sender, seller, price);
      
    _pay(owner, devFee);
    _pay(seller, sellerCommission);
    _pay(msg.sender, excess);
  }
/****************************************************************************************************/

/****************************************** PRIVATE RACE ********************************************/
  function _packPlayerData(address player, uint256 id) private pure returns(uint256 playerData) {
    playerData = (~(ADDR_M) & playerData) | (uint256(player) & ADDR_M);
    playerData = (~(RACE_ID_M*ADDR_S) & playerData) | ((id & RACE_ID_M) * ADDR_S);
  }

  function _unpackPlayerData(uint256 playerData) private pure returns(address player, uint256 id) {
    player = address(playerData & ADDR_M);
    id = (RACE_ID_M & (playerData / ADDR_S));
  }

  function _packRaceData(uint256 _bet, uint256 _winner, uint256 _pinkslip, uint256 _state) private pure returns(uint256 _raceData) {
    _raceData = (~(RACE_BET_M) & _raceData) | (_bet & RACE_BET_M);
    _raceData = (~(WINNER_M*RACE_WINNER_S) & _raceData) | ((_winner & WINNER_M) * RACE_WINNER_S);
    _raceData = (~(PINKSLIP_M*PINKSLIP_S) & _raceData) | ((_pinkslip & PINKSLIP_M) * PINKSLIP_S);
    _raceData = (~(STATE_M*STATE_S) & _raceData) | ((_state & STATE_M) * STATE_S);
  }

  function _unpackRaceData(uint256 _raceData) private pure returns(uint256 bet, uint256 winner, bool pinkslip, uint256 state) {
    bet = _raceData & RACE_BET_M;
    winner = (WINNER_M & (_raceData / RACE_WINNER_S));
    pinkslip = (PINKSLIP_M & (_raceData / PINKSLIP_S)) != 0;
    state = (STATE_M & (_raceData / STATE_S));
  }
  
  function _unpackRaceFinishData(uint256 _raceData) private pure returns(uint256 bet, bool pinkslip) {
    bet = _raceData & RACE_BET_M;
    pinkslip = (PINKSLIP_M & (_raceData / PINKSLIP_S)) != 0;
  }
  
  function _updateRaceWinner(uint256 raceId, uint256 winner) private {
    racesMap[raceId].metaData = (~(STATE_M*STATE_S) & racesMap[raceId].metaData) | ((RACE_FINISHED & STATE_M) * STATE_S);
    racesMap[raceId].metaData = (~(WINNER_M*RACE_WINNER_S) & racesMap[raceId].metaData) | ((winner & WINNER_M) * RACE_WINNER_S);
  }

  function _raceOpened(uint256 raceData) private pure returns (bool opened) {
    uint256 state = (STATE_M & (raceData / STATE_S));
    opened = ((state == RACE_OPENED));
  }

  function _getRacerCar(uint256 playerData) private pure returns (uint256 id) {
    id = (RACE_ID_M & (playerData / ADDR_S));
  }

  function _getRNGValue(uint256 id) private view returns(uint256 winner) {
    Race memory race = racesMap[id];
    uint256 p1Price = _priceOf(TYPE_CAR, _getRacerCar(race.player1Data));
    uint256 p2Price = _priceOf(TYPE_CAR, _getRacerCar(race.player2Data));
    uint256 _totalValue = p1Price.add(p2Price); 
    
    uint256 blockToCheck = block.number - 1;
    uint256 weight = (p1Price.mul(2) < _totalValue) ? _totalValue/2 : p1Price;
    //uint256 ratio = ((2**256)-1)/_totalValue;
    uint256 ratio = 115792089237316195423570985008687907853269984665640564039457584007913129639935/_totalValue;
    bytes32 blockHash = blockhash(blockToCheck);
    winner = (uint256(keccak256(abi.encodePacked(blockHash))) > weight*ratio) ? 2 : 1;
  }
/****************************************************************************************************/
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"finishedRaceCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_raceId","type":"uint256"}],"name":"getRace","outputs":[{"name":"_p1Data","type":"uint256"},{"name":"_p2Data","type":"uint256"},{"name":"_raceMetaData","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"},{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"transferCard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"carCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"getAd","outputs":[{"name":"text","type":"string"},{"name":"link","type":"string"},{"name":"seller","type":"address"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"itemOwner","type":"address"},{"name":"price","type":"uint256"}],"name":"_packItemData","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_raceId","type":"uint256"}],"name":"getFullRace","outputs":[{"name":"p1","type":"address"},{"name":"p1Id","type":"uint256"},{"name":"p2","type":"address"},{"name":"p2Id","type":"uint256"},{"name":"bet","type":"uint256"},{"name":"winner","type":"uint256"},{"name":"pinkslip","type":"bool"},{"name":"state","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_makeId","type":"uint256"}],"name":"addCar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"setting","type":"bool"}],"name":"setContractLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_companyId","type":"uint256"}],"name":"getCompany","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"makeCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_carId","type":"uint256"}],"name":"getCar","outputs":[{"name":"owners","type":"address[4]"},{"name":"price","type":"uint256"},{"name":"makeId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openRaceCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"purchaseCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"cuts","type":"uint256[6]"}],"name":"editCuts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWhaleCard","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_makeId","type":"uint256"}],"name":"getMake","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"_companyId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ownerAddr","type":"address"},{"name":"_price","type":"uint256"},{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"},{"name":"_text","type":"string"},{"name":"_link","type":"string"}],"name":"addAd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cardType","type":"uint256"},{"name":"_cardId","type":"uint256"},{"name":"adText","type":"string"},{"name":"adLink","type":"string"}],"name":"purchaseAd","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"companyCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCuts","outputs":[{"name":"cuts","type":"uint256[6]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_raceId","type":"uint256"},{"name":"_cardId","type":"uint256"}],"name":"joinRaceAndFinish","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_companyId","type":"uint256"}],"name":"addMake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"cardType","type":"uint256"},{"name":"cardId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"cardOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cardId","type":"uint256"},{"name":"_betAmount","type":"uint256"},{"name":"pinkSlip","type":"uint256"}],"name":"createRace","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"addCompany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"raceId","type":"uint256"},{"indexed":false,"name":"player1","type":"address"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"betAmount","type":"uint256"}],"name":"RaceCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"raceId","type":"uint256"},{"indexed":false,"name":"winner","type":"address"}],"name":"RaceFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"CardPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"}],"name":"CardTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cardType","type":"uint256"},{"indexed":false,"name":"cardId","type":"uint256"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"AdPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"makeId","type":"uint256"}],"name":"CarAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"companyId","type":"uint256"}],"name":"MakeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"}],"name":"CompanyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousManager","type":"address"},{"indexed":true,"name":"newManager","type":"address"}],"name":"ManagerTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"},{"indexed":false,"name":"state","type":"bool"}],"name":"ContractLockChanged","type":"event"}]

60806040526005600d8190556032600e55600f819055601055600a60115560026012556013805460ff191690556000805433600160a060020a031991821681178355600180549092161760a060020a60ff02191690556148a990819061006590396000f3006080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b654e7d811461019a5780630d71aba5146101c1578063119f2c9f146101f7578063297a1f561461022057806329e10c1314610235578063304c69ed1461034e5780633c5f2bf214610372578063481c6a75146103dc5780634cf2010e1461040d5780634fb2e45d1461042557806353ebf6bd1461044657806357d139171461046057806359b09b251461049b5780635e8be190146104b0578063606dc1041461050c57806368fcb6ee146105215780636d8758c71461052f5780637294789b146105725780637a4b7075146105875780637f09171b146105c757806389009ab0146106795780638da5cb5b1461070a5780638e75dd471461071f57806392bc3251146107345780639e6d4cd014610781578063a8cbb5de1461078f578063ba0e930a146107a7578063cf837fad146107c8578063d9dad80d146107f1578063d9e7c8ca1461080c578063e1c7392a1461081d578063ea7873db14610832575b600080fd5b3480156101a657600080fd5b506101af610847565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101d960043561084d565b60408051938452602084019290925282820152519081900360600190f35b34801561020357600080fd5b5061021e600160a060020a0360043516602435604435610899565b005b34801561022c57600080fd5b506101af6108d8565b34801561024157600080fd5b506102506004356024356108de565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156102af578181015183820152602001610297565b50505050905090810190601f1680156102dc5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561035a57600080fd5b506101af600160a060020a0360043516602435610aa2565b34801561037e57600080fd5b5061038a600435610acb565b60408051600160a060020a03998a168152602081019890985295909716868601526060860193909352608085019190915260a0840152151560c083015260e08201929092529051908190036101000190f35b3480156103e857600080fd5b506103f1610b5f565b60408051600160a060020a039092168252519081900360200190f35b34801561041957600080fd5b5061021e600435610b6e565b34801561043157600080fd5b5061021e600160a060020a0360043516610c84565b34801561045257600080fd5b5061021e6004351515610d0b565b34801561046c57600080fd5b50610478600435610da5565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156104a757600080fd5b506101af610dc9565b3480156104bc57600080fd5b506104c8600435610dcf565b6040518084608080838360005b838110156104ed5781810151838201526020016104d5565b5050505091909101938452505060208201526040805191829003019150f35b34801561051857600080fd5b506101af610e7b565b61021e600435602435610e81565b34801561053b57600080fd5b506040805160c081810190925261021e91369160049160c491908390600690839083908082843750939650610ee695505050505050565b34801561057e57600080fd5b50610478610fb3565b34801561059357600080fd5b5061059f600435610fca565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156105d357600080fd5b50604080516020601f60843560048181013592830184900484028501840190955281845261021e94600160a060020a03813516946024803595604435956064359536959460a494909391019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610ff29650505050505050565b604080516020600460443581810135601f810184900484028501840190955284845261021e94823594602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110c19650505050505050565b34801561071657600080fd5b506103f161132e565b34801561072b57600080fd5b506101af61133d565b34801561074057600080fd5b50610749611343565b604051808260c080838360005b8381101561076e578181015183820152602001610756565b5050505090500191505060405180910390f35b61021e60043560243561138a565b34801561079b57600080fd5b5061021e6004356115b9565b3480156107b357600080fd5b5061021e600160a060020a0360043516611663565b3480156107d457600080fd5b506107dd611701565b604080519115158252519081900360200190f35b3480156107fd57600080fd5b506103f1600435602435611711565b61021e6004356024356044356117a3565b34801561082957600080fd5b5061021e6118d8565b34801561083e57600080fd5b5061021e6134de565b600c5481565b600080600061085a614697565b50505060009182525060036020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b600154600160a060020a03163314806108bc5750600054600160a060020a031633145b15156108c757600080fd5b6108d2838383613580565b50505050565b60085481565b6060806000806108ec6146b9565b6000878152600760209081526040808320898452825291829020825160608101845281548152600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015610a325780601f10610a0757610100808354040283529160200191610a32565b820191906000526020600020905b815481529060010190602001808311610a1557829003601f168201915b5050505050815250509050610a4a8160000151613711565b90935091508115610a5b5781610a64565b6611c37937e080005b9150600160a060020a03831615610a7b5782610a88565b600054600160a060020a03165b925080604001519450806020015193505092959194509250565b6bffffffffffffffffffffffff811660a060020a02600160a060020a03831617805b5092915050565b600080600080600080600080610adf614697565b506000898152600360209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252610b2190613711565b6020830151919a509850610b3490613711565b60408301519198509650610b4790613739565b9b9d9a9c50989a979991989097909650945092505050565b600154600160a060020a031681565b600154600160a060020a0316331480610b915750600054600160a060020a031633145b1515610b9c57600080fd5b604080516101008101825260008054600160a060020a03166080830190815260a0830182905260c0830182905260e0830182905282526611c37937e0800060208084019190915282840185905260608301829052600854825260069052919091208151610c0c90829060046146db565b50602082810151600483015560408084015160058401556060909301516006909201805460ff1916921515929092179091556008805460018101909155825190815290810183905281517f04cdb7765ff1f03edce753a5ecf2102f5711ee6836cceab06fcb5c25631f7954929181900390910190a150565b600054600160a060020a03163314610c9b57600080fd5b600160a060020a0381161515610cb057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a0316331480610d2e5750600054600160a060020a031633145b1515610d3957600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a8315159081029190911790915560408051338152602081019290925280517fd1b3ccafda2b2f8613e51c6ac4f6e844932f92b0058df6d7ee800b152f55a00d9281900390910190a150565b6000818152600460205260408120548190610dbf90613711565b9094909350915050565b60095481565b610dd7614733565b600080610de2614752565b600085815260066020526040908190208151610100810190925281608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311610e0e5750505091835250506004820154602080830191909152600583015460408084019190915260069093015460ff16151560609092019190915282519083015192909101519097919650945092505050565b600b5481565b60015460a060020a900460ff1615610e9857600080fd5b811515610eac57610ea761379b565b610ee2565b6001821415610ebe57610ea7816138d5565b6002821415610ed057610ea781613a4b565b6003821415610ee257610ee281613c04565b5050565b600154600160a060020a0316331480610f095750600054600160a060020a031633145b1515610f1457600080fd5b805115610f22578051610f26565b600d545b600d55602081015115610f3d576020810151610f41565b600e545b600e55604081015115610f58576040810151610f5c565b600f545b600f55606081015115610f73576060810151610f77565b6010545b601055608081015115610f8e576080810151610f92565b6011545b60115560a081015115610fa95760a0810151610fad565b6012545b60125550565b600080610fc1600254613711565b90939092509050565b60008181526005602052604081205481908190610fe690613f25565b91969195509350915050565b600154600090600160a060020a03163314806110185750600054600160a060020a031633145b151561102357600080fd5b61102c87613f64565b801561103757508515155b151561104257600080fd5b61104c8787610aa2565b60408051606081018252828152602080820186815282840188905260008a8152600783528481208a8252835293909320825181559251805194955091936110999260018501920190614783565b50604082015180516110b5916002840191602090910190614783565b50505050505050505050565b6000806000806000806000806000600160149054906101000a900460ff161515156110eb57600080fd5b60008d81526007602090815260408083208f845290915290205461110e90613711565b98509850876000146111205787611129565b6611c37937e080005b9750600160a060020a03891615611140578861114d565b600054600160a060020a03165b985061115f348963ffffffff613f7216565b965061116b8d8d613f84565b151561117657600080fd5b8c151561118257600080fd5b601054600e54600d540101606490810196506111a4898863ffffffff613f9f16565b8115156111ad57fe5b049450856111c6600d548a613f9f90919063ffffffff16565b8115156111cf57fe5b049350856111e86010548a613f9f90919063ffffffff16565b8115156111f157fe5b049250828401880391506112053386610aa2565b90506060604051908101604052808281526020018b81526020018c815250600760008f815260200190815260200160002060008e815260200190815260200160002060008201518160000155602082015181600101908051906020019061126d929190614783565b5060408201518051611289916002840191602090910190614783565b5050604080518f8152602081018f90523381830152600160a060020a038c166060820152608081018b905290517fed9697d697377066f602632dbc407fbf90d3bad230e7f25cc21aeac8019f827492509081900360a00190a16112f56112ef8e8e611711565b85613fca565b60005461130b90600160a060020a031684613fca565b6113158983613fca565b61131f3388613fca565b50505050505050505050505050565b600054600160a060020a031681565b600a5481565b61134b6147fd565b60c060405190810160405280600d548152602001600e548152602001600f54815260200160105481526020016011548152602001601254815250905090565b6000806000806000806000600160149054906101000a900460ff161515156113b157600080fd5b3332146113bd57600080fd5b6113c93360038a61401e565b15156113d457600080fd5b6000888152600660208190526040909120015460ff16156113f457600080fd5b60008981526003602052604090206002015461140f9061404d565b60008b815260036020526040902060020154919850965061142f9061407e565b151561143a57600080fd5b600b8054600019019055600c80546001019055611457338961409b565b60008a8152600360205260409020600181019190915554600160a060020a03169450611482896140bf565b9350836001146114925733611494565b845b60008a8152600360205260409020549093506114b290849088614232565b506000898152600360205260409020600101546114d190849088614232565b506010546064906114f9906114ed8a600263ffffffff613f9f16565b9063ffffffff613f9f16565b81151561150257fe5b0491506115268261151a89600263ffffffff613f9f16565b9063ffffffff613f7216565b90506115328985614275565b604080518a8152600160a060020a038516602082015281517fee5eda7d4bc9f5e4bc6db101e046920476dafec9794c3c31ce87677e8a734551929181900390910190a161158e33611589348a63ffffffff613f7216565b613fca565b6000546115a490600160a060020a031683613fca565b6115ae8382613fca565b505050505050505050565b600154600160a060020a03163314806115dc5750600054600160a060020a031633145b15156115e757600080fd5b60005461160590600160a060020a0316662386f26fc10000836142e4565b6009805460009081526005602090815260409182902093909355815460018101909255805191825291810183905281517f4eed356ce980e19ea77547887d9dcaad0d384d4eba9c9e32be462c7f4a7cc4b1929181900390910190a150565b600154600160a060020a03163314806116865750600054600160a060020a031633145b151561169157600080fd5b61169a81613f64565b15156116a557600080fd5b600154604051600160a060020a038084169216907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015460a060020a900460ff1681565b600082151561172c5750600254600160a060020a031661179d565b60018314156117535750600081815260046020526040902054600160a060020a031661179d565b600283141561177a5750600081815260056020526040902054600160a060020a031661179d565b600383141561179d5750600081815260066020526040902054600160a060020a03165b92915050565b60015460009060a060020a900460ff16156117bd57600080fd5b6117cd348463ffffffff613f7216565b90506117db3360038661401e565b15156117e657600080fd5b6000848152600660208190526040909120015460ff161561180657600080fd5b600084815260066020819052604090912001805460ff1916600117905561182d338561409b565b600c54600b5401600090815260036020526040812091909155611854908490846001614345565b600c8054600b80549091016000908152600360209081526040918290206002019490945581546001808201909355925481519301909101825233928201929092528082018690526060810185905290517f9f3d2016362a557fe42fc00b84031dd0d51054378aee0929c635e566007ab40a9181900360800190a16108d23382613fca565b600154600160a060020a03163314806118fb5750600054600160a060020a031633145b151561190657600080fd5b60135460ff161561191657600080fd5b6013805460ff191660011790557b052afc75504bb800aebe42970dbb7d20cf7809dcf92e3a312b18e19c6002557b08380ff5038a0000e7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f27f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec557b08380ff5038a0000327bfb6286026bd1a017ba6693e0f47c8b98731b7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05557b0544c20615f60000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7557b036096a1708a0000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0557b016345785d8a00003177abbe93422c9525652b5d4e1101a248a997767f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557b036096a1708a0000e9cfdadea5fa5475861b62aa7d5daa493c3771227f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f05557fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556008600a557b2bba4416770700007396176ac6c1ef05d57180e7733b9188b3571d9a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc557b1bacfa7c654200003130259deedb3052e24fad9d5e1f490cb8cccaa07f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b557b118429e08ddc0000a2381223639181689cd6c46d38a1a4884bb6d83c7f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a8190557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0557b2bba441677070001049bed1598655b64f09e4835084fbc502ab1ad867f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5557b2bba441677070001d17e2bfe196470a9fefb567e8f5992214eb42f247f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d557b0b161406058800027396176ac6c1ef05d57180e7733b9188b3571d9a7f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518557b070440856e700002a2381223639181689cd6c46d38a1a4884bb6d83c7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460557b0b161406058800037396176ac6c1ef05d57180e7733b9188b3571d9a7ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e557b070440856e700003a2381223639181689cd6c46d38a1a4884bb6d83c7fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1557b070440856e7000055e4b61220039823aef8a54efbe47773194494f777fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d557b0b161406058800055e4b61220039823aef8a54efbe47773194494f777f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed5557b0470de4df82000063177abbe93422c9525652b5d4e1101a248a997767ff907e7e6656fa73566b18c1215272fe9fca2c55c552e62c923e21e000ac4b4e655600d6009556040805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152735c035bb4cb7dacbfee076a5e61aa39a10da2e95660a0830152600060c0830181905260e08301819052908252662e9e63b4be2000602083810191909152928201819052606082018190528052600690915280517f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f890611ed190829060046146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526001905291905281517f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3191611fa69183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527371f35825a3b1528859dfa1a64b24242bc0d1299060808201908152600060a0830181905260c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526002905291905281517f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29916120689183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527365a05c896d9a6f428b3936ac5db8df28752ccd44608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526003905291905281517f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d29161213d9183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc10000828701529281019190915294850181905281905291905281517fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed916122039183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc1000082870152600193820193909352958601829052905291905281517fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b916122ca9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc100008286015291810183905294850181905283905291905281517f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f9161238b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527362d5be95c330b512b35922e347319afd708da98160808201908152600060a0830181905260c0830181905260e0830181905290825266398dd06d5c8000828601529181018390529485018190526007905291905281517f4ced6d0d36392b04cc5d8761b1327b3bbba6e1089c77f60a9a9ca18e05e4f00e9161244d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733130259deedb3052e24fad9d5e1f490cb8cccaa060808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e0830181905290825266398dd06d5c8000828601529181018590529485018190526008905291905281517fb8d683c9d414f481826f3e7fe14b3ac6ae8c73450778287390c4bb8cb9f2e80b916125229183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152735e4b61220039823aef8a54efbe47773194494f7760c0830152737396176ac6c1ef05d57180e7733b9188b3571d9a60e08301528152664e57aaf7fc600081850152600a918101919091526000948101859052600990945291905281517fca4d0c6c94a9477136dd41a99cc19ecbe441c8f6609efe7c6fa65be007a47323916126209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f5608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a083015273558f42baf1a9352a955d301fa644ad0f619b97d960c0830152735e4b61220039823aef8a54efbe47773194494f7760e0830152815266839d85a09dc00081850152600b918101919091526000948101859052600a90945291905281517f4da38fc8e544afc56a4c2a17752b8ddb67d8e23ac4583c9029d2e2d1dbe6c9889161271e9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152918101839052948501819052600b905291905281517f85291c2e7881182c13e19eca9b58927ebfdc2c5d04882018eeb33d8241d35711916127f39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152737396176ac6c1ef05d57180e7733b9188b3571d9a60a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600792820192909252948501819052600c905291905281517f0b94fa1b86997cc1f1148bfbe25b674e8cefc7cc6f976aa8d7c7966bd4cca347916128cb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a92820192909252948501819052600d905291905281517f248457bacb20e239ae314d8db91c0f270e453c28ee138c84f97aea6cfcf9a499916129a39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f560808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052600e905291905281517faca6cdb4b5fe0ec50731a73f714dd191dc1911bfeb3f9eeb9e94ed0f6065ef8d91612a7b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600892820192909252948501819052600f905291905281517ff130046d53bc87538ab17e4752ba5f5082985eecc06ccb932c5a55e8242dd50291612b539183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a997766080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526009928201929092529485018190526010905291905281517f6fac4587033fa036e2426ad0134940d3a683633cc2b2b7862f39195344f163d191612c2b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526011905291905281517f84a4048ee77615560f9afb39551a46e123dd0dd6c928af241dc565271d03256991612d039183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526003928201929092529485018190526012905291905281517fee4750d043edce57577a49a1f0c4b389e3b8c38c27dc693bc6b7154c0728077191612ddb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de8608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018590529485018190526013905291905281517fb72a5233413dd9985e70abb239a7ba917e489fbf2ece87f523c6e26971cc821f91612eb09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273e9cfdadea5fa5475861b62aa7d5daa493c37712260a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a928201929092529485018190526014905291905281517f098d468efb4f874d617491296c759dc9ae46efb517fe36bcf30699ad3f714c0f91612f889183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de860808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526015905291905281517feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f9161305d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526016905291905281517f7d35cc2b0520994422695eb24e3bf4f74e9cba2704cae72ecd9ec54409a56afb916131359183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273ac2b4b94eca37cb7c9cf7062fefb2792c57927316080820190815273263b604509d6a825719859ee458b2d91fb7d330d60a0830152733177abbe93422c9525652b5d4e1101a248a9977660c0830152600060e08301819052908252662f31ba4532400082860152600c928201929092529485018190526017905291905281517f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed916132209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526018905291905281517f7ca528807b45d0675df0059116d2304ca9c7f495d9ab623cd80c79f11948b856916132f89183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273504af27f1cef15772370b7c04b5d9d593ee729f560a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526019905291905281517ff377e614ebf060ffd3a592667b14b65ef761b258b68bf422a9c7bfae70ee46e2916133d09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252739bd750685bf5bfce24d1b8de03a1ff3d2631ef5a60808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052601a905291905281517f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd916134a89183916146db565b5060208201516004820155604082015160058201556060909101516006909101805460ff1916911515919091179055601b600855565b600154600160a060020a03163314806135015750600054600160a060020a031633145b151561350c57600080fd5b60005461352a90600160a060020a031667016345785d8a0000610aa2565b600a8054600090815260046020908152604091829020939093558154600181019092558051918252517fe536f9ebee2df81f2fd45936316633380f27a487a21914f44fcd1be0cbeb92f3929181900390910190a1565b60008061358d8484613f84565b151561359857600080fd5b6135a28484611711565b905080600160a060020a031685600160a060020a031614156135c3576136b9565b8315156135ea5760028054600160a060020a031916600160a060020a0387161790556136b9565b600184141561361f5760008381526004602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60028414156136545760008381526005602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60038414156136b9576000838152600660205260409020600281018054600383018054600160a060020a0319908116600160a060020a038085169190911790925560018501805493821684841617909455845492811683831617909355881691161790555b6040805185815260208101859052600160a060020a03808816828401528316606082015290517f757cbc4f2614cb83d98b4f0c93f5e2a81a376e6157c55c46063a4591b4a4d92d9181900360800190a1509392505050565b600160a060020a038116600060a060020a83046bffffffffffffffffffffffff169050915091565b6fffffffffffffffffffffffffffffffff81169160037001000000000000000000000000000000008304811692600170040000000000000000000000000000000082041615159270080000000000000000000000000000000090910490911690565b6000806000806000806000600160149054906101000a900460ff161515156137c257600080fd5b6137ca610fb3565b90975095506137df348763ffffffff613f7216565b945033600160a060020a03881614156137f757600080fd5b601054600e5481016064019450849061381790889063ffffffff613f9f16565b81151561382057fe5b0492508286039150606461383a878663ffffffff613f9f16565b81151561384357fe5b04905061385233600080613580565b5061385f600080836143da565b60408051600080825260208201523381830152600160a060020a038916606082015260808101889052905160008051602061485e8339815191529181900360a00190a16000546138b890600160a060020a031684613fca565b6138c28783613fca565b6138cc3386613fca565b50505050505050565b600080600080600080600080600160149054906101000a900460ff161515156138fd57600080fd5b61390689610da5565b909850965061391b348863ffffffff613f7216565b955033600160a060020a038916141561393357600080fd5b600f54601054600e54010160649081019550613955888763ffffffff613f9f16565b81151561395e57fe5b04935061396d3360018b613580565b5061397a60018a866143da565b84613990600f5489613f9f90919063ffffffff16565b81151561399957fe5b049250846139b260105489613f9f90919063ffffffff16565b8115156139bb57fe5b6040805160018152602081018d90523381830152600160a060020a038c166060820152608081018b905290519290910493508484018903925060008051602061485e833981519152919081900360a00190a1613a21613a1b600080611711565b84613fca565b600054613a3790600160a060020a031683613fca565b613a418882613fca565b6115ae3387613fca565b600080600080600080600080600080600160149054906101000a900460ff16151515613a7657600080fd5b613a7f8b610fca565b919b5099509750613a96348a63ffffffff613f7216565b965033600160a060020a038b161415613aae57600080fd5b600f54601154601054600e54606401010101955085613ad86011548b613f9f90919063ffffffff16565b811515613ae157fe5b04945085613afa600f548b613f9f90919063ffffffff16565b811515613b0357fe5b04935085613b1c6010548b613f9f90919063ffffffff16565b811515613b2557fe5b0492506064613b3a8a8863ffffffff613f9f16565b811515613b4357fe5b0491505083830182018803613b5a3360028d613580565b50613b6760028c846143da565b6040805160028152602081018d90523381830152600160a060020a038c166060820152608081018b9052905160008051602061485e8339815191529181900360a00190a1613bb96112ef600080611711565b613bcd613bc760018a611711565b86613fca565b600054613be390600160a060020a031684613fca565b613bed8a82613fca565b613bf73388613fca565b5050505050505050505050565b613c0c614752565b6000828152600660205260408082208151610100810190925282918291829182918291829182919081608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311613c46575050509183525050600482015460208201526005820154604082015260069091015460ff16151560609182015281015190995015613ca057600080fd5b6020890151613cb690349063ffffffff613f7216565b895151909850600160a060020a0316331415613cd157600080fd5b613cda8a6144c7565b60125402601154600202600f54601054600e5460640101010101965086613d106011548b60200151613f9f90919063ffffffff16565b811515613d1957fe5b04955086613d366012548b60200151613f9f90919063ffffffff16565b811515613d3f57fe5b04945086613d5c600f548b60200151613f9f90919063ffffffff16565b811515613d6557fe5b04935086613d826010548b60200151613f9f90919063ffffffff16565b811515613d8b57fe5b049250838387600202613d9d8d6144c7565b8802010101896020015103915060a060020a600560008b60400151815260200190815260200160002054811515613dd057fe5b04601f16905060008051602061485e83398151915260038b338c600001516000600481101515613dfc57fe5b60200201518d602001516040518086815260200185815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a1613e673360038c613580565b50613e9660038b6064613e878b8e60200151613f9f90919063ffffffff16565b811515613e9057fe5b046143da565b613eaa613ea4600183611711565b87613fca565b613ebc613ea460028b60400151611711565b885151613ec99083613fca565b8851613edd9060015b602002015186613fca565b8851613eea906002613ed2565b8851613ef7906003613ed2565b613f056112ef600080611711565b600054613f1b90600160a060020a031684613fca565b6110b53389613fca565b600160a060020a0381169160a060020a8204601f16917420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff1690565b600160a060020a0316151590565b600082821115613f7e57fe5b50900390565b6000613f98613f938484611711565b613f64565b9392505050565b600080831515613fb25760009150610ac4565b50828202828482811515613fc257fe5b0414613f9857fe5b613fd382613f64565b8015613fde57508015155b15610ee257604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015614019573d6000803e3d6000fd5b505050565b60008061402b8484611711565b905080600160a060020a031685600160a060020a03161491505b509392505050565b6fffffffffffffffffffffffffffffffff811691700400000000000000000000000000000000909104600116151590565b700800000000000000000000000000000000900460031660011490565b6bffffffffffffffffffffffff1660a060020a02600160a060020a03919091161790565b60006140c9614697565b6000806000806000806000600360008b8152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050975061412a60036141258a600001516145be565b6145d6565b965061413e60036141258a602001516145be565b9550614150878763ffffffff61468816565b9450600019430193508461416b88600263ffffffff613f9f16565b10614176578661417b565b600285045b92508460001981151561418a57fe5b604080518740602080830182905283518084038201815292840193849052825195909404965094508686029390928291908401908083835b602083106141e15780518252601f1990920191602091820191016141c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190041161421e576001614221565b60025b60ff169a9950505050505050505050565b60008061423e846145be565b600081815260066020819052604090912001805460ff19169055905082156140455761426c85600383613580565b50509392505050565b60009182526003602081905260409092206002018054700300000000000000000000000000000000197018000000000000000000000000000000001990911670180000000000000000000000000000000017169190921670010000000000000000000000000000000002179055565b742000000000000000000000000000000000000000006b07ffffffffffffffffffffff90921691909102600160a060020a039290921660a060020a601f929092169190910217741fffffffffffffffffffffffffffffffffffffffff161790565b70180000000000000000000000000000000019700400000000000000000000000000000000196003948516700100000000000000000000000000000000026fffffffffffffffffffffffffffffffff9690961695909517949094166001929092167004000000000000000000000000000000000291909117929092169116700800000000000000000000000000000000021790565b82151561440b5760028054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b600183141561444a5760008281526004602052604090208054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b60028314156144a85760008281526005602052604090208054741fffffffffffffffffffffffffffffffffffffffff166b07ffffffffffffffffffffff83167420000000000000000000000000000000000000000002179055614019565b6003831415614019576000918252600660205260409091206004015550565b60006144d1614752565b6000838152600660205260408082208151610100810190925281608081018260048282826020028201915b8154600160a060020a031681526001909101906020018083116144fc575050509183525050600482015460208201526005820154604082015260069091015460ff161515606090910152805190925061455c9060015b6020020151613f64565b61456757600061456a565b60015b825160ff91909116915061457f906002614552565b61458a57600061458d565b60015b825160ff9190911691909101906145a5906003614552565b6145b05760006145b3565b60015b60ff16019392505050565b60a060020a90046bffffffffffffffffffffffff1690565b60008215156145ff5760025460a060020a905b046bffffffffffffffffffffffff16905061179d565b60018314156146225760008281526004602052604090205460a060020a906145e9565b6002831415614667576000828152600560205260409020547420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff16905061179d565b600383141561179d5750600090815260066020526040902060040154919050565b600082820183811015613f9857fe5b6060604051908101604052806000815260200160008152602001600081525090565b6060604051908101604052806000815260200160608152602001606081525090565b8260048101928215614723579160200282015b828111156147235782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906146ee565b5061472f92915061481c565b5090565b6080604051908101604052806004906020820280388339509192915050565b60e060405190810160405280614766614733565b815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147c457805160ff19168380011785556147f1565b828001600101855582156147f1579182015b828111156147f15782518255916020019190600101906147d6565b5061472f929150614843565b60c0604051908101604052806006906020820280388339509192915050565b61484091905b8082111561472f578054600160a060020a0319168155600101614822565b90565b61484091905b8082111561472f57600081556001016148495600fd18032b1f4495899c97de852a729c98c1c58331a207e8127c9078bcccda6e70a165627a7a723058205b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed0029

Deployed Bytecode

0x6080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b654e7d811461019a5780630d71aba5146101c1578063119f2c9f146101f7578063297a1f561461022057806329e10c1314610235578063304c69ed1461034e5780633c5f2bf214610372578063481c6a75146103dc5780634cf2010e1461040d5780634fb2e45d1461042557806353ebf6bd1461044657806357d139171461046057806359b09b251461049b5780635e8be190146104b0578063606dc1041461050c57806368fcb6ee146105215780636d8758c71461052f5780637294789b146105725780637a4b7075146105875780637f09171b146105c757806389009ab0146106795780638da5cb5b1461070a5780638e75dd471461071f57806392bc3251146107345780639e6d4cd014610781578063a8cbb5de1461078f578063ba0e930a146107a7578063cf837fad146107c8578063d9dad80d146107f1578063d9e7c8ca1461080c578063e1c7392a1461081d578063ea7873db14610832575b600080fd5b3480156101a657600080fd5b506101af610847565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101d960043561084d565b60408051938452602084019290925282820152519081900360600190f35b34801561020357600080fd5b5061021e600160a060020a0360043516602435604435610899565b005b34801561022c57600080fd5b506101af6108d8565b34801561024157600080fd5b506102506004356024356108de565b60405180806020018060200185600160a060020a0316600160a060020a03168152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156102af578181015183820152602001610297565b50505050905090810190601f1680156102dc5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561035a57600080fd5b506101af600160a060020a0360043516602435610aa2565b34801561037e57600080fd5b5061038a600435610acb565b60408051600160a060020a03998a168152602081019890985295909716868601526060860193909352608085019190915260a0840152151560c083015260e08201929092529051908190036101000190f35b3480156103e857600080fd5b506103f1610b5f565b60408051600160a060020a039092168252519081900360200190f35b34801561041957600080fd5b5061021e600435610b6e565b34801561043157600080fd5b5061021e600160a060020a0360043516610c84565b34801561045257600080fd5b5061021e6004351515610d0b565b34801561046c57600080fd5b50610478600435610da5565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156104a757600080fd5b506101af610dc9565b3480156104bc57600080fd5b506104c8600435610dcf565b6040518084608080838360005b838110156104ed5781810151838201526020016104d5565b5050505091909101938452505060208201526040805191829003019150f35b34801561051857600080fd5b506101af610e7b565b61021e600435602435610e81565b34801561053b57600080fd5b506040805160c081810190925261021e91369160049160c491908390600690839083908082843750939650610ee695505050505050565b34801561057e57600080fd5b50610478610fb3565b34801561059357600080fd5b5061059f600435610fca565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156105d357600080fd5b50604080516020601f60843560048181013592830184900484028501840190955281845261021e94600160a060020a03813516946024803595604435956064359536959460a494909391019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610ff29650505050505050565b604080516020600460443581810135601f810184900484028501840190955284845261021e94823594602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110c19650505050505050565b34801561071657600080fd5b506103f161132e565b34801561072b57600080fd5b506101af61133d565b34801561074057600080fd5b50610749611343565b604051808260c080838360005b8381101561076e578181015183820152602001610756565b5050505090500191505060405180910390f35b61021e60043560243561138a565b34801561079b57600080fd5b5061021e6004356115b9565b3480156107b357600080fd5b5061021e600160a060020a0360043516611663565b3480156107d457600080fd5b506107dd611701565b604080519115158252519081900360200190f35b3480156107fd57600080fd5b506103f1600435602435611711565b61021e6004356024356044356117a3565b34801561082957600080fd5b5061021e6118d8565b34801561083e57600080fd5b5061021e6134de565b600c5481565b600080600061085a614697565b50505060009182525060036020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b600154600160a060020a03163314806108bc5750600054600160a060020a031633145b15156108c757600080fd5b6108d2838383613580565b50505050565b60085481565b6060806000806108ec6146b9565b6000878152600760209081526040808320898452825291829020825160608101845281548152600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015610a325780601f10610a0757610100808354040283529160200191610a32565b820191906000526020600020905b815481529060010190602001808311610a1557829003601f168201915b5050505050815250509050610a4a8160000151613711565b90935091508115610a5b5781610a64565b6611c37937e080005b9150600160a060020a03831615610a7b5782610a88565b600054600160a060020a03165b925080604001519450806020015193505092959194509250565b6bffffffffffffffffffffffff811660a060020a02600160a060020a03831617805b5092915050565b600080600080600080600080610adf614697565b506000898152600360209081526040918290208251606081018452815480825260018301549382019390935260029091015492810192909252610b2190613711565b6020830151919a509850610b3490613711565b60408301519198509650610b4790613739565b9b9d9a9c50989a979991989097909650945092505050565b600154600160a060020a031681565b600154600160a060020a0316331480610b915750600054600160a060020a031633145b1515610b9c57600080fd5b604080516101008101825260008054600160a060020a03166080830190815260a0830182905260c0830182905260e0830182905282526611c37937e0800060208084019190915282840185905260608301829052600854825260069052919091208151610c0c90829060046146db565b50602082810151600483015560408084015160058401556060909301516006909201805460ff1916921515929092179091556008805460018101909155825190815290810183905281517f04cdb7765ff1f03edce753a5ecf2102f5711ee6836cceab06fcb5c25631f7954929181900390910190a150565b600054600160a060020a03163314610c9b57600080fd5b600160a060020a0381161515610cb057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a0316331480610d2e5750600054600160a060020a031633145b1515610d3957600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a8315159081029190911790915560408051338152602081019290925280517fd1b3ccafda2b2f8613e51c6ac4f6e844932f92b0058df6d7ee800b152f55a00d9281900390910190a150565b6000818152600460205260408120548190610dbf90613711565b9094909350915050565b60095481565b610dd7614733565b600080610de2614752565b600085815260066020526040908190208151610100810190925281608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311610e0e5750505091835250506004820154602080830191909152600583015460408084019190915260069093015460ff16151560609092019190915282519083015192909101519097919650945092505050565b600b5481565b60015460a060020a900460ff1615610e9857600080fd5b811515610eac57610ea761379b565b610ee2565b6001821415610ebe57610ea7816138d5565b6002821415610ed057610ea781613a4b565b6003821415610ee257610ee281613c04565b5050565b600154600160a060020a0316331480610f095750600054600160a060020a031633145b1515610f1457600080fd5b805115610f22578051610f26565b600d545b600d55602081015115610f3d576020810151610f41565b600e545b600e55604081015115610f58576040810151610f5c565b600f545b600f55606081015115610f73576060810151610f77565b6010545b601055608081015115610f8e576080810151610f92565b6011545b60115560a081015115610fa95760a0810151610fad565b6012545b60125550565b600080610fc1600254613711565b90939092509050565b60008181526005602052604081205481908190610fe690613f25565b91969195509350915050565b600154600090600160a060020a03163314806110185750600054600160a060020a031633145b151561102357600080fd5b61102c87613f64565b801561103757508515155b151561104257600080fd5b61104c8787610aa2565b60408051606081018252828152602080820186815282840188905260008a8152600783528481208a8252835293909320825181559251805194955091936110999260018501920190614783565b50604082015180516110b5916002840191602090910190614783565b50505050505050505050565b6000806000806000806000806000600160149054906101000a900460ff161515156110eb57600080fd5b60008d81526007602090815260408083208f845290915290205461110e90613711565b98509850876000146111205787611129565b6611c37937e080005b9750600160a060020a03891615611140578861114d565b600054600160a060020a03165b985061115f348963ffffffff613f7216565b965061116b8d8d613f84565b151561117657600080fd5b8c151561118257600080fd5b601054600e54600d540101606490810196506111a4898863ffffffff613f9f16565b8115156111ad57fe5b049450856111c6600d548a613f9f90919063ffffffff16565b8115156111cf57fe5b049350856111e86010548a613f9f90919063ffffffff16565b8115156111f157fe5b049250828401880391506112053386610aa2565b90506060604051908101604052808281526020018b81526020018c815250600760008f815260200190815260200160002060008e815260200190815260200160002060008201518160000155602082015181600101908051906020019061126d929190614783565b5060408201518051611289916002840191602090910190614783565b5050604080518f8152602081018f90523381830152600160a060020a038c166060820152608081018b905290517fed9697d697377066f602632dbc407fbf90d3bad230e7f25cc21aeac8019f827492509081900360a00190a16112f56112ef8e8e611711565b85613fca565b60005461130b90600160a060020a031684613fca565b6113158983613fca565b61131f3388613fca565b50505050505050505050505050565b600054600160a060020a031681565b600a5481565b61134b6147fd565b60c060405190810160405280600d548152602001600e548152602001600f54815260200160105481526020016011548152602001601254815250905090565b6000806000806000806000600160149054906101000a900460ff161515156113b157600080fd5b3332146113bd57600080fd5b6113c93360038a61401e565b15156113d457600080fd5b6000888152600660208190526040909120015460ff16156113f457600080fd5b60008981526003602052604090206002015461140f9061404d565b60008b815260036020526040902060020154919850965061142f9061407e565b151561143a57600080fd5b600b8054600019019055600c80546001019055611457338961409b565b60008a8152600360205260409020600181019190915554600160a060020a03169450611482896140bf565b9350836001146114925733611494565b845b60008a8152600360205260409020549093506114b290849088614232565b506000898152600360205260409020600101546114d190849088614232565b506010546064906114f9906114ed8a600263ffffffff613f9f16565b9063ffffffff613f9f16565b81151561150257fe5b0491506115268261151a89600263ffffffff613f9f16565b9063ffffffff613f7216565b90506115328985614275565b604080518a8152600160a060020a038516602082015281517fee5eda7d4bc9f5e4bc6db101e046920476dafec9794c3c31ce87677e8a734551929181900390910190a161158e33611589348a63ffffffff613f7216565b613fca565b6000546115a490600160a060020a031683613fca565b6115ae8382613fca565b505050505050505050565b600154600160a060020a03163314806115dc5750600054600160a060020a031633145b15156115e757600080fd5b60005461160590600160a060020a0316662386f26fc10000836142e4565b6009805460009081526005602090815260409182902093909355815460018101909255805191825291810183905281517f4eed356ce980e19ea77547887d9dcaad0d384d4eba9c9e32be462c7f4a7cc4b1929181900390910190a150565b600154600160a060020a03163314806116865750600054600160a060020a031633145b151561169157600080fd5b61169a81613f64565b15156116a557600080fd5b600154604051600160a060020a038084169216907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a360018054600160a060020a031916600160a060020a0392909216919091179055565b60015460a060020a900460ff1681565b600082151561172c5750600254600160a060020a031661179d565b60018314156117535750600081815260046020526040902054600160a060020a031661179d565b600283141561177a5750600081815260056020526040902054600160a060020a031661179d565b600383141561179d5750600081815260066020526040902054600160a060020a03165b92915050565b60015460009060a060020a900460ff16156117bd57600080fd5b6117cd348463ffffffff613f7216565b90506117db3360038661401e565b15156117e657600080fd5b6000848152600660208190526040909120015460ff161561180657600080fd5b600084815260066020819052604090912001805460ff1916600117905561182d338561409b565b600c54600b5401600090815260036020526040812091909155611854908490846001614345565b600c8054600b80549091016000908152600360209081526040918290206002019490945581546001808201909355925481519301909101825233928201929092528082018690526060810185905290517f9f3d2016362a557fe42fc00b84031dd0d51054378aee0929c635e566007ab40a9181900360800190a16108d23382613fca565b600154600160a060020a03163314806118fb5750600054600160a060020a031633145b151561190657600080fd5b60135460ff161561191657600080fd5b6013805460ff191660011790557b052afc75504bb800aebe42970dbb7d20cf7809dcf92e3a312b18e19c6002557b08380ff5038a0000e7eca2a94e9d59848f3c1e1ffaacd881d4c3a4f27f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec557b08380ff5038a0000327bfb6286026bd1a017ba6693e0f47c8b98731b7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05557b0544c20615f60000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a7557b036096a1708a0000ef764bac8a438e7e498c2e5fccf0f174c3e3f8db7f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0557b016345785d8a00003177abbe93422c9525652b5d4e1101a248a997767f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557b036096a1708a0000e9cfdadea5fa5475861b62aa7d5daa493c3771227f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f05557fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e551556008600a557b2bba4416770700007396176ac6c1ef05d57180e7733b9188b3571d9a7f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc557b1bacfa7c654200003130259deedb3052e24fad9d5e1f490cb8cccaa07f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b557b118429e08ddc0000a2381223639181689cd6c46d38a1a4884bb6d83c7f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a8190557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc0557b2bba441677070001049bed1598655b64f09e4835084fbc502ab1ad867f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5557b2bba441677070001d17e2bfe196470a9fefb567e8f5992214eb42f247f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d557b0b161406058800027396176ac6c1ef05d57180e7733b9188b3571d9a7f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac518557b070440856e700002a2381223639181689cd6c46d38a1a4884bb6d83c7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460557b0b161406058800037396176ac6c1ef05d57180e7733b9188b3571d9a7ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e557b070440856e700003a2381223639181689cd6c46d38a1a4884bb6d83c7fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1557b070440856e7000055e4b61220039823aef8a54efbe47773194494f777fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d557b0b161406058800055e4b61220039823aef8a54efbe47773194494f777f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed5557b0470de4df82000063177abbe93422c9525652b5d4e1101a248a997767ff907e7e6656fa73566b18c1215272fe9fca2c55c552e62c923e21e000ac4b4e655600d6009556040805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152735c035bb4cb7dacbfee076a5e61aa39a10da2e95660a0830152600060c0830181905260e08301819052908252662e9e63b4be2000602083810191909152928201819052606082018190528052600690915280517f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f890611ed190829060046146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526001905291905281517f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a3191611fa69183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527371f35825a3b1528859dfa1a64b24242bc0d1299060808201908152600060a0830181905260c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526002905291905281517f8819ef417987f8ae7a81f42cdfb18815282fe989326fbff903d13cf0e03ace29916120689183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527365a05c896d9a6f428b3936ac5db8df28752ccd44608082019081527371f35825a3b1528859dfa1a64b24242bc0d1299060a0830152600060c0830181905260e08301819052908252662e9e63b4be2000828601529181018290529485018190526003905291905281517f75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d29161213d9183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc10000828701529281019190915294850181905281905291905281517fc5069e24aaadb2addc3e52e868fcf3f4f8acf5a87e24300992fd4540c2a87eed916122039183916146db565b506020828101516004838101919091556040808501516005808601919091556060958601516006958601805460ff1916911515919091179055815161010081018352733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc1000082870152600193820193909352958601829052905291905281517fbfd358e93f18da3ed276c3afdbdba00b8f0b6008a03476a6a86bd6320ee6938b916122ca9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a9977660808201908152600060a0830181905260c0830181905260e08301819052908252662386f26fc100008286015291810183905294850181905283905291905281517f697b2bd7bb2984c4e0dc14c79c987d37818484a62958b9c45a0e8b962f20650f9161238b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527362d5be95c330b512b35922e347319afd708da98160808201908152600060a0830181905260c0830181905260e0830181905290825266398dd06d5c8000828601529181018390529485018190526007905291905281517f4ced6d0d36392b04cc5d8761b1327b3bbba6e1089c77f60a9a9ca18e05e4f00e9161244d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733130259deedb3052e24fad9d5e1f490cb8cccaa060808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e0830181905290825266398dd06d5c8000828601529181018590529485018190526008905291905281517fb8d683c9d414f481826f3e7fe14b3ac6ae8c73450778287390c4bb8cb9f2e80b916125229183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff19169115159190911790558051610100810182527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152735e4b61220039823aef8a54efbe47773194494f7760c0830152737396176ac6c1ef05d57180e7733b9188b3571d9a60e08301528152664e57aaf7fc600081850152600a918101919091526000948101859052600990945291905281517fca4d0c6c94a9477136dd41a99cc19ecbe441c8f6609efe7c6fa65be007a47323916126209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f5608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a083015273558f42baf1a9352a955d301fa644ad0f619b97d960c0830152735e4b61220039823aef8a54efbe47773194494f7760e0830152815266839d85a09dc00081850152600b918101919091526000948101859052600a90945291905281517f4da38fc8e544afc56a4c2a17752b8ddb67d8e23ac4583c9029d2e2d1dbe6c9889161271e9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252737396176ac6c1ef05d57180e7733b9188b3571d9a60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152918101839052948501819052600b905291905281517f85291c2e7881182c13e19eca9b58927ebfdc2c5d04882018eeb33d8241d35711916127f39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152737396176ac6c1ef05d57180e7733b9188b3571d9a60a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600792820192909252948501819052600c905291905281517f0b94fa1b86997cc1f1148bfbe25b674e8cefc7cc6f976aa8d7c7966bd4cca347916128cb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a92820192909252948501819052600d905291905281517f248457bacb20e239ae314d8db91c0f270e453c28ee138c84f97aea6cfcf9a499916129a39183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273504af27f1cef15772370b7c04b5d9d593ee729f560808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052600e905291905281517faca6cdb4b5fe0ec50731a73f714dd191dc1911bfeb3f9eeb9e94ed0f6065ef8d91612a7b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad60808201908152735e4b61220039823aef8a54efbe47773194494f7760a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600892820192909252948501819052600f905291905281517ff130046d53bc87538ab17e4752ba5f5082985eecc06ccb932c5a55e8242dd50291612b539183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252733177abbe93422c9525652b5d4e1101a248a997766080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526009928201929092529485018190526010905291905281517f6fac4587033fa036e2426ad0134940d3a683633cc2b2b7862f39195344f163d191612c2b9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273558f42baf1a9352a955d301fa644ad0f619b97d960a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526011905291905281517f84a4048ee77615560f9afb39551a46e123dd0dd6c928af241dc565271d03256991612d039183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526003928201929092529485018190526012905291905281517fee4750d043edce57577a49a1f0c4b389e3b8c38c27dc693bc6b7154c0728077191612ddb9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de8608082019081527319fc7935fd9d0bc335b4d0df3be86ed51ad2e62a60a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018590529485018190526013905291905281517fb72a5233413dd9985e70abb239a7ba917e489fbf2ece87f523c6e26971cc821f91612eb09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273e9cfdadea5fa5475861b62aa7d5daa493c37712260a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600a928201929092529485018190526014905291905281517f098d468efb4f874d617491296c759dc9ae46efb517fe36bcf30699ad3f714c0f91612f889183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273308e9c99ac194101c971ffcaca897ac943843de860808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601529181018290529485018190526015905291905281517feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f9161305d9183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526016905291905281517f7d35cc2b0520994422695eb24e3bf4f74e9cba2704cae72ecd9ec54409a56afb916131359183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff191691151591909117905580516101008101825273ac2b4b94eca37cb7c9cf7062fefb2792c57927316080820190815273263b604509d6a825719859ee458b2d91fb7d330d60a0830152733177abbe93422c9525652b5d4e1101a248a9977660c0830152600060e08301819052908252662f31ba4532400082860152600c928201929092529485018190526017905291905281517f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed916132209183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273308e9c99ac194101c971ffcaca897ac943843de860a0830152600060c0830181905260e08301819052908252661cc6e836ae4000828601526002928201929092529485018190526018905291905281517f7ca528807b45d0675df0059116d2304ca9c7f495d9ab623cd80c79f11948b856916132f89183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252735632ca98e5788eddb2397757aa82d1ed6171e5ad6080820190815273504af27f1cef15772370b7c04b5d9d593ee729f560a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600c928201929092529485018190526019905291905281517ff377e614ebf060ffd3a592667b14b65ef761b258b68bf422a9c7bfae70ee46e2916133d09183916146db565b5060208281015160048381019190915560408085015160058501556060948501516006948501805460ff1916911515919091179055805161010081018252739bd750685bf5bfce24d1b8de03a1ff3d2631ef5a60808201908152733177abbe93422c9525652b5d4e1101a248a9977660a0830152600060c0830181905260e08301819052908252661cc6e836ae400082860152600b92820192909252948501819052601a905291905281517f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd916134a89183916146db565b5060208201516004820155604082015160058201556060909101516006909101805460ff1916911515919091179055601b600855565b600154600160a060020a03163314806135015750600054600160a060020a031633145b151561350c57600080fd5b60005461352a90600160a060020a031667016345785d8a0000610aa2565b600a8054600090815260046020908152604091829020939093558154600181019092558051918252517fe536f9ebee2df81f2fd45936316633380f27a487a21914f44fcd1be0cbeb92f3929181900390910190a1565b60008061358d8484613f84565b151561359857600080fd5b6135a28484611711565b905080600160a060020a031685600160a060020a031614156135c3576136b9565b8315156135ea5760028054600160a060020a031916600160a060020a0387161790556136b9565b600184141561361f5760008381526004602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60028414156136545760008381526005602052604090208054600160a060020a031916600160a060020a0387161790556136b9565b60038414156136b9576000838152600660205260409020600281018054600383018054600160a060020a0319908116600160a060020a038085169190911790925560018501805493821684841617909455845492811683831617909355881691161790555b6040805185815260208101859052600160a060020a03808816828401528316606082015290517f757cbc4f2614cb83d98b4f0c93f5e2a81a376e6157c55c46063a4591b4a4d92d9181900360800190a1509392505050565b600160a060020a038116600060a060020a83046bffffffffffffffffffffffff169050915091565b6fffffffffffffffffffffffffffffffff81169160037001000000000000000000000000000000008304811692600170040000000000000000000000000000000082041615159270080000000000000000000000000000000090910490911690565b6000806000806000806000600160149054906101000a900460ff161515156137c257600080fd5b6137ca610fb3565b90975095506137df348763ffffffff613f7216565b945033600160a060020a03881614156137f757600080fd5b601054600e5481016064019450849061381790889063ffffffff613f9f16565b81151561382057fe5b0492508286039150606461383a878663ffffffff613f9f16565b81151561384357fe5b04905061385233600080613580565b5061385f600080836143da565b60408051600080825260208201523381830152600160a060020a038916606082015260808101889052905160008051602061485e8339815191529181900360a00190a16000546138b890600160a060020a031684613fca565b6138c28783613fca565b6138cc3386613fca565b50505050505050565b600080600080600080600080600160149054906101000a900460ff161515156138fd57600080fd5b61390689610da5565b909850965061391b348863ffffffff613f7216565b955033600160a060020a038916141561393357600080fd5b600f54601054600e54010160649081019550613955888763ffffffff613f9f16565b81151561395e57fe5b04935061396d3360018b613580565b5061397a60018a866143da565b84613990600f5489613f9f90919063ffffffff16565b81151561399957fe5b049250846139b260105489613f9f90919063ffffffff16565b8115156139bb57fe5b6040805160018152602081018d90523381830152600160a060020a038c166060820152608081018b905290519290910493508484018903925060008051602061485e833981519152919081900360a00190a1613a21613a1b600080611711565b84613fca565b600054613a3790600160a060020a031683613fca565b613a418882613fca565b6115ae3387613fca565b600080600080600080600080600080600160149054906101000a900460ff16151515613a7657600080fd5b613a7f8b610fca565b919b5099509750613a96348a63ffffffff613f7216565b965033600160a060020a038b161415613aae57600080fd5b600f54601154601054600e54606401010101955085613ad86011548b613f9f90919063ffffffff16565b811515613ae157fe5b04945085613afa600f548b613f9f90919063ffffffff16565b811515613b0357fe5b04935085613b1c6010548b613f9f90919063ffffffff16565b811515613b2557fe5b0492506064613b3a8a8863ffffffff613f9f16565b811515613b4357fe5b0491505083830182018803613b5a3360028d613580565b50613b6760028c846143da565b6040805160028152602081018d90523381830152600160a060020a038c166060820152608081018b9052905160008051602061485e8339815191529181900360a00190a1613bb96112ef600080611711565b613bcd613bc760018a611711565b86613fca565b600054613be390600160a060020a031684613fca565b613bed8a82613fca565b613bf73388613fca565b5050505050505050505050565b613c0c614752565b6000828152600660205260408082208151610100810190925282918291829182918291829182919081608081018260048282826020028201915b8154600160a060020a03168152600190910190602001808311613c46575050509183525050600482015460208201526005820154604082015260069091015460ff16151560609182015281015190995015613ca057600080fd5b6020890151613cb690349063ffffffff613f7216565b895151909850600160a060020a0316331415613cd157600080fd5b613cda8a6144c7565b60125402601154600202600f54601054600e5460640101010101965086613d106011548b60200151613f9f90919063ffffffff16565b811515613d1957fe5b04955086613d366012548b60200151613f9f90919063ffffffff16565b811515613d3f57fe5b04945086613d5c600f548b60200151613f9f90919063ffffffff16565b811515613d6557fe5b04935086613d826010548b60200151613f9f90919063ffffffff16565b811515613d8b57fe5b049250838387600202613d9d8d6144c7565b8802010101896020015103915060a060020a600560008b60400151815260200190815260200160002054811515613dd057fe5b04601f16905060008051602061485e83398151915260038b338c600001516000600481101515613dfc57fe5b60200201518d602001516040518086815260200185815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019550505050505060405180910390a1613e673360038c613580565b50613e9660038b6064613e878b8e60200151613f9f90919063ffffffff16565b811515613e9057fe5b046143da565b613eaa613ea4600183611711565b87613fca565b613ebc613ea460028b60400151611711565b885151613ec99083613fca565b8851613edd9060015b602002015186613fca565b8851613eea906002613ed2565b8851613ef7906003613ed2565b613f056112ef600080611711565b600054613f1b90600160a060020a031684613fca565b6110b53389613fca565b600160a060020a0381169160a060020a8204601f16917420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff1690565b600160a060020a0316151590565b600082821115613f7e57fe5b50900390565b6000613f98613f938484611711565b613f64565b9392505050565b600080831515613fb25760009150610ac4565b50828202828482811515613fc257fe5b0414613f9857fe5b613fd382613f64565b8015613fde57508015155b15610ee257604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015614019573d6000803e3d6000fd5b505050565b60008061402b8484611711565b905080600160a060020a031685600160a060020a03161491505b509392505050565b6fffffffffffffffffffffffffffffffff811691700400000000000000000000000000000000909104600116151590565b700800000000000000000000000000000000900460031660011490565b6bffffffffffffffffffffffff1660a060020a02600160a060020a03919091161790565b60006140c9614697565b6000806000806000806000600360008b8152602001908152602001600020606060405190810160405290816000820154815260200160018201548152602001600282015481525050975061412a60036141258a600001516145be565b6145d6565b965061413e60036141258a602001516145be565b9550614150878763ffffffff61468816565b9450600019430193508461416b88600263ffffffff613f9f16565b10614176578661417b565b600285045b92508460001981151561418a57fe5b604080518740602080830182905283518084038201815292840193849052825195909404965094508686029390928291908401908083835b602083106141e15780518252601f1990920191602091820191016141c2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600190041161421e576001614221565b60025b60ff169a9950505050505050505050565b60008061423e846145be565b600081815260066020819052604090912001805460ff19169055905082156140455761426c85600383613580565b50509392505050565b60009182526003602081905260409092206002018054700300000000000000000000000000000000197018000000000000000000000000000000001990911670180000000000000000000000000000000017169190921670010000000000000000000000000000000002179055565b742000000000000000000000000000000000000000006b07ffffffffffffffffffffff90921691909102600160a060020a039290921660a060020a601f929092169190910217741fffffffffffffffffffffffffffffffffffffffff161790565b70180000000000000000000000000000000019700400000000000000000000000000000000196003948516700100000000000000000000000000000000026fffffffffffffffffffffffffffffffff9690961695909517949094166001929092167004000000000000000000000000000000000291909117929092169116700800000000000000000000000000000000021790565b82151561440b5760028054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b600183141561444a5760008281526004602052604090208054600160a060020a03166bffffffffffffffffffffffff831660a060020a02179055614019565b60028314156144a85760008281526005602052604090208054741fffffffffffffffffffffffffffffffffffffffff166b07ffffffffffffffffffffff83167420000000000000000000000000000000000000000002179055614019565b6003831415614019576000918252600660205260409091206004015550565b60006144d1614752565b6000838152600660205260408082208151610100810190925281608081018260048282826020028201915b8154600160a060020a031681526001909101906020018083116144fc575050509183525050600482015460208201526005820154604082015260069091015460ff161515606090910152805190925061455c9060015b6020020151613f64565b61456757600061456a565b60015b825160ff91909116915061457f906002614552565b61458a57600061458d565b60015b825160ff9190911691909101906145a5906003614552565b6145b05760006145b3565b60015b60ff16019392505050565b60a060020a90046bffffffffffffffffffffffff1690565b60008215156145ff5760025460a060020a905b046bffffffffffffffffffffffff16905061179d565b60018314156146225760008281526004602052604090205460a060020a906145e9565b6002831415614667576000828152600560205260409020547420000000000000000000000000000000000000000090046b07ffffffffffffffffffffff16905061179d565b600383141561179d5750600090815260066020526040902060040154919050565b600082820183811015613f9857fe5b6060604051908101604052806000815260200160008152602001600081525090565b6060604051908101604052806000815260200160608152602001606081525090565b8260048101928215614723579160200282015b828111156147235782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906146ee565b5061472f92915061481c565b5090565b6080604051908101604052806004906020820280388339509192915050565b60e060405190810160405280614766614733565b815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147c457805160ff19168380011785556147f1565b828001600101855582156147f1579182015b828111156147f15782518255916020019190600101906147d6565b5061472f929150614843565b60c0604051908101604052806006906020820280388339509192915050565b61484091905b8082111561472f578054600160a060020a0319168155600101614822565b90565b61484091905b8082111561472f57600081556001016148495600fd18032b1f4495899c97de852a729c98c1c58331a207e8127c9078bcccda6e70a165627a7a723058205b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed0029

Swarm Source

bzzr://5b1724d0216572f3e229cda395e6e837ebd1244e0a8b0f9d2b7094e318bff6ed

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.