ETH Price: $2,718.40 (+4.48%)

Contract

0xa9375923DDB69CD32955F536A351007415C02696
 
Transaction Hash
Method
Block
From
To
Fill Buy Order206803382024-09-04 22:54:47161 days ago1725490487IN
0xa9375923...415C02696
0 ETH0.000611774.81098717
Remove Buy Order152785562022-08-04 22:37:04923 days ago1659652624IN
0xa9375923...415C02696
0 ETH0.000818214.93736759
Withdraw Fee Tok...143910332022-03-15 12:00:311065 days ago1647345631IN
0xa9375923...415C02696
0 ETH0.0013803820.87941965
Remove Buy Order143910322022-03-15 12:00:161065 days ago1647345616IN
0xa9375923...415C02696
0 ETH0.0010444719.06810607
Remove Buy Order143896462022-03-15 6:48:581065 days ago1647326938IN
0xa9375923...415C02696
0 ETH0.0015674828.61623832
Withdraw Fee Tok...135918512021-11-11 0:57:431190 days ago1636592263IN
0xa9375923...415C02696
0 ETH0.0084309127.54768864
Add Buy Order129691452021-08-06 4:06:121287 days ago1628222772IN
0xa9375923...415C02696
0.24 ETH0.0070109345.3400847
Fill Buy Order126971862021-06-24 13:47:431329 days ago1624542463IN
0xa9375923...415C02696
0 ETH0.0025072321
Add Buy Order126968012021-06-24 12:22:111329 days ago1624537331IN
0xa9375923...415C02696
41.02 ETH0.0021470420
Remove Buy Order125645562021-06-03 23:48:401350 days ago1622764120IN
0xa9375923...415C02696
0 ETH0.0007597731
Remove Buy Order125645552021-06-03 23:48:251350 days ago1622764105IN
0xa9375923...415C02696
0 ETH0.0011297533
Remove Buy Order124683182021-05-20 1:39:061365 days ago1621474746IN
0xa9375923...415C02696
0 ETH0.0096885283
Add Buy Order123840532021-05-07 0:49:321378 days ago1620348572IN
0xa9375923...415C02696
0.24 ETH0.0049376446
Remove Buy Order123734712021-05-05 9:37:491379 days ago1620207469IN
0xa9375923...415C02696
0 ETH0.0009585828
Remove Buy Order123728232021-05-05 7:12:531379 days ago1620198773IN
0xa9375923...415C02696
0 ETH0.0009585828
Remove Buy Order123728172021-05-05 7:11:171379 days ago1620198677IN
0xa9375923...415C02696
0 ETH0.0009585828
Remove Buy Order123728012021-05-05 7:08:461379 days ago1620198526IN
0xa9375923...415C02696
0 ETH0.0009628628.12525
Remove Buy Order123727922021-05-05 7:06:301379 days ago1620198390IN
0xa9375923...415C02696
0 ETH0.0010270530
Remove Buy Order123727872021-05-05 7:05:281379 days ago1620198328IN
0xa9375923...415C02696
0 ETH0.0011092132.4
Remove Buy Order123727822021-05-05 7:04:571379 days ago1620198297IN
0xa9375923...415C02696
0 ETH0.0011092132.4
Fill Buy Order123182712021-04-26 20:58:291388 days ago1619470709IN
0xa9375923...415C02696
0 ETH0.0065779365
Remove Sell Orde...122870882021-04-22 1:27:151393 days ago1619054835IN
0xa9375923...415C02696
0 ETH0.00789358135
Remove Sell Orde...122870552021-04-22 1:17:501393 days ago1619054270IN
0xa9375923...415C02696
0 ETH0.01263566134
Remove Sell Orde...122870552021-04-22 1:17:501393 days ago1619054270IN
0xa9375923...415C02696
0 ETH0.00686619138
Remove Sell Orde...122869722021-04-22 0:55:371393 days ago1619052937IN
0xa9375923...415C02696
0 ETH0.00503023101.1
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
206803382024-09-04 22:54:47161 days ago1725490487
0xa9375923...415C02696
0 ETH
206803382024-09-04 22:54:47161 days ago1725490487
0xa9375923...415C02696
0.024 ETH
152785562022-08-04 22:37:04923 days ago1659652624
0xa9375923...415C02696
0.2 ETH
143910332022-03-15 12:00:311065 days ago1647345631
0xa9375923...415C02696
0 ETH
143910322022-03-15 12:00:161065 days ago1647345616
0xa9375923...415C02696
1 ETH
143896462022-03-15 6:48:581065 days ago1647326938
0xa9375923...415C02696
0.36 ETH
135918512021-11-11 0:57:431190 days ago1636592263
0xa9375923...415C02696
0 ETH
126971862021-06-24 13:47:431329 days ago1624542463
0xa9375923...415C02696
0 ETH
126971862021-06-24 13:47:431329 days ago1624542463
0xa9375923...415C02696
41.02 ETH
125645552021-06-03 23:48:251350 days ago1622764105
0xa9375923...415C02696
0.4 ETH
124683182021-05-20 1:39:061365 days ago1621474746
0xa9375923...415C02696
0.155432 ETH
123734712021-05-05 9:37:491379 days ago1620207469
0xa9375923...415C02696
0.216 ETH
123728232021-05-05 7:12:531379 days ago1620198773
0xa9375923...415C02696
0.132 ETH
123728172021-05-05 7:11:171379 days ago1620198677
0xa9375923...415C02696
0.288 ETH
123728012021-05-05 7:08:461379 days ago1620198526
0xa9375923...415C02696
0.252 ETH
123727922021-05-05 7:06:301379 days ago1620198390
0xa9375923...415C02696
0.168 ETH
123727872021-05-05 7:05:281379 days ago1620198328
0xa9375923...415C02696
0.104 ETH
123727822021-05-05 7:04:571379 days ago1620198297
0xa9375923...415C02696
0.28 ETH
123182712021-04-26 20:58:291388 days ago1619470709
0xa9375923...415C02696
0 ETH
123182712021-04-26 20:58:291388 days ago1619470709
0xa9375923...415C02696
12.32 ETH
122870882021-04-22 1:27:151393 days ago1619054835
0xa9375923...415C02696
0 ETH
122870552021-04-22 1:17:501393 days ago1619054270
0xa9375923...415C02696
0 ETH
122870552021-04-22 1:17:501393 days ago1619054270
0xa9375923...415C02696
0 ETH
122869722021-04-22 0:55:371393 days ago1619052937
0xa9375923...415C02696
0 ETH
122869492021-04-22 0:50:451393 days ago1619052645
0xa9375923...415C02696
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OwnersExchange

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-01
*/

// File: contracts/interface/PoolOwnersInterface.sol

pragma solidity ^0.4.23;

contract PoolOwnersInterface {

    bool public distributionActive;

    function sendOwnership(address _receiver, uint256 _amount) public;
    function sendOwnershipFrom(address _owner, address _receiver, uint256 _amount) public;
    function getOwnerTokens(address _owner) public view returns (uint);
    function getOwnerPercentage(address _owner) public view returns (uint);

}

// File: contracts/std/ERC20Basic.sol

pragma solidity ^0.4.2;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    uint256 public totalSupply;
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: contracts/std/ERC20.sol

pragma solidity ^0.4.2;


/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/std/SafeMath.sol

pragma solidity ^0.4.2;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  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;
  }
}

// File: contracts/std/Ownable.sol

pragma solidity ^0.4.2;


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner, "Sender not authorised");
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// File: contracts/lib/ItMap.sol

pragma solidity ^0.4.3;

/**
    @title ItMap, a solidity iterable map
    @dev Credit to: https://gist.github.com/ethers/7e6d443818cbc9ad2c38efa7c0f363d1
 */
library itmap {
    struct entry {
        // Equal to the index of the key of this item in keys, plus 1.
        uint keyIndex;
        uint value;
    }

    struct itmap {
        mapping(uint => entry) data;
        uint[] keys;
    }

    function insert(itmap storage self, uint key, uint value) internal returns (bool replaced) {
        entry storage e = self.data[key];
        e.value = value;
        if (e.keyIndex > 0) {
            return true;
        } else {
            e.keyIndex = ++self.keys.length;
            self.keys[e.keyIndex - 1] = key;
            return false;
        }
    }

    function remove(itmap storage self, uint key) internal returns (bool success) {
        entry storage e = self.data[key];

        if (e.keyIndex == 0) {
            return false;
        }

        if (e.keyIndex < self.keys.length) {
            // Move an existing element into the vacated key slot.
            self.data[self.keys[self.keys.length - 1]].keyIndex = e.keyIndex;
            self.keys[e.keyIndex - 1] = self.keys[self.keys.length - 1];
        }

        self.keys.length -= 1;
        delete self.data[key];
        return true;
    }

    function contains(itmap storage self, uint key) internal view returns (bool exists) {
        return self.data[key].keyIndex > 0;
    }

    function size(itmap storage self) internal view returns (uint) {
        return self.keys.length;
    }

    function get(itmap storage self, uint key) internal view returns (uint) {
        return self.data[key].value;
    }

    function getKey(itmap storage self, uint idx) internal view returns (uint) {
        return self.keys[idx];
    }
}

// File: contracts/OwnersExchange.sol

pragma solidity ^0.4.23;






/**
    @title OwnersExchange
    @dev Allow for trustless exchange of LP owners tokens
 */
contract OwnersExchange is Ownable {

    using SafeMath for uint;
    using itmap for itmap.itmap;

    enum ORDER_TYPE {
        NULL, BUY, SELL
    }
    uint public orderCount;
    uint public fee;
    uint public lockedFees;
    uint public totalFees;
    mapping(uint => uint) public feeBalances;
    address[] public addressRegistry; 
    mapping(address => uint) public addressIndex;

    itmap.itmap orderBook;

    PoolOwnersInterface public poolOwners;
    ERC20 public feeToken;

    event NewOrder(ORDER_TYPE indexed orderType, address indexed sender, uint price, uint amount);
    event OrderRemoved(ORDER_TYPE indexed orderType, address indexed sender, uint price, uint amount);
    event OrderFilled(ORDER_TYPE indexed orderType, address indexed sender, address receiver, uint price, uint amount);

    /**
        @dev Initialise the contract
        @param _poolOwners Set the address of the PoolOwners contract used in this DEX
     */
    constructor(address _poolOwners, address _feeToken) public {
        require(_poolOwners != address(0), "_poolOwners needs to be set");
        poolOwners = PoolOwnersInterface(_poolOwners);
        feeToken = ERC20(_feeToken);
        addressRegistry.push(address(0));
        orderCount = 1;
    }

    /**
        @dev Register an address to a uint allowing packing in orders
        @param _address The address to register
     */
    function addressRegister(address _address) private returns (uint) {
        if (addressIndex[_address] != 0) {
            return addressIndex[_address];
        } else {
            require(addressRegistry.length < 1 << 32, "Registered addresses hit maximum");
            addressIndex[_address] = addressRegistry.length;
            addressRegistry.push(_address);
            return addressRegistry.length - 1;
        }
    }

    /**
        @dev ERC677 Reciever for fee token transfer (Always expected to be LINK)
        @param _sender The address of the sender of the token
        @param _value The amount of token received
        @param _data Extra data, not needed in this use-case
     */
    function onTokenTransfer(address _sender, uint256 _value, bytes _data) public {
        require(msg.sender == address(feeToken), "Sender needs to be the fee token");
        uint index = addressRegister(_sender);
        feeBalances[index] = feeBalances[index].add(_value);
        totalFees = totalFees.add(_value);
    }

    /**
        @dev Allow users to withdraw any tokens used for fees
        @param _value The amount wanting to be withdrawn
     */
    function withdrawFeeToken(uint256 _value) public {
        uint index = addressRegister(msg.sender);
        require(feeBalances[index] >= _value, "You're withdrawing more than your balance");
        feeBalances[index] = feeBalances[index].sub(_value);
        totalFees = totalFees.sub(_value);
        if (feeBalances[index] == 0) {
            delete feeBalances[index];
        }
        feeToken.transfer(msg.sender, _value);
    }

    /**
        @dev Set the fee percentage
        @param _fee The percentage of fees to be taken in LINK
     */
    function setFee(uint _fee) public onlyOwner {
        require(_fee <= 500 finney, "Fees can't be more than 50%");
        fee = _fee;
    }

    /**
        @dev Returns the fee cost based on a price & amount
        @param _price The price of the order
        @param _amount The amount requested
     */
    function feeForOrder(uint _price, uint _amount) public view returns (uint) {
        return _price
            .mul(_amount)
            .div(1 ether)
            .mul(fee)
            .div(1 ether);
    }

    /**
        @dev Returns the ETH cost of an order
        @param _price The price of the order
        @param _amount The amount requested
     */
    function costOfOrder(uint _price, uint _amount) public pure returns (uint) {
        return _price.mul(_amount).div(1 ether);
    }

    /**
        @dev Create a new sell order
        @param _price The price of the order per 1 ether of token
        @param _amount The amount of tokens being sent
     */
    function addSellOrder(uint _price, uint _amount) public {
        require(is111bit(_price) && is111bit(_amount), "Price or amount exceeds 111 bits");

        require(_price > 0, "Price needs to be greater than 0");
        require(_amount > 0, "Amount needs to be greater than 0");

        uint orderFee = feeForOrder(_price, _amount);
        uint index = addressRegister(msg.sender);
        if (orderFee > 0) {
            require(feeBalances[index] >= orderFee, "You do not have enough deposited for fees");
            feeBalances[index] = feeBalances[index].sub(orderFee);
        }
        poolOwners.sendOwnershipFrom(msg.sender, this, _amount);

        require(
            !orderBook.insert(orderCount, (((uint(ORDER_TYPE.SELL) << 32 | index) << 111 | _price) << 111) | _amount), 
            "Map replacement detected"
        );
        orderCount += 1;
    
        emit NewOrder(ORDER_TYPE.SELL, msg.sender, _price, _amount);
    }

    /**
        @dev Add a new buy order, ETH sent needs to equal: (price * amount) / 18
        @param _price The price of the buy order per 1 ether of LP token
        @param _amount The amount of tokens wanting to be purchased
     */
    function addBuyOrder(uint _price, uint _amount) public payable {
        require(is111bit(_price) && is111bit(_amount), "Price or amount exceeds 111 bits");

        require(_price > 0, "Price needs to be greater than 0");
        require(_amount > 0, "Amount needs to be greater than 0");

        uint orderFee = feeForOrder(_price, _amount);
        uint index = addressRegister(msg.sender);
        if (orderFee > 0) {
            require(feeBalances[index] >= orderFee, "You do not have enough deposited for fees");
            feeBalances[index] = feeBalances[index].sub(orderFee);
        }

        uint cost = _price.mul(_amount).div(1 ether);
        require(_price.mul(_amount) == cost.mul(1 ether), "The price and amount of this order is too small");
        require(msg.value == cost, "ETH sent needs to equal the cost");

        require(
            !orderBook.insert(orderCount, (((uint(ORDER_TYPE.BUY) << 32 | index) << 111 | _price) << 111) | _amount), 
            "Map replacement detected"
        );
        orderCount += 1;
    
        emit NewOrder(ORDER_TYPE.BUY, msg.sender, _price, _amount);
    }

    /**
        @dev Remove a buy order and refund ETH back to the sender
        @param _key The key of the order in the book
     */
    function removeBuyOrder(uint _key) public {
        uint order = orderBook.get(_key);
        ORDER_TYPE orderType = ORDER_TYPE(order >> 254);
        require(orderType == ORDER_TYPE.BUY, "This is not a buy order");
        uint index = addressIndex[msg.sender];
        require(index == (order << 2) >> 224, "You are not the sender of this order");

        uint price = (order << 34) >> 145;
        uint amount = (order << 145) >> 145;
        require(orderBook.remove(_key), "Map remove failed");

        uint orderFee = feeForOrder(price, amount);
        if (orderFee > 0) {
            feeBalances[index] = feeBalances[index].add(orderFee);
        }

        uint cost = price.mul(amount).div(1 ether);
        msg.sender.transfer(cost);

        emit OrderRemoved(orderType, msg.sender, price, amount);
    }

    /**
        @dev Remove a sell order and refund the LP tokens back to the sender
        @param _key The key of the order in the book
     */
    function removeSellOrder(uint _key) public {
        uint order = orderBook.get(_key);
        ORDER_TYPE orderType = ORDER_TYPE(order >> 254);
        require(orderType == ORDER_TYPE.SELL, "This is not a sell order");
        uint index = addressIndex[msg.sender];
        require(index == (order << 2) >> 224, "You are not the sender of this order");

        uint price = (order << 34) >> 145;
        uint amount = (order << 145) >> 145;
        require(orderBook.remove(_key), "Map remove failed");

        uint orderFee = feeForOrder(price, amount);
        if (orderFee > 0) {
            feeBalances[index] = feeBalances[index].add(orderFee);
        }

        poolOwners.sendOwnership(msg.sender, amount);

        emit OrderRemoved(orderType, msg.sender, price, amount);
    }

    /**
        @dev Fill a sell order in the order book
        @dev Orders have to be filled in whole amounts
        @param _key Key of the order as per orderbook
     */
    function fillSellOrder(uint _key) public payable {
        uint order = orderBook.get(_key);
        ORDER_TYPE orderType = ORDER_TYPE(order >> 254);
        require(orderType == ORDER_TYPE.SELL, "This is not a sell order");
        uint index = addressRegister(msg.sender);
        require(index != (order << 2) >> 224, "You cannot fill your own order");

        uint price = (order << 34) >> 145;
        uint amount = (order << 145) >> 145;

        uint orderFee = feeForOrder(price, amount);
        require(feeBalances[index] >= orderFee, "You do not have enough deposited fees to fill this order");

        uint cost = price.mul(amount).div(1 ether);
        require(msg.value == cost, "ETH sent needs to equal the cost");

        require(orderBook.remove(_key), "Map remove failed");

        addressRegistry[(order << 2) >> 224].transfer(msg.value);
        poolOwners.sendOwnership(msg.sender, amount);

        if (orderFee > 0) {
            feeBalances[index] = feeBalances[index].sub(orderFee);
            uint totalFee = orderFee.mul(2);
            totalFees = totalFees.sub(totalFee);
            feeToken.transfer(poolOwners, totalFee);
        }

        emit OrderFilled(orderType, addressRegistry[(order << 2) >> 224], msg.sender, price, amount);
    }

    /**
        @dev Fill a buy order in the order book
        @dev Orders have to be filled in whole amounts
        @param _key Key of the order, which is the buyers address
     */
    function fillBuyOrder(uint _key) public {
        uint order = orderBook.get(_key);
        ORDER_TYPE orderType = ORDER_TYPE(order >> 254);
        require(orderType == ORDER_TYPE.BUY, "This is not a buy order");
        uint index = addressRegister(msg.sender);
        require(index != (order << 2) >> 224, "You cannot fill your own order");

        uint price = (order << 34) >> 145;
        uint amount = (order << 145) >> 145;

        uint orderFee = feeForOrder(price, amount);
        require(feeBalances[index] >= orderFee, "You do not have enough deposited fees to fill this order");

        uint cost = price.mul(amount).div(1 ether);
        
        require(orderBook.remove(_key), "Map remove failed");

        msg.sender.transfer(cost);
        poolOwners.sendOwnershipFrom(msg.sender, addressRegistry[(order << 2) >> 224], amount);

        if (orderFee > 0) {
            feeBalances[index] = feeBalances[index].sub(orderFee);
            uint totalFee = orderFee.mul(2);
            totalFees = totalFees.sub(totalFee);
            feeToken.transfer(poolOwners, totalFee);
        }

        emit OrderFilled(orderType, addressRegistry[(order << 2) >> 224], msg.sender, price, amount);
    }

    /**
        @dev Send any fee token earned via PoolOwners distribution back to be re-distributed
     */
    function withdrawDistributedToPoolOwners() public {
        uint balance = feeToken.balanceOf(this).sub(totalFees);
        require(balance > 0, "There is no distributed fee token balance in the contract");
        feeToken.transfer(poolOwners, balance);
    }

    /**
        @dev Get a single order by its key
        @param _key The key of the order as per the book
     */
    function getOrder(uint _key) public view returns (ORDER_TYPE, address, uint, uint) {
        uint order = orderBook.get(_key);
        return (
            ORDER_TYPE(order >> 254), 
            addressRegistry[(order << 2) >> 224], 
            (order << 34) >> 145, 
            (order << 145) >> 145
        );
    }

    /**
        @dev Get a batch of 10 orders by a given array of keys
        @dev ID's has to be equal or less than 10 in length, or an empty response is given
        @param _start The starting index in the order book to return from
     */
    function getOrders(uint _start) public view returns (
        uint[10] keys,
        address[10] addresses, 
        ORDER_TYPE[10] orderTypes, 
        uint[10] prices, 
        uint[10] amounts
    ) {
        for (uint i = 0; i < 10; i++) {
            if (orderBook.size() == _start + i) {
                break;
            }
            uint key = orderBook.getKey(_start + i);
            keys[i] = key;
            uint order = orderBook.get(key);
            addresses[i] = addressRegistry[(order << 2) >> 224];
            orderTypes[i] = ORDER_TYPE(order >> 254);
            prices[i] = (order << 34) >> 145;
            amounts[i] = (order << 145) >> 145;
        }
        return (keys, addresses, orderTypes, prices, amounts);
    }

    /**
        @dev Get an orderbook key from the orderbook index
        @param _i The index to fetch the key for
     */
    function getOrderBookKey(uint _i) public view returns (uint key) {
        if (_i < orderBook.size()) {
            key = orderBook.getKey(_i);
        } else {
            key = 0;
        }
        return key;
    }

    /**
        @dev Get orderbook keys in batches of 10
        @param _start The start of the index for the batch
     */
    function getOrderBookKeys(uint _start) public view returns (uint[10] keys) {
        for (uint i = 0; i < 10; i++) {
            if (i + _start < orderBook.size()) {
                keys[i] = orderBook.getKey(_start + i);
            } else {
                keys[i] = 0;
            }
        }
        return keys;
    }

    /**
        @dev Get the orderbook size to allow for batch fetching of keys
     */
    function getOrderBookSize() public view returns (uint) {
        return orderBook.size();
    }

    /**
        @dev Verify that the number being passed fits into 111 bits for packing
        @param _val The value to check
     */
    function is111bit(uint _val) private pure returns (bool) {
        return (_val < 1 << 111);
    }

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"removeSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_start","type":"uint256"}],"name":"getOrders","outputs":[{"name":"keys","type":"uint256[10]"},{"name":"addresses","type":"address[10]"},{"name":"orderTypes","type":"uint8[10]"},{"name":"prices","type":"uint256[10]"},{"name":"amounts","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"feeForOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOrderBookSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_i","type":"uint256"}],"name":"getOrderBookKey","outputs":[{"name":"key","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"orderCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"addSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"costOfOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"lockedFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDistributedToPoolOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"fillBuyOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"addBuyOrder","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"feeBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolOwners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"fillSellOrder","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"withdrawFeeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_key","type":"uint256"}],"name":"getOrder","outputs":[{"name":"","type":"uint8"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"uint256"}],"name":"removeBuyOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addressRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_start","type":"uint256"}],"name":"getOrderBookKeys","outputs":[{"name":"keys","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_poolOwners","type":"address"},{"name":"_feeToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"NewOrder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OrderRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"orderType","type":"uint8"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OrderFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b5060405160408061284583398101604052805160209091015160008054600160a060020a03191633179055600160a060020a03821615156100b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706f6f6c4f776e657273206e6565647320746f206265207365740000000000604482015290519081900360640190fd5b600a8054600160a060020a03938416600160a060020a031991821617909155600b8054929093169181169190911790915560068054600181810183556000929092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01805490921690915580556127168061012f6000396000f3006080604052600436106101505763ffffffff60e060020a6000350416630559c114811461015557806305e0141d1461016f57806313114a9d14610270578063169c4733146102975780631a3352c1146102b25780631c76e2b2146102c75780632453ffa8146102df5780633acde419146102f45780633d48f3af1461030f578063410ac68c1461032a578063416c334d1461033f578063647846a51461035457806369fe0e2d146103855780638cbcca071461039d5780638da5cb5b146103b55780639049681c146103ca578063935c1fb1146103d8578063a4c0ed36146103f9578063aa072d0c14610462578063c375fcfa1461047a578063c3aea22e1461048f578063d05bb5171461049a578063d09ef241146104b2578063ddca3f431461050a578063def8ecf41461051f578063e96716ee14610537578063f2fde38b1461054f578063f8b42f7814610570575b600080fd5b34801561016157600080fd5b5061016d6004356105c1565b005b34801561017b57600080fd5b50610187600435610878565b604051808661014080838360005b838110156101ad578181015183820152602001610195565b5050505090500185600a60200280838360005b838110156101d85781810151838201526020016101c0565b5050505090500184600a60200280838360005b838110156102035781810151838201526020016101eb565b5050505090500183600a60200280838360005b8381101561022e578181015183820152602001610216565b5050505090500182600a60200280838360005b83811015610259578181015183820152602001610241565b505050509050019550505050505060405180910390f35b34801561027c57600080fd5b506102856109db565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102856004356024356109e1565b3480156102be57600080fd5b50610285610a33565b3480156102d357600080fd5b50610285600435610a45565b3480156102eb57600080fd5b50610285610a79565b34801561030057600080fd5b5061016d600435602435610a7f565b34801561031b57600080fd5b50610285600435602435610df1565b34801561033657600080fd5b50610285610e0f565b34801561034b57600080fd5b5061016d610e15565b34801561036057600080fd5b50610369610fde565b60408051600160a060020a039092168252519081900360200190f35b34801561039157600080fd5b5061016d600435610fed565b3480156103a957600080fd5b5061016d6004356110b4565b3480156103c157600080fd5b50610369611517565b61016d600435602435611526565b3480156103e457600080fd5b50610285600160a060020a036004351661190c565b34801561040557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261016d948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061191e9650505050505050565b34801561046e57600080fd5b506102856004356119d9565b34801561048657600080fd5b506103696119eb565b61016d6004356119fa565b3480156104a657600080fd5b5061016d600435611d27565b3480156104be57600080fd5b506104ca600435611ec7565b604051808560028111156104da57fe5b60ff168152600160a060020a03909416602085015250604080840192909252606083015251908190036080019150f35b34801561051657600080fd5b50610285611f43565b34801561052b57600080fd5b5061016d600435611f49565b34801561054357600080fd5b506103696004356121c2565b34801561055b57600080fd5b5061016d600160a060020a03600435166121ea565b34801561057c57600080fd5b506105886004356122c9565b604051808261014080838360005b838110156105ae578181015183820152602001610596565b5050505090500191505060405180910390f35b600080808080806105d960088863ffffffff61233b16565b955060fe60020a860460028111156105ed57fe5b945060028560028111156105fd57fe5b14610652576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054935060e060020a600487020484146106e9576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008702819004935080870204915061071260088863ffffffff61235116565b1515610756576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b61076083836109e1565b9050600081111561079a5760008481526005602052604090205461078a908263ffffffff61243216565b6000858152600560205260409020555b600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505033600160a060020a031685600281111561083457fe5b604080518681526020810186905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a350505050505050565b61088061264d565b61088861264d565b61089061264d565b61089861264d565b6108a061264d565b600080805b600a8310156109cf578289016108bb6008612441565b14156108c6576109cf565b6108d960088a850163ffffffff61244816565b9150818884600a81106108e857fe5b60200201526108fe60088363ffffffff61233b16565b600680549192509060e060020a600484020490811061091957fe5b600091825260209091200154600160a060020a03168784600a811061093a57fe5b600160a060020a03909216602092909202015260fe60020a8104600281111561095f57fe5b8684600a811061096b57fe5b6020020190600281111561097b57fe5b9081600281111561098857fe5b905250609160020a6404000000008202048584600a81106109a557fe5b6020020152609160020a808202048484600a81106109bf57fe5b60200201526001909201916108a5565b50505091939590929450565b60045481565b6000610a2c670de0b6b3a7640000610a14600254610a20670de0b6b3a7640000610a14888a61246e90919063ffffffff16565b9063ffffffff61249216565b9063ffffffff61246e16565b9392505050565b6000610a3f6008612441565b90505b90565b6000610a516008612441565b821015610a7057610a6960088363ffffffff61244816565b9050610a74565b5060005b919050565b60015481565b600080610a8b846124a9565b8015610a9b5750610a9b836124a9565b1515610af1576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b60008411610b49576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008311610bc7576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610bd184846109e1565b9150610bdc336124bc565b90506000821115610c9057600081815260056020526040902054821115610c61576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054610c80908363ffffffff6125cc16565b6000828152600560205260409020555b600a54604080517fde995b90000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a039092169163de995b909160648082019260009290919082900301818387803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b5050600154610d509250905084606f878186602060025b9060020a02179060020a02179060020a021760086125de9092919063ffffffff16565b15610da5576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481019055336002604080518781526020810187905281517fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff929181900390910190a350505050565b6000610a2c670de0b6b3a7640000610a14858563ffffffff61246e16565b60035481565b60048054600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152309481019490945251600093610ebd9392600160a060020a0316916370a082319160248082019260209290919082900301818987803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b50519063ffffffff6125cc16565b905060008111610f3d576040805160e560020a62461bcd02815260206004820152603960248201527f5468657265206973206e6f2064697374726962757465642066656520746f6b6560448201527f6e2062616c616e636520696e2074686520636f6e747261637400000000000000606482015290519081900360840190fd5b600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b505050565b600b54600160a060020a031681565b600054600160a060020a0316331461104f576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b200008111156110af576040805160e560020a62461bcd02815260206004820152601b60248201527f466565732063616e2774206265206d6f7265207468616e203530250000000000604482015290519081900360640190fd5b600255565b6000808080808080806110ce60088a63ffffffff61233b16565b975060fe60020a880460028111156110e257fe5b965060018760028111156110f257fe5b14611147576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b611150336124bc565b955060e060020a60048902048614156111b3576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a640400000000890281900495508089020493506111d585856109e1565b600087815260056020526040902054909350831115611252576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b61126e670de0b6b3a7640000610a14878763ffffffff61246e16565b915061128160088a63ffffffff61235116565b15156112c5576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f193505050501580156112f2573d6000803e3d6000fd5b50600a5460068054600160a060020a039092169163de995b9091339160e060020a60048e020490811061132157fe5b60009182526020822001546040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152604483018990525160648084019382900301818387803b15801561137b57600080fd5b505af115801561138f573d6000803e3d6000fd5b505050506000831115611494576000868152600560205260409020546113bb908463ffffffff6125cc16565b6000878152600560205260409020556113db83600263ffffffff61246e16565b6004549091506113f1908263ffffffff6125cc16565b6004908155600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d602081101561149157600080fd5b50505b6006805460e060020a60048b02049081106114ab57fe5b600091825260209091200154600160a060020a03168760028111156114cc57fe5b604080513381526020810189905280820188905290517f37561a23711d8277a49bc8fdac68dafcf982b917f213a7691984a6dcea1edcd29181900360600190a3505050505050505050565b600054600160a060020a031681565b6000806000611534856124a9565b80156115445750611544846124a9565b151561159a576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b600085116115f2576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008411611670576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61167a85856109e1565b9250611685336124bc565b915060008311156117395760008281526005602052604090205483111561170a576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260056020526040902054611729908463ffffffff6125cc16565b6000838152600560205260409020555b611755670de0b6b3a7640000610a14878763ffffffff61246e16565b905061176f81670de0b6b3a764000063ffffffff61246e16565b61177f868663ffffffff61246e16565b146117fa576040805160e560020a62461bcd02815260206004820152602f60248201527f54686520707269636520616e6420616d6f756e74206f662074686973206f726460448201527f657220697320746f6f20736d616c6c0000000000000000000000000000000000606482015290519081900360840190fd5b348114611851576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b61186d60015485606f88606f87602060016002811115610d2d57fe5b156118c2576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481018155604080518781526020810187905281513393927fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff928290030190a35050505050565b60076020526000908152604090205481565b600b54600090600160a060020a03163314611983576040805160e560020a62461bcd02815260206004820181905260248201527f53656e646572206e6565647320746f206265207468652066656520746f6b656e604482015290519081900360640190fd5b61198c846124bc565b6000818152600560205260409020549091506119ae908463ffffffff61243216565b6000828152600560205260409020556004546119d0908463ffffffff61243216565b60045550505050565b60056020526000908152604090205481565b600a54600160a060020a031681565b600080808080808080611a1460088a63ffffffff61233b16565b975060fe60020a88046002811115611a2857fe5b96506002876002811115611a3857fe5b14611a8d576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b611a96336124bc565b955060e060020a6004890204861415611af9576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a64040000000089028190049550808902049350611b1b85856109e1565b600087815260056020526040902054909350831115611b98576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b611bb4670de0b6b3a7640000610a14878763ffffffff61246e16565b9150348214611c0d576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b611c1e60088a63ffffffff61235116565b1515611c62576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6006805460e060020a60048b0204908110611c7957fe5b6000918252602082200154604051600160a060020a03909116913480156108fc02929091818181858888f19350505050158015611cba573d6000803e3d6000fd5b50600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561137b57600080fd5b6000611d32336124bc565b600081815260056020526040902054909150821115611dc1576040805160e560020a62461bcd02815260206004820152602960248201527f596f75277265207769746864726177696e67206d6f7265207468616e20796f7560448201527f722062616c616e63650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054611de0908363ffffffff6125cc16565b600082815260056020526040902055600454611e02908363ffffffff6125cc16565b6004556000818152600560205260409020541515611e2a576000818152600560205260408120555b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050506040513d6020811015611ec157600080fd5b50505050565b600080808080611ede60088763ffffffff61233b16565b905060fe60020a81046002811115611ef257fe5b6006805460e060020a6004850204908110611f0957fe5b600091825260209091200154909550600160a060020a03169350609160020a64040000000082028190049350808202049150509193509193565b60025481565b6000808080808080611f6260088963ffffffff61233b16565b965060fe60020a87046002811115611f7657fe5b95506001866002811115611f8657fe5b14611fdb576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054945060e060020a60048802048514612072576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008802819004945080880204925061209b60088963ffffffff61235116565b15156120df576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6120e984846109e1565b9150600082111561212357600085815260056020526040902054612113908363ffffffff61243216565b6000868152600560205260409020555b61213f670de0b6b3a7640000610a14868663ffffffff61246e16565b604051909150339082156108fc029083906000818181858888f1935050505015801561216f573d6000803e3d6000fd5b503386600281111561217d57fe5b604080518781526020810187905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a35050505050505050565b60068054829081106121d057fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461224c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561226157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6122d161264d565b60005b600a811015612335576122e76008612441565b838201101561231957612303600884830163ffffffff61244816565b8282600a811061230f57fe5b602002015261232d565b60008282600a811061232757fe5b60200201525b6001016122d4565b50919050565b6000908152602091909152604090206001015490565b600081815260208390526040812080541515612370576000915061242b565b6001840154815410156123f85780546001850180548691600091600019810190811061239857fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106123c857fe5b90600052602060002001548460010160018360000154038154811015156123eb57fe5b6000918252602090912001555b600184018054600019019061240d908261266d565b50600083815260208590526040812081815560019081019190915591505b5092915050565b600082820183811015610a2c57fe5b6001015490565b6000826001018281548110151561245b57fe5b9060005260206000200154905092915050565b600082820283158061248a575082848281151561248757fe5b04145b1515610a2c57fe5b60008082848115156124a057fe5b04949350505050565b6d80000000000000000000000000001190565b600160a060020a038116600090815260076020526040812054156124f95750600160a060020a038116600090815260076020526040902054610a74565b60065464010000000011612557576040805160e560020a62461bcd02815260206004820181905260248201527f526567697374657265642061646472657373657320686974206d6178696d756d604482015290519081900360640190fd5b5060068054600160a060020a03831660008181526007602052604081208390556001830184558390527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f909101805473ffffffffffffffffffffffffffffffffffffffff191690911790555460001901610a74565b6000828211156125d857fe5b50900390565b60008281526020849052604081206001810183905580548210156126055760019150612645565b846001018054600101908161261a919061266d565b80825560018601805486926000190190811061263257fe5b9060005260206000200181905550600091505b509392505050565b61014060405190810160405280600a906020820280388339509192915050565b815481835581811115610fd957600083815260209020610fd9918101908301610a4291905b808211156126a65760008155600101612692565b50905600596f7520646f206e6f74206861766520656e6f756768206465706f73697465644d61702072656d6f7665206661696c6564000000000000000000000000000000a165627a7a723058206f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab60029000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca

Deployed Bytecode

0x6080604052600436106101505763ffffffff60e060020a6000350416630559c114811461015557806305e0141d1461016f57806313114a9d14610270578063169c4733146102975780631a3352c1146102b25780631c76e2b2146102c75780632453ffa8146102df5780633acde419146102f45780633d48f3af1461030f578063410ac68c1461032a578063416c334d1461033f578063647846a51461035457806369fe0e2d146103855780638cbcca071461039d5780638da5cb5b146103b55780639049681c146103ca578063935c1fb1146103d8578063a4c0ed36146103f9578063aa072d0c14610462578063c375fcfa1461047a578063c3aea22e1461048f578063d05bb5171461049a578063d09ef241146104b2578063ddca3f431461050a578063def8ecf41461051f578063e96716ee14610537578063f2fde38b1461054f578063f8b42f7814610570575b600080fd5b34801561016157600080fd5b5061016d6004356105c1565b005b34801561017b57600080fd5b50610187600435610878565b604051808661014080838360005b838110156101ad578181015183820152602001610195565b5050505090500185600a60200280838360005b838110156101d85781810151838201526020016101c0565b5050505090500184600a60200280838360005b838110156102035781810151838201526020016101eb565b5050505090500183600a60200280838360005b8381101561022e578181015183820152602001610216565b5050505090500182600a60200280838360005b83811015610259578181015183820152602001610241565b505050509050019550505050505060405180910390f35b34801561027c57600080fd5b506102856109db565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102856004356024356109e1565b3480156102be57600080fd5b50610285610a33565b3480156102d357600080fd5b50610285600435610a45565b3480156102eb57600080fd5b50610285610a79565b34801561030057600080fd5b5061016d600435602435610a7f565b34801561031b57600080fd5b50610285600435602435610df1565b34801561033657600080fd5b50610285610e0f565b34801561034b57600080fd5b5061016d610e15565b34801561036057600080fd5b50610369610fde565b60408051600160a060020a039092168252519081900360200190f35b34801561039157600080fd5b5061016d600435610fed565b3480156103a957600080fd5b5061016d6004356110b4565b3480156103c157600080fd5b50610369611517565b61016d600435602435611526565b3480156103e457600080fd5b50610285600160a060020a036004351661190c565b34801561040557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261016d948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061191e9650505050505050565b34801561046e57600080fd5b506102856004356119d9565b34801561048657600080fd5b506103696119eb565b61016d6004356119fa565b3480156104a657600080fd5b5061016d600435611d27565b3480156104be57600080fd5b506104ca600435611ec7565b604051808560028111156104da57fe5b60ff168152600160a060020a03909416602085015250604080840192909252606083015251908190036080019150f35b34801561051657600080fd5b50610285611f43565b34801561052b57600080fd5b5061016d600435611f49565b34801561054357600080fd5b506103696004356121c2565b34801561055b57600080fd5b5061016d600160a060020a03600435166121ea565b34801561057c57600080fd5b506105886004356122c9565b604051808261014080838360005b838110156105ae578181015183820152602001610596565b5050505090500191505060405180910390f35b600080808080806105d960088863ffffffff61233b16565b955060fe60020a860460028111156105ed57fe5b945060028560028111156105fd57fe5b14610652576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054935060e060020a600487020484146106e9576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008702819004935080870204915061071260088863ffffffff61235116565b1515610756576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b61076083836109e1565b9050600081111561079a5760008481526005602052604090205461078a908263ffffffff61243216565b6000858152600560205260409020555b600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505033600160a060020a031685600281111561083457fe5b604080518681526020810186905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a350505050505050565b61088061264d565b61088861264d565b61089061264d565b61089861264d565b6108a061264d565b600080805b600a8310156109cf578289016108bb6008612441565b14156108c6576109cf565b6108d960088a850163ffffffff61244816565b9150818884600a81106108e857fe5b60200201526108fe60088363ffffffff61233b16565b600680549192509060e060020a600484020490811061091957fe5b600091825260209091200154600160a060020a03168784600a811061093a57fe5b600160a060020a03909216602092909202015260fe60020a8104600281111561095f57fe5b8684600a811061096b57fe5b6020020190600281111561097b57fe5b9081600281111561098857fe5b905250609160020a6404000000008202048584600a81106109a557fe5b6020020152609160020a808202048484600a81106109bf57fe5b60200201526001909201916108a5565b50505091939590929450565b60045481565b6000610a2c670de0b6b3a7640000610a14600254610a20670de0b6b3a7640000610a14888a61246e90919063ffffffff16565b9063ffffffff61249216565b9063ffffffff61246e16565b9392505050565b6000610a3f6008612441565b90505b90565b6000610a516008612441565b821015610a7057610a6960088363ffffffff61244816565b9050610a74565b5060005b919050565b60015481565b600080610a8b846124a9565b8015610a9b5750610a9b836124a9565b1515610af1576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b60008411610b49576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008311610bc7576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610bd184846109e1565b9150610bdc336124bc565b90506000821115610c9057600081815260056020526040902054821115610c61576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054610c80908363ffffffff6125cc16565b6000828152600560205260409020555b600a54604080517fde995b90000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a039092169163de995b909160648082019260009290919082900301818387803b158015610d0257600080fd5b505af1158015610d16573d6000803e3d6000fd5b5050600154610d509250905084606f878186602060025b9060020a02179060020a02179060020a021760086125de9092919063ffffffff16565b15610da5576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481019055336002604080518781526020810187905281517fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff929181900390910190a350505050565b6000610a2c670de0b6b3a7640000610a14858563ffffffff61246e16565b60035481565b60048054600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152309481019490945251600093610ebd9392600160a060020a0316916370a082319160248082019260209290919082900301818987803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b50519063ffffffff6125cc16565b905060008111610f3d576040805160e560020a62461bcd02815260206004820152603960248201527f5468657265206973206e6f2064697374726962757465642066656520746f6b6560448201527f6e2062616c616e636520696e2074686520636f6e747261637400000000000000606482015290519081900360840190fd5b600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b505050565b600b54600160a060020a031681565b600054600160a060020a0316331461104f576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b200008111156110af576040805160e560020a62461bcd02815260206004820152601b60248201527f466565732063616e2774206265206d6f7265207468616e203530250000000000604482015290519081900360640190fd5b600255565b6000808080808080806110ce60088a63ffffffff61233b16565b975060fe60020a880460028111156110e257fe5b965060018760028111156110f257fe5b14611147576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b611150336124bc565b955060e060020a60048902048614156111b3576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a640400000000890281900495508089020493506111d585856109e1565b600087815260056020526040902054909350831115611252576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b61126e670de0b6b3a7640000610a14878763ffffffff61246e16565b915061128160088a63ffffffff61235116565b15156112c5576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f193505050501580156112f2573d6000803e3d6000fd5b50600a5460068054600160a060020a039092169163de995b9091339160e060020a60048e020490811061132157fe5b60009182526020822001546040805160e060020a63ffffffff8716028152600160a060020a039485166004820152939091166024840152604483018990525160648084019382900301818387803b15801561137b57600080fd5b505af115801561138f573d6000803e3d6000fd5b505050506000831115611494576000868152600560205260409020546113bb908463ffffffff6125cc16565b6000878152600560205260409020556113db83600263ffffffff61246e16565b6004549091506113f1908263ffffffff6125cc16565b6004908155600b54600a54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525191169163a9059cbb9160448083019260209291908290030181600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d602081101561149157600080fd5b50505b6006805460e060020a60048b02049081106114ab57fe5b600091825260209091200154600160a060020a03168760028111156114cc57fe5b604080513381526020810189905280820188905290517f37561a23711d8277a49bc8fdac68dafcf982b917f213a7691984a6dcea1edcd29181900360600190a3505050505050505050565b600054600160a060020a031681565b6000806000611534856124a9565b80156115445750611544846124a9565b151561159a576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206f7220616d6f756e742065786365656473203131312062697473604482015290519081900360640190fd5b600085116115f2576040805160e560020a62461bcd02815260206004820181905260248201527f5072696365206e6565647320746f2062652067726561746572207468616e2030604482015290519081900360640190fd5b60008411611670576040805160e560020a62461bcd02815260206004820152602160248201527f416d6f756e74206e6565647320746f2062652067726561746572207468616e2060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61167a85856109e1565b9250611685336124bc565b915060008311156117395760008281526005602052604090205483111561170a576040805160e560020a62461bcd02815260206004820152602960248201526000805160206126ab83398151915260448201527f20666f7220666565730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260056020526040902054611729908463ffffffff6125cc16565b6000838152600560205260409020555b611755670de0b6b3a7640000610a14878763ffffffff61246e16565b905061176f81670de0b6b3a764000063ffffffff61246e16565b61177f868663ffffffff61246e16565b146117fa576040805160e560020a62461bcd02815260206004820152602f60248201527f54686520707269636520616e6420616d6f756e74206f662074686973206f726460448201527f657220697320746f6f20736d616c6c0000000000000000000000000000000000606482015290519081900360840190fd5b348114611851576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b61186d60015485606f88606f87602060016002811115610d2d57fe5b156118c2576040805160e560020a62461bcd02815260206004820152601860248201527f4d6170207265706c6163656d656e742064657465637465640000000000000000604482015290519081900360640190fd5b6001805481018155604080518781526020810187905281513393927fbcbf7b263490465b953d70010fc8e536abfdfbcae985c547ef7e2ada714af4ff928290030190a35050505050565b60076020526000908152604090205481565b600b54600090600160a060020a03163314611983576040805160e560020a62461bcd02815260206004820181905260248201527f53656e646572206e6565647320746f206265207468652066656520746f6b656e604482015290519081900360640190fd5b61198c846124bc565b6000818152600560205260409020549091506119ae908463ffffffff61243216565b6000828152600560205260409020556004546119d0908463ffffffff61243216565b60045550505050565b60056020526000908152604090205481565b600a54600160a060020a031681565b600080808080808080611a1460088a63ffffffff61233b16565b975060fe60020a88046002811115611a2857fe5b96506002876002811115611a3857fe5b14611a8d576040805160e560020a62461bcd02815260206004820152601860248201527f54686973206973206e6f7420612073656c6c206f726465720000000000000000604482015290519081900360640190fd5b611a96336124bc565b955060e060020a6004890204861415611af9576040805160e560020a62461bcd02815260206004820152601e60248201527f596f752063616e6e6f742066696c6c20796f7572206f776e206f726465720000604482015290519081900360640190fd5b609160020a64040000000089028190049550808902049350611b1b85856109e1565b600087815260056020526040902054909350831115611b98576040805160e560020a62461bcd02815260206004820152603860248201526000805160206126ab83398151915260448201527f206665657320746f2066696c6c2074686973206f726465720000000000000000606482015290519081900360840190fd5b611bb4670de0b6b3a7640000610a14878763ffffffff61246e16565b9150348214611c0d576040805160e560020a62461bcd02815260206004820181905260248201527f4554482073656e74206e6565647320746f20657175616c2074686520636f7374604482015290519081900360640190fd5b611c1e60088a63ffffffff61235116565b1515611c62576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6006805460e060020a60048b0204908110611c7957fe5b6000918252602082200154604051600160a060020a03909116913480156108fc02929091818181858888f19350505050158015611cba573d6000803e3d6000fd5b50600a54604080517fe2d0d519000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163e2d0d5199160448082019260009290919082900301818387803b15801561137b57600080fd5b6000611d32336124bc565b600081815260056020526040902054909150821115611dc1576040805160e560020a62461bcd02815260206004820152602960248201527f596f75277265207769746864726177696e67206d6f7265207468616e20796f7560448201527f722062616c616e63650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600081815260056020526040902054611de0908363ffffffff6125cc16565b600082815260056020526040902055600454611e02908363ffffffff6125cc16565b6004556000818152600560205260409020541515611e2a576000818152600560205260408120555b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505050506040513d6020811015611ec157600080fd5b50505050565b600080808080611ede60088763ffffffff61233b16565b905060fe60020a81046002811115611ef257fe5b6006805460e060020a6004850204908110611f0957fe5b600091825260209091200154909550600160a060020a03169350609160020a64040000000082028190049350808202049150509193509193565b60025481565b6000808080808080611f6260088963ffffffff61233b16565b965060fe60020a87046002811115611f7657fe5b95506001866002811115611f8657fe5b14611fdb576040805160e560020a62461bcd02815260206004820152601760248201527f54686973206973206e6f74206120627579206f72646572000000000000000000604482015290519081900360640190fd5b33600090815260076020526040902054945060e060020a60048802048514612072576040805160e560020a62461bcd028152602060048201526024808201527f596f7520617265206e6f74207468652073656e646572206f662074686973206f60448201527f7264657200000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b609160020a6404000000008802819004945080880204925061209b60088963ffffffff61235116565b15156120df576040805160e560020a62461bcd02815260206004820152601160248201526000805160206126cb833981519152604482015290519081900360640190fd5b6120e984846109e1565b9150600082111561212357600085815260056020526040902054612113908363ffffffff61243216565b6000868152600560205260409020555b61213f670de0b6b3a7640000610a14868663ffffffff61246e16565b604051909150339082156108fc029083906000818181858888f1935050505015801561216f573d6000803e3d6000fd5b503386600281111561217d57fe5b604080518781526020810187905281517fe2f99b27ce844edd7e242a1056afe8f0a4f5c28c45b300a13fec9aff87d82bff929181900390910190a35050505050505050565b60068054829081106121d057fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a0316331461224c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206e6f7420617574686f72697365640000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561226157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6122d161264d565b60005b600a811015612335576122e76008612441565b838201101561231957612303600884830163ffffffff61244816565b8282600a811061230f57fe5b602002015261232d565b60008282600a811061232757fe5b60200201525b6001016122d4565b50919050565b6000908152602091909152604090206001015490565b600081815260208390526040812080541515612370576000915061242b565b6001840154815410156123f85780546001850180548691600091600019810190811061239857fe5b6000918252602080832090910154835282019290925260400190205560018401805460001981019081106123c857fe5b90600052602060002001548460010160018360000154038154811015156123eb57fe5b6000918252602090912001555b600184018054600019019061240d908261266d565b50600083815260208590526040812081815560019081019190915591505b5092915050565b600082820183811015610a2c57fe5b6001015490565b6000826001018281548110151561245b57fe5b9060005260206000200154905092915050565b600082820283158061248a575082848281151561248757fe5b04145b1515610a2c57fe5b60008082848115156124a057fe5b04949350505050565b6d80000000000000000000000000001190565b600160a060020a038116600090815260076020526040812054156124f95750600160a060020a038116600090815260076020526040902054610a74565b60065464010000000011612557576040805160e560020a62461bcd02815260206004820181905260248201527f526567697374657265642061646472657373657320686974206d6178696d756d604482015290519081900360640190fd5b5060068054600160a060020a03831660008181526007602052604081208390556001830184558390527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f909101805473ffffffffffffffffffffffffffffffffffffffff191690911790555460001901610a74565b6000828211156125d857fe5b50900390565b60008281526020849052604081206001810183905580548210156126055760019150612645565b846001018054600101908161261a919061266d565b80825560018601805486926000190190811061263257fe5b9060005260206000200181905550600091505b509392505050565b61014060405190810160405280600a906020820280388339509192915050565b815481835581811115610fd957600083815260209020610fd9918101908301610a4291905b808211156126a65760008155600101612692565b50905600596f7520646f206e6f74206861766520656e6f756768206465706f73697465644d61702072656d6f7665206661696c6564000000000000000000000000000000a165627a7a723058206f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab60029

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

000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca

-----Decoded View---------------
Arg [0] : _poolOwners (address): 0x182D4990bB0ff595b308B3efCb93313abad575E7
Arg [1] : _feeToken (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000182d4990bb0ff595b308b3efcb93313abad575e7
Arg [1] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca


Deployed Bytecode Sourcemap

5576:14613:0:-;;;;;;;;;-1:-1:-1;;;5576:14613:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13312:807;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13312:807:0;;;;;;;18147:767;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18147:767:0;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18147:767:0;;;;;;;;;;;;;;;;;;;;5821:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:21:0;;;;;;;;;;;;;;;;;;;;9105:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9105:211:0;;;;;;;19840:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19840:97:0;;;;19050:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19050:224:0;;;;;5741:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:22:0;;;;9800:969;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9800:969:0;;;;;;;9480:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9480:133:0;;;;;;;5792:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5792:22:0;;;;17171:264;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17171:264:0;;;;6063:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6063:21:0;;;;;;;;-1:-1:-1;;;;;6063:21:0;;;;;;;;;;;;;;8785:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8785:142:0;;;;;15810:1241;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15810:1241:0;;;;;2649:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2649:20:0;;;;11020:1149;;;;;;;;5936:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5936:44:0;-1:-1:-1;;;;;5936:44:0;;;;;7738:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7738:327:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7738:327:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7738:327:0;;-1:-1:-1;7738:327:0;;-1:-1:-1;;;;;;;7738:327:0;5849:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5849:40:0;;;;;6019:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6019:37:0;;;;14306:1306;;;;;;8212:446;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8212:446:0;;;;;17563:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17563:327:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17563:327:0;;;;;;;-1:-1:-1;17563:327:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17563:327:0;5770:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5770:15:0;;;;12316:838;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12316:838:0;;;;;5896:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5896:32:0;;;;;3293:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3293:178:0;-1:-1:-1;;;;;3293:178:0;;;;;19410:331;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19410:331:0;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19410:331:0;;;;;;;;;;;;;;;;13312:807;13366:10;;;;;;13379:19;:9;13393:4;13379:19;:13;:19;:::i;:::-;13366:32;-1:-1:-1;;;;13443:12:0;;;13432:24;;;;;;;13409:47;-1:-1:-1;13488:15:0;13475:9;:28;;;;;;;;;13467:65;;;;;-1:-1:-1;;;;;13467:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13569:10;13556:24;;;;:12;:24;;;;;;;-1:-1:-1;;;;13609:10:0;;;13608:19;13599:28;;13591:77;;;;;-1:-1:-1;;;;;13591:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13695:11:0;;;13694:20;;;;-1:-1:-1;13740:12:0;;;13739:21;;-1:-1:-1;13779:22:0;:9;13796:4;13779:22;:16;:22;:::i;:::-;13771:52;;;;;;;-1:-1:-1;;;;;13771:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13771:52:0;;;;;;;;;;;;;;;13852:26;13864:5;13871:6;13852:11;:26::i;:::-;13836:42;;13904:1;13893:8;:12;13889:98;;;13943:18;;;;:11;:18;;;;;;:32;;13966:8;13943:32;:22;:32;:::i;:::-;13922:18;;;;:11;:18;;;;;:53;13889:98;13999:10;;:44;;;;;;14024:10;13999:44;;;;;;;;;;;;-1:-1:-1;;;;;13999:10:0;;;;:24;;:44;;;;;:10;;:44;;;;;;;;:10;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;13999:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13999:44:0;;;;14085:10;-1:-1:-1;;;;;14061:50:0;14074:9;14061:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13312:807;;;;;;;:::o;18147:767::-;18210:13;;:::i;:::-;18234:21;;:::i;:::-;18267:25;;:::i;:::-;18304:15;;:::i;:::-;18331:16;;:::i;:::-;18371:6;;;18366:477;18387:2;18383:1;:6;18366:477;;;18444:1;18435:6;:10;18415:16;:9;:14;:16::i;:::-;:30;18411:76;;;18466:5;;18411:76;18512:28;:9;18529:10;;;18512:28;:16;:28;:::i;:::-;18501:39;-1:-1:-1;18501:39:0;18555:4;18560:1;18555:7;;;;;;;;;;:13;18596:18;:9;18610:3;18596:18;:13;:18;:::i;:::-;18644:15;:36;;18583:31;;-1:-1:-1;18644:15:0;-1:-1:-1;;;18661:10:0;;;18660:19;;18644:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18644:36:0;18629:9;18639:1;18629:12;;;;;;;-1:-1:-1;;;;;18629:51:0;;;:12;;;;;;:51;-1:-1:-1;;;18722:12:0;;;18711:24;;;;;;;18695:10;18706:1;18695:13;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;18763:11:0;;;18762:20;18750:6;18757:1;18750:9;;;;;;;;;;:32;-1:-1:-1;;;18811:12:0;;;18810:21;18797:7;18805:1;18797:10;;;;;;;;;;:34;18391:3;;;;;18366:477;;;18147:767;;;;;;;;;;:::o;5821:21::-;;;;:::o;9105:211::-;9174:4;9198:110;9300:7;9198:83;9277:3;;9198:60;9250:7;9198:33;9223:7;9198:6;:24;;:33;;;;:::i;:::-;:51;:60;:51;:60;:::i;:::-;:78;:83;:78;:83;:::i;:110::-;9191:117;9105:211;-1:-1:-1;;;9105:211:0:o;19840:97::-;19889:4;19913:16;:9;:14;:16::i;:::-;19906:23;;19840:97;;:::o;19050:224::-;19105:8;19135:16;:9;:14;:16::i;:::-;19130:2;:21;19126:120;;;19174:20;:9;19191:2;19174:20;:16;:20;:::i;:::-;19168:26;;19126:120;;;-1:-1:-1;19233:1:0;19126:120;19050:224;;;:::o;5741:22::-;;;;:::o;9800:969::-;10098:13;10153:10;9875:16;9884:6;9875:8;:16::i;:::-;:37;;;;;9895:17;9904:7;9895:8;:17::i;:::-;9867:82;;;;;;;-1:-1:-1;;;;;9867:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9979:1;9970:10;;9962:55;;;;;-1:-1:-1;;;;;9962:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10046:1;10036:11;;10028:57;;;;;-1:-1:-1;;;;;10028:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10114:28;10126:6;10134:7;10114:11;:28::i;:::-;10098:44;;10166:27;10182:10;10166:15;:27::i;:::-;10153:40;;10219:1;10208:8;:12;10204:197;;;10245:18;;;;:11;:18;;;;;;:30;-1:-1:-1;10245:30:0;10237:84;;;;;-1:-1:-1;;;;;10237:84:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10237:84:0;;;;;;;;;;;;;;;;;;;;10357:18;;;;:11;:18;;;;;;:32;;10380:8;10357:32;:22;:32;:::i;:::-;10336:18;;;;:11;:18;;;;;:53;10204:197;10411:10;;:55;;;;;;10440:10;10411:55;;;;10452:4;10411:55;;;;;;;;;;;;-1:-1:-1;;;;;10411:10:0;;;;:28;;:55;;;;;:10;;:55;;;;;;;;:10;;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;10411:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10519:10:0;;10502:104;;-1:-1:-1;10519:10:0;-1:-1:-1;10598:7:0;10591:3;10580:6;10591:3;10564:5;10559:2;10539:15;10534:21;:27;;;;:35;10533:44;;;;:53;10532:62;;;;10531:74;10502:9;:16;;:104;;;;;:::i;:::-;10501:105;10479:180;;;;;-1:-1:-1;;;;;10479:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10684:1;10670:15;;;;;;10733:10;10716:15;10707:54;;;;;;;;;;;;;;;;;;;;;;;;;9800:969;;;;:::o;9480:133::-;9549:4;9573:32;9597:7;9573:19;:6;9584:7;9573:19;:10;:19;:::i;5792:22::-;;;;:::o;17171:264::-;17276:9;;;17247:8;;:24;;;;;;17266:4;17247:24;;;;;;;;17232:12;;17247:39;;17276:9;-1:-1:-1;;;;;17247:8:0;;:18;;:24;;;;;;;;;;;;;;;17232:12;17247:8;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;17247:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17247:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17247:24:0;;:39;:28;:39;:::i;:::-;17232:54;-1:-1:-1;17315:1:0;17305:11;;17297:81;;;;;-1:-1:-1;;;;;17297:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17389:8;;17407:10;;17389:38;;;;;;-1:-1:-1;;;;;17407:10:0;;;17389:38;;;;;;;;;;;;:8;;;;;:17;;:38;;;;;;;;;;;;;;:8;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;17389:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17389:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;17171:264:0:o;6063:21::-;;;-1:-1:-1;;;;;6063:21:0;;:::o;8785:142::-;3079:5;;-1:-1:-1;;;;;3079:5:0;3065:10;:19;3057:53;;;;;-1:-1:-1;;;;;3057:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8856:10;8848:18;;;8840:58;;;;;-1:-1:-1;;;;;8840:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8909:3;:10;8785:142::o;15810:1241::-;15861:10;;;;;;;;15874:19;:9;15888:4;15874:19;:13;:19;:::i;:::-;15861:32;-1:-1:-1;;;;15938:12:0;;;15927:24;;;;;;;15904:47;-1:-1:-1;15983:14:0;15970:9;:27;;;;;;;;;15962:63;;;;;-1:-1:-1;;;;;15962:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16049:27;16065:10;16049:15;:27::i;:::-;16036:40;-1:-1:-1;;;;16105:10:0;;;16104:19;16095:28;;;16087:71;;;;;-1:-1:-1;;;;;16087:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16185:11:0;;;16184:20;;;;-1:-1:-1;16230:12:0;;;16229:21;;-1:-1:-1;16279:26:0;16184:20;16229:21;16279:11;:26::i;:::-;16324:18;;;;:11;:18;;;;;;16263:42;;-1:-1:-1;16324:30:0;-1:-1:-1;16324:30:0;16316:99;;;;;-1:-1:-1;;;;;16316:99:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16316:99:0;;;;;;;;;;;;;;;;;;;;16440:30;16462:7;16440:17;:5;16450:6;16440:17;:9;:17;:::i;:30::-;16428:42;-1:-1:-1;16499:22:0;:9;16516:4;16499:22;:16;:22;:::i;:::-;16491:52;;;;;;;-1:-1:-1;;;;;16491:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16491:52:0;;;;;;;;;;;;;;;16556:25;;:10;;:25;;;;;16576:4;;16556:25;;;;16576:4;16556:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;16592:10:0;;16633:15;:36;;-1:-1:-1;;;;;16592:10:0;;;;:28;;16621:10;;-1:-1:-1;;;16650:10:0;;;16649:19;;16633:36;;;;;;;;;;;;;;;16592:86;;;-1:-1:-1;;;16592:86:0;;;;;;-1:-1:-1;;;;;16592:86:0;;;;;;;16633:36;;;;16592:86;;;;;;;;;;;;;;;;;;;;;16633:36;16592:86;;;;5:2:-1;;;;30:1;27;20:12;5:2;16592:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16592:86:0;;;;16706:1;16695:8;:12;16691:248;;;16745:18;;;;:11;:18;;;;;;:32;;16768:8;16745:32;:22;:32;:::i;:::-;16724:18;;;;:11;:18;;;;;:53;16808:15;:8;16821:1;16808:15;:12;:15;:::i;:::-;16850:9;;16792:31;;-1:-1:-1;16850:23:0;;16792:31;16850:23;:13;:23;:::i;:::-;16838:9;:35;;;16888:8;;16906:10;;16888:39;;;;;;-1:-1:-1;;;;;16906:10:0;;;16888:39;;;;;;;;;;;;;;:8;;;:17;;:39;;;;;;;;;;;;;;:8;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16888:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16888:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;16691:248:0;16979:15;:36;;-1:-1:-1;;;16996:10:0;;;16995:19;;16979:36;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16979:36:0;16968:9;16956:87;;;;;;;;;;;17017:10;16956:87;;;;;;;;;;;;;;;;;;;;;;;;;15810:1241;;;;;;;;;:::o;2649:20::-;;;-1:-1:-1;;;;;2649:20:0;;:::o;11020:1149::-;11325:13;11380:10;11640:9;11102:16;11111:6;11102:8;:16::i;:::-;:37;;;;;11122:17;11131:7;11122:8;:17::i;:::-;11094:82;;;;;;;-1:-1:-1;;;;;11094:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11206:1;11197:10;;11189:55;;;;;-1:-1:-1;;;;;11189:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11273:1;11263:11;;11255:57;;;;;-1:-1:-1;;;;;11255:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11341:28;11353:6;11361:7;11341:11;:28::i;:::-;11325:44;;11393:27;11409:10;11393:15;:27::i;:::-;11380:40;;11446:1;11435:8;:12;11431:197;;;11472:18;;;;:11;:18;;;;;;:30;-1:-1:-1;11472:30:0;11464:84;;;;;-1:-1:-1;;;;;11464:84:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11464:84:0;;;;;;;;;;;;;;;;;;;;11584:18;;;;:11;:18;;;;;;:32;;11607:8;11584:32;:22;:32;:::i;:::-;11563:18;;;;:11;:18;;;;;:53;11431:197;11652:32;11676:7;11652:19;:6;11663:7;11652:19;:10;:19;:::i;:32::-;11640:44;-1:-1:-1;11726:17:0;11640:44;11735:7;11726:17;:8;:17;:::i;:::-;11703:19;:6;11714:7;11703:19;:10;:19;:::i;:::-;:40;11695:100;;;;;-1:-1:-1;;;;;11695:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11814:9;:17;;11806:62;;;;;-1:-1:-1;;;;;11806:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:103;11921:10;;11999:7;11992:3;11981:6;11975:3;11965:5;11960:2;11941:14;11936:20;;;;;;;11904:103;11903:104;11881:179;;;;;-1:-1:-1;;;;;11881:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12085:1;12071:15;;;;;;12108:53;;;;;;;;;;;;;;12133:10;;12085:1;12108:53;;;;;;;;11020:1149;;;;;:::o;5936:44::-;;;;;;;;;;;;;:::o;7738:327::-;7857:8;;7914:10;;-1:-1:-1;;;;;7857:8:0;7835:10;:31;7827:76;;;;;-1:-1:-1;;;;;7827:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7927:24;7943:7;7927:15;:24::i;:::-;7983:18;;;;:11;:18;;;;;;7914:37;;-1:-1:-1;7983:30:0;;8006:6;7983:30;:22;:30;:::i;:::-;7962:18;;;;:11;:18;;;;;:51;8036:9;;:21;;8050:6;8036:21;:13;:21;:::i;:::-;8024:9;:33;-1:-1:-1;;;;7738:327:0:o;5849:40::-;;;;;;;;;;;;;:::o;6019:37::-;;;-1:-1:-1;;;;;6019:37:0;;:::o;14306:1306::-;14366:10;;;;;;;;14379:19;:9;14393:4;14379:19;:13;:19;:::i;:::-;14366:32;-1:-1:-1;;;;14443:12:0;;;14432:24;;;;;;;14409:47;-1:-1:-1;14488:15:0;14475:9;:28;;;;;;;;;14467:65;;;;;-1:-1:-1;;;;;14467:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14556:27;14572:10;14556:15;:27::i;:::-;14543:40;-1:-1:-1;;;;14612:10:0;;;14611:19;14602:28;;;14594:71;;;;;-1:-1:-1;;;;;14594:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14692:11:0;;;14691:20;;;;-1:-1:-1;14737:12:0;;;14736:21;;-1:-1:-1;14786:26:0;14691:20;14736:21;14786:11;:26::i;:::-;14831:18;;;;:11;:18;;;;;;14770:42;;-1:-1:-1;14831:30:0;-1:-1:-1;14831:30:0;14823:99;;;;;-1:-1:-1;;;;;14823:99:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14823:99:0;;;;;;;;;;;;;;;;;;;;14947:30;14969:7;14947:17;:5;14957:6;14947:17;:9;:17;:::i;:30::-;14935:42;-1:-1:-1;14996:9:0;:17;;14988:62;;;;;-1:-1:-1;;;;;14988:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15071:22;:9;15088:4;15071:22;:16;:22;:::i;:::-;15063:52;;;;;;;-1:-1:-1;;;;;15063:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15063:52:0;;;;;;;;;;;;;;;15128:15;:36;;-1:-1:-1;;;15145:10:0;;;15144:19;;15128:36;;;;;;;;;;;;;;;:56;;-1:-1:-1;;;;;15128:36:0;;;;15174:9;15128:56;;;;;15174:9;;15128:56;:36;:56;15174:9;15128:36;:56;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;15195:10:0;;:44;;;;;;15220:10;15195:44;;;;;;;;;;;;-1:-1:-1;;;;;15195:10:0;;;;:24;;:44;;;;;:10;;:44;;;;;;;;:10;;:44;;;5:2:-1;;;;30:1;27;20:12;8212:446:0;8272:10;8285:27;8301:10;8285:15;:27::i;:::-;8331:18;;;;:11;:18;;;;;;8272:40;;-1:-1:-1;8331:28:0;-1:-1:-1;8331:28:0;8323:82;;;;;-1:-1:-1;;;;;8323:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8437:18;;;;:11;:18;;;;;;:30;;8460:6;8437:30;:22;:30;:::i;:::-;8416:18;;;;:11;:18;;;;;:51;8490:9;;:21;;8504:6;8490:21;:13;:21;:::i;:::-;8478:9;:33;8526:18;;;;:11;:18;;;;;;:23;8522:81;;;8573:18;;;;:11;:18;;;;;8566:25;8522:81;8613:8;;:37;;;;;;8631:10;8613:37;;;;;;;;;;;;-1:-1:-1;;;;;8613:8:0;;;;:17;;:37;;;;;;;;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;8613:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8613:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;8212:446:0:o;17563:327::-;17613:10;;;;;17670:19;:9;17684:4;17670:19;:13;:19;:::i;:::-;17657:32;-1:-1:-1;;;;17733:12:0;;;17722:24;;;;;;;17762:15;:36;;-1:-1:-1;;;17779:10:0;;;17778:19;;17762:36;;;;;;;;;;;;;;;;17700:182;;-1:-1:-1;;;;;;17762:36:0;;-1:-1:-1;;;;17815:11:0;;;17814:20;;;;-1:-1:-1;17851:12:0;;;17850:21;;-1:-1:-1;17563:327:0;;;;;;:::o;5770:15::-;;;;:::o;12316:838::-;12369:10;;;;;;;12382:19;:9;12396:4;12382:19;:13;:19;:::i;:::-;12369:32;-1:-1:-1;;;;12446:12:0;;;12435:24;;;;;;;12412:47;-1:-1:-1;12491:14:0;12478:9;:27;;;;;;;;;12470:63;;;;;-1:-1:-1;;;;;12470:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12570:10;12557:24;;;;:12;:24;;;;;;;-1:-1:-1;;;;12610:10:0;;;12609:19;12600:28;;12592:77;;;;;-1:-1:-1;;;;;12592:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12696:11:0;;;12695:20;;;;-1:-1:-1;12741:12:0;;;12740:21;;-1:-1:-1;12780:22:0;:9;12797:4;12780:22;:16;:22;:::i;:::-;12772:52;;;;;;;-1:-1:-1;;;;;12772:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12772:52:0;;;;;;;;;;;;;;;12853:26;12865:5;12872:6;12853:11;:26::i;:::-;12837:42;;12905:1;12894:8;:12;12890:98;;;12944:18;;;;:11;:18;;;;;;:32;;12967:8;12944:32;:22;:32;:::i;:::-;12923:18;;;;:11;:18;;;;;:53;12890:98;13012:30;13034:7;13012:17;:5;13022:6;13012:17;:9;:17;:::i;:30::-;13053:25;;13000:42;;-1:-1:-1;13053:10:0;;:25;;;;;13000:42;;13053:25;;;;13000:42;13053:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;13120:10:0;13109:9;13096:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12316:838;;;;;;;;:::o;5896:32::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5896:32:0;;-1:-1:-1;5896:32:0;:::o;3293:178::-;3079:5;;-1:-1:-1;;;;;3079:5:0;3065:10;:19;3057:53;;;;;-1:-1:-1;;;;;3057:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3370:22:0;;;;3362:31;;;;;;3426:5;;;3405:37;;-1:-1:-1;;;;;3405:37:0;;;;3426:5;;;3405:37;;;3449:5;:16;;-1:-1:-1;;3449:16:0;-1:-1:-1;;;;;3449:16:0;;;;;;;;;;3293:178::o;19410:331::-;19470:13;;:::i;:::-;19501:6;19496:216;19517:2;19513:1;:6;19496:216;;;19558:16;:9;:14;:16::i;:::-;19549:6;19545:1;:10;:29;19541:160;;;19605:28;:9;19622:10;;;19605:28;:16;:28;:::i;:::-;19595:4;19600:1;19595:7;;;;;;;;;;:38;19541:160;;;19684:1;19674:4;19679:1;19674:7;;;;;;;;;;:11;19541:160;19521:3;;19496:216;;;19410:331;;;;:::o;5153:118::-;5219:4;5243:14;;;;;;;;;;;:20;;;;5153:118::o;4318:569::-;4382:12;4425:14;;;;;;;;;;4456:10;;:15;4452:60;;;4495:5;4488:12;;;;4452:60;4541:9;;;:16;4528:10;;:29;4524:268;;;4696:10;;4652:9;;;4662:16;;4642:4;;4696:10;;-1:-1:-1;;4662:20:0;;;4652:31;;;;;;;;;;;;;;;;;;4642:42;;;;;;;;;;;;:64;4749:9;;;4759:16;;-1:-1:-1;;4759:20:0;;;4749:31;;;;;;;;;;;;;;4721:4;:9;;4744:1;4731;:10;;;:14;4721:25;;;;;;;;;;;;;;;;;;;:59;4524:268;4824:1;4804:9;;:21;;-1:-1:-1;;4804:21:0;;;;;;:::i;:::-;-1:-1:-1;4843:9:0;:14;;;;;;;;;;4836:21;;;;;;;;;;;;-1:-1:-1;4318:569:0;;;;;;:::o;2225:133::-;2283:7;2311:5;;;2330:6;;;;2323:14;;;5040:105;5121:9;;:16;;5040:105::o;5279:115::-;5348:4;5372;:9;;5382:3;5372:14;;;;;;;;;;;;;;;;;;5365:21;;5279:115;;;;:::o;1677:147::-;1735:7;1763:5;;;1782:6;;;:20;;;1801:1;1796;1792;:5;;;;;;;;:10;1782:20;1775:28;;;;;1830:270;1888:7;1979:9;1995:1;1991;:5;;;;;;;;;1830:270;-1:-1:-1;;;;1830:270:0:o;20084:100::-;20167:8;-1:-1:-1;20160:15:0;20084:100::o;7015:438::-;-1:-1:-1;;;;;7096:22:0;;7075:4;7096:22;;;:12;:22;;;;;;:27;7092:354;;-1:-1:-1;;;;;;7147:22:0;;;;;;:12;:22;;;;;;7140:29;;7092:354;7210:15;:22;7235:7;-1:-1:-1;7202:77:0;;;;;-1:-1:-1;;;;;7202:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7319:15:0;:22;;-1:-1:-1;;;;;7294:22:0;;;;;;:12;:22;;;;;:47;;;39:1:-1;23:18;;45:23;;7356:30:0;;;;;;;;;-1:-1:-1;;7356:30:0;;;;;;7408:22;-1:-1:-1;;7408:26:0;7401:33;;2106:113;2164:7;2187:6;;;;2180:14;;;;-1:-1:-1;2208:5:0;;;2106:113::o;3937:373::-;4013:13;4057:14;;;;;;;;;;4082:7;;;:15;;;4112:10;;:14;-1:-1:-1;4108:195:0;;;4150:4;4143:11;;;;4108:195;4202:4;:9;;4200:18;;;;;;;;;;:::i;:::-;4187:31;;;4233:9;;;:25;;4261:3;;-1:-1:-1;;4243:14:0;;4233:25;;;;;;;;;;;;;:31;;;;4286:5;4279:12;;4108:195;3937:373;;;;;;:::o;5576:14613::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;5576:14613:0;;;-1:-1:-1;;5576:14613:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://6f21fef149cfd5eb425253dd093f85f42405f876921b09166d282a7ca8ebbab6

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  ]

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.