ETH Price: $1,926.49 (-4.72%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Burn245327692026-02-25 8:35:472 days ago1772008547IN
Wrapped BTC: Factory
0 ETH0.000024150.08256902
Burn245311292026-02-25 3:06:232 days ago1771988783IN
Wrapped BTC: Factory
0 ETH0.000016310.05576817
Burn245239742026-02-24 3:09:113 days ago1771902551IN
Wrapped BTC: Factory
0 ETH0.000013390.045049
Burn244975172026-02-20 10:38:357 days ago1771583915IN
Wrapped BTC: Factory
0 ETH0.000013850.04736578
Burn244974922026-02-20 10:33:357 days ago1771583615IN
Wrapped BTC: Factory
0 ETH0.000015550.05315928
Burn244911252026-02-19 13:14:478 days ago1771506887IN
Wrapped BTC: Factory
0 ETH0.000045910.15693987
Burn244422182026-02-12 17:34:4715 days ago1770917687IN
Wrapped BTC: Factory
0 ETH0.000068370.2337
Burn243805392026-02-04 2:35:3523 days ago1770172535IN
Wrapped BTC: Factory
0 ETH0.000036350.12227204
Burn243772832026-02-03 15:40:1124 days ago1770133211IN
Wrapped BTC: Factory
0 ETH0.00010690.3654
Burn243736632026-02-03 3:32:1124 days ago1770089531IN
Wrapped BTC: Factory
0 ETH0.000322391.10196014
Burn243668492026-02-02 4:40:3525 days ago1770007235IN
Wrapped BTC: Factory
0 ETH0.000043830.14740429
Burn243667132026-02-02 4:13:2325 days ago1770005603IN
Wrapped BTC: Factory
0 ETH0.000179630.60411433
Burn243667032026-02-02 4:11:2325 days ago1770005483IN
Wrapped BTC: Factory
0 ETH0.000856342.927
Burn238605512025-11-23 8:58:4796 days ago1763888327IN
Wrapped BTC: Factory
0 ETH0.000611342.08959451
Burn237227522025-11-04 1:43:59116 days ago1762220639IN
Wrapped BTC: Factory
0 ETH0.000079450.27158998
Burn237162912025-11-03 4:04:11116 days ago1762142651IN
Wrapped BTC: Factory
0 ETH0.000077940.26643397
Add Mint Request236908592025-10-30 14:40:11120 days ago1761835211IN
Wrapped BTC: Factory
0 ETH0.000105292.78781329
Add Mint Request236906102025-10-30 13:49:59120 days ago1761832199IN
Wrapped BTC: Factory
0 ETH0.000075532
Burn236108492025-10-19 9:40:23131 days ago1760866823IN
Wrapped BTC: Factory
0 ETH0.000471941.61312422
Burn235672192025-10-13 7:10:35137 days ago1760339435IN
Wrapped BTC: Factory
0 ETH0.000034110.11661409
Burn234308242025-09-24 5:31:47156 days ago1758691907IN
Wrapped BTC: Factory
0 ETH0.000036590.12508862
Add Mint Request232744742025-09-02 9:17:59178 days ago1756804679IN
Wrapped BTC: Factory
0 ETH0.000057760.18818358
Add Mint Request232683572025-09-01 12:42:47179 days ago1756730567IN
Wrapped BTC: Factory
0 ETH0.0223494572.81353416
Burn231312862025-08-13 9:38:47198 days ago1755077927IN
Wrapped BTC: Factory
0 ETH0.000259690.9025019
Add Mint Request230998272025-08-09 0:09:59203 days ago1754698199IN
Wrapped BTC: Factory
0 ETH0.000072860.23739484
View all transactions

Latest 5 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-135864882021-11-10 4:54:041570 days ago1636520044
Wrapped BTC: Factory
0.0001 ETH
-112024052020-11-06 7:25:581939 days ago1604647558
Wrapped BTC: Factory
0 ETH
-104661262020-07-15 20:06:072053 days ago1594843567
Wrapped BTC: Factory
0.000001 ETH
-97764072020-03-31 1:02:532160 days ago1585616573
Wrapped BTC: Factory
0.000001 ETH
-94708052020-02-12 22:11:512207 days ago1581545511
Wrapped BTC: Factory
0.00001 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Factory

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-11-24
*/

pragma solidity 0.4.24;

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @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 OwnershipRenounced(address indexed previousOwner);
  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);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: openzeppelin-solidity/contracts/ownership/Claimable.sol

/**
 * @title Claimable
 * @dev Extension for the Ownable contract, where the ownership needs to be claimed.
 * This allows the new owner to accept the transfer.
 */
contract Claimable is Ownable {
  address public pendingOwner;

  /**
   * @dev Modifier throws if called by any account other than the pendingOwner.
   */
  modifier onlyPendingOwner() {
    require(msg.sender == pendingOwner);
    _;
  }

  /**
   * @dev Allows the current owner to set the pendingOwner address.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    pendingOwner = newOwner;
  }

  /**
   * @dev Allows the pendingOwner address to finalize the transfer.
   */
  function claimOwnership() public onlyPendingOwner {
    emit OwnershipTransferred(owner, pendingOwner);
    owner = pendingOwner;
    pendingOwner = address(0);
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  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: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @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: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(
    ERC20Basic _token,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transfer(_to, _value));
  }

  function safeTransferFrom(
    ERC20 _token,
    address _from,
    address _to,
    uint256 _value
  )
    internal
  {
    require(_token.transferFrom(_from, _to, _value));
  }

  function safeApprove(
    ERC20 _token,
    address _spender,
    uint256 _value
  )
    internal
  {
    require(_token.approve(_spender, _value));
  }
}

// File: openzeppelin-solidity/contracts/ownership/CanReclaimToken.sol

/**
 * @title Contracts that should be able to recover tokens
 * @author SylTi
 * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
 * This will prevent any accidental loss of tokens.
 */
contract CanReclaimToken is Ownable {
  using SafeERC20 for ERC20Basic;

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param _token ERC20Basic The address of the token contract
   */
  function reclaimToken(ERC20Basic _token) external onlyOwner {
    uint256 balance = _token.balanceOf(this);
    _token.safeTransfer(owner, balance);
  }

}

// File: contracts/utils/OwnableContract.sol

// empty block is used as this contract just inherits others.
contract OwnableContract is CanReclaimToken, Claimable { } /* solhint-disable-line no-empty-blocks */

// File: contracts/controller/ControllerInterface.sol

interface ControllerInterface {
    function mint(address to, uint amount) external returns (bool);
    function burn(uint value) external returns (bool);
    function isCustodian(address addr) external view returns (bool);
    function isMerchant(address addr) external view returns (bool);
    function getWBTC() external view returns (ERC20);
}

// File: contracts/factory/Factory.sol

contract Factory is OwnableContract {

    enum RequestStatus {PENDING, CANCELED, APPROVED, REJECTED}

    struct Request {
        address requester; // sender of the request.
        uint amount; // amount of wbtc to mint/burn.
        string btcDepositAddress; // custodian's btc address in mint, merchant's btc address in burn.
        string btcTxid; // bitcoin txid for sending/redeeming btc in the mint/burn process.
        uint nonce; // serial number allocated for each request.
        uint timestamp; // time of the request creation.
        RequestStatus status; // status of the request.
    }

    ControllerInterface public controller;

    // mapping between merchant to the corresponding custodian deposit address, used in the minting process.
    // by using a different deposit address per merchant the custodian can identify which merchant deposited.
    mapping(address=>string) public custodianBtcDepositAddress;

    // mapping between merchant to the its deposit address where btc should be moved to, used in the burning process.
    mapping(address=>string) public merchantBtcDepositAddress;

    // mapping between a mint request hash and the corresponding request nonce. 
    mapping(bytes32=>uint) public mintRequestNonce;

    // mapping between a burn request hash and the corresponding request nonce.
    mapping(bytes32=>uint) public burnRequestNonce;

    Request[] public mintRequests;
    Request[] public burnRequests;

    constructor(ControllerInterface _controller) public {
        require(_controller != address(0), "invalid _controller address");
        controller = _controller;
        owner = _controller;
    }

    modifier onlyMerchant() {
        require(controller.isMerchant(msg.sender), "sender not a merchant.");
        _;
    }

    modifier onlyCustodian() {
        require(controller.isCustodian(msg.sender), "sender not a custodian.");
        _;
    }

    event CustodianBtcDepositAddressSet(address indexed merchant, address indexed sender, string btcDepositAddress);

    function setCustodianBtcDepositAddress(
        address merchant,
        string btcDepositAddress
    )
        external
        onlyCustodian
        returns (bool) 
    {
        require(merchant != 0, "invalid merchant address");
        require(controller.isMerchant(merchant), "merchant address is not a real merchant.");
        require(!isEmptyString(btcDepositAddress), "invalid btc deposit address");

        custodianBtcDepositAddress[merchant] = btcDepositAddress;
        emit CustodianBtcDepositAddressSet(merchant, msg.sender, btcDepositAddress);
        return true;
    }

    event MerchantBtcDepositAddressSet(address indexed merchant, string btcDepositAddress);

    function setMerchantBtcDepositAddress(string btcDepositAddress) external onlyMerchant returns (bool) {
        require(!isEmptyString(btcDepositAddress), "invalid btc deposit address");

        merchantBtcDepositAddress[msg.sender] = btcDepositAddress;
        emit MerchantBtcDepositAddressSet(msg.sender, btcDepositAddress);
        return true; 
    }

    event MintRequestAdd(
        uint indexed nonce,
        address indexed requester,
        uint amount,
        string btcDepositAddress,
        string btcTxid,
        uint timestamp,
        bytes32 requestHash
    );

    function addMintRequest(
        uint amount,
        string btcTxid,
        string btcDepositAddress
    )
        external
        onlyMerchant
        returns (bool)
    {
        require(!isEmptyString(btcDepositAddress), "invalid btc deposit address"); 
        require(compareStrings(btcDepositAddress, custodianBtcDepositAddress[msg.sender]), "wrong btc deposit address");

        uint nonce = mintRequests.length;
        uint timestamp = getTimestamp();

        Request memory request = Request({
            requester: msg.sender,
            amount: amount,
            btcDepositAddress: btcDepositAddress,
            btcTxid: btcTxid,
            nonce: nonce,
            timestamp: timestamp,
            status: RequestStatus.PENDING
        });

        bytes32 requestHash = calcRequestHash(request);
        mintRequestNonce[requestHash] = nonce; 
        mintRequests.push(request);

        emit MintRequestAdd(nonce, msg.sender, amount, btcDepositAddress, btcTxid, timestamp, requestHash);
        return true;
    }

    event MintRequestCancel(uint indexed nonce, address indexed requester, bytes32 requestHash);

    function cancelMintRequest(bytes32 requestHash) external onlyMerchant returns (bool) {
        uint nonce;
        Request memory request;

        (nonce, request) = getPendingMintRequest(requestHash);

        require(msg.sender == request.requester, "cancel sender is different than pending request initiator");
        mintRequests[nonce].status = RequestStatus.CANCELED;

        emit MintRequestCancel(nonce, msg.sender, requestHash);
        return true;
    }

    event MintConfirmed(
        uint indexed nonce,
        address indexed requester,
        uint amount,
        string btcDepositAddress,
        string btcTxid,
        uint timestamp,
        bytes32 requestHash
    );

    function confirmMintRequest(bytes32 requestHash) external onlyCustodian returns (bool) {
        uint nonce;
        Request memory request;

        (nonce, request) = getPendingMintRequest(requestHash);

        mintRequests[nonce].status = RequestStatus.APPROVED;
        require(controller.mint(request.requester, request.amount), "mint failed");

        emit MintConfirmed(
            request.nonce,
            request.requester,
            request.amount,
            request.btcDepositAddress,
            request.btcTxid,
            request.timestamp,
            requestHash
        );
        return true;
    }

    event MintRejected(
        uint indexed nonce,
        address indexed requester,
        uint amount,
        string btcDepositAddress,
        string btcTxid,
        uint timestamp,
        bytes32 requestHash
    );

    function rejectMintRequest(bytes32 requestHash) external onlyCustodian returns (bool) {
        uint nonce;
        Request memory request;

        (nonce, request) = getPendingMintRequest(requestHash);

        mintRequests[nonce].status = RequestStatus.REJECTED;

        emit MintRejected(
            request.nonce,
            request.requester,
            request.amount,
            request.btcDepositAddress,
            request.btcTxid,
            request.timestamp,
            requestHash
        );
        return true;
    }

    event Burned(
        uint indexed nonce,
        address indexed requester,
        uint amount,
        string btcDepositAddress,
        uint timestamp,
        bytes32 requestHash
    );

    function burn(uint amount) external onlyMerchant returns (bool) {
        string memory btcDepositAddress = merchantBtcDepositAddress[msg.sender];
        require(!isEmptyString(btcDepositAddress), "merchant btc deposit address was not set"); 

        uint nonce = burnRequests.length;
        uint timestamp = getTimestamp();

        // set txid as empty since it is not known yet.
        string memory btcTxid = "";

        Request memory request = Request({
            requester: msg.sender,
            amount: amount,
            btcDepositAddress: btcDepositAddress,
            btcTxid: btcTxid,
            nonce: nonce,
            timestamp: timestamp,
            status: RequestStatus.PENDING
        });

        bytes32 requestHash = calcRequestHash(request);
        burnRequestNonce[requestHash] = nonce; 
        burnRequests.push(request);

        require(controller.getWBTC().transferFrom(msg.sender, controller, amount), "trasnfer tokens to burn failed");
        require(controller.burn(amount), "burn failed");

        emit Burned(nonce, msg.sender, amount, btcDepositAddress, timestamp, requestHash);
        return true;
    }

    event BurnConfirmed(
        uint indexed nonce,
        address indexed requester,
        uint amount,
        string btcDepositAddress,
        string btcTxid,
        uint timestamp,
        bytes32 inputRequestHash
    );

    function confirmBurnRequest(bytes32 requestHash, string btcTxid) external onlyCustodian returns (bool) {
        uint nonce;
        Request memory request;

        (nonce, request) = getPendingBurnRequest(requestHash);

        burnRequests[nonce].btcTxid = btcTxid;
        burnRequests[nonce].status = RequestStatus.APPROVED;
        burnRequestNonce[calcRequestHash(burnRequests[nonce])] = nonce;

        emit BurnConfirmed(
            request.nonce,
            request.requester,
            request.amount,
            request.btcDepositAddress,
            btcTxid,
            request.timestamp,
            requestHash
        );
        return true;
    }

    function getMintRequest(uint nonce)
        external
        view
        returns (
            uint requestNonce,
            address requester,
            uint amount,
            string btcDepositAddress,
            string btcTxid,
            uint timestamp,
            string status,
            bytes32 requestHash
        )
    {
        Request memory request = mintRequests[nonce];
        string memory statusString = getStatusString(request.status); 

        requestNonce = request.nonce;
        requester = request.requester;
        amount = request.amount;
        btcDepositAddress = request.btcDepositAddress;
        btcTxid = request.btcTxid;
        timestamp = request.timestamp;
        status = statusString;
        requestHash = calcRequestHash(request);
    }

    function getMintRequestsLength() external view returns (uint length) {
        return mintRequests.length;
    }

    function getBurnRequest(uint nonce)
        external
        view
        returns (
            uint requestNonce,
            address requester,
            uint amount,
            string btcDepositAddress,
            string btcTxid,
            uint timestamp,
            string status,
            bytes32 requestHash
        )
    {
        Request storage request = burnRequests[nonce];
        string memory statusString = getStatusString(request.status); 

        requestNonce = request.nonce;
        requester = request.requester;
        amount = request.amount;
        btcDepositAddress = request.btcDepositAddress;
        btcTxid = request.btcTxid;
        timestamp = request.timestamp;
        status = statusString;
        requestHash = calcRequestHash(request);
    }

    function getBurnRequestsLength() external view returns (uint length) {
        return burnRequests.length;
    }

    function getTimestamp() internal view returns (uint) {
        // timestamp is only used for data maintaining purpose, it is not relied on for critical logic.
        return block.timestamp; // solhint-disable-line not-rely-on-time
    }

    function getPendingMintRequest(bytes32 requestHash) internal view returns (uint nonce, Request memory request) {
        require(requestHash != 0, "request hash is 0");
        nonce = mintRequestNonce[requestHash];
        request = mintRequests[nonce];
        validatePendingRequest(request, requestHash);
    }

    function getPendingBurnRequest(bytes32 requestHash) internal view returns (uint nonce, Request memory request) {
        require(requestHash != 0, "request hash is 0");
        nonce = burnRequestNonce[requestHash];
        request = burnRequests[nonce];
        validatePendingRequest(request, requestHash);
    }

    function validatePendingRequest(Request memory request, bytes32 requestHash) internal pure {
        require(request.status == RequestStatus.PENDING, "request is not pending");
        require(requestHash == calcRequestHash(request), "given request hash does not match a pending request");
    }

    function calcRequestHash(Request request) internal pure returns (bytes32) {
        return keccak256(abi.encode(
            request.requester,
            request.amount,
            request.btcDepositAddress,
            request.btcTxid,
            request.nonce,
            request.timestamp
        ));
    }

    function compareStrings (string a, string b) internal pure returns (bool) {
        return (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
    }

    function isEmptyString (string a) internal pure returns (bool) {
        return (compareStrings(a, ""));
    }

    function getStatusString(RequestStatus status) internal pure returns (string) {
        if (status == RequestStatus.PENDING) {
            return "pending";
        } else if (status == RequestStatus.CANCELED) {
            return "canceled";
        } else if (status == RequestStatus.APPROVED) {
            return "approved";
        } else if (status == RequestStatus.REJECTED) {
            return "rejected";
        } else {
            // this fallback can never be reached.
            return "unknown";
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"confirmMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMintRequestsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"btcDepositAddress","type":"string"}],"name":"setMerchantBtcDepositAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mintRequests","outputs":[{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"nonce","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"burnRequests","outputs":[{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"nonce","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"merchant","type":"address"},{"name":"btcDepositAddress","type":"string"}],"name":"setCustodianBtcDepositAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBurnRequestsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"custodianBtcDepositAddress","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"rejectMintRequest","outputs":[{"name":"","type":"bool"}],"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":"amount","type":"uint256"},{"name":"btcTxid","type":"string"},{"name":"btcDepositAddress","type":"string"}],"name":"addMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"},{"name":"btcTxid","type":"string"}],"name":"confirmBurnRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"mintRequestNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"}],"name":"getMintRequest","outputs":[{"name":"requestNonce","type":"uint256"},{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"string"},{"name":"requestHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"cancelMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"burnRequestNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"merchantBtcDepositAddress","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"}],"name":"getBurnRequest","outputs":[{"name":"requestNonce","type":"uint256"},{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"string"},{"name":"requestHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","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":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"btcDepositAddress","type":"string"}],"name":"CustodianBtcDepositAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"},{"indexed":false,"name":"btcDepositAddress","type":"string"}],"name":"MerchantBtcDepositAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRequestAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRequestCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"inputRequestHash","type":"bytes32"}],"name":"BurnConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b506040516020806137e0833981016040525160008054600160a060020a03191633179055600160a060020a03811615156100ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964205f636f6e74726f6c6c657220616464726573730000000000604482015290519081900360640190fd5b60028054600160a060020a03909216600160a060020a03199283168117909155600080549092161790556136fc806100e46000396000f30060806040526004361061012f5763ffffffff60e060020a60003504166317ffc32081146101345780632bf90baa14610157578063311104f314610183578063321d0f7e146101aa578063424e6575146101ca57806342966c68146103035780634e71e0c81461031b5780636406c10c1461033057806368c4d91914610348578063715018a61461037557806372f69a721461038a5780637840fc8e1461039f578063861f92a8146104355780638da5cb5b1461044d5780638e24a7641461047e5780639355f0a4146104ae5780639ad4b86b146104d2578063b69b22d8146104ea578063c06e2d2414610683578063c72551be1461069b578063d25e178d146106b3578063e21c40c0146106d4578063e30c3978146106ec578063f2fde38b14610701578063f77c479114610722575b600080fd5b34801561014057600080fd5b50610155600160a060020a0360043516610737565b005b34801561016357600080fd5b5061016f600435610803565b604080519115158252519081900360200190f35b34801561018f57600080fd5b50610198610b5c565b60408051918252519081900360200190f35b3480156101b657600080fd5b5061016f6004803560248101910135610b63565b3480156101d657600080fd5b506101e2600435610d2e565b6040518088600160a060020a0316600160a060020a03168152602001878152602001806020018060200186815260200185815260200184600381111561022457fe5b60ff168152602001838103835288818151815260200191508051906020019080838360005b83811015610261578181015183820152602001610249565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156102c15781810151838201526020016102a9565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561030f57600080fd5b5061016f600435610e9e565b34801561032757600080fd5b5061015561154f565b34801561033c57600080fd5b506101e26004356115d7565b34801561035457600080fd5b5061016f60048035600160a060020a031690602480359081019101356115e5565b34801561038157600080fd5b5061015561191e565b34801561039657600080fd5b5061019861198a565b3480156103ab57600080fd5b506103c0600160a060020a0360043516611990565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061016f600435611a2b565b34801561045957600080fd5b50610462611be5565b60408051600160a060020a039092168252519081900360200190f35b34801561048a57600080fd5b5061016f600480359060248035808201929081013591604435908101910135611bf4565b3480156104ba57600080fd5b5061016f60048035906024803590810191013561210d565b3480156104de57600080fd5b50610198600435612527565b3480156104f657600080fd5b50610502600435612539565b6040518089815260200188600160a060020a0316600160a060020a031681526020018781526020018060200180602001868152602001806020018560001916600019168152602001848103845289818151815260200191508051906020019080838360005b8381101561057f578181015183820152602001610567565b50505050905090810190601f1680156105ac5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105df5781810151838201526020016105c7565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561063f578181015183820152602001610627565b50505050905090810190601f16801561066c5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561068f57600080fd5b5061016f600435612750565b3480156106a757600080fd5b5061019860043561292e565b3480156106bf57600080fd5b506103c0600160a060020a0360043516612940565b3480156106e057600080fd5b506105026004356129a8565b3480156106f857600080fd5b50610462612bdd565b34801561070d57600080fd5b50610155600160a060020a0360043516612bec565b34801561072e57600080fd5b50610462612c32565b60008054600160a060020a0316331461074f57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b50516000549091506107ff90600160a060020a0384811691168363ffffffff612c4116565b5050565b60008061080e613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b505050506040513d602081101561088857600080fd5b505115156108ce576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6108d784612ce0565b60078054929450909250600291849081106108ee57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561091557fe5b02179055506002548151602080840151604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909316926340c10f1992604480830193928290030181600087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b50511515610a0f576040805160e560020a62461bcd02815260206004820152600b60248201527f6d696e74206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060000151600160a060020a031681608001517f051f4ba27061b0e6dc829669a7baa8bba9cf7f6cd2f95e1f0bdd9c22126d8b218360200151846040015185606001518660a001518a6040518086815260200180602001806020018581526020018460001916600019168152602001838103835287818151815260200191508051906020019080838360005b83811015610ab3578181015183820152602001610a9b565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610b13578181015183820152602001610afb565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a35060019392505050565b6007545b90565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50511515610c22576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b610c5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15610cb0576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b336000908152600460205260409020610cca90848461358a565b5033600160a060020a03167fec7032a7f06b5d29ee5a6a1e73ab4e4dc80890c75a5104e3c075584e42775c2984846040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a250600192915050565b6007805482908110610d3c57fe5b6000918252602091829020600791909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a0390941696509094919291830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b50505050600483015460058401546006909401549293909290915060ff1687565b600060606000806060610eaf613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b50511515610f6e576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b3360009081526004602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050955061101286612f0c565b1561108d576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e7420627463206465706f73697420616464726573732077617360448201527f206e6f7420736574000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600854945061109a612f30565b60408051602081810183526000808352835160e0810185523381529182018d90529281018a9052606081018290526080810189905260a08101849052929650945060c082015291506110eb82612f34565b6000818152600660209081526040808320899055600880546001810180835591909452865160079094027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381018054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616959095178555878401517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee482015591870151805195965090948794936111c8937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee501920190613608565b50606082015180516111e4916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561121657fe5b0217905550505050600260009054906101000a9004600160a060020a0316600160a060020a0316635eebb1ce6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d602081101561129b57600080fd5b5051600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018c9052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b50511515611394576040805160e560020a62461bcd02815260206004820152601e60248201527f747261736e66657220746f6b656e7320746f206275726e206661696c65640000604482015290519081900360640190fd5b600254604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a03909216916342966c68916024808201926020929091908290030181600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d602081101561142557600080fd5b5051151561147d576040805160e560020a62461bcd02815260206004820152600b60248201527f6275726e206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b33600160a060020a0316857f865e64c3fa22a0daee479fc02875d3e97d581930b9679232344d4d5dcce6a7b28a89888660405180858152602001806020018481526020018360001916600019168152602001828103825285818151815260200191508051906020019080838360005b838110156115045781810151838201526020016114ec565b50505050905090810190601f1680156115315780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3506001979650505050505050565b600154600160a060020a0316331461156657600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6008805482908110610d3c57fe5b6002546040805160e260020a630d7203230281523360048201529051600092600160a060020a0316916335c80c8c91602480830192602092919082900301818787803b15801561163457600080fd5b505af1158015611648573d6000803e3d6000fd5b505050506040513d602081101561165e57600080fd5b505115156116a4576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b600160a060020a0384161515611704576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b6002546040805160e060020a631a2f7167028152600160a060020a03878116600483015291519190921691631a2f71679160248083019260209291908290030181600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506040513d602081101561178057600080fd5b505115156117fe576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e742061646472657373206973206e6f742061207265616c206d60448201527f65726368616e742e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61183783838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b1561188c576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b600160a060020a03841660009081526003602052604090206118af90848461358a565b5033600160a060020a031684600160a060020a03167fa1cea79438a06b74491693be087a2035e62acbe738749fc0ba7fc87df2eed93985856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a35060019392505050565b600054600160a060020a0316331461193557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60085490565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b820191906000526020600020905b815481529060010190602001808311611a0657829003601f168201915b505050505081565b600080611a36613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b158015611a8657600080fd5b505af1158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b50511515611af6576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b611aff84612ce0565b6007805492945090925060039184908110611b1657fe5b60009182526020909120600660079092020101805460ff19166001836003811115611b3d57fe5b02179055508060000151600160a060020a031681608001517fdadc06f5b98131083e96b856c044184efd23ae2e797a876fd80aa5dae4f724558360200151846040015185606001518660a001518a60405180868152602001806020018060200185815260200184600019166000191681526020018381038352878181518152602001915080519060200190808383600083811015610ab3578181015183820152602001610a9b565b600054600160a060020a031681565b6000806000611c01613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b505050506040513d6020811015611c7a57600080fd5b50511515611cc0576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b611cf987878080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15611d4e576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b611e2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050336000908152600360209081526040918290208054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152965094509092508401905082828015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050506130ca565b1515611e77576040805160e560020a62461bcd02815260206004820152601960248201527f77726f6e6720627463206465706f736974206164647265737300000000000000604482015290519081900360640190fd5b6007549350611e84612f30565b925060e06040519081016040528033600160a060020a031681526020018b815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505081526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375050509284525050506020810186905260408101859052606001600090529150611f3282612f34565b6000818152600560209081526040808320889055600780546001810180835594829052875191027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018054600160a060020a0390931673ffffffffffffffffffffffffffffffffffffffff19909316929092178255878401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591870151805195965093948794919361200d937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a01920190613608565b5060608201518051612029916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561205b57fe5b021790555050505033600160a060020a0316847f09e00024b3e14e42d4e78c05bf370a34c2e4ce4027dad38abafdb1bf49da432f8c8a8a8e8e8a89604051808881526020018060200180602001858152602001846000191660001916815260200183810383528989828181526020019250808284379091018481038352878152602001905087878082843760405192018290039b50909950505050505050505050a35060019998505050505050505050565b600080612118613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561216857600080fd5b505af115801561217c573d6000803e3d6000fd5b505050506040513d602081101561219257600080fd5b505115156121d8576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6121e186613257565b809250819350505084846008848154811015156121fa57fe5b9060005260206000209060070201600301919061221892919061358a565b50600260088381548110151561222a57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561225157fe5b0217905550816006600061240b60088681548110151561226d57fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f810187900487028301870185528083529495929493860193919290919083018282801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156123c35780601f10612398576101008083540402835291602001916123c3565b820191906000526020600020905b8154815290600101906020018083116123a657829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156123f857fe5b600381111561240357fe5b905250612f34565b60001916600019168152602001908152602001600020819055508060000151600160a060020a031681608001517f1949e77206780c38f7c6487c926f8a51280fcdbf63397a01a3428dbfccd2b09f8360200151846040015189898760a001518d6040518087815260200180602001806020018581526020018460001916600019168152602001838103835288818151815260200191508051906020019080838360005b838110156124c65781810151838201526020016124ae565b50505050905090810190601f1680156124f35780820380516001836020036101000a031916815260200191505b50838103825286815260200187878082843760405192018290039a509098505050505050505050a350600195945050505050565b60056020526000908152604090205481565b600080600060608060006060600061254f613539565b606060078b81548110151561256057fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f81018790048702830187018552808352949592949386019391929091908301828280156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156126b65780601f1061268b576101008083540402835291602001916126b6565b820191906000526020600020905b81548152906001019060200180831161269957829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156126eb57fe5b60038111156126f657fe5b8152505091506127098260c001516132d9565b905081608001519950816000015198508160200151975081604001519650816060015195508160a00151945080935061274182612f34565b92505050919395975091939597565b60008061275b613539565b6002546040805160e060020a631a2f71670281523360048201529051600160a060020a0390921691631a2f7167916024808201926020929091908290030181600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b5051151561281b576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b61282484612ce0565b80519193509150600160a060020a031633146128b0576040805160e560020a62461bcd02815260206004820152603960248201527f63616e63656c2073656e64657220697320646966666572656e74207468616e2060448201527f70656e64696e67207265717565737420696e69746961746f7200000000000000606482015290519081900360840190fd5b60016007838154811015156128c157fe5b60009182526020909120600660079092020101805460ff191660018360038111156128e857fe5b0217905550604080518581529051339184917fb419f275eebfa354bbab2709955ee0c0e25ca95fae50a8e3672c5e3d9c931f589181900360200190a35060019392505050565b60066020526000908152604090205481565b60046020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b600080600060608060006060600080606060088b8154811015156129c857fe5b6000918252602090912060079091020160068101549092506129ec9060ff166132d9565b9050816004015499508160000160009054906101000a9004600160a060020a0316985081600101549750816002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aae5780601f10612a8357610100808354040283529160200191612aae565b820191906000526020600020905b815481529060010190602001808311612a9157829003601f168201915b5050505060038401805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949b50919250830182828015612b3e5780601f10612b1357610100808354040283529160200191612b3e565b820191906000526020600020905b815481529060010190602001808311612b2157829003601f168201915b5050505060058401546040805160e0810182528654600160a060020a031681526001808801546020808401919091526002808a01805486516101009582161595909502600019011691909104601f81018390048302840183018652808452979d50949b5096995089966127419692955088949386019391929083018282801561232f5780601f106123045761010080835404028352916020019161232f565b600154600160a060020a031681565b600054600160a060020a03163314612c0357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015612ca457600080fd5b505af1158015612cb8573d6000803e3d6000fd5b505050506040513d6020811015612cce57600080fd5b50511515612cdb57600080fd5b505050565b6000612cea613539565b821515612d41576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260056020526040902054600780549193509083908110612d6257fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f8101879004870283018701855280835294959294938601939192909190830182828015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015612eb85780601f10612e8d57610100808354040283529160200191612eb8565b820191906000526020600020905b815481529060010190602001808311612e9b57829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff166003811115612eed57fe5b6003811115612ef857fe5b9052509050612f07818461344d565b915091565b6000612f288260206040519081016040528060008152506130ca565b90505b919050565b4290565b6000816000015182602001518360400151846060015185608001518660a001516040516020018087600160a060020a0316600160a060020a031681526020018681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015612fc2578181015183820152602001612faa565b50505050905090810190601f168015612fef5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561302257818101518382015260200161300a565b50505050905090810190601f16801561304f5780820380516001836020036101000a031916815260200191505b50985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106130985780518252601f199092019160209182019101613079565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000816040516020018082805190602001908083835b602083106130ff5780518252601f1990920191602091820191016130e0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106131625780518252601f199092019160209182019101613143565b51815160209384036101000a60001901801990921691161790526040519190930181900381208851909550889450908301928392508401908083835b602083106131bd5780518252601f19909201916020918201910161319e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106132205780518252601f199092019160209182019101613201565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120939093149695505050505050565b6000613261613539565b8215156132b8576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260066020526040902054600880549193509083908110612d6257fe5b606060008260038111156132e957fe5b1415613329575060408051808201909152600781527f70656e64696e67000000000000000000000000000000000000000000000000006020820152612f2b565b600182600381111561333757fe5b1415613377575060408051808201909152600881527f63616e63656c65640000000000000000000000000000000000000000000000006020820152612f2b565b600282600381111561338557fe5b14156133c5575060408051808201909152600881527f617070726f7665640000000000000000000000000000000000000000000000006020820152612f2b565b60038260038111156133d357fe5b1415613413575060408051808201909152600881527f72656a65637465640000000000000000000000000000000000000000000000006020820152612f2b565b5060408051808201909152600781527f756e6b6e6f776e000000000000000000000000000000000000000000000000006020820152612f2b565b60008260c00151600381111561345f57fe5b146134b4576040805160e560020a62461bcd02815260206004820152601660248201527f72657175657374206973206e6f742070656e64696e6700000000000000000000604482015290519081900360640190fd5b6134bd82612f34565b81146107ff576040805160e560020a62461bcd02815260206004820152603360248201527f676976656e2072657175657374206861736820646f6573206e6f74206d61746360448201527f6820612070656e64696e67207265717565737400000000000000000000000000606482015290519081900360840190fd5b60e0604051908101604052806000600160a060020a0316815260200160008152602001606081526020016060815260200160008152602001600081526020016000600381111561358557fe5b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106135cb5782800160ff198235161785556135f8565b828001600101855582156135f8579182015b828111156135f85782358255916020019190600101906135dd565b50613604929150613676565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061364957805160ff19168380011785556135f8565b828001600101855582156135f8579182015b828111156135f857825182559160200191906001019061365b565b610b6091905b80821115613604576000815560010161367c560073656e646572206e6f742061206d65726368616e742e0000000000000000000073656e646572206e6f74206120637573746f6469616e2e000000000000000000a165627a7a72305820b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f140029000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7

Deployed Bytecode

0x60806040526004361061012f5763ffffffff60e060020a60003504166317ffc32081146101345780632bf90baa14610157578063311104f314610183578063321d0f7e146101aa578063424e6575146101ca57806342966c68146103035780634e71e0c81461031b5780636406c10c1461033057806368c4d91914610348578063715018a61461037557806372f69a721461038a5780637840fc8e1461039f578063861f92a8146104355780638da5cb5b1461044d5780638e24a7641461047e5780639355f0a4146104ae5780639ad4b86b146104d2578063b69b22d8146104ea578063c06e2d2414610683578063c72551be1461069b578063d25e178d146106b3578063e21c40c0146106d4578063e30c3978146106ec578063f2fde38b14610701578063f77c479114610722575b600080fd5b34801561014057600080fd5b50610155600160a060020a0360043516610737565b005b34801561016357600080fd5b5061016f600435610803565b604080519115158252519081900360200190f35b34801561018f57600080fd5b50610198610b5c565b60408051918252519081900360200190f35b3480156101b657600080fd5b5061016f6004803560248101910135610b63565b3480156101d657600080fd5b506101e2600435610d2e565b6040518088600160a060020a0316600160a060020a03168152602001878152602001806020018060200186815260200185815260200184600381111561022457fe5b60ff168152602001838103835288818151815260200191508051906020019080838360005b83811015610261578181015183820152602001610249565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156102c15781810151838201526020016102a9565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561030f57600080fd5b5061016f600435610e9e565b34801561032757600080fd5b5061015561154f565b34801561033c57600080fd5b506101e26004356115d7565b34801561035457600080fd5b5061016f60048035600160a060020a031690602480359081019101356115e5565b34801561038157600080fd5b5061015561191e565b34801561039657600080fd5b5061019861198a565b3480156103ab57600080fd5b506103c0600160a060020a0360043516611990565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061016f600435611a2b565b34801561045957600080fd5b50610462611be5565b60408051600160a060020a039092168252519081900360200190f35b34801561048a57600080fd5b5061016f600480359060248035808201929081013591604435908101910135611bf4565b3480156104ba57600080fd5b5061016f60048035906024803590810191013561210d565b3480156104de57600080fd5b50610198600435612527565b3480156104f657600080fd5b50610502600435612539565b6040518089815260200188600160a060020a0316600160a060020a031681526020018781526020018060200180602001868152602001806020018560001916600019168152602001848103845289818151815260200191508051906020019080838360005b8381101561057f578181015183820152602001610567565b50505050905090810190601f1680156105ac5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105df5781810151838201526020016105c7565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561063f578181015183820152602001610627565b50505050905090810190601f16801561066c5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561068f57600080fd5b5061016f600435612750565b3480156106a757600080fd5b5061019860043561292e565b3480156106bf57600080fd5b506103c0600160a060020a0360043516612940565b3480156106e057600080fd5b506105026004356129a8565b3480156106f857600080fd5b50610462612bdd565b34801561070d57600080fd5b50610155600160a060020a0360043516612bec565b34801561072e57600080fd5b50610462612c32565b60008054600160a060020a0316331461074f57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b50516000549091506107ff90600160a060020a0384811691168363ffffffff612c4116565b5050565b60008061080e613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b505050506040513d602081101561088857600080fd5b505115156108ce576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6108d784612ce0565b60078054929450909250600291849081106108ee57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561091557fe5b02179055506002548151602080840151604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909316926340c10f1992604480830193928290030181600087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b50511515610a0f576040805160e560020a62461bcd02815260206004820152600b60248201527f6d696e74206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060000151600160a060020a031681608001517f051f4ba27061b0e6dc829669a7baa8bba9cf7f6cd2f95e1f0bdd9c22126d8b218360200151846040015185606001518660a001518a6040518086815260200180602001806020018581526020018460001916600019168152602001838103835287818151815260200191508051906020019080838360005b83811015610ab3578181015183820152602001610a9b565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610b13578181015183820152602001610afb565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a35060019392505050565b6007545b90565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50511515610c22576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b610c5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15610cb0576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b336000908152600460205260409020610cca90848461358a565b5033600160a060020a03167fec7032a7f06b5d29ee5a6a1e73ab4e4dc80890c75a5104e3c075584e42775c2984846040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a250600192915050565b6007805482908110610d3c57fe5b6000918252602091829020600791909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a0390941696509094919291830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b50505050600483015460058401546006909401549293909290915060ff1687565b600060606000806060610eaf613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b50511515610f6e576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b3360009081526004602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050955061101286612f0c565b1561108d576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e7420627463206465706f73697420616464726573732077617360448201527f206e6f7420736574000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600854945061109a612f30565b60408051602081810183526000808352835160e0810185523381529182018d90529281018a9052606081018290526080810189905260a08101849052929650945060c082015291506110eb82612f34565b6000818152600660209081526040808320899055600880546001810180835591909452865160079094027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381018054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616959095178555878401517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee482015591870151805195965090948794936111c8937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee501920190613608565b50606082015180516111e4916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561121657fe5b0217905550505050600260009054906101000a9004600160a060020a0316600160a060020a0316635eebb1ce6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d602081101561129b57600080fd5b5051600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018c9052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b50511515611394576040805160e560020a62461bcd02815260206004820152601e60248201527f747261736e66657220746f6b656e7320746f206275726e206661696c65640000604482015290519081900360640190fd5b600254604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a03909216916342966c68916024808201926020929091908290030181600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d602081101561142557600080fd5b5051151561147d576040805160e560020a62461bcd02815260206004820152600b60248201527f6275726e206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b33600160a060020a0316857f865e64c3fa22a0daee479fc02875d3e97d581930b9679232344d4d5dcce6a7b28a89888660405180858152602001806020018481526020018360001916600019168152602001828103825285818151815260200191508051906020019080838360005b838110156115045781810151838201526020016114ec565b50505050905090810190601f1680156115315780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3506001979650505050505050565b600154600160a060020a0316331461156657600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6008805482908110610d3c57fe5b6002546040805160e260020a630d7203230281523360048201529051600092600160a060020a0316916335c80c8c91602480830192602092919082900301818787803b15801561163457600080fd5b505af1158015611648573d6000803e3d6000fd5b505050506040513d602081101561165e57600080fd5b505115156116a4576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b600160a060020a0384161515611704576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b6002546040805160e060020a631a2f7167028152600160a060020a03878116600483015291519190921691631a2f71679160248083019260209291908290030181600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506040513d602081101561178057600080fd5b505115156117fe576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e742061646472657373206973206e6f742061207265616c206d60448201527f65726368616e742e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61183783838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b1561188c576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b600160a060020a03841660009081526003602052604090206118af90848461358a565b5033600160a060020a031684600160a060020a03167fa1cea79438a06b74491693be087a2035e62acbe738749fc0ba7fc87df2eed93985856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a35060019392505050565b600054600160a060020a0316331461193557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60085490565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b820191906000526020600020905b815481529060010190602001808311611a0657829003601f168201915b505050505081565b600080611a36613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b158015611a8657600080fd5b505af1158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b50511515611af6576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b611aff84612ce0565b6007805492945090925060039184908110611b1657fe5b60009182526020909120600660079092020101805460ff19166001836003811115611b3d57fe5b02179055508060000151600160a060020a031681608001517fdadc06f5b98131083e96b856c044184efd23ae2e797a876fd80aa5dae4f724558360200151846040015185606001518660a001518a60405180868152602001806020018060200185815260200184600019166000191681526020018381038352878181518152602001915080519060200190808383600083811015610ab3578181015183820152602001610a9b565b600054600160a060020a031681565b6000806000611c01613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b505050506040513d6020811015611c7a57600080fd5b50511515611cc0576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b611cf987878080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15611d4e576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b611e2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050336000908152600360209081526040918290208054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152965094509092508401905082828015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050506130ca565b1515611e77576040805160e560020a62461bcd02815260206004820152601960248201527f77726f6e6720627463206465706f736974206164647265737300000000000000604482015290519081900360640190fd5b6007549350611e84612f30565b925060e06040519081016040528033600160a060020a031681526020018b815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505081526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375050509284525050506020810186905260408101859052606001600090529150611f3282612f34565b6000818152600560209081526040808320889055600780546001810180835594829052875191027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018054600160a060020a0390931673ffffffffffffffffffffffffffffffffffffffff19909316929092178255878401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591870151805195965093948794919361200d937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a01920190613608565b5060608201518051612029916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561205b57fe5b021790555050505033600160a060020a0316847f09e00024b3e14e42d4e78c05bf370a34c2e4ce4027dad38abafdb1bf49da432f8c8a8a8e8e8a89604051808881526020018060200180602001858152602001846000191660001916815260200183810383528989828181526020019250808284379091018481038352878152602001905087878082843760405192018290039b50909950505050505050505050a35060019998505050505050505050565b600080612118613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561216857600080fd5b505af115801561217c573d6000803e3d6000fd5b505050506040513d602081101561219257600080fd5b505115156121d8576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6121e186613257565b809250819350505084846008848154811015156121fa57fe5b9060005260206000209060070201600301919061221892919061358a565b50600260088381548110151561222a57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561225157fe5b0217905550816006600061240b60088681548110151561226d57fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f810187900487028301870185528083529495929493860193919290919083018282801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156123c35780601f10612398576101008083540402835291602001916123c3565b820191906000526020600020905b8154815290600101906020018083116123a657829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156123f857fe5b600381111561240357fe5b905250612f34565b60001916600019168152602001908152602001600020819055508060000151600160a060020a031681608001517f1949e77206780c38f7c6487c926f8a51280fcdbf63397a01a3428dbfccd2b09f8360200151846040015189898760a001518d6040518087815260200180602001806020018581526020018460001916600019168152602001838103835288818151815260200191508051906020019080838360005b838110156124c65781810151838201526020016124ae565b50505050905090810190601f1680156124f35780820380516001836020036101000a031916815260200191505b50838103825286815260200187878082843760405192018290039a509098505050505050505050a350600195945050505050565b60056020526000908152604090205481565b600080600060608060006060600061254f613539565b606060078b81548110151561256057fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f81018790048702830187018552808352949592949386019391929091908301828280156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156126b65780601f1061268b576101008083540402835291602001916126b6565b820191906000526020600020905b81548152906001019060200180831161269957829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156126eb57fe5b60038111156126f657fe5b8152505091506127098260c001516132d9565b905081608001519950816000015198508160200151975081604001519650816060015195508160a00151945080935061274182612f34565b92505050919395975091939597565b60008061275b613539565b6002546040805160e060020a631a2f71670281523360048201529051600160a060020a0390921691631a2f7167916024808201926020929091908290030181600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b5051151561281b576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b61282484612ce0565b80519193509150600160a060020a031633146128b0576040805160e560020a62461bcd02815260206004820152603960248201527f63616e63656c2073656e64657220697320646966666572656e74207468616e2060448201527f70656e64696e67207265717565737420696e69746961746f7200000000000000606482015290519081900360840190fd5b60016007838154811015156128c157fe5b60009182526020909120600660079092020101805460ff191660018360038111156128e857fe5b0217905550604080518581529051339184917fb419f275eebfa354bbab2709955ee0c0e25ca95fae50a8e3672c5e3d9c931f589181900360200190a35060019392505050565b60066020526000908152604090205481565b60046020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b600080600060608060006060600080606060088b8154811015156129c857fe5b6000918252602090912060079091020160068101549092506129ec9060ff166132d9565b9050816004015499508160000160009054906101000a9004600160a060020a0316985081600101549750816002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aae5780601f10612a8357610100808354040283529160200191612aae565b820191906000526020600020905b815481529060010190602001808311612a9157829003601f168201915b5050505060038401805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949b50919250830182828015612b3e5780601f10612b1357610100808354040283529160200191612b3e565b820191906000526020600020905b815481529060010190602001808311612b2157829003601f168201915b5050505060058401546040805160e0810182528654600160a060020a031681526001808801546020808401919091526002808a01805486516101009582161595909502600019011691909104601f81018390048302840183018652808452979d50949b5096995089966127419692955088949386019391929083018282801561232f5780601f106123045761010080835404028352916020019161232f565b600154600160a060020a031681565b600054600160a060020a03163314612c0357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015612ca457600080fd5b505af1158015612cb8573d6000803e3d6000fd5b505050506040513d6020811015612cce57600080fd5b50511515612cdb57600080fd5b505050565b6000612cea613539565b821515612d41576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260056020526040902054600780549193509083908110612d6257fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f8101879004870283018701855280835294959294938601939192909190830182828015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015612eb85780601f10612e8d57610100808354040283529160200191612eb8565b820191906000526020600020905b815481529060010190602001808311612e9b57829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff166003811115612eed57fe5b6003811115612ef857fe5b9052509050612f07818461344d565b915091565b6000612f288260206040519081016040528060008152506130ca565b90505b919050565b4290565b6000816000015182602001518360400151846060015185608001518660a001516040516020018087600160a060020a0316600160a060020a031681526020018681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015612fc2578181015183820152602001612faa565b50505050905090810190601f168015612fef5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561302257818101518382015260200161300a565b50505050905090810190601f16801561304f5780820380516001836020036101000a031916815260200191505b50985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106130985780518252601f199092019160209182019101613079565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000816040516020018082805190602001908083835b602083106130ff5780518252601f1990920191602091820191016130e0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106131625780518252601f199092019160209182019101613143565b51815160209384036101000a60001901801990921691161790526040519190930181900381208851909550889450908301928392508401908083835b602083106131bd5780518252601f19909201916020918201910161319e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106132205780518252601f199092019160209182019101613201565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120939093149695505050505050565b6000613261613539565b8215156132b8576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260066020526040902054600880549193509083908110612d6257fe5b606060008260038111156132e957fe5b1415613329575060408051808201909152600781527f70656e64696e67000000000000000000000000000000000000000000000000006020820152612f2b565b600182600381111561333757fe5b1415613377575060408051808201909152600881527f63616e63656c65640000000000000000000000000000000000000000000000006020820152612f2b565b600282600381111561338557fe5b14156133c5575060408051808201909152600881527f617070726f7665640000000000000000000000000000000000000000000000006020820152612f2b565b60038260038111156133d357fe5b1415613413575060408051808201909152600881527f72656a65637465640000000000000000000000000000000000000000000000006020820152612f2b565b5060408051808201909152600781527f756e6b6e6f776e000000000000000000000000000000000000000000000000006020820152612f2b565b60008260c00151600381111561345f57fe5b146134b4576040805160e560020a62461bcd02815260206004820152601660248201527f72657175657374206973206e6f742070656e64696e6700000000000000000000604482015290519081900360640190fd5b6134bd82612f34565b81146107ff576040805160e560020a62461bcd02815260206004820152603360248201527f676976656e2072657175657374206861736820646f6573206e6f74206d61746360448201527f6820612070656e64696e67207265717565737400000000000000000000000000606482015290519081900360840190fd5b60e0604051908101604052806000600160a060020a0316815260200160008152602001606081526020016060815260200160008152602001600081526020016000600381111561358557fe5b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106135cb5782800160ff198235161785556135f8565b828001600101855582156135f8579182015b828111156135f85782358255916020019190600101906135dd565b50613604929150613676565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061364957805160ff19168380011785556135f8565b828001600101855582156135f8579182015b828111156135f857825182559160200191906001019061365b565b610b6091905b80821115613604576000815560010161367c560073656e646572206e6f742061206d65726368616e742e0000000000000000000073656e646572206e6f74206120637573746f6469616e2e000000000000000000a165627a7a72305820b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f140029

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

000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7

-----Decoded View---------------
Arg [0] : _controller (address): 0xCA06411bd7a7296d7dbdd0050DFc846E95fEBEB7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7


Swarm Source

bzzr://b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f14

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.