ETH Price: $3,521.52 (+5.25%)

Contract

0x06C3f2473ca4d3dB8845D1213c0D59f81F3f4b33
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve200206772024-06-04 19:54:35175 days ago1717530875IN
0x06C3f247...81F3f4b33
0 ETH0.000243210
Claim Runes166363062023-02-15 19:44:47650 days ago1676490287IN
0x06C3f247...81F3f4b33
0 ETH0.0027437549.28952481
Claim Runes151940182022-07-22 18:24:28858 days ago1658514268IN
0x06C3f247...81F3f4b33
0 ETH0.00117621.9134
Claim Runes151794782022-07-20 12:24:48861 days ago1658319888IN
0x06C3f247...81F3f4b33
0 ETH0.000831114.93019161
Claim Runes149962962022-06-20 11:26:59891 days ago1655724419IN
0x06C3f247...81F3f4b33
0 ETH0.0013454824.17074237
Claim Runes149727162022-06-16 10:08:58895 days ago1655374138IN
0x06C3f247...81F3f4b33
0 ETH0.0022684140.75042251
Claim Runes149267182022-06-08 12:38:06903 days ago1654691886IN
0x06C3f247...81F3f4b33
0 ETH0.0025276151.10620314
Claim Runes149267152022-06-08 12:37:25903 days ago1654691845IN
0x06C3f247...81F3f4b33
0 ETH0.0036088950.99754551
Claim Runes149144942022-06-06 10:34:49905 days ago1654511689IN
0x06C3f247...81F3f4b33
0 ETH0.0019716536.73930569
Claim Runes148908182022-06-02 11:51:36909 days ago1654170696IN
0x06C3f247...81F3f4b33
0 ETH0.0020496443.36404552
Claim Runes148908182022-06-02 11:51:36909 days ago1654170696IN
0x06C3f247...81F3f4b33
0 ETH0.002413943.36404552
Claim Runes148771112022-05-31 6:05:14911 days ago1653977114IN
0x06C3f247...81F3f4b33
0 ETH0.0032373536.05876613
Claim Runes148286882022-05-23 9:10:22919 days ago1653297022IN
0x06C3f247...81F3f4b33
0 ETH0.001431815.94794574
Claim Runes147795562022-05-15 10:59:16927 days ago1652612356IN
0x06C3f247...81F3f4b33
0 ETH0.0010314718.52975834
Claim Runes147527162022-05-11 4:27:28931 days ago1652243248IN
0x06C3f247...81F3f4b33
0 ETH0.0039301454.01076663
Claim Runes147424062022-05-09 12:21:55933 days ago1652098915IN
0x06C3f247...81F3f4b33
0 ETH0.0017556231.53860316
Claim Runes147389072022-05-08 23:06:39933 days ago1652051199IN
0x06C3f247...81F3f4b33
0 ETH0.0011375621.19711968
Claim Runes147313862022-05-07 18:28:07934 days ago1651948087IN
0x06C3f247...81F3f4b33
0 ETH0.0023304632.93205295
Claim Runes147175862022-05-05 13:48:58937 days ago1651758538IN
0x06C3f247...81F3f4b33
0 ETH0.0034458364.20892111
Claim Runes146821172022-04-29 23:20:47942 days ago1651274447IN
0x06C3f247...81F3f4b33
0 ETH0.002014236.18373839
Claim Runes146817502022-04-29 21:58:58942 days ago1651269538IN
0x06C3f247...81F3f4b33
0 ETH0.0031536544.56461174
Claim Runes146588462022-04-26 7:28:34946 days ago1650958114IN
0x06C3f247...81F3f4b33
0 ETH0.0027550730.68691274
Claim Runes146497342022-04-24 21:08:51947 days ago1650834531IN
0x06C3f247...81F3f4b33
0 ETH0.0023299843.41643213
Claim Runes146477072022-04-24 13:23:19948 days ago1650806599IN
0x06C3f247...81F3f4b33
0 ETH0.0019449736.24224428
Claim Runes146472252022-04-24 11:36:47948 days ago1650800207IN
0x06C3f247...81F3f4b33
0 ETH0.0014914926.79358174
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Runes

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-05
*/

// SPDX-License-Identifier: MIT
// # Runes.sol
// This is a ERC-20 token that is ONLY meant to be used as a extension for the Mysterious World NFT Project
// The only use case for this token is to be used to interact with The Mysterious World.
// This token has no monetary value associated to it.
// Read more at https://www.themysterious.world/utility

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// The interface is used so we can get the balance of each holder
interface TheMysteriousWorld {
    function balanceOf(address inhabitant) external view returns(uint256);
    function ritualWallet() external view returns(address);
}

/*
 * 888d888888  88888888b.  .d88b. .d8888b  
 * 888P"  888  888888 "88bd8P  Y8b88K      
 * 888    888  888888  88888888888"Y8888b. 
 * 888    Y88b 888888  888Y8b.         X88 
 * 888     "Y88888888  888 "Y8888  88888P' 
 */
contract Runes is ERC20, Ownable {
    TheMysteriousWorld public mysteriousworld;

    uint256 public deployedStamp       = 0; // this is used to calculate the amount of $RUNES a user has from the current block.timestamp
    uint256 public runesPerDay         = 10 ether; // this ends up being 25 $RUNES per day. this might change in the future depending on how the collection grows overtime.
    bool    public allowRuneCollecting = false; // this lets you claim your $RUNES from the contract to the wallet

    mapping(address => uint256) public runesObtained; // this tracks how much $RUNES each address earned
    mapping(address => uint256) public lastTimeCollectedRunes; // this sets the block.timestamp to the address so it subtracts the timestamp from the pending rewards
    mapping(address => bool)    public contractWallets; // these are used to interact with the burning mechanisms of the contract - these will only be set to contracts related to The Mysterious World

    constructor() ERC20("Runes", "Runes") {
        deployedStamp = block.timestamp;
    }

    /*
     * # onlyContractWallets
     * blocks anyone from accessing it but contract wallets
     */
    modifier onlyContractWallets() {
        require(contractWallets[msg.sender], "You angered the gods!");
        _;
    }

    /*
     * # onlyWhenCollectingIsEnabled
     * blocks anyone from accessing functions that require allowRuneCollecting
     */
    modifier onlyWhenCollectingIsEnabled() {
        require(allowRuneCollecting, "You angered the gods!");
        _;
    }

    /*
     * # setRuneCollecting
     * enables or disables users to withdraw their runes - should only be called once unless the gods intended otherwise
     */
    function setRuneCollecting(bool newState) public payable onlyOwner {
        allowRuneCollecting = newState;
    }

    /*
     * # setDeployedStamp
     * sets the timestamp for when the $RUNES should start being generated
     */
    function setDeployedStamp(bool forced, uint256 stamp) public payable onlyOwner {
        if (forced) {
            deployedStamp = stamp;
        } else {
            deployedStamp = block.timestamp;
        }
    }

    /*
     * # setRunesPerDay
     * incase we want to change the amount gained per day, the gods can set it here
     */
    function setRunesPerDay(uint256 newRunesPerDay) public payable onlyOwner {
        runesPerDay = newRunesPerDay;
    }

    /*
     * # setMysteriousWorldContract
     * sets the address to the deployed Mysterious World contract
     */
    function setMysteriousWorldContract(address contractAddress) public payable onlyOwner {
        mysteriousworld = TheMysteriousWorld(contractAddress);
    }

    /*
     * # setContractWallets
     * enables or disables a contract wallet from interacting with the burn mechanics of the contract
     */
    function setContractWallets(address contractAddress, bool newState) public payable onlyOwner {
        contractWallets[contractAddress] = newState;
    }

    /*
     * # getPendingRunes
     * calculates the runes a inhabitant has from the last time they claimed and the deployedStamp time
     */
    function getPendingRunes(address inhabitant) internal view returns(uint256) {
        uint256 sumOfRunes = mysteriousworld.balanceOf(inhabitant) * runesPerDay;

        if (lastTimeCollectedRunes[inhabitant] >= deployedStamp) {
            return sumOfRunes * ((block.timestamp - lastTimeCollectedRunes[inhabitant])) / 86400;
        } else {
            return sumOfRunes * ((block.timestamp - deployedStamp)) / 86400;
        }
    }

    /*
     * # getUnclaimedRunes
     * returns the total amount of unclaimed runes a wallet has
     */
    function getUnclaimedRunes(address inhabitant) external view returns(uint256) {
        return getPendingRunes(inhabitant);
    }

    /*
     * # getTotalRunes
     * returns the runesObtained and getPendingRunes for the inhabitant passed
     */
    function getTotalRunes(address inhabitant) external view returns(uint256) {
        return runesObtained[inhabitant] + getPendingRunes(inhabitant);
    }

    /*
     * # burn
     * removes the withdrawn $RUNES from the wallet provided for the amount provided
     */
    function burn(address inhabitant, uint256 cost) external payable onlyContractWallets {
        _burn(inhabitant, cost);
    }

    /*
     * # claimRunes
     * takes the pending $RUNES and puts it into your wallet... you earned these, the gods aren't angry
     */
    function claimRunes() external payable onlyWhenCollectingIsEnabled {
        _mint(msg.sender, runesObtained[msg.sender] + getPendingRunes(msg.sender));

        runesObtained[msg.sender] = 0;
        lastTimeCollectedRunes[msg.sender] = block.timestamp;
    }

    /*
     * # updateRunes
     * updates the pending balance for both of the wallets associated to the transfer so they don't lose the $RUNES generated
     */
    function updateRunes(address from, address to) external onlyContractWallets {
        if (from != address(0) && from != mysteriousworld.ritualWallet()) {
            runesObtained[from]          += getPendingRunes(from);
            lastTimeCollectedRunes[from] = block.timestamp;
        }

        if (to != address(0) && to != mysteriousworld.ritualWallet()) {
            runesObtained[to]          += getPendingRunes(to);
            lastTimeCollectedRunes[to] = block.timestamp;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"allowRuneCollecting","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"},{"internalType":"uint256","name":"cost","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimRunes","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployedStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getTotalRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inhabitant","type":"address"}],"name":"getUnclaimedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTimeCollectedRunes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mysteriousworld","outputs":[{"internalType":"contract TheMysteriousWorld","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"runesObtained","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runesPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"newState","type":"bool"}],"name":"setContractWallets","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"forced","type":"bool"},{"internalType":"uint256","name":"stamp","type":"uint256"}],"name":"setDeployedStamp","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setMysteriousWorldContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"newState","type":"bool"}],"name":"setRuneCollecting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRunesPerDay","type":"uint256"}],"name":"setRunesPerDay","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"updateRunes","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600755678ac7230489e800006008556009805460ff191690553480156200002c57600080fd5b5060408051808201825260058082526452756e657360d81b6020808401828152855180870190965292855284015281519192916200006d9160039162000100565b5080516200008390600490602084019062000100565b505050620000a06200009a620000aa60201b60201c565b620000ae565b42600755620001e3565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010e90620001a6565b90600052602060002090601f0160209004810192826200013257600085556200017d565b82601f106200014d57805160ff19168380011785556200017d565b828001600101855582156200017d579182015b828111156200017d57825182559160200191906001019062000160565b506200018b9291506200018f565b5090565b5b808211156200018b576000815560010162000190565b600181811c90821680620001bb57607f821691505b60208210811415620001dd57634e487b7160e01b600052602260045260246000fd5b50919050565b61171380620001f36000396000f3fe6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611554565b60405180910390f35b34801561021457600080fd5b506102286102233660046114bf565b61064d565b60405190151581526020016101ff565b61024b610246366004611506565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611449565b6106ab565b34801561029857600080fd5b5061025e6102a73660046113d6565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114bf565b6107c4565b34801561030957600080fd5b5061025e6103183660046113d6565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d3660046113d6565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b610800565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e23660046113d6565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e6104123660046113d6565b610836565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f261086a565b61024b6104583660046114bf565b610879565b61024b61046b36600461148a565b6108b2565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114bf565b610907565b3480156104b257600080fd5b506102286104c13660046114bf565b6109a0565b61024b6104d4366004611522565b6109ad565b3480156104e557600080fd5b5061024b6104f4366004611410565b6109dc565b61024b6105073660046113d6565b610c18565b34801561051857600080fd5b5061025e60075481565b61024b6105303660046114eb565b610c64565b34801561054157600080fd5b5061025e6105503660046113d6565b610ca1565b34801561056157600080fd5b5061025e610570366004611410565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b63660046113d6565b610cac565b6060600380546105ca9061167d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167d565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d47565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115a9565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e6c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d47565b506001949350505050565b60095460ff166107775760405162461bcd60e51b815260040161068d906115de565b6107a3336107843361103b565b336000908152600a602052604090205461079e919061160d565b61114a565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107fb90869061160d565b610d47565b6005546001600160a01b0316331461082a5760405162461bcd60e51b815260040161068d906115a9565b6108346000611229565b565b60006108418261103b565b6001600160a01b0383166000908152600a6020526040902054610864919061160d565b92915050565b6060600480546105ca9061167d565b336000908152600c602052604090205460ff166108a85760405162461bcd60e51b815260040161068d906115de565b6106a7828261127b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b6109963385858403610d47565b5060019392505050565b600061065a338484610e6c565b6005546001600160a01b031633146109d75760405162461bcd60e51b815260040161068d906115a9565b600855565b336000908152600c602052604090205460ff16610a0b5760405162461bcd60e51b815260040161068d906115de565b6001600160a01b03821615801590610aba5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6c57600080fd5b505afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa491906113f3565b6001600160a01b0316826001600160a01b031614155b15610b1157610ac88261103b565b6001600160a01b0383166000908152600a602052604081208054909190610af090849061160d565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bc05750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906113f3565b6001600160a01b0316816001600160a01b031614155b156106a757610bce8161103b565b6001600160a01b0382166000908152600a602052604081208054909190610bf690849061160d565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c425760405162461bcd60e51b815260040161068d906115a9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161068d906115a9565b6009805460ff1916911515919091179055565b60006108648261103b565b6005546001600160a01b03163314610cd65760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b038116610d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d4481611229565b50565b6001600160a01b038316610da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610faa5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610fe190849061160d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161102d91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b15801561108957600080fd5b505afa15801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c1919061153b565b6110cb9190611647565b6007546001600160a01b0385166000908152600b602052604090205491925011611132576001600160a01b0383166000908152600b602052604090205462015180906111179042611666565b6111219083611647565b61112b9190611625565b9392505050565b62015180600754426111179190611666565b50919050565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111b2919061160d565b90915550506001600160a01b038216600090815260208190526040812080548392906111df90849061160d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561134f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061137e908490611666565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e5f565b803580151581146113d157600080fd5b919050565b6000602082840312156113e857600080fd5b813561112b816116c8565b60006020828403121561140557600080fd5b815161112b816116c8565b6000806040838503121561142357600080fd5b823561142e816116c8565b9150602083013561143e816116c8565b809150509250929050565b60008060006060848603121561145e57600080fd5b8335611469816116c8565b92506020840135611479816116c8565b929592945050506040919091013590565b6000806040838503121561149d57600080fd5b82356114a8816116c8565b91506114b6602084016113c1565b90509250929050565b600080604083850312156114d257600080fd5b82356114dd816116c8565b946020939093013593505050565b6000602082840312156114fd57600080fd5b61112b826113c1565b6000806040838503121561151957600080fd5b6114dd836113c1565b60006020828403121561153457600080fd5b5035919050565b60006020828403121561154d57600080fd5b5051919050565b600060208083528351808285015260005b8181101561158157858101830151858201604001528201611565565b81811115611593576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274596f7520616e67657265642074686520676f64732160581b604082015260600190565b60008219821115611620576116206116b2565b500190565b60008261164257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611661576116616116b2565b500290565b600082821015611678576116786116b2565b500390565b600181811c9082168061169157607f821691505b6020821081141561114457634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d4457600080fdfea26469706673582212203dfe29b4a7d169e1e0b461507152098fc8cdc8c1352ec189117495728bf9d53564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c80638d5eec9b11610102578063baebddeb11610095578063d5e22fd911610064578063d5e22fd914610522578063dae35b3414610535578063dd62ed3e14610555578063f2fde38b1461059b57600080fd5b8063baebddeb146104c6578063bfd763ca146104d9578063c8942344146104f9578063ceadbe4b1461050c57600080fd5b80639fc8d67d116100d15780639fc8d67d1461045d578063a326a54314610470578063a457c2d714610486578063a9059cbb146104a657600080fd5b80638d5eec9b146103f75780638da5cb5b1461041757806395d89b41146104355780639dc29fac1461044a57600080fd5b8063374901f61161017a57806370a082311161014957806370a0823114610362578063715018a6146103985780638452436c146103ad5780638462a452146103c757600080fd5b8063374901f6146102d557806339509351146102dd5780633bdef865146102fd57806360f162791461032a57600080fd5b806318160ddd116101b657806318160ddd1461024d57806323b872dd1461026c5780632b4b4d9b1461028c578063313ce567146102b957600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a6ddbdb14610238575b600080fd5b3480156101e957600080fd5b506101f26105bb565b6040516101ff9190611554565b60405180910390f35b34801561021457600080fd5b506102286102233660046114bf565b61064d565b60405190151581526020016101ff565b61024b610246366004611506565b610663565b005b34801561025957600080fd5b506002545b6040519081526020016101ff565b34801561027857600080fd5b50610228610287366004611449565b6106ab565b34801561029857600080fd5b5061025e6102a73660046113d6565b600b6020526000908152604090205481565b3480156102c557600080fd5b50604051601281526020016101ff565b61024b610755565b3480156102e957600080fd5b506102286102f83660046114bf565b6107c4565b34801561030957600080fd5b5061025e6103183660046113d6565b600a6020526000908152604090205481565b34801561033657600080fd5b5060065461034a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561036e57600080fd5b5061025e61037d3660046113d6565b6001600160a01b031660009081526020819052604090205490565b3480156103a457600080fd5b5061024b610800565b3480156103b957600080fd5b506009546102289060ff1681565b3480156103d357600080fd5b506102286103e23660046113d6565b600c6020526000908152604090205460ff1681565b34801561040357600080fd5b5061025e6104123660046113d6565b610836565b34801561042357600080fd5b506005546001600160a01b031661034a565b34801561044157600080fd5b506101f261086a565b61024b6104583660046114bf565b610879565b61024b61046b36600461148a565b6108b2565b34801561047c57600080fd5b5061025e60085481565b34801561049257600080fd5b506102286104a13660046114bf565b610907565b3480156104b257600080fd5b506102286104c13660046114bf565b6109a0565b61024b6104d4366004611522565b6109ad565b3480156104e557600080fd5b5061024b6104f4366004611410565b6109dc565b61024b6105073660046113d6565b610c18565b34801561051857600080fd5b5061025e60075481565b61024b6105303660046114eb565b610c64565b34801561054157600080fd5b5061025e6105503660046113d6565b610ca1565b34801561056157600080fd5b5061025e610570366004611410565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a757600080fd5b5061024b6105b63660046113d6565b610cac565b6060600380546105ca9061167d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f69061167d565b80156106435780601f1061061857610100808354040283529160200191610643565b820191906000526020600020905b81548152906001019060200180831161062657829003601f168201915b5050505050905090565b600061065a338484610d47565b50600192915050565b6005546001600160a01b031633146106965760405162461bcd60e51b815260040161068d906115a9565b60405180910390fd5b81156106a25760075550565b426007555b5050565b60006106b8848484610e6c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561073d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068d565b61074a8533858403610d47565b506001949350505050565b60095460ff166107775760405162461bcd60e51b815260040161068d906115de565b6107a3336107843361103b565b336000908152600a602052604090205461079e919061160d565b61114a565b336000908152600a60209081526040808320839055600b9091529020429055565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161065a9185906107fb90869061160d565b610d47565b6005546001600160a01b0316331461082a5760405162461bcd60e51b815260040161068d906115a9565b6108346000611229565b565b60006108418261103b565b6001600160a01b0383166000908152600a6020526040902054610864919061160d565b92915050565b6060600480546105ca9061167d565b336000908152600c602052604090205460ff166108a85760405162461bcd60e51b815260040161068d906115de565b6106a7828261127b565b6005546001600160a01b031633146108dc5760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161068d565b6109963385858403610d47565b5060019392505050565b600061065a338484610e6c565b6005546001600160a01b031633146109d75760405162461bcd60e51b815260040161068d906115a9565b600855565b336000908152600c602052604090205460ff16610a0b5760405162461bcd60e51b815260040161068d906115de565b6001600160a01b03821615801590610aba5750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6c57600080fd5b505afa158015610a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa491906113f3565b6001600160a01b0316826001600160a01b031614155b15610b1157610ac88261103b565b6001600160a01b0383166000908152600a602052604081208054909190610af090849061160d565b90915550506001600160a01b0382166000908152600b602052604090204290555b6001600160a01b03811615801590610bc05750600660009054906101000a90046001600160a01b03166001600160a01b03166399bb35af6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa91906113f3565b6001600160a01b0316816001600160a01b031614155b156106a757610bce8161103b565b6001600160a01b0382166000908152600a602052604081208054909190610bf690849061160d565b90915550506001600160a01b03166000908152600b6020526040902042905550565b6005546001600160a01b03163314610c425760405162461bcd60e51b815260040161068d906115a9565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161068d906115a9565b6009805460ff1916911515919091179055565b60006108648261103b565b6005546001600160a01b03163314610cd65760405162461bcd60e51b815260040161068d906115a9565b6001600160a01b038116610d3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068d565b610d4481611229565b50565b6001600160a01b038316610da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161068d565b6001600160a01b038216610e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161068d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ed05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161068d565b6001600160a01b038216610f325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161068d565b6001600160a01b03831660009081526020819052604090205481811015610faa5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161068d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610fe190849061160d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161102d91815260200190565b60405180910390a350505050565b6008546006546040516370a0823160e01b81526001600160a01b038481166004830152600093849390929116906370a082319060240160206040518083038186803b15801561108957600080fd5b505afa15801561109d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c1919061153b565b6110cb9190611647565b6007546001600160a01b0385166000908152600b602052604090205491925011611132576001600160a01b0383166000908152600b602052604090205462015180906111179042611666565b6111219083611647565b61112b9190611625565b9392505050565b62015180600754426111179190611666565b50919050565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068d565b80600260008282546111b2919061160d565b90915550506001600160a01b038216600090815260208190526040812080548392906111df90849061160d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166112db5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161068d565b6001600160a01b0382166000908152602081905260409020548181101561134f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161068d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061137e908490611666565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610e5f565b803580151581146113d157600080fd5b919050565b6000602082840312156113e857600080fd5b813561112b816116c8565b60006020828403121561140557600080fd5b815161112b816116c8565b6000806040838503121561142357600080fd5b823561142e816116c8565b9150602083013561143e816116c8565b809150509250929050565b60008060006060848603121561145e57600080fd5b8335611469816116c8565b92506020840135611479816116c8565b929592945050506040919091013590565b6000806040838503121561149d57600080fd5b82356114a8816116c8565b91506114b6602084016113c1565b90509250929050565b600080604083850312156114d257600080fd5b82356114dd816116c8565b946020939093013593505050565b6000602082840312156114fd57600080fd5b61112b826113c1565b6000806040838503121561151957600080fd5b6114dd836113c1565b60006020828403121561153457600080fd5b5035919050565b60006020828403121561154d57600080fd5b5051919050565b600060208083528351808285015260005b8181101561158157858101830151858201604001528201611565565b81811115611593576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260159082015274596f7520616e67657265642074686520676f64732160581b604082015260600190565b60008219821115611620576116206116b2565b500190565b60008261164257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611661576116616116b2565b500290565b600082821015611678576116786116b2565b500390565b600181811c9082168061169157607f821691505b6020821081141561114457634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610d4457600080fdfea26469706673582212203dfe29b4a7d169e1e0b461507152098fc8cdc8c1352ec189117495728bf9d53564736f6c63430008070033

Deployed Bytecode Sourcemap

8019:5571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:169;;;;;;;;;;-1:-1:-1;2888:169:0;;;;;:::i;:::-;;:::i;:::-;;;3366:14:1;;3359:22;3341:41;;3329:2;3314:18;2888:169:0;3201:187:1;10027:221:0;;;;;;:::i;:::-;;:::i;:::-;;2295:108;;;;;;;;;;-1:-1:-1;2383:12:0;;2295:108;;;9498:25:1;;;9486:2;9471:18;2295:108:0;9352:177:1;3065:492:0;;;;;;;;;;-1:-1:-1;3065:492:0;;;;;:::i;:::-;;:::i;8645:57::-;;;;;;;;;;-1:-1:-1;8645:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;2194:93;;;;;;;;;;-1:-1:-1;2194:93:0;;2277:2;9676:36:1;;9664:2;9649:18;2194:93:0;9534:184:1;12638:265:0;;;:::i;3565:215::-;;;;;;;;;;-1:-1:-1;3565:215:0;;;;;:::i;:::-;;:::i;8539:48::-;;;;;;;;;;-1:-1:-1;8539:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;8059:41;;;;;;;;;;-1:-1:-1;8059:41:0;;;;-1:-1:-1;;;;;8059:41:0;;;;;;-1:-1:-1;;;;;3157:32:1;;;3139:51;;3127:2;3112:18;8059:41:0;2993:203:1;2411:127:0;;;;;;;;;;-1:-1:-1;2411:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2512:18:0;2485:7;2512:18;;;;;;;;;;;;2411:127;7062:94;;;;;;;;;;;;;:::i;8421:42::-;;;;;;;;;;-1:-1:-1;8421:42:0;;;;;;;;8812:50;;;;;;;;;;-1:-1:-1;8812:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12079:155;;;;;;;;;;-1:-1:-1;12079:155:0;;;;;:::i;:::-;;:::i;6839:87::-;;;;;;;;;;-1:-1:-1;6912:6:0;;-1:-1:-1;;;;;6912:6:0;6839:87;;2082:104;;;;;;;;;;;;;:::i;12360:127::-;;;;;;:::i;:::-;;:::i;10947:155::-;;;;;;:::i;:::-;;:::i;8248:45::-;;;;;;;;;;;;;;;;3788:413;;;;;;;;;;-1:-1:-1;3788:413:0;;;;;:::i;:::-;;:::i;2546:175::-;;;;;;;;;;-1:-1:-1;2546:175:0;;;;;:::i;:::-;;:::i;10383:120::-;;;;;;:::i;:::-;;:::i;13077:510::-;;;;;;;;;;-1:-1:-1;13077:510:0;;;;;:::i;:::-;;:::i;10632:158::-;;;;;;:::i;:::-;;:::i;8109:38::-;;;;;;;;;;;;;;;;9783:116;;;;;;:::i;:::-;;:::i;11819:131::-;;;;;;;;;;-1:-1:-1;11819:131:0;;;;;:::i;:::-;;:::i;2729:151::-;;;;;;;;;;-1:-1:-1;2729:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2845:18:0;;;2818:7;2845:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2729:151;7164:192;;;;;;;;;;-1:-1:-1;7164:192:0;;;;;:::i;:::-;;:::i;1974:100::-;2028:13;2061:5;2054:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:100;:::o;2888:169::-;2971:4;2988:39;1434:10;3011:7;3020:6;2988:8;:39::i;:::-;-1:-1:-1;3045:4:0;2888:169;;;;:::o;10027:221::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;;;;;;;;;10121:6:::1;10117:124;;;10144:13;:21:::0;-1:-1:-1;10027:221:0:o;10117:124::-:1;10214:15;10198:13;:31:::0;10117:124:::1;10027:221:::0;;:::o;3065:492::-;3205:4;3222:36;3232:6;3240:9;3251:6;3222:9;:36::i;:::-;-1:-1:-1;;;;;3298:19:0;;3271:24;3298:19;;;:11;:19;;;;;;;;1434:10;3298:33;;;;;;;;3350:26;;;;3342:79;;;;-1:-1:-1;;;3342:79:0;;6455:2:1;3342:79:0;;;6437:21:1;6494:2;6474:18;;;6467:30;6533:34;6513:18;;;6506:62;-1:-1:-1;;;6584:18:1;;;6577:38;6632:19;;3342:79:0;6253:404:1;3342:79:0;3457:57;3466:6;1434:10;3507:6;3488:16;:25;3457:8;:57::i;:::-;-1:-1:-1;3545:4:0;;3065:492;-1:-1:-1;;;;3065:492:0:o;12638:265::-;9543:19;;;;9535:53;;;;-1:-1:-1;;;9535:53:0;;;;;;;:::i;:::-;12716:74:::1;12722:10;12762:27;12778:10;12762:15;:27::i;:::-;12748:10;12734:25;::::0;;;:13:::1;:25;::::0;;;;;:55:::1;::::0;;::::1;:::i;:::-;12716:5;:74::i;:::-;12817:10;12831:1;12803:25:::0;;;:13:::1;:25;::::0;;;;;;;:29;;;12843:22:::1;:34:::0;;;;;12880:15:::1;12843:52:::0;;12638:265::o;3565:215::-;1434:10;3653:4;3702:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3702:34:0;;;;;;;;;;3653:4;;3670:80;;3693:7;;3702:47;;3739:10;;3702:47;:::i;:::-;3670:8;:80::i;7062:94::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;7127:21:::1;7145:1;7127:9;:21::i;:::-;7062:94::o:0;12079:155::-;12144:7;12199:27;12215:10;12199:15;:27::i;:::-;-1:-1:-1;;;;;12171:25:0;;;;;;:13;:25;;;;;;:55;;;;:::i;:::-;12164:62;12079:155;-1:-1:-1;;12079:155:0:o;2082:104::-;2138:13;2171:7;2164:14;;;;;:::i;12360:127::-;9285:10;9269:27;;;;:15;:27;;;;;;;;9261:61;;;;-1:-1:-1;;;9261:61:0;;;;;;;:::i;:::-;12456:23:::1;12462:10;12474:4;12456:5;:23::i;10947:155::-:0;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11051:32:0;;;::::1;;::::0;;;:15:::1;:32;::::0;;;;:43;;-1:-1:-1;;11051:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10947:155::o;3788:413::-;1434:10;3881:4;3925:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3925:34:0;;;;;;;;;;3978:35;;;;3970:85;;;;-1:-1:-1;;;3970:85:0;;8788:2:1;3970:85:0;;;8770:21:1;8827:2;8807:18;;;8800:30;8866:34;8846:18;;;8839:62;-1:-1:-1;;;8917:18:1;;;8910:35;8962:19;;3970:85:0;8586:401:1;3970:85:0;4091:67;1434:10;4114:7;4142:15;4123:16;:34;4091:8;:67::i;:::-;-1:-1:-1;4189:4:0;;3788:413;-1:-1:-1;;;3788:413:0:o;2546:175::-;2632:4;2649:42;1434:10;2673:9;2684:6;2649:9;:42::i;10383:120::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;10467:11:::1;:28:::0;10383:120::o;13077:510::-;9285:10;9269:27;;;;:15;:27;;;;;;;;9261:61;;;;-1:-1:-1;;;9261:61:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13168:18:0;::::1;::::0;;::::1;::::0;:60:::1;;;13198:15;;;;;;;;;-1:-1:-1::0;;;;;13198:15:0::1;-1:-1:-1::0;;;;;13198:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13190:38:0::1;:4;-1:-1:-1::0;;;;;13190:38:0::1;;;13168:60;13164:207;;;13277:21;13293:4;13277:15;:21::i;:::-;-1:-1:-1::0;;;;;13245:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;:53;;:19;;;:53:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13313:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;13344:15:::1;13313:46:::0;;13164:207:::1;-1:-1:-1::0;;;;;13387:16:0;::::1;::::0;;::::1;::::0;:56:::1;;;13413:15;;;;;;;;;-1:-1:-1::0;;;;;13413:15:0::1;-1:-1:-1::0;;;;;13413:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13407:36:0::1;:2;-1:-1:-1::0;;;;;13407:36:0::1;;;13387:56;13383:197;;;13490:19;13506:2;13490:15;:19::i;:::-;-1:-1:-1::0;;;;;13460:17:0;::::1;;::::0;;;:13:::1;:17;::::0;;;;:49;;:17;;;:49:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;13524:26:0::1;;::::0;;;:22:::1;:26;::::0;;;;13553:15:::1;13524:44:::0;;-1:-1:-1;13077:510:0:o;10632:158::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;10729:15:::1;:53:::0;;-1:-1:-1;;;;;;10729:53:0::1;-1:-1:-1::0;;;;;10729:53:0;;;::::1;::::0;;;::::1;::::0;;10632:158::o;9783:116::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;9861:19:::1;:30:::0;;-1:-1:-1;;9861:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9783:116::o;11819:131::-;11888:7;11915:27;11931:10;11915:15;:27::i;7164:192::-;6912:6;;-1:-1:-1;;;;;6912:6:0;1434:10;6974:23;6966:68;;;;-1:-1:-1;;;6966:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7253:22:0;::::1;7245:73;;;::::0;-1:-1:-1;;;7245:73:0;;5238:2:1;7245:73:0::1;::::0;::::1;5220:21:1::0;5277:2;5257:18;;;5250:30;5316:34;5296:18;;;5289:62;-1:-1:-1;;;5367:18:1;;;5360:36;5413:19;;7245:73:0::1;5036:402:1::0;7245:73:0::1;7329:19;7339:8;7329:9;:19::i;:::-;7164:192:::0;:::o;5956:380::-;-1:-1:-1;;;;;6092:19:0;;6084:68;;;;-1:-1:-1;;;6084:68:0;;8383:2:1;6084:68:0;;;8365:21:1;8422:2;8402:18;;;8395:30;8461:34;8441:18;;;8434:62;-1:-1:-1;;;8512:18:1;;;8505:34;8556:19;;6084:68:0;8181:400:1;6084:68:0;-1:-1:-1;;;;;6171:21:0;;6163:68;;;;-1:-1:-1;;;6163:68:0;;5645:2:1;6163:68:0;;;5627:21:1;5684:2;5664:18;;;5657:30;5723:34;5703:18;;;5696:62;-1:-1:-1;;;5774:18:1;;;5767:32;5816:19;;6163:68:0;5443:398:1;6163:68:0;-1:-1:-1;;;;;6244:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6296:32;;9498:25:1;;;6296:32:0;;9471:18:1;6296:32:0;;;;;;;;5956:380;;;:::o;4209:733::-;-1:-1:-1;;;;;4349:20:0;;4341:70;;;;-1:-1:-1;;;4341:70:0;;7977:2:1;4341:70:0;;;7959:21:1;8016:2;7996:18;;;7989:30;8055:34;8035:18;;;8028:62;-1:-1:-1;;;8106:18:1;;;8099:35;8151:19;;4341:70:0;7775:401:1;4341:70:0;-1:-1:-1;;;;;4430:23:0;;4422:71;;;;-1:-1:-1;;;4422:71:0;;4431:2:1;4422:71:0;;;4413:21:1;4470:2;4450:18;;;4443:30;4509:34;4489:18;;;4482:62;-1:-1:-1;;;4560:18:1;;;4553:33;4603:19;;4422:71:0;4229:399:1;4422:71:0;-1:-1:-1;;;;;4590:17:0;;4566:21;4590:17;;;;;;;;;;;4626:23;;;;4618:74;;;;-1:-1:-1;;;4618:74:0;;6048:2:1;4618:74:0;;;6030:21:1;6087:2;6067:18;;;6060:30;6126:34;6106:18;;;6099:62;-1:-1:-1;;;6177:18:1;;;6170:36;6223:19;;4618:74:0;5846:402:1;4618:74:0;-1:-1:-1;;;;;4728:17:0;;;:9;:17;;;;;;;;;;;4748:22;;;4728:42;;4792:20;;;;;;;;:30;;4764:6;;4728:9;4792:30;;4764:6;;4792:30;:::i;:::-;;;;;;;;4857:9;-1:-1:-1;;;;;4840:35:0;4849:6;-1:-1:-1;;;;;4840:35:0;;4868:6;4840:35;;;;9498:25:1;;9486:2;9471:18;;9352:177;4840:35:0;;;;;;;;4330:612;4209:733;;;:::o;11258:443::-;11406:11;;11366:15;;:37;;-1:-1:-1;;;11366:37:0;;-1:-1:-1;;;;;3157:32:1;;;11366:37:0;;;3139:51:1;11325:7:0;;;;11406:11;;11366:15;;;:25;;3112:18:1;;11366:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;11472:13;;-1:-1:-1;;;;;11434:34:0;;;;;;:22;:34;;;;;;11345:72;;-1:-1:-1;;11430:264:0;;-1:-1:-1;;;;;11542:34:0;;;;;;:22;:34;;;;;;11581:5;;11524:52;;:15;:52;:::i;:::-;11509:69;;:10;:69;:::i;:::-;:77;;;;:::i;:::-;11502:84;11258:443;-1:-1:-1;;;11258:443:0:o;11430:264::-;11677:5;11659:13;;11641:15;:31;;;;:::i;11430:264::-;11334:367;11258:443;;;:::o;4950:399::-;-1:-1:-1;;;;;5034:21:0;;5026:65;;;;-1:-1:-1;;;5026:65:0;;9194:2:1;5026:65:0;;;9176:21:1;9233:2;9213:18;;;9206:30;9272:33;9252:18;;;9245:61;9323:18;;5026:65:0;8992:355:1;5026:65:0;5182:6;5166:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5199:18:0;;:9;:18;;;;;;;;;;:28;;5221:6;;5199:9;:28;;5221:6;;5199:28;:::i;:::-;;;;-1:-1:-1;;5243:37:0;;9498:25:1;;;-1:-1:-1;;;;;5243:37:0;;;5260:1;;5243:37;;9486:2:1;9471:18;5243:37:0;;;;;;;10027:221;;:::o;7364:173::-;7439:6;;;-1:-1:-1;;;;;7456:17:0;;;-1:-1:-1;;;;;;7456:17:0;;;;;;;7489:40;;7439:6;;;7456:17;7439:6;;7489:40;;7420:16;;7489:40;7409:128;7364:173;:::o;5357:591::-;-1:-1:-1;;;;;5441:21:0;;5433:67;;;;-1:-1:-1;;;5433:67:0;;7225:2:1;5433:67:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:34;7283:18;;;7276:62;-1:-1:-1;;;7354:18:1;;;7347:31;7395:19;;5433:67:0;7023:397:1;5433:67:0;-1:-1:-1;;;;;5600:18:0;;5575:22;5600:18;;;;;;;;;;;5637:24;;;;5629:71;;;;-1:-1:-1;;;5629:71:0;;4835:2:1;5629:71:0;;;4817:21:1;4874:2;4854:18;;;4847:30;4913:34;4893:18;;;4886:62;-1:-1:-1;;;4964:18:1;;;4957:32;5006:19;;5629:71:0;4633:398:1;5629:71:0;-1:-1:-1;;;;;5736:18:0;;:9;:18;;;;;;;;;;5757:23;;;5736:44;;5802:12;:22;;5774:6;;5736:9;5802:22;;5774:6;;5802:22;:::i;:::-;;;;-1:-1:-1;;5842:37:0;;9498:25:1;;;5868:1:0;;-1:-1:-1;;;;;5842:37:0;;;;;9486:2:1;9471:18;5842:37:0;9352:177:1;14:160;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:248::-;2431:6;2439;2492:2;2480:9;2471:7;2467:23;2463:32;2460:52;;;2508:1;2505;2498:12;2460:52;2531:26;2547:9;2531:26;:::i;2619:180::-;2678:6;2731:2;2719:9;2710:7;2706:23;2702:32;2699:52;;;2747:1;2744;2737:12;2699:52;-1:-1:-1;2770:23:1;;2619:180;-1:-1:-1;2619:180:1:o;2804:184::-;2874:6;2927:2;2915:9;2906:7;2902:23;2898:32;2895:52;;;2943:1;2940;2933:12;2895:52;-1:-1:-1;2966:16:1;;2804:184;-1:-1:-1;2804:184:1:o;3627:597::-;3739:4;3768:2;3797;3786:9;3779:21;3829:6;3823:13;3872:6;3867:2;3856:9;3852:18;3845:34;3897:1;3907:140;3921:6;3918:1;3915:13;3907:140;;;4016:14;;;4012:23;;4006:30;3982:17;;;4001:2;3978:26;3971:66;3936:10;;3907:140;;;4065:6;4062:1;4059:13;4056:91;;;4135:1;4130:2;4121:6;4110:9;4106:22;4102:31;4095:42;4056:91;-1:-1:-1;4208:2:1;4187:15;-1:-1:-1;;4183:29:1;4168:45;;;;4215:2;4164:54;;3627:597;-1:-1:-1;;;3627:597:1:o;6662:356::-;6864:2;6846:21;;;6883:18;;;6876:30;6942:34;6937:2;6922:18;;6915:62;7009:2;6994:18;;6662:356::o;7425:345::-;7627:2;7609:21;;;7666:2;7646:18;;;7639:30;-1:-1:-1;;;7700:2:1;7685:18;;7678:51;7761:2;7746:18;;7425:345::o;9723:128::-;9763:3;9794:1;9790:6;9787:1;9784:13;9781:39;;;9800:18;;:::i;:::-;-1:-1:-1;9836:9:1;;9723:128::o;9856:217::-;9896:1;9922;9912:132;;9966:10;9961:3;9957:20;9954:1;9947:31;10001:4;9998:1;9991:15;10029:4;10026:1;10019:15;9912:132;-1:-1:-1;10058:9:1;;9856:217::o;10078:168::-;10118:7;10184:1;10180;10176:6;10172:14;10169:1;10166:21;10161:1;10154:9;10147:17;10143:45;10140:71;;;10191:18;;:::i;:::-;-1:-1:-1;10231:9:1;;10078:168::o;10251:125::-;10291:4;10319:1;10316;10313:8;10310:34;;;10324:18;;:::i;:::-;-1:-1:-1;10361:9:1;;10251:125::o;10381:380::-;10460:1;10456:12;;;;10503;;;10524:61;;10578:4;10570:6;10566:17;10556:27;;10524:61;10631:2;10623:6;10620:14;10600:18;10597:38;10594:161;;;10677:10;10672:3;10668:20;10665:1;10658:31;10712:4;10709:1;10702:15;10740:4;10737:1;10730:15;10766:127;10827:10;10822:3;10818:20;10815:1;10808:31;10858:4;10855:1;10848:15;10882:4;10879:1;10872:15;10898:131;-1:-1:-1;;;;;10973:31:1;;10963:42;;10953:70;;11019:1;11016;11009:12

Swarm Source

ipfs://3dfe29b4a7d169e1e0b461507152098fc8cdc8c1352ec189117495728bf9d535

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.