ETH Price: $2,229.65 (-5.35%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...240434702025-12-19 1:49:1146 days ago1766108951IN
BFH: Approval Proxy V1
0 ETH0.000062422.02485097
Set Preapproved ...120664552021-03-19 2:26:151782 days ago1616120775IN
BFH: Approval Proxy V1
0 ETH0.00603502126
Set Approvable C...120661232021-03-19 1:15:201782 days ago1616116520IN
BFH: Approval Proxy V1
0 ETH0.00731702156.00000145
Set Preapproved ...120373102021-03-14 14:46:381787 days ago1615733198IN
BFH: Approval Proxy V1
0 ETH0.00574764120
Set Approvable C...120373052021-03-14 14:45:191787 days ago1615733119IN
BFH: Approval Proxy V1
0 ETH0.00557219118.8
Set Preapproved ...120368502021-03-14 13:07:561787 days ago1615727276IN
BFH: Approval Proxy V1
0 ETH0.00584343122
Set Approvable C...120368262021-03-14 13:01:401787 days ago1615726900IN
BFH: Approval Proxy V1
0 ETH0.00553467118
Set Preapproved ...120368132021-03-14 12:58:281787 days ago1615726708IN
BFH: Approval Proxy V1
0 ETH0.0020902117
Set Preapproved ...120367732021-03-14 12:51:141787 days ago1615726274IN
BFH: Approval Proxy V1
0 ETH0.00560394117
Set Approvable C...120367392021-03-14 12:42:211787 days ago1615725741IN
BFH: Approval Proxy V1
0 ETH0.00515944110
Set Preapproved ...102927592020-06-18 23:59:112055 days ago1592524751IN
BFH: Approval Proxy V1
0 ETH0.0011295123.58209739
Set Approvable C...102927542020-06-18 23:58:122055 days ago1592524692IN
BFH: Approval Proxy V1
0 ETH0.0011065523.59198026
Set Preapproved ...101767502020-06-01 0:11:412073 days ago1590970301IN
BFH: Approval Proxy V1
0 ETH0.0008741218.2500019
Set Approvable C...101767452020-06-01 0:11:192073 days ago1590970279IN
BFH: Approval Proxy V1
0 ETH0.0008559918.2500019
Set Preapproved ...93743722020-01-29 2:36:142197 days ago1580265374IN
BFH: Approval Proxy V1
0 ETH0.000047891
Set Approvable C...93743612020-01-29 2:33:262197 days ago1580265206IN
BFH: Approval Proxy V1
0 ETH0.000056751.21
Set Preapproved ...93743012020-01-29 2:16:552197 days ago1580264215IN
BFH: Approval Proxy V1
0 ETH0.000052681.1
Set Approvable C...93742962020-01-29 2:15:342197 days ago1580264134IN
BFH: Approval Proxy V1
0 ETH0.00004691
Set Preapproved ...93742842020-01-29 2:12:332197 days ago1580263953IN
BFH: Approval Proxy V1
0 ETH0.000052681.1
Set Approvable C...93742782020-01-29 2:11:572197 days ago1580263917IN
BFH: Approval Proxy V1
0 ETH0.00004691
Set Preapproved ...93247732020-01-21 12:16:002205 days ago1579608960IN
BFH: Approval Proxy V1
0 ETH0.000095792
Set Approvable C...93247702020-01-21 12:15:352205 days ago1579608935IN
BFH: Approval Proxy V1
0 ETH0.000060971.3
Set Open Sea Pro...92974292020-01-17 7:42:242209 days ago1579246944IN
BFH: Approval Proxy V1
0 ETH0.00026116
Set Preapproved ...92974282020-01-17 7:42:212209 days ago1579246941IN
BFH: Approval Proxy V1
0 ETH0.000335277
Set Approvable C...92974212020-01-17 7:40:292209 days ago1579246829IN
BFH: Approval Proxy V1
0 ETH0.000328327
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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:
BFHApprovalProxyV1

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-01-29
*/

// Copyright (c) 2018-2020 double jump.tokyo inc.
pragma solidity ^0.5.0;

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "role already has the account");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "role dosen't have the account");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        return role.bearer[account];
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

/// @title ERC-165 Standard Interface Detection
/// @dev See https://eips.ethereum.org/EIPS/eip-165
contract ERC165 is IERC165 {
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    function toHex(address account) internal pure returns (string memory) {
        bytes32 value = bytes32(uint256(account));
        bytes memory alphabet = "0123456789abcdef";

        bytes memory str = new bytes(42);
        str[0] = '0';
        str[1] = 'x';
        for (uint i = 0; i < 20; i++) {
            str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))];
            str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))];
        }
        return string(str);
    }
}
interface IApprovalProxy {
  function setApprovalForAll(address _owner, address _spender, bool _approved) external;
  function isApprovedForAll(address _owner, address _spender, bool _original) external view returns (bool);
}
interface IERC173 /* is ERC165 */ {
    /// @dev This emits when ownership of a contract changes.
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @notice Get the address of the owner
    /// @return The address of the owner.
    function owner() external view returns (address);

    /// @notice Set the address of the new owner of the contract
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;
}

contract ERC173 is IERC173, ERC165  {
    address private _owner;

    constructor() public {
        _registerInterface(0x7f5828d0);
        _transferOwnership(msg.sender);
    }

    modifier onlyOwner() {
        require(msg.sender == owner(), "Must be owner");
        _;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwnership(address _newOwner) public onlyOwner() {
        _transferOwnership(_newOwner);
    }

    function _transferOwnership(address _newOwner) internal {
        address previousOwner = owner();
	_owner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }
}

contract Operatable is ERC173 {
    using Roles for Roles.Role;

    event OperatorAdded(address indexed account);
    event OperatorRemoved(address indexed account);

    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;
    Roles.Role private operators;

    constructor() public {
        operators.add(msg.sender);
        _paused = false;
    }

    modifier onlyOperator() {
        require(isOperator(msg.sender), "Must be operator");
        _;
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    function transferOwnership(address _newOwner) public onlyOperator() {
        _transferOwnership(_newOwner);
    }

    function isOperator(address account) public view returns (bool) {
        return operators.has(account);
    }

    function addOperator(address account) public onlyOperator() {
        operators.add(account);
        emit OperatorAdded(account);
    }

    function removeOperator(address account) public onlyOperator() {
        operators.remove(account);
        emit OperatorRemoved(account);
    }

    function paused() public view returns (bool) {
        return _paused;
    }

    function pause() public onlyOperator() whenNotPaused() {
        _paused = true;
        emit Paused(msg.sender);
    }

    function unpause() public onlyOperator() whenPaused() {
        _paused = false;
        emit Unpaused(msg.sender);
    }

    function withdrawEther() public onlyOperator() {
        msg.sender.transfer(address(this).balance);
    }

}

contract OwnableDelegateProxy { }
contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
    function set(address _owner, address _spender) external {
        proxies[_owner] = OwnableDelegateProxy(_spender);
    }
}

contract BFHApprovalProxyV1 is IApprovalProxy, Operatable {
    using Address for address;

    Roles.Role private approvableContracts;
    Roles.Role private preapprovedContracts;
    mapping (address => mapping (address => bool)) private _expresslyNotApprovalSpender;
    mapping (address => mapping (address => bool)) private _contractApprovals;

    ProxyRegistry public openSeaProxyRegistry;
    mapping (address => bool) private openSeaDisabled;

    event UpdateApprovableContracts (address spender, bool approved);
    event UpdatePreapprovedContracts (address spender, bool approved);

    modifier onlyContract(address _spender) {
        require(_spender.isContract(), "_spender must be contract");
        _;
    }

    constructor() public {}

    function setApprovalForAll(address _owner, address _spender, bool _approved) public onlyContract(_spender) onlyOperator() {
        require(isApprovableContract(_spender), "_spender must belong to approvable role");
        _expresslyNotApprovalSpender[_owner][_spender] = !_approved;
    }

    function isApprovedForAll(address _owner, address _spender, bool _original) public view returns (bool) {
        if (approvalToOpenSea(_owner, _spender)) {
            return true;
        }
        if (_spender.isContract()) {
            if (!isApprovableContract(_spender)) {
                return false;
            }
            if (isPreapprovedContract(_spender)) {
                return !_expresslyNotApprovalSpender[_owner][_spender];
            }
        }
        return _original;
    }

    // OpenSea
    function setOpenSeaProxyRegistry(address _openSeaProxyRegistry) public onlyOperator() {
        openSeaProxyRegistry = ProxyRegistry(_openSeaProxyRegistry);
    }

    function enableOpenSea() public {
        openSeaDisabled[msg.sender] = false;
    }

    function disableOpenSea() public {
        openSeaDisabled[msg.sender] = true;
    }
    
    function getOpenSeaSpender(address _owner) public view returns (address) {
        return address(openSeaProxyRegistry.proxies(_owner));
    }

    function approvalToOpenSea(address _owner, address _spender) public view returns (bool) {
        if (address(openSeaProxyRegistry) == address(0x0)) {
            return false;
        }
        if (openSeaDisabled[_owner]) {
            return false;
        }
        return (getOpenSeaSpender(_owner) == _spender);
    }

    // Approvable list
    function setApprovableContracts(address _spender, bool _approvable) public onlyOperator() onlyContract(_spender) {
        emit UpdateApprovableContracts(_spender, _approvable);
        if (_approvable) {
            approvableContracts.add(_spender);
        } else {
            require(!isPreapprovedContract(_spender), "_spender must not be preapproval");
            approvableContracts.remove(_spender);
        }
    }

    function isApprovableContract(address _spender) public view returns (bool) {
        return approvableContracts.has(_spender);
    }

    function setPreapprovedContracts(address _spender, bool _approval) public onlyOperator() onlyContract(_spender) {
        require(isApprovableContract(_spender), "_spender must not be approvable");
        emit UpdatePreapprovedContracts(_spender, _approval);
        if (_approval) {
            preapprovedContracts.add(_spender);
        } else {
            preapprovedContracts.remove(_spender);
        }
    }

    function isPreapprovedContract(address _spender) public view returns (bool) {
        return preapprovedContracts.has(_spender);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"UpdateApprovableContracts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"UpdatePreapprovedContracts","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"approvalToOpenSea","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableOpenSea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableOpenSea","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getOpenSeaSpender","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"isApprovableContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_original","type":"bool"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_spender","type":"address"}],"name":"isPreapprovedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openSeaProxyRegistry","outputs":[{"internalType":"contract ProxyRegistry","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approvable","type":"bool"}],"name":"setApprovableContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_openSeaProxyRegistry","type":"address"}],"name":"setOpenSeaProxyRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approval","type":"bool"}],"name":"setPreapprovedContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50620000467f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03620000bc16565b6200007a7f7f5828d0000000000000000000000000000000000000000000000000000000006001600160e01b03620000bc16565b6200008e336001600160e01b036200018b16565b620000a9336002620001f460201b62000e9e1790919060201c565b6001805460ff60a01b19169055620002c9565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200014e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b6000620001a06001600160e01b036200029b16565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200020982826001600160e01b03620002aa16565b156200027657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001546001600160a01b031690565b6001600160a01b03166000908152602091909152604090205460ff1690565b61107580620002d96000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063a4d925f11161007c578063a4d925f114610344578063ac8a584a1461036a578063cf10ef2d14610390578063d3b805d8146103b6578063f2fde38b146103dc578063f8c0c9161461040257610142565b80638456cb59146102a857806389f69dba146102b05780638da5cb5b146102de5780638dccfc52146102e65780639870d7fe1461031e57610142565b80635b620bd31161010a5780635b620bd3146102165780635c975abb1461023c5780635e6241b2146102445780636025b389146102725780636d70f7ae1461027a5780637362377b146102a057610142565b806301ffc9a714610147578063171b5b6a14610182578063367605ca146101b25780633f4ba83a146101ea5780635025b548146101f2575b600080fd5b61016e6004803603602081101561015d57600080fd5b50356001600160e01b03191661040a565b604080519115158252519081900360200190f35b6101b06004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610429565b005b6101b0600480360360608110156101c857600080fd5b506001600160a01b0381358116916020810135909116906040013515156105a7565b6101b06106d2565b6101fa6107b6565b604080516001600160a01b039092168252519081900360200190f35b61016e6004803603602081101561022c57600080fd5b50356001600160a01b03166107c5565b61016e6107de565b61016e6004803603604081101561025a57600080fd5b506001600160a01b03813581169160200135166107ee565b6101b0610856565b61016e6004803603602081101561029057600080fd5b50356001600160a01b031661086f565b6101b0610882565b6101b06108ff565b6101b0600480360360408110156102c657600080fd5b506001600160a01b03813516906020013515156109e6565b6101fa610b5b565b61016e600480360360608110156102fc57600080fd5b506001600160a01b038135811691602081013590911690604001351515610b6a565b6101b06004803603602081101561033457600080fd5b50356001600160a01b0316610bf7565b6101b06004803603602081101561035a57600080fd5b50356001600160a01b0316610c8c565b6101b06004803603602081101561038057600080fd5b50356001600160a01b0316610cfb565b61016e600480360360208110156103a657600080fd5b50356001600160a01b0316610d90565b6101fa600480360360208110156103cc57600080fd5b50356001600160a01b0316610da3565b6101b0600480360360208110156103f257600080fd5b50356001600160a01b0316610e26565b6101b0610e7c565b6001600160e01b03191660009081526020819052604090205460ff1690565b6104323361086f565b610476576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610489816001600160a01b0316610e98565b6104d6576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6104df83610d90565b610530576040805162461bcd60e51b815260206004820152601f60248201527f5f7370656e646572206d757374206e6f7420626520617070726f7661626c6500604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517f41243044fceb8e758713bc0c30e27030c46b1979b7e6936d996d00f840f03d8f929181900390910190a181156105915761058c60048463ffffffff610e9e16565b6105a2565b6105a260048463ffffffff610f1f16565b505050565b816105ba816001600160a01b0316610e98565b610607576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6106103361086f565b610654576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61065d83610d90565b6106985760405162461bcd60e51b815260040180806020018281038252602781526020018061101a6027913960400191505060405180910390fd5b506001600160a01b03928316600090815260056020908152604080832094909516825292909252919020805460ff19169115919091179055565b6106db3361086f565b61071f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff16610774576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6007546001600160a01b031681565b60006107d860048363ffffffff610f9c16565b92915050565b600154600160a01b900460ff1690565b6007546000906001600160a01b0316610809575060006107d8565b6001600160a01b03831660009081526008602052604090205460ff1615610832575060006107d8565b816001600160a01b031661084584610da3565b6001600160a01b0316149392505050565b336000908152600860205260409020805460ff19169055565b60006107d860028363ffffffff610f9c16565b61088b3361086f565b6108cf576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156108fc573d6000803e3d6000fd5b50565b6109083361086f565b61094c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff161561099e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6109ef3361086f565b610a33576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610a46816001600160a01b0316610e98565b610a93576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517fb27c82517d508b5ef74d0dee84509db8503c954c999cfb72a3a0bd5e002552e7929181900390910190a18115610aef5761058c60038463ffffffff610e9e16565b610af8836107c5565b15610b4a576040805162461bcd60e51b815260206004820181905260248201527f5f7370656e646572206d757374206e6f7420626520707265617070726f76616c604482015290519081900360640190fd5b6105a260038463ffffffff610f1f16565b6001546001600160a01b031690565b6000610b7684846107ee565b15610b8357506001610bf0565b610b95836001600160a01b0316610e98565b15610bed57610ba383610d90565b610baf57506000610bf0565b610bb8836107c5565b15610bed57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1615610bf0565b50805b9392505050565b610c003361086f565b610c44576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610c5560028263ffffffff610e9e16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b610c953361086f565b610cd9576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610d043361086f565b610d48576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610d5960028263ffffffff610f1f16565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b60006107d860038363ffffffff610f9c16565b6007546040805163c455279160e01b81526001600160a01b0384811660048301529151600093929092169163c455279191602480820192602092909190829003018186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b505192915050565b610e2f3361086f565b610e73576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6108fc81610fbb565b336000908152600860205260409020805460ff19166001179055565b3b151590565b610ea88282610f9c565b15610efa576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f298282610f9c565b610f7a576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03166000908152602091909152604090205460ff1690565b6000610fc5610b5b565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505056fe5f7370656e646572206d7573742062656c6f6e6720746f20617070726f7661626c6520726f6c65a265627a7a72315820bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a864736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638456cb59116100b8578063a4d925f11161007c578063a4d925f114610344578063ac8a584a1461036a578063cf10ef2d14610390578063d3b805d8146103b6578063f2fde38b146103dc578063f8c0c9161461040257610142565b80638456cb59146102a857806389f69dba146102b05780638da5cb5b146102de5780638dccfc52146102e65780639870d7fe1461031e57610142565b80635b620bd31161010a5780635b620bd3146102165780635c975abb1461023c5780635e6241b2146102445780636025b389146102725780636d70f7ae1461027a5780637362377b146102a057610142565b806301ffc9a714610147578063171b5b6a14610182578063367605ca146101b25780633f4ba83a146101ea5780635025b548146101f2575b600080fd5b61016e6004803603602081101561015d57600080fd5b50356001600160e01b03191661040a565b604080519115158252519081900360200190f35b6101b06004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610429565b005b6101b0600480360360608110156101c857600080fd5b506001600160a01b0381358116916020810135909116906040013515156105a7565b6101b06106d2565b6101fa6107b6565b604080516001600160a01b039092168252519081900360200190f35b61016e6004803603602081101561022c57600080fd5b50356001600160a01b03166107c5565b61016e6107de565b61016e6004803603604081101561025a57600080fd5b506001600160a01b03813581169160200135166107ee565b6101b0610856565b61016e6004803603602081101561029057600080fd5b50356001600160a01b031661086f565b6101b0610882565b6101b06108ff565b6101b0600480360360408110156102c657600080fd5b506001600160a01b03813516906020013515156109e6565b6101fa610b5b565b61016e600480360360608110156102fc57600080fd5b506001600160a01b038135811691602081013590911690604001351515610b6a565b6101b06004803603602081101561033457600080fd5b50356001600160a01b0316610bf7565b6101b06004803603602081101561035a57600080fd5b50356001600160a01b0316610c8c565b6101b06004803603602081101561038057600080fd5b50356001600160a01b0316610cfb565b61016e600480360360208110156103a657600080fd5b50356001600160a01b0316610d90565b6101fa600480360360208110156103cc57600080fd5b50356001600160a01b0316610da3565b6101b0600480360360208110156103f257600080fd5b50356001600160a01b0316610e26565b6101b0610e7c565b6001600160e01b03191660009081526020819052604090205460ff1690565b6104323361086f565b610476576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610489816001600160a01b0316610e98565b6104d6576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6104df83610d90565b610530576040805162461bcd60e51b815260206004820152601f60248201527f5f7370656e646572206d757374206e6f7420626520617070726f7661626c6500604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517f41243044fceb8e758713bc0c30e27030c46b1979b7e6936d996d00f840f03d8f929181900390910190a181156105915761058c60048463ffffffff610e9e16565b6105a2565b6105a260048463ffffffff610f1f16565b505050565b816105ba816001600160a01b0316610e98565b610607576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b6106103361086f565b610654576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61065d83610d90565b6106985760405162461bcd60e51b815260040180806020018281038252602781526020018061101a6027913960400191505060405180910390fd5b506001600160a01b03928316600090815260056020908152604080832094909516825292909252919020805460ff19169115919091179055565b6106db3361086f565b61071f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff16610774576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6007546001600160a01b031681565b60006107d860048363ffffffff610f9c16565b92915050565b600154600160a01b900460ff1690565b6007546000906001600160a01b0316610809575060006107d8565b6001600160a01b03831660009081526008602052604090205460ff1615610832575060006107d8565b816001600160a01b031661084584610da3565b6001600160a01b0316149392505050565b336000908152600860205260409020805460ff19169055565b60006107d860028363ffffffff610f9c16565b61088b3361086f565b6108cf576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156108fc573d6000803e3d6000fd5b50565b6109083361086f565b61094c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600154600160a01b900460ff161561099e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6109ef3361086f565b610a33576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b81610a46816001600160a01b0316610e98565b610a93576040805162461bcd60e51b815260206004820152601960248201527817dcdc195b99195c881b5d5cdd0818994818dbdb9d1c9858dd603a1b604482015290519081900360640190fd5b604080516001600160a01b0385168152831515602082015281517fb27c82517d508b5ef74d0dee84509db8503c954c999cfb72a3a0bd5e002552e7929181900390910190a18115610aef5761058c60038463ffffffff610e9e16565b610af8836107c5565b15610b4a576040805162461bcd60e51b815260206004820181905260248201527f5f7370656e646572206d757374206e6f7420626520707265617070726f76616c604482015290519081900360640190fd5b6105a260038463ffffffff610f1f16565b6001546001600160a01b031690565b6000610b7684846107ee565b15610b8357506001610bf0565b610b95836001600160a01b0316610e98565b15610bed57610ba383610d90565b610baf57506000610bf0565b610bb8836107c5565b15610bed57506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff1615610bf0565b50805b9392505050565b610c003361086f565b610c44576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610c5560028263ffffffff610e9e16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b610c953361086f565b610cd9576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610d043361086f565b610d48576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610d5960028263ffffffff610f1f16565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b60006107d860038363ffffffff610f9c16565b6007546040805163c455279160e01b81526001600160a01b0384811660048301529151600093929092169163c455279191602480820192602092909190829003018186803b158015610df457600080fd5b505afa158015610e08573d6000803e3d6000fd5b505050506040513d6020811015610e1e57600080fd5b505192915050565b610e2f3361086f565b610e73576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6108fc81610fbb565b336000908152600860205260409020805460ff19166001179055565b3b151590565b610ea88282610f9c565b15610efa576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610f298282610f9c565b610f7a576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03166000908152602091909152604090205460ff1690565b6000610fc5610b5b565b600180546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505056fe5f7370656e646572206d7573742062656c6f6e6720746f20617070726f7661626c6520726f6c65a265627a7a72315820bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a864736f6c634300050c0032

Deployed Bytecode Sourcemap

5793:3656:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5793:3656:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1131:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1131:135:0;-1:-1:-1;;;;;;1131:135:0;;:::i;:::-;;;;;;;;;;;;;;;;;;8876:424;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8876:424:0;;;;;;;;;;:::i;:::-;;6575:293;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6575:293:0;;;;;;;;;;;;;;;;;;;:::i;5287:124::-;;;:::i;6155:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6155:41:0;;;;;;;;;;;;;;9308:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9308:136:0;-1:-1:-1;;;;;9308:136:0;;:::i;5071:78::-;;;:::i;7930:331::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7930:331:0;;;;;;;;;;:::i;7586:86::-;;;:::i;4649:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4649:112:0;-1:-1:-1;;;;;4649:112:0;;:::i;5419:108::-;;;:::i;5157:122::-;;;:::i;8293:433::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8293:433:0;;;;;;;;;;:::i;3387:79::-;;;:::i;6876:514::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6876:514:0;;;;;;;;;;;;;;;;;;;:::i;4769:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4769:139:0;-1:-1:-1;;;;;4769:139:0;;:::i;7414:164::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7414:164:0;-1:-1:-1;;;;;7414:164:0;;:::i;4916:147::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4916:147:0;-1:-1:-1;;;;;4916:147:0;;:::i;8734:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8734:134:0;-1:-1:-1;;;;;8734:134:0;;:::i;7778:144::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7778:144:0;-1:-1:-1;;;;;7778:144:0;;:::i;4525:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4525:116:0;-1:-1:-1;;;;;4525:116:0;;:::i;7680:86::-;;;:::i;1131:135::-;-1:-1:-1;;;;;;1225:33:0;1201:4;1225:33;;;;;;;;;;;;;;1131:135::o;8876:424::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;8978:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;9007:30;9028:8;9007:20;:30::i;:::-;8999:74;;;;;-1:-1:-1;;;8999:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9089:47;;;-1:-1:-1;;;;;9089:47:0;;;;;;;;;;;;;;;;;;;;;;;;9151:9;9147:146;;;9177:34;:20;9202:8;9177:34;:24;:34;:::i;:::-;9147:146;;;9244:37;:20;9272:8;9244:37;:27;:37;:::i;:::-;4306:1;8876:424;;:::o;6575:293::-;6672:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;6716:30;6737:8;6716:20;:30::i;:::-;6708:82;;;;-1:-1:-1;;;6708:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6801:36:0;;;;;;;:28;:36;;;;;;;;:46;;;;;;;;;;;;;:59;;-1:-1:-1;;6801:59:0;6850:10;;6801:59;;;;;;6575:293::o;5287:124::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4465:7;;-1:-1:-1;;;4465:7:0;;;;4457:40;;;;;-1:-1:-1;;;4457:40:0;;;;;;;;;;;;-1:-1:-1;;;4457:40:0;;;;;;;;;;;;;;;5352:7;:15;;-1:-1:-1;;;;5352:15:0;;;5383:20;;;5392:10;5383:20;;;;;;;;;;;;;5287:124::o;6155:41::-;;;-1:-1:-1;;;;;6155:41:0;;:::o;9308:136::-;9378:4;9402:34;:20;9427:8;9402:34;:24;:34;:::i;:::-;9395:41;9308:136;-1:-1:-1;;9308:136:0:o;5071:78::-;5134:7;;-1:-1:-1;;;5134:7:0;;;;;5071:78::o;7930:331::-;8041:20;;8012:4;;-1:-1:-1;;;;;8041:20:0;8029:90;;-1:-1:-1;8102:5:0;8095:12;;8029:90;-1:-1:-1;;;;;8133:23:0;;;;;;:15;:23;;;;;;;;8129:68;;;-1:-1:-1;8180:5:0;8173:12;;8129:68;8244:8;-1:-1:-1;;;;;8215:37:0;:25;8233:6;8215:17;:25::i;:::-;-1:-1:-1;;;;;8215:37:0;;;7930:331;-1:-1:-1;;;7930:331:0:o;7586:86::-;7645:10;7659:5;7629:27;;;:15;:27;;;;;:35;;-1:-1:-1;;7629:35:0;;;7586:86::o;4649:112::-;4707:4;4731:22;:9;4745:7;4731:22;:13;:22;:::i;5419:108::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;5477:42;;:10;;5505:4;5497:21;5477:42;;;;;;;;;5497:21;5477:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5477:42:0;5419:108::o;5157:122::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4368:7;;-1:-1:-1;;;4368:7:0;;;;4367:8;4359:37;;;;;-1:-1:-1;;;4359:37:0;;;;;;;;;;;;-1:-1:-1;;;4359:37:0;;;;;;;;;;;;;;;5233:4;5223:14;;-1:-1:-1;;;;5223:14:0;-1:-1:-1;;;5223:14:0;;;5253:18;;;5260:10;5253:18;;;;;;;;;;;;;5157:122::o;8293:433::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;8396:8;6465:21;:8;-1:-1:-1;;;;;6465:19:0;;:21::i;:::-;6457:59;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;-1:-1:-1;;;6457:59:0;;;;;;;;;;;;;;;8422:48;;;-1:-1:-1;;;;;8422:48:0;;;;;;;;;;;;;;;;;;;;;;;;8485:11;8481:238;;;8513:33;:19;8537:8;8513:33;:23;:33;:::i;8481:238::-;8588:31;8610:8;8588:21;:31::i;:::-;8587:32;8579:77;;;;;-1:-1:-1;;;8579:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:36;:19;8698:8;8671:36;:26;:36;:::i;3387:79::-;3452:6;;-1:-1:-1;;;;;3452:6:0;3387:79;:::o;6876:514::-;6973:4;6994:35;7012:6;7020:8;6994:17;:35::i;:::-;6990:79;;;-1:-1:-1;7053:4:0;7046:11;;6990:79;7083:21;:8;-1:-1:-1;;;;;7083:19:0;;:21::i;:::-;7079:277;;;7126:30;7147:8;7126:20;:30::i;:::-;7121:84;;-1:-1:-1;7184:5:0;7177:12;;7121:84;7223:31;7245:8;7223:21;:31::i;:::-;7219:126;;;-1:-1:-1;;;;;;7283:36:0;;;;;;;:28;:36;;;;;;;;:46;;;;;;;;;;;;7282:47;7275:54;;7219:126;-1:-1:-1;7373:9:0;6876:514;;;;;;:::o;4769:139::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4840:22;:9;4854:7;4840:22;:13;:22;:::i;:::-;4878;;-1:-1:-1;;;;;4878:22:0;;;;;;;;4769:139;:::o;7414:164::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;7511:20;:59;;-1:-1:-1;;;;;;7511:59:0;-1:-1:-1;;;;;7511:59:0;;;;;;;;;;7414:164::o;4916:147::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4990:25;:9;5007:7;4990:25;:16;:25;:::i;:::-;5031:24;;-1:-1:-1;;;;;5031:24:0;;;;;;;;4916:147;:::o;8734:134::-;8803:4;8827:33;:19;8851:8;8827:33;:23;:33;:::i;7778:144::-;7877:20;;:36;;;-1:-1:-1;;;7877:36:0;;-1:-1:-1;;;;;7877:36:0;;;;;;;;;7842:7;;7877:20;;;;;:28;;:36;;;;;;;;;;;;;;;:20;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;7877:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7877:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7877:36:0;;7778:144;-1:-1:-1;;7778:144:0:o;4525:116::-;4252:22;4263:10;4252;:22::i;:::-;4244:51;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;-1:-1:-1;;;4244:51:0;;;;;;;;;;;;;;;4604:29;4623:9;4604:18;:29::i;7680:86::-;7740:10;7724:27;;;;:15;:27;;;;;:34;;-1:-1:-1;;7724:34:0;7754:4;7724:34;;;7680:86::o;1499:174::-;1618:20;1657:8;;;1499:174::o;170:175::-;248:18;252:4;258:7;248:3;:18::i;:::-;247:19;239:60;;;;;-1:-1:-1;;;239:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;310:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;310:27:0;333:4;310:27;;;170:175::o;353:179::-;433:18;437:4;443:7;433:3;:18::i;:::-;425:60;;;;;-1:-1:-1;;;425:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;496:20:0;519:5;496:20;;;;;;;;;;;:28;;-1:-1:-1;;496:28:0;;;353:179::o;540:124::-;-1:-1:-1;;;;;636:20:0;612:4;636:20;;;;;;;;;;;;;;;540:124::o;3595:190::-;3662:21;3686:7;:5;:7::i;:::-;3697:6;:18;;-1:-1:-1;;;;;;3697:18:0;-1:-1:-1;;;;;3697:18:0;;;;;;;;;3731:46;;3662:31;;-1:-1:-1;3697:18:0;3731:46;;;;;;-1:-1:-1;;3731:46:0;3595:190;;:::o

Swarm Source

bzzr://bad9c0ff78bbf689813764515f0fe3e4a82f0101e385c139122cd5708eb356a8

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