ETH Price: $2,103.99 (-0.37%)
Gas: 0.03 Gwei

Contract

0x5aF28EB9deC75e86CDFBD2e41a474b54B211C1C2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

ContractCreator

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve244011702026-02-06 23:49:2335 days ago1770421763IN
0x5aF28EB9...4B211C1C2
0 ETH0.000015480.30008637
Approve243947552026-02-06 2:18:4736 days ago1770344327IN
0x5aF28EB9...4B211C1C2
0 ETH0.000057351.11184182
Approve243946562026-02-06 1:58:5936 days ago1770343139IN
0x5aF28EB9...4B211C1C2
0 ETH0.000070231.36153285
Approve243936042026-02-05 22:27:3536 days ago1770330455IN
0x5aF28EB9...4B211C1C2
0 ETH0.000311076.02885659
Approve243590892026-02-01 2:40:1141 days ago1769913611IN
0x5aF28EB9...4B211C1C2
0 ETH0.000004860.09465464
Approve239132422025-11-30 18:22:59103 days ago1764526979IN
0x5aF28EB9...4B211C1C2
0 ETH0.000014540.28193205
Approve233720162025-09-16 0:20:23179 days ago1757982023IN
0x5aF28EB9...4B211C1C2
0 ETH0.000009820.19137411
Transfer221392712025-03-27 15:53:11351 days ago1743090791IN
0x5aF28EB9...4B211C1C2
0 ETH0.00023461.74316736
Approve219190212025-02-24 21:59:35382 days ago1740434375IN
0x5aF28EB9...4B211C1C2
0 ETH0.000036461.24411541
Transfer214704592024-12-24 6:11:35444 days ago1735020695IN
0x5aF28EB9...4B211C1C2
0 ETH0.001418214.72116433
Approve212685482024-11-26 1:09:47473 days ago1732583387IN
0x5aF28EB9...4B211C1C2
0 ETH0.000424368.26293599
Approve206296242024-08-28 20:58:23562 days ago1724878703IN
0x5aF28EB9...4B211C1C2
0 ETH0.000331486.45432212
Approve205492572024-08-17 15:31:35573 days ago1723908695IN
0x5aF28EB9...4B211C1C2
0 ETH0.0006450612.48713464
Approve205126122024-08-12 12:44:11578 days ago1723466651IN
0x5aF28EB9...4B211C1C2
0 ETH0.0008572116.59394705
Approve204931622024-08-09 19:34:11581 days ago1723232051IN
0x5aF28EB9...4B211C1C2
0 ETH0.0006683113.03115332
Approve203621532024-07-22 12:44:59599 days ago1721652299IN
0x5aF28EB9...4B211C1C2
0 ETH0.0005455510.56087376
Approve203564642024-07-21 17:40:23600 days ago1721583623IN
0x5aF28EB9...4B211C1C2
0 ETH0.000225874.37759257
Approve196460852024-04-13 10:34:23699 days ago1713004463IN
0x5aF28EB9...4B211C1C2
0 ETH0.0005799511.29230195
Approve195255822024-03-27 12:13:11716 days ago1711541591IN
0x5aF28EB9...4B211C1C2
0 ETH0.0014845328.73782198
Approve193311272024-02-29 5:35:47743 days ago1709184947IN
0x5aF28EB9...4B211C1C2
0 ETH0.0025804749.95312121
Approve193242632024-02-28 6:31:59744 days ago1709101919IN
0x5aF28EB9...4B211C1C2
0 ETH0.0019752138.28082303
Approve193242402024-02-28 6:27:23744 days ago1709101643IN
0x5aF28EB9...4B211C1C2
0 ETH0.0018743336.32571811
Approve193231462024-02-28 2:46:35745 days ago1709088395IN
0x5aF28EB9...4B211C1C2
0 ETH0.0018347635.55883838
Approve193211492024-02-27 20:03:23745 days ago1709064203IN
0x5aF28EB9...4B211C1C2
0 ETH0.0025421174.3351145
Approve193211432024-02-27 20:02:11745 days ago1709064131IN
0x5aF28EB9...4B211C1C2
0 ETH0.0036382270.92334975
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:
Tangle

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 10 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-12-02
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.9;

/// @title Tangle, a token implementation using EIP-2535: Multi-Facet Proxy
/// @author Brad Brown
/// @notice Pieces of this contract can be updated without needing to redeploy
/// the entire contract
/// @dev implements IDiamondCut and IDiamondLoupe
contract Tangle {

    mapping(bytes4 => address) private selectorToAddress;
    /// @notice The owner of this contract
    address public owner;

    enum FacetCutAction {Add, Replace, Remove}
    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }
    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    address[] private addresses;
    mapping(address => uint) private addressIndex;
    mapping(address => bytes4[]) private addressToSelectors;
    mapping(bytes4 => uint) private selectorIndex;

    /// @notice Records all functions added, replaced, or removed from this
    /// contract
    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);

    /// @notice set owner to deployer
    constructor() {
        owner = msg.sender;
    }

    /// @notice payable fallback, does nothing
    receive() external payable {}

    /// @notice executes calldata via delegatecall to address if
    /// calldata's selector is assigned
    /// @dev Input is calldata
    /// @return bytes response from delegatecall
    fallback (bytes calldata) external payable returns (bytes memory) {
        address address_ = selectorToAddress[msg.sig];
        require(address_ != address(0), "zero facet");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(
                gas(),
                address_,
                0,
                calldatasize(),
                0,
                0
            )
            returndatacopy(0, 0, returndatasize())
            switch result
                case 0 { revert(0, returndatasize()) }
                default { return (0, returndatasize()) }
        }
    }

    /// @notice checks if an address is in use as a facet
    /// @param address_ an address to a facet
    /// @return bool whether the address is in use or not
    function facetAddressExists(address address_)
        internal
        view
        returns
        (bool)
    {
        if (addresses.length == 0)
            return false;
        if (addresses[0] != address_ && addressIndex[address_] == 0)
            return false;
        return true;
    }

    /// @notice assigns a selector to an address, revert if selector already
    /// assigned
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function addSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress == address(0), "selector add");
        selectorToAddress[selector] = facetAddress_;
        selectorIndex[selector] = addressToSelectors[facetAddress_].length;
        addressToSelectors[facetAddress_].push(selector);
    }

    /// @notice removes a selector from an address, revert if selector isn't
    /// assigned
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function removeSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress != address(0), "selector remove");
        bytes4[] memory selectors = addressToSelectors[facetAddress_];
        bytes4 lastSelector = selectors[selectors.length - 1];
        if (lastSelector != selector) {
            selectorIndex[lastSelector] = selectorIndex[selector];
            selectors[selectorIndex[selector]] = lastSelector;
        }
        if (selectors.length > 0) {
            assembly {
                mstore(selectors, sub(mload(selectors), 1))
            }
            addressToSelectors[facetAddress_] = selectors;
        }
        if (selectors.length == 0) {
            address lastAddress = addresses[addresses.length - 1];
            if (lastAddress != facetAddress_) {
                addressIndex[lastAddress] = addressIndex[facetAddress_];
                addresses[addressIndex[facetAddress_]] = lastAddress;
            }
            addresses.pop();
            addressIndex[facetAddress_] = 0;
        }
        selectorToAddress[selector] = address(0);
    }

    /// @notice reassigns a selector to an address, revert if no change in
    /// selector address
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function replaceSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress != facetAddress_, "selector replace");
        bytes4[] memory selectors = addressToSelectors[currentFacetAddress];
        bytes4 lastSelector = selectors[selectors.length - 1];
        if (lastSelector != selector) {
            selectorIndex[lastSelector] = selectorIndex[selector];
            selectors[selectorIndex[selector]] = lastSelector;
        }
        if (selectors.length > 0) {
            assembly {
                mstore(selectors, sub(mload(selectors), 1))
            }
            addressToSelectors[currentFacetAddress] = selectors;
        }
        if (selectors.length == 0) {
            address lastAddress = addresses[addresses.length - 1];
            if (lastAddress != currentFacetAddress) {
                addressIndex[lastAddress] = addressIndex[currentFacetAddress];
                addresses[addressIndex[currentFacetAddress]] = lastAddress;
            }
            addresses.pop();
            addressIndex[currentFacetAddress] = 0;
        }
        selectorToAddress[selector] = facetAddress_;
        selectorIndex[selector] = addressToSelectors[facetAddress_].length;
        addressToSelectors[facetAddress_].push(selector);
    }

    /// @notice Add/replace/remove any number of functions and optionally
    /// execute a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and
    /// arguments _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external {
        require(msg.sender == owner, "not owner");
        bool changesMade = false;
        for (uint i = 0; i < _diamondCut.length; i++) {
            FacetCut memory facetCut = _diamondCut[i];
            address facetAddress_ = _diamondCut[i].facetAddress;
            if (!facetAddressExists(facetAddress_)) {
                addressIndex[facetAddress_] = addresses.length;
                addresses.push(facetCut.facetAddress);
            }
            for (uint j = 0; j < facetCut.functionSelectors.length; j++) {
                bytes4 selector = facetCut.functionSelectors[j];
                if (facetCut.action == FacetCutAction.Add) {
                    addSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
                if (facetCut.action == FacetCutAction.Replace) {
                    replaceSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
                if (facetCut.action == FacetCutAction.Remove) {
                    removeSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
            }
        }
        if (_init != address(0)) {
            require(_calldata.length > 0, "empty calldata");
            (bool success,) = _init.delegatecall(_calldata);
            require(success, "call unsuccessful");
        }
        if (changesMade) emit DiamondCut(_diamondCut, _init, _calldata);
    }

    /// @notice Gets all facet addresses and their four byte function
    /// selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory) {
        Facet[] memory facets_ = new Facet[](addresses.length);
        for (uint i = 0; i < addresses.length; i++) {
            Facet memory facet;
            facet.facetAddress = addresses[i];
            facet.functionSelectors = addressToSelectors[addresses[i]];
            facets_[i] = facet;
        }
        return facets_;
    }

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(
        address _facet
    )
        external
        view
        returns
        (bytes4[] memory)
    {
        return addressToSelectors[_facet];
    }

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses()
        external
        view
        returns
        (address[] memory)
    {
        return addresses;
    }

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector)
        external
        view
        returns
        (address)
    {
        return selectorToAddress[_functionSelector];
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.Facet[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600180546001600160a01b03191633179055611725806100326000396000f3fe6080604052600436106100595760003560e01c80631f931c1c146100eb57806352ef6b2c1461010d5780637a0ed627146101385780638da5cb5b1461015a578063adfca15e14610192578063cdffacc6146101bf57610060565b3661006057005b600080356001600160e01b03191681526020819052604081205436906060906001600160a01b0316806100c75760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8199858d95d60b21b60448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e6573d6000f35b3d6000fd5b3480156100f757600080fd5b5061010b610106366004611101565b6101ff565b005b34801561011957600080fd5b5061012261056c565b60405161012f91906111b2565b60405180910390f35b34801561014457600080fd5b5061014d6105ce565b60405161012f91906111ff565b34801561016657600080fd5b5060015461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad3660046112b2565b61075f565b60405161012f91906112d4565b3480156101cb57600080fd5b5061017a6101da36600461132e565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b6001546001600160a01b031633146102455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064016100be565b6000805b8581101561042d57600087878381811061026557610265611349565b9050602002810190610277919061135f565b610280906113fc565b9050600088888481811061029657610296611349565b90506020028101906102a8919061135f565b6102b69060208101906112b2565b90506102c1816107f8565b61032b57600280546001600160a01b03838116600090815260036020526040812083905585516001840185559390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b031916929091169190911790555b60005b8260400151518110156104175760008360400151828151811061035357610353611349565b6020026020010151905060006002811115610370576103706114d2565b84602001516002811115610386576103866114d2565b14156103a0576103968184610876565b856103a057600195505b6001846020015160028111156103b8576103b86114d2565b14156103d2576103c88184610964565b856103d257600195505b6002846020015160028111156103ea576103ea6114d2565b1415610404576103fa8184610cca565b8561040457600195505b508061040f816114fe565b91505061032e565b5050508080610425906114fe565b915050610249565b506001600160a01b0384161561051e578161047b5760405162461bcd60e51b815260206004820152600e60248201526d656d7074792063616c6c6461746160901b60448201526064016100be565b6000846001600160a01b03168484604051610497929190611519565b600060405180830381855af49150503d80600081146104d2576040519150601f19603f3d011682016040523d82523d6000602084013e6104d7565b606091505b505090508061051c5760405162461bcd60e51b815260206004820152601160248201527018d85b1b081d5b9cdd58d8d95cdcd99d5b607a1b60448201526064016100be565b505b8015610564577f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686868660405161055b95949392919061159a565b60405180910390a15b505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156105c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105a6575b5050505050905090565b6002546060906000906001600160401b038111156105ee576105ee61137f565b60405190808252806020026020018201604052801561062757816020015b610614610fc4565b81526020019060019003908161060c5790505b50905060005b6002548110156107595761063f610fc4565b6002828154811061065257610652611349565b60009182526020822001546001600160a01b031682526002805460049291908590811061068157610681611349565b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208054825181850281018501909352808352919290919083018282801561071a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106dc5790505b505050505081602001819052508083838151811061073a5761073a611349565b6020026020010181905250508080610751906114fe565b91505061062d565b50919050565b6001600160a01b0381166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156107ec57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107ae5790505b50505050509050919050565b60025460009061080a57506000919050565b816001600160a01b0316600260008154811061082857610828611349565b6000918252602090912001546001600160a01b03161480159061086157506001600160a01b038216600090815260036020526040902054155b1561086e57506000919050565b506001919050565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680156108d65760405162461bcd60e51b815260206004820152600c60248201526b1cd95b1958dd1bdc8818591960a21b60448201526064016100be565b506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b039081169082168114156109ce5760405162461bcd60e51b815260206004820152601060248201526f73656c6563746f72207265706c61636560801b60448201526064016100be565b6001600160a01b038116600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610a5b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610a1d5790505b5050505050905060008160018351610a7391906116c2565b81518110610a8357610a83611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610afd576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610ae357610ae3611349565b6001600160e01b0319909216602092830291909101909101525b815115610b375781516000190182526001600160a01b03831660009081526004602090815260409091208351610b3592850190610fdc565b505b8151610c3a576002805460009190610b51906001906116c2565b81548110610b6157610b61611349565b6000918252602090912001546001600160a01b03908116915084168114610bec576001600160a01b03808516600081815260036020526040808220549385168252812083905552600280548392908110610bbd57610bbd611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610bfd57610bfd6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0386168252600390526040812055505b5050506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680610d2c5760405162461bcd60e51b815260206004820152600f60248201526e73656c6563746f722072656d6f766560881b60448201526064016100be565b6001600160a01b038216600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d7b5790505b5050505050905060008160018351610dd191906116c2565b81518110610de157610de1611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610e5b576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610e4157610e41611349565b6001600160e01b0319909216602092830291909101909101525b815115610e955781516000190182526001600160a01b03841660009081526004602090815260409091208351610e9392850190610fdc565b505b8151610f98576002805460009190610eaf906001906116c2565b81548110610ebf57610ebf611349565b6000918252602090912001546001600160a01b03908116915085168114610f4a576001600160a01b03808616600081815260036020526040808220549385168252812083905552600280548392908110610f1b57610f1b611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610f5b57610f5b6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600390526040812055505b505050506001600160e01b031916600090815260208190526040902080546001600160a01b0319169055565b60408051808201909152600081526060602082015290565b828054828255906000526020600020906007016008900481019282156110785791602002820160005b8382111561104657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302611005565b80156110765782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611046565b505b50611084929150611088565b5090565b5b808211156110845760008155600101611089565b80356001600160a01b03811681146110b457600080fd5b919050565b60008083601f8401126110cb57600080fd5b5081356001600160401b038111156110e257600080fd5b6020830191508360208285010111156110fa57600080fd5b9250929050565b60008060008060006060868803121561111957600080fd5b85356001600160401b038082111561113057600080fd5b818801915088601f83011261114457600080fd5b81358181111561115357600080fd5b8960208260051b850101111561116857600080fd5b6020830197508096505061117e6020890161109d565b9450604088013591508082111561119457600080fd5b506111a1888289016110b9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160a01b0316835292840192918401916001016111ce565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156112a357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561128e5783516001600160e01b0319168252928b019260019290920191908b0190611264565b50978a01979550505091870191600101611227565b50919998505050505050505050565b6000602082840312156112c457600080fd5b6112cd8261109d565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160e01b031916835292840192918401916001016112f0565b80356001600160e01b0319811681146110b457600080fd5b60006020828403121561134057600080fd5b6112cd82611316565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261137557600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156113b7576113b761137f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156113e5576113e561137f565b604052919050565b8035600381106110b457600080fd5b60006060823603121561140e57600080fd5b611416611395565b61141f8361109d565b8152602061142e8185016113ed565b8282015260408401356001600160401b038082111561144c57600080fd5b9085019036601f83011261145f57600080fd5b8135818111156114715761147161137f565b8060051b91506114828483016113bd565b818152918301840191848101903684111561149c57600080fd5b938501935b838510156114c1576114b285611316565b825293850193908501906114a1565b604087015250939695505050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611512576115126114e8565b5060010190565b8183823760009101908152919050565b8183526000602080850194508260005b85811015611566576001600160e01b031961155383611316565b1687529582019590820190600101611539565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060808252818101869052600090600560808085019089831b8601018a855b8b81101561168f57878303607f190184528135368e9003605e190181126115df57600080fd5b8d016001600160a01b036115f28261109d565b16845260206116028183016113ed565b6003811061162057634e487b7160e01b600052602160045260246000fd5b8582015260408281013536849003601e1901811261163d57600080fd5b830180356001600160401b0381111561165557600080fd5b808a1b360385131561166657600080fd5b8a8389015261167a8b890182868501611529565b988401989750505093019250506001016115b9565b50506001600160a01b038916602087015285810360408701526116b381888a611571565b9b9a5050505050505050505050565b6000828210156116d4576116d46114e8565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106100595760003560e01c80631f931c1c146100eb57806352ef6b2c1461010d5780637a0ed627146101385780638da5cb5b1461015a578063adfca15e14610192578063cdffacc6146101bf57610060565b3661006057005b600080356001600160e01b03191681526020819052604081205436906060906001600160a01b0316806100c75760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8199858d95d60b21b60448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e6573d6000f35b3d6000fd5b3480156100f757600080fd5b5061010b610106366004611101565b6101ff565b005b34801561011957600080fd5b5061012261056c565b60405161012f91906111b2565b60405180910390f35b34801561014457600080fd5b5061014d6105ce565b60405161012f91906111ff565b34801561016657600080fd5b5060015461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad3660046112b2565b61075f565b60405161012f91906112d4565b3480156101cb57600080fd5b5061017a6101da36600461132e565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b6001546001600160a01b031633146102455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064016100be565b6000805b8581101561042d57600087878381811061026557610265611349565b9050602002810190610277919061135f565b610280906113fc565b9050600088888481811061029657610296611349565b90506020028101906102a8919061135f565b6102b69060208101906112b2565b90506102c1816107f8565b61032b57600280546001600160a01b03838116600090815260036020526040812083905585516001840185559390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b031916929091169190911790555b60005b8260400151518110156104175760008360400151828151811061035357610353611349565b6020026020010151905060006002811115610370576103706114d2565b84602001516002811115610386576103866114d2565b14156103a0576103968184610876565b856103a057600195505b6001846020015160028111156103b8576103b86114d2565b14156103d2576103c88184610964565b856103d257600195505b6002846020015160028111156103ea576103ea6114d2565b1415610404576103fa8184610cca565b8561040457600195505b508061040f816114fe565b91505061032e565b5050508080610425906114fe565b915050610249565b506001600160a01b0384161561051e578161047b5760405162461bcd60e51b815260206004820152600e60248201526d656d7074792063616c6c6461746160901b60448201526064016100be565b6000846001600160a01b03168484604051610497929190611519565b600060405180830381855af49150503d80600081146104d2576040519150601f19603f3d011682016040523d82523d6000602084013e6104d7565b606091505b505090508061051c5760405162461bcd60e51b815260206004820152601160248201527018d85b1b081d5b9cdd58d8d95cdcd99d5b607a1b60448201526064016100be565b505b8015610564577f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686868660405161055b95949392919061159a565b60405180910390a15b505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156105c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105a6575b5050505050905090565b6002546060906000906001600160401b038111156105ee576105ee61137f565b60405190808252806020026020018201604052801561062757816020015b610614610fc4565b81526020019060019003908161060c5790505b50905060005b6002548110156107595761063f610fc4565b6002828154811061065257610652611349565b60009182526020822001546001600160a01b031682526002805460049291908590811061068157610681611349565b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208054825181850281018501909352808352919290919083018282801561071a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106dc5790505b505050505081602001819052508083838151811061073a5761073a611349565b6020026020010181905250508080610751906114fe565b91505061062d565b50919050565b6001600160a01b0381166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156107ec57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107ae5790505b50505050509050919050565b60025460009061080a57506000919050565b816001600160a01b0316600260008154811061082857610828611349565b6000918252602090912001546001600160a01b03161480159061086157506001600160a01b038216600090815260036020526040902054155b1561086e57506000919050565b506001919050565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680156108d65760405162461bcd60e51b815260206004820152600c60248201526b1cd95b1958dd1bdc8818591960a21b60448201526064016100be565b506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b039081169082168114156109ce5760405162461bcd60e51b815260206004820152601060248201526f73656c6563746f72207265706c61636560801b60448201526064016100be565b6001600160a01b038116600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610a5b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610a1d5790505b5050505050905060008160018351610a7391906116c2565b81518110610a8357610a83611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610afd576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610ae357610ae3611349565b6001600160e01b0319909216602092830291909101909101525b815115610b375781516000190182526001600160a01b03831660009081526004602090815260409091208351610b3592850190610fdc565b505b8151610c3a576002805460009190610b51906001906116c2565b81548110610b6157610b61611349565b6000918252602090912001546001600160a01b03908116915084168114610bec576001600160a01b03808516600081815260036020526040808220549385168252812083905552600280548392908110610bbd57610bbd611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610bfd57610bfd6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0386168252600390526040812055505b5050506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680610d2c5760405162461bcd60e51b815260206004820152600f60248201526e73656c6563746f722072656d6f766560881b60448201526064016100be565b6001600160a01b038216600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d7b5790505b5050505050905060008160018351610dd191906116c2565b81518110610de157610de1611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610e5b576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610e4157610e41611349565b6001600160e01b0319909216602092830291909101909101525b815115610e955781516000190182526001600160a01b03841660009081526004602090815260409091208351610e9392850190610fdc565b505b8151610f98576002805460009190610eaf906001906116c2565b81548110610ebf57610ebf611349565b6000918252602090912001546001600160a01b03908116915085168114610f4a576001600160a01b03808616600081815260036020526040808220549385168252812083905552600280548392908110610f1b57610f1b611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610f5b57610f5b6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600390526040812055505b505050506001600160e01b031916600090815260208190526040902080546001600160a01b0319169055565b60408051808201909152600081526060602082015290565b828054828255906000526020600020906007016008900481019282156110785791602002820160005b8382111561104657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302611005565b80156110765782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611046565b505b50611084929150611088565b5090565b5b808211156110845760008155600101611089565b80356001600160a01b03811681146110b457600080fd5b919050565b60008083601f8401126110cb57600080fd5b5081356001600160401b038111156110e257600080fd5b6020830191508360208285010111156110fa57600080fd5b9250929050565b60008060008060006060868803121561111957600080fd5b85356001600160401b038082111561113057600080fd5b818801915088601f83011261114457600080fd5b81358181111561115357600080fd5b8960208260051b850101111561116857600080fd5b6020830197508096505061117e6020890161109d565b9450604088013591508082111561119457600080fd5b506111a1888289016110b9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160a01b0316835292840192918401916001016111ce565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156112a357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561128e5783516001600160e01b0319168252928b019260019290920191908b0190611264565b50978a01979550505091870191600101611227565b50919998505050505050505050565b6000602082840312156112c457600080fd5b6112cd8261109d565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160e01b031916835292840192918401916001016112f0565b80356001600160e01b0319811681146110b457600080fd5b60006020828403121561134057600080fd5b6112cd82611316565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261137557600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156113b7576113b761137f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156113e5576113e561137f565b604052919050565b8035600381106110b457600080fd5b60006060823603121561140e57600080fd5b611416611395565b61141f8361109d565b8152602061142e8185016113ed565b8282015260408401356001600160401b038082111561144c57600080fd5b9085019036601f83011261145f57600080fd5b8135818111156114715761147161137f565b8060051b91506114828483016113bd565b818152918301840191848101903684111561149c57600080fd5b938501935b838510156114c1576114b285611316565b825293850193908501906114a1565b604087015250939695505050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611512576115126114e8565b5060010190565b8183823760009101908152919050565b8183526000602080850194508260005b85811015611566576001600160e01b031961155383611316565b1687529582019590820190600101611539565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060808252818101869052600090600560808085019089831b8601018a855b8b81101561168f57878303607f190184528135368e9003605e190181126115df57600080fd5b8d016001600160a01b036115f28261109d565b16845260206116028183016113ed565b6003811061162057634e487b7160e01b600052602160045260246000fd5b8582015260408281013536849003601e1901811261163d57600080fd5b830180356001600160401b0381111561165557600080fd5b808a1b360385131561166657600080fd5b8a8389015261167a8b890182868501611529565b988401989750505093019250506001016115b9565b50506001600160a01b038916602087015285810360408701526116b381888a611571565b9b9a5050505050505050505050565b6000828210156116d4576116d46114e8565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb64736f6c63430008090033

Deployed Bytecode Sourcemap

323:9703:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:7;;-1:-1:-1;;;;;;1619:7:0;1601:26;;;;;;;;;;323:9703;;1557:12;;-1:-1:-1;;;;;1601:26:0;;1638:45;;;;-1:-1:-1;;;1638:45:0;;216:2:1;1638:45:0;;;198:21:1;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:40;324:18;;1638:45:0;;;;;;;;;1737:14;1734:1;1731;1718:34;1935:1;1915;1882:14;1862:1;1835:8;1811:5;1780:171;1986:16;1983:1;1980;1965:38;2024:6;2048:38;;;;2125:16;2122:1;2114:28;2048:38;2067:16;2064:1;2057:27;6770:1678;;;;;;;;;;-1:-1:-1;6770:1678:0;;;;;:::i;:::-;;:::i;:::-;;9459:143;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8578:408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;451:20::-;;;;;;;;;;-1:-1:-1;451:20:0;;;;-1:-1:-1;;;;;451:20:0;;;;;;-1:-1:-1;;;;;4386:32:1;;;4368:51;;4356:2;4341:18;451:20:0;4222:203:1;9157:197:0;;;;;;;;;;-1:-1:-1;9157:197:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9838:183::-;;;;;;;;;;-1:-1:-1;9838:183:0;;;;;:::i;:::-;-1:-1:-1;;;;;;9977:36:0;9945:7;9977:36;;;;;;;;;;;-1:-1:-1;;;;;9977:36:0;;9838:183;6770:1678;6940:5;;-1:-1:-1;;;;;6940:5:0;6926:10;:19;6918:41;;;;-1:-1:-1;;;6918:41:0;;5852:2:1;6918:41:0;;;5834:21:1;5891:1;5871:18;;;5864:29;-1:-1:-1;;;5909:18:1;;;5902:39;5958:18;;6918:41:0;5650:332:1;6918:41:0;6970:16;7010:6;7005:1139;7022:22;;;7005:1139;;;7066:24;7093:11;;7105:1;7093:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7066:41;;;:::i;:::-;;;7122:21;7146:11;;7158:1;7146:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;;;;;;;:::i;:::-;7122:51;;7193:33;7212:13;7193:18;:33::i;:::-;7188:177;;7277:9;:16;;-1:-1:-1;;;;;7247:27:0;;;;;;;:12;:27;;;;;:46;;;7327:21;;7312:37;;;;;;;;;;;;;;-1:-1:-1;;;;;;7312:37:0;;;;;;;;;;;7188:177;7384:6;7379:754;7400:8;:26;;;:33;7396:1;:37;7379:754;;;7459:15;7477:8;:26;;;7504:1;7477:29;;;;;;;;:::i;:::-;;;;;;;7459:47;;7548:18;7529:37;;;;;;;;:::i;:::-;:8;:15;;;:37;;;;;;;;:::i;:::-;;7525:181;;;7591:36;7603:8;7613:13;7591:11;:36::i;:::-;7655:11;7650:36;;7682:4;7668:18;;7650:36;7747:22;7728:8;:15;;;:41;;;;;;;;:::i;:::-;;7724:189;;;7794:40;7810:8;7820:13;7794:15;:40::i;:::-;7862:11;7857:36;;7889:4;7875:18;;7857:36;7954:21;7935:8;:15;;;:40;;;;;;;;:::i;:::-;;7931:187;;;8000:39;8015:8;8025:13;8000:14;:39::i;:::-;8067:11;8062:36;;8094:4;8080:18;;8062:36;-1:-1:-1;7435:3:0;;;;:::i;:::-;;;;7379:754;;;;7051:1093;;7046:3;;;;;:::i;:::-;;;;7005:1139;;;-1:-1:-1;;;;;;8158:19:0;;;8154:213;;8202:20;8194:47;;;;-1:-1:-1;;;8194:47:0;;9101:2:1;8194:47:0;;;9083:21:1;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:1;;;9152:44;9213:18;;8194:47:0;8899:338:1;8194:47:0;8257:12;8274:5;-1:-1:-1;;;;;8274:18:0;8293:9;;8274:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8256:47;;;8326:7;8318:37;;;;-1:-1:-1;;;8318:37:0;;9720:2:1;8318:37:0;;;9702:21:1;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:47;9835:18;;8318:37:0;9518:341:1;8318:37:0;8179:188;8154:213;8381:11;8377:63;;;8399:41;8410:11;;8423:5;8430:9;;8399:41;;;;;;;;;;:::i;:::-;;;;;;;;8377:63;6907:1541;6770:1678;;;;;:::o;9459:143::-;9544:16;9585:9;9578:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9578:16:0;;;;;;;;;;;;;;;;;;;;;;;9459:143;:::o;8578:408::-;8683:9;:16;8619:14;;8646:22;;-1:-1:-1;;;;;8671:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8646:54;;8716:6;8711:243;8732:9;:16;8728:20;;8711:243;;;8770:18;;:::i;:::-;8824:9;8834:1;8824:12;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8824:12:0;8803:33;;8896:9;:12;;8877:18;;8824:12;8896:9;8906:1;;8896:12;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;8896:12:0;8877:32;;;;;;;;;;;;;;;8851:58;;;;;;;;;;;;;;;;;;;8877:32;;8851:58;;;8877:32;8851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8851:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;:23;;:58;;;;8937:5;8924:7;8932:1;8924:10;;;;;;;;:::i;:::-;;;;;;:18;;;;8755:199;8750:3;;;;;:::i;:::-;;;;8711:243;;;-1:-1:-1;8971:7:0;8578:408;-1:-1:-1;8578:408:0:o;9157:197::-;-1:-1:-1;;;;;9320:26:0;;;;;;:18;:26;;;;;;;;;9313:33;;;;;;;;;;;;;;;;;9280:15;;9313:33;;;9320:26;9313:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9313:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9157:197;;;:::o;2335:306::-;2466:9;:16;2440:4;;2462:52;;-1:-1:-1;2509:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2462:52::-;2545:8;-1:-1:-1;;;;;2529:24:0;:9;2539:1;2529:12;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2529:12:0;:24;;;;:55;;-1:-1:-1;;;;;;2557:22:0;;;;;;:12;:22;;;;;;:27;2529:55;2525:86;;;-1:-1:-1;2606:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2525:86::-;-1:-1:-1;2629:4:0;;2335:306;-1:-1:-1;2335:306:0:o;2850:430::-;-1:-1:-1;;;;;;2986:27:0;;2956;2986;;;;;;;;;;;-1:-1:-1;;;;;2986:27:0;3032:33;;3024:58;;;;-1:-1:-1;;;3024:58:0;;13037:2:1;3024:58:0;;;13019:21:1;13076:2;13056:18;;;13049:30;-1:-1:-1;;;13095:18:1;;;13088:42;13147:18;;3024:58:0;12835:336:1;3024:58:0;-1:-1:-1;;;;;;;3093:27:0;;:17;:27;;;;;;;;;;;:43;;-1:-1:-1;;;;;;3093:43:0;-1:-1:-1;;;;;3093:43:0;;;;;;;;;3173:33;;;:18;:33;;;;;;:40;;3147:23;;;:13;:23;;;;;:66;;;3224:33;;;-1:-1:-1;3224:48:0;;;;;;;;;;;;;;;;;;;;;;;3093:43;3224:48;;;;;;;;;;;;;;;;;;;;2850:430::o;4931:1407::-;-1:-1:-1;;;;;;5071:27:0;;5041;5071;;;;;;;;;;;-1:-1:-1;;;;;5071:27:0;;;;5117:36;;;;;5109:65;;;;-1:-1:-1;;;5109:65:0;;13378:2:1;5109:65:0;;;13360:21:1;13417:2;13397:18;;;13390:30;-1:-1:-1;;;13436:18:1;;;13429:46;13492:18;;5109:65:0;13176:340:1;5109:65:0;-1:-1:-1;;;;;5213:39:0;;5185:25;5213:39;;;:18;:39;;;;;;;;5185:67;;;;;;;;;;;;;;;;;;;5213:39;;5185:67;;;5213:39;5185:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5185:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:19;5285:9;5314:1;5295:9;:16;:20;;;;:::i;:::-;5285:31;;;;;;;;:::i;:::-;;;;;;;5263:53;;5347:8;-1:-1:-1;;;;;5331:24:0;;:12;-1:-1:-1;;;;;5331:24:0;;;5327:174;;-1:-1:-1;;;;;;5402:23:0;;;;;;;:13;:23;;;;;;;5372:27;;;;;;;:53;;;5450:23;5440:34;;5386:12;;5440:9;;:34;;;;;;:::i;:::-;-1:-1:-1;;;;;;5440:49:0;;;:34;;;;;;;;;;;:49;5327:174;5515:16;;:20;5511:204;;5602:16;;-1:-1:-1;;5598:24:0;5580:43;;-1:-1:-1;;;;;5652:39:0;;-1:-1:-1;5652:39:0;;;:18;:39;;;;;;;;:51;;;;;;;;:::i;:::-;;5511:204;5729:16;;5725:416;;5789:9;5799:16;;5767:19;;5789:9;5799:20;;5818:1;;5799:20;:::i;:::-;5789:31;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5789:31:0;;;;-1:-1:-1;5839:34:0;;;;5835:213;;-1:-1:-1;;;;;5922:33:0;;;;;;;:12;:33;;;;;;;5894:25;;;;;;;:61;;;5984:33;5974:9;:44;;5907:11;;5922:33;5974:44;;;;;;:::i;:::-;;;;;;;;;:58;;;;;-1:-1:-1;;;;;5974:58:0;;;;;-1:-1:-1;;;;;5974:58:0;;;;;;5835:213;6062:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;6062:15:0;;;;;-1:-1:-1;;;;;;6062:15:0;;;;;;;;;-1:-1:-1;;;;;6092:33:0;;;;:12;:33;;;;;:37;-1:-1:-1;5725:416:0;-1:-1:-1;;;;;;;;;6151:27:0;;:17;:27;;;;;;;;;;;:43;;-1:-1:-1;;;;;;6151:43:0;-1:-1:-1;;;;;6151:43:0;;;;;;;;;6231:33;;;:18;:33;;;;;;:40;;6205:23;;;:13;:23;;;;;:66;;;6282:33;;;-1:-1:-1;6282:48:0;;;;;;;;;;;;;;;;;;;;;;;6151:43;6282:48;;;;;;;;;;;;;;;;;;;;4931:1407::o;3489:1227::-;-1:-1:-1;;;;;;3628:27:0;;3598;3628;;;;;;;;;;;-1:-1:-1;;;;;3628:27:0;3674:33;3666:61;;;;-1:-1:-1;;;3666:61:0;;13985:2:1;3666:61:0;;;13967:21:1;14024:2;14004:18;;;13997:30;-1:-1:-1;;;14043:18:1;;;14036:45;14098:18;;3666:61:0;13783:339:1;3666:61:0;-1:-1:-1;;;;;3766:33:0;;3738:25;3766:33;;;:18;:33;;;;;;;;3738:61;;;;;;;;;;;;;;;;;;;3766:33;;3738:61;;;3766:33;3738:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3738:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:19;3832:9;3861:1;3842:9;:16;:20;;;;:::i;:::-;3832:31;;;;;;;;:::i;:::-;;;;;;;3810:53;;3894:8;-1:-1:-1;;;;;3878:24:0;;:12;-1:-1:-1;;;;;3878:24:0;;;3874:174;;-1:-1:-1;;;;;;3949:23:0;;;;;;;:13;:23;;;;;;;3919:27;;;;;;;:53;;;3997:23;3987:34;;3933:12;;3987:9;;:34;;;;;;:::i;:::-;-1:-1:-1;;;;;;3987:49:0;;;:34;;;;;;;;;;;:49;3874:174;4062:16;;:20;4058:198;;4149:16;;-1:-1:-1;;4145:24:0;4127:43;;-1:-1:-1;;;;;4199:33:0;;-1:-1:-1;4199:33:0;;;:18;:33;;;;;;;;:45;;;;;;;;:::i;:::-;;4058:198;4270:16;;4266:392;;4330:9;4340:16;;4308:19;;4330:9;4340:20;;4359:1;;4340:20;:::i;:::-;4330:31;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;4330:31:0;;;;-1:-1:-1;4380:28:0;;;;4376:195;;-1:-1:-1;;;;;4457:27:0;;;;;;;:12;:27;;;;;;;4429:25;;;;;;;:55;;;4513:27;4503:9;:38;;4442:11;;4457:27;4503:38;;;;;;:::i;:::-;;;;;;;;;:52;;;;;-1:-1:-1;;;;;4503:52:0;;;;;-1:-1:-1;;;;;4503:52:0;;;;;;4376:195;4585:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;4585:15:0;;;;;-1:-1:-1;;;;;;4585:15:0;;;;;;;;;-1:-1:-1;;;;;4615:27:0;;;;:12;:27;;;;;:31;-1:-1:-1;4266:392:0;-1:-1:-1;;;;;;;;;;4668:27:0;4706:1;4668:27;;;;;;;;;;:40;;-1:-1:-1;;;;;;4668:40:0;;;3489:1227::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;353:173:1;421:20;;-1:-1:-1;;;;;470:31:1;;460:42;;450:70;;516:1;513;506:12;450:70;353:173;;;:::o;531:347::-;582:8;592:6;646:3;639:4;631:6;627:17;623:27;613:55;;664:1;661;654:12;613:55;-1:-1:-1;687:20:1;;-1:-1:-1;;;;;719:30:1;;716:50;;;762:1;759;752:12;716:50;799:4;791:6;787:17;775:29;;851:3;844:4;835:6;827;823:19;819:30;816:39;813:59;;;868:1;865;858:12;813:59;531:347;;;;;:::o;883:1008::-;1024:6;1032;1040;1048;1056;1109:2;1097:9;1088:7;1084:23;1080:32;1077:52;;;1125:1;1122;1115:12;1077:52;1152:23;;-1:-1:-1;;;;;1224:14:1;;;1221:34;;;1251:1;1248;1241:12;1221:34;1289:6;1278:9;1274:22;1264:32;;1334:7;1327:4;1323:2;1319:13;1315:27;1305:55;;1356:1;1353;1346:12;1305:55;1396:2;1383:16;1422:2;1414:6;1411:14;1408:34;;;1438:1;1435;1428:12;1408:34;1493:7;1486:4;1476:6;1473:1;1469:14;1465:2;1461:23;1457:34;1454:47;1451:67;;;1514:1;1511;1504:12;1451:67;1545:4;1541:2;1537:13;1527:23;;1569:6;1559:16;;;1594:40;1628:4;1617:9;1613:20;1594:40;:::i;:::-;1584:50;;1687:2;1676:9;1672:18;1659:32;1643:48;;1716:2;1706:8;1703:16;1700:36;;;1732:1;1729;1722:12;1700:36;;1771:60;1823:7;1812:8;1801:9;1797:24;1771:60;:::i;:::-;883:1008;;;;-1:-1:-1;883:1008:1;;-1:-1:-1;1850:8:1;;1745:86;883:1008;-1:-1:-1;;;883:1008:1:o;2005:658::-;2176:2;2228:21;;;2298:13;;2201:18;;;2320:22;;;2147:4;;2176:2;2399:15;;;;2373:2;2358:18;;;2147:4;2442:195;2456:6;2453:1;2450:13;2442:195;;;2521:13;;-1:-1:-1;;;;;2517:39:1;2505:52;;2612:15;;;;2577:12;;;;2553:1;2471:9;2442:195;;;-1:-1:-1;2654:3:1;;2005:658;-1:-1:-1;;;;;;2005:658:1:o;2668:1549::-;2852:4;2881:2;2921;2910:9;2906:18;2951:2;2940:9;2933:21;2974:6;3009;3003:13;3040:6;3032;3025:22;3066:2;3056:12;;3099:2;3088:9;3084:18;3077:25;;3161:2;3151:6;3148:1;3144:14;3133:9;3129:30;3125:39;3199:2;3191:6;3187:15;3220:1;3241;3251:937;3267:6;3262:3;3259:15;3251:937;;;3336:22;;;-1:-1:-1;;3332:36:1;3320:49;;3392:13;;3479:9;;-1:-1:-1;;;;;3475:35:1;3460:51;;3550:11;;3544:18;3582:15;;;3575:27;;;3663:19;;3432:15;;;3695:24;;;3785:21;;;;3830:1;;3753:2;3741:15;;;3844:236;3860:8;3855:3;3852:17;3844:236;;;3941:15;;-1:-1:-1;;;;;;3937:42:1;3923:57;;4049:17;;;;3888:1;3879:11;;;;;4006:14;;;;3844:236;;;-1:-1:-1;4166:12:1;;;;4103:5;-1:-1:-1;;;4131:15:1;;;;3293:1;3284:11;3251:937;;;-1:-1:-1;4205:6:1;;2668:1549;-1:-1:-1;;;;;;;;;2668:1549:1:o;4430:186::-;4489:6;4542:2;4530:9;4521:7;4517:23;4513:32;4510:52;;;4558:1;4555;4548:12;4510:52;4581:29;4600:9;4581:29;:::i;:::-;4571:39;4430:186;-1:-1:-1;;;4430:186:1:o;4621:657::-;4790:2;4842:21;;;4912:13;;4815:18;;;4934:22;;;4761:4;;4790:2;5013:15;;;;4987:2;4972:18;;;4761:4;5056:196;5070:6;5067:1;5064:13;5056:196;;;5135:13;;-1:-1:-1;;;;;;5131:40:1;5119:53;;5227:15;;;;5192:12;;;;5092:1;5085:9;5056:196;;5283:173;5350:20;;-1:-1:-1;;;;;;5399:32:1;;5389:43;;5379:71;;5446:1;5443;5436:12;5461:184;5519:6;5572:2;5560:9;5551:7;5547:23;5543:32;5540:52;;;5588:1;5585;5578:12;5540:52;5611:28;5629:9;5611:28;:::i;5987:127::-;6048:10;6043:3;6039:20;6036:1;6029:31;6079:4;6076:1;6069:15;6103:4;6100:1;6093:15;6119:323;6211:4;6269:11;6256:25;6363:2;6359:7;6348:8;6332:14;6328:29;6324:43;6304:18;6300:68;6290:96;;6382:1;6379;6372:12;6290:96;6403:33;;;;;6119:323;-1:-1:-1;;6119:323:1:o;6447:127::-;6508:10;6503:3;6499:20;6496:1;6489:31;6539:4;6536:1;6529:15;6563:4;6560:1;6553:15;6579:253;6651:2;6645:9;6693:4;6681:17;;-1:-1:-1;;;;;6713:34:1;;6749:22;;;6710:62;6707:88;;;6775:18;;:::i;:::-;6811:2;6804:22;6579:253;:::o;6837:275::-;6908:2;6902:9;6973:2;6954:13;;-1:-1:-1;;6950:27:1;6938:40;;-1:-1:-1;;;;;6993:34:1;;7029:22;;;6990:62;6987:88;;;7055:18;;:::i;:::-;7091:2;7084:22;6837:275;;-1:-1:-1;6837:275:1:o;7117:155::-;7197:20;;7246:1;7236:12;;7226:40;;7262:1;7259;7252:12;7277:1213;7377:9;7436:4;7428:5;7412:14;7408:26;7404:37;7401:57;;;7454:1;7451;7444:12;7401:57;7482:22;;:::i;:::-;7529:25;7548:5;7529:25;:::i;:::-;7520:7;7513:42;7574:2;7610:46;7652:2;7645:5;7641:14;7610:46;:::i;:::-;7592:16;;;7585:72;7704:2;7693:14;;7680:28;-1:-1:-1;;;;;7757:14:1;;;7754:34;;;7784:1;7781;7774:12;7754:34;7807:18;;;;7863:14;7856:4;7848:13;;7844:34;7834:62;;7892:1;7889;7882:12;7834:62;7928:2;7915:16;7950:2;7946;7943:10;7940:36;;;7956:18;;:::i;:::-;8002:2;7999:1;7995:10;7985:20;;8025:28;8049:2;8045;8041:11;8025:28;:::i;:::-;8087:15;;;8157:11;;;8153:20;;;8118:12;;;;8196:14;8185:26;;8182:46;;;8224:1;8221;8214:12;8182:46;8248:11;;;;8268:147;8284:6;8279:3;8276:15;8268:147;;;8350:22;8368:3;8350:22;:::i;:::-;8338:35;;8301:12;;;;8393;;;;8268:147;;;8444:2;8431:16;;8424:31;-1:-1:-1;8435:7:1;;7277:1213;-1:-1:-1;;;;;;7277:1213:1:o;8495:127::-;8556:10;8551:3;8547:20;8544:1;8537:31;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8627:127;8688:10;8683:3;8679:20;8676:1;8669:31;8719:4;8716:1;8709:15;8743:4;8740:1;8733:15;8759:135;8798:3;-1:-1:-1;;8819:17:1;;8816:43;;;8839:18;;:::i;:::-;-1:-1:-1;8886:1:1;8875:13;;8759:135::o;9242:271::-;9425:6;9417;9412:3;9399:33;9381:3;9451:16;;9476:13;;;9451:16;9242:271;-1:-1:-1;9242:271:1:o;9864:446::-;9963:6;9958:3;9951:19;9933:3;9989:4;10018:2;10013:3;10009:12;10002:19;;10044:5;10067:1;10077:208;10091:6;10088:1;10085:13;10077:208;;;-1:-1:-1;;;;;;10156:25:1;10174:6;10156:25;:::i;:::-;10152:52;10140:65;;10225:12;;;;10260:15;;;;10113:1;10106:9;10077:208;;;-1:-1:-1;10301:3:1;;9864:446;-1:-1:-1;;;;;9864:446:1:o;10315:266::-;10403:6;10398:3;10391:19;10455:6;10448:5;10441:4;10436:3;10432:14;10419:43;-1:-1:-1;10507:1:1;10482:16;;;10500:4;10478:27;;;10471:38;;;;10563:2;10542:15;;;-1:-1:-1;;10538:29:1;10529:39;;;10525:50;;10315:266::o;10586:2244::-;10901:2;10953:21;;;10926:18;;;11009:22;;;10872:4;;11085:1;11062:3;11047:19;;;;11128:15;;;11113:31;;11109:41;11173:6;10872:4;11207:1433;11221:6;11218:1;11215:13;11207:1433;;;11286:22;;;-1:-1:-1;;11282:37:1;11270:50;;11359:20;;11434:14;11430:27;;;-1:-1:-1;;11426:41:1;11402:66;;11392:94;;11482:1;11479;11472:12;11392:94;11512:31;;-1:-1:-1;;;;;11575:25:1;11512:31;11575:25;:::i;:::-;11571:51;11563:6;11556:67;11646:4;11683:46;11725:2;11718:5;11714:14;11683:46;:::i;:::-;11769:1;11755:12;11752:19;11742:170;;11822:10;11817:3;11813:20;11810:1;11803:31;11861:4;11858:1;11851:15;11893:4;11890:1;11883:15;11742:170;11932:15;;;11925:37;11985:4;12043:14;;;12030:28;12115:14;12111:26;;;-1:-1:-1;;12107:40:1;12081:67;;12071:95;;12162:1;12159;12152:12;12071:95;12194:32;;12253:21;;-1:-1:-1;;;;;12290:30:1;;12287:50;;;12333:1;12330;12323:12;12287:50;12392:6;12388:2;12384:15;12368:14;12364:36;12357:5;12353:48;12350:68;;;12414:1;12411;12404:12;12350:68;12455:2;12450;12442:6;12438:15;12431:27;12481:79;12556:2;12548:6;12544:15;12536:6;12531:2;12522:7;12518:16;12481:79;:::i;:::-;12618:12;;;;12471:89;-1:-1:-1;;;12583:15:1;;;-1:-1:-1;;11243:1:1;11236:9;11207:1433;;;-1:-1:-1;;;;;;;1962:31:1;;12691:4;12676:20;;1950:44;12747:9;12739:6;12735:22;12728:4;12717:9;12713:20;12706:52;12775:49;12817:6;12809;12801;12775:49;:::i;:::-;12767:57;10586:2244;-1:-1:-1;;;;;;;;;;;10586:2244:1:o;13521:125::-;13561:4;13589:1;13586;13583:8;13580:34;;;13594:18;;:::i;:::-;-1:-1:-1;13631:9:1;;13521:125::o;13651:127::-;13712:10;13707:3;13703:20;13700:1;13693:31;13743:4;13740:1;13733:15;13767:4;13764:1;13757:15

Swarm Source

ipfs://e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb

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.