ETH Price: $2,529.87 (+3.25%)

Contract

0xEa508F82728927454bd3ce853171b0e2705880D4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
146300192022-04-21 18:58:58865 days ago1650567538  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CurveLPOracle

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2022-04-22
*/

// SPDX-License-Identifier: AGPL-3.0-or-later

/// CurveLPOracle.sol

// Copyright (C) 2021 Dai Foundation

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity 0.8.13;

interface CurvePoolLike {
    function coins(uint256) external view returns (address);
    function get_virtual_price() external view returns (uint256);
    function lp_token() external view returns (address);
    function remove_liquidity(uint256, uint256[2] calldata) external returns (uint256);
}

interface OracleLike {
    function read() external view returns (uint256);
}

contract CurveLPOracle {

    // --- Auth ---
    mapping (address => uint256) public wards;                                       // Addresses with admin authority
    function rely(address _usr) external auth { wards[_usr] = 1; emit Rely(_usr); }  // Add admin
    function deny(address _usr) external auth { wards[_usr] = 0; emit Deny(_usr); }  // Remove admin
    modifier auth {
        require(wards[msg.sender] == 1, "CurveLPOracle/not-authorized");
        _;
    }

    address public immutable src;   // Price source, do not remove as needed for OmegaPoker

    // stopped, hop, and zph are packed into single slot to reduce SLOADs;
    // this outweighs the added bitmasking overhead.
    uint8   public stopped;        // Stop/start ability to update
    uint16  public hop = 1 hours;  // Minimum time in between price updates
    uint232 public zph;            // Time of last price update plus hop

    // --- Whitelisting ---
    mapping (address => uint256) public bud;
    modifier toll { require(bud[msg.sender] == 1, "CurveLPOracle/not-whitelisted"); _; }

    struct Feed {
        uint128 val;  // Price
        uint128 has;  // Is price valid
    }

    Feed internal cur;  // Current price (storage slot 0x3)
    Feed internal nxt;  // Queued price  (storage slot 0x4)

    address[] public orbs;  // array of price feeds for pool assets, same order as in the pool

    address public immutable pool;          // Address of underlying Curve pool
    bytes32 public immutable wat;           // Label of token whose price is being tracked
    uint256 public immutable ncoins;        // Number of tokens in underlying Curve pool
    bool    public immutable nonreentrant;  // Whether to prevent pool reentrancy

    // --- Events ---
    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Stop();
    event Start();
    event Step(uint256 hop);
    event Link(uint256 id, address orb);
    event Value(uint128 curVal, uint128 nxtVal);
    event Kiss(address a);
    event Diss(address a);

    // --- Init ---
    constructor(address _ward, address _pool, bytes32 _wat, address[] memory _orbs, bool _nonreentrant) {
        require(_pool != address(0), "CurveLPOracle/invalid-pool");
        uint256 _ncoins = _orbs.length;
        pool   = _pool;
        src    = CurvePoolLike(_pool).lp_token();
        wat    = _wat;
        ncoins = _ncoins;
        nonreentrant = _nonreentrant;
        for (uint256 i = 0; i < _ncoins;) {
            require(_orbs[i] != address(0), "CurveLPOracle/invalid-orb");
            orbs.push(_orbs[i]);
            unchecked { i++; }
        }
        require(_ward != address(0), "CurveLPOracle/ward-0");
        wards[_ward] = 1;
        emit Rely(_ward);
    }

    function stop() external auth {
        stopped = 1;
        delete cur;
        delete nxt;
        zph = 0;
        emit Stop();
    }

    function start() external auth {
        stopped = 0;
        emit Start();
    }

    function step(uint16 _hop) external auth {
        uint16 old = hop;
        hop = _hop;
        if (zph > old) {  // if false, zph will be unset and no update is needed
            zph = (zph - old) + _hop;
        }
        emit Step(_hop);
    }

    function link(uint256 _id, address _orb) external auth {
        require(_orb != address(0), "CurveLPOracle/invalid-orb");
        require(_id < ncoins, "CurveLPOracle/invalid-orb-index");
        orbs[_id] = _orb;
        emit Link(_id, _orb);
    }

    // For consistency with other oracles
    function zzz() external view returns (uint256) {
        if (zph == 0) return 0;  // backwards compatibility
        return zph - hop;
    }

    function pass() external view returns (bool) {
        return block.timestamp >= zph;
    }

    // Marked payable to save gas. DO *NOT* send ETH to poke(), it will be lost permanently.
    function poke() external payable {

        // Ensure a single SLOAD while avoiding solc's excessive bitmasking bureaucracy.
        uint256 hop_;
        {

            // Block-scoping these variables saves some gas.
            uint256 stopped_;
            uint256 zph_;
            assembly {
                let slot1 := sload(1)
                stopped_  := and(slot1,         0xff  )
                hop_      := and(shr(8, slot1), 0xffff)
                zph_      := shr(24, slot1)
            }

            // When stopped, values are set to zero and should remain such; thus, disallow updating in that case.
            require(stopped_ == 0, "CurveLPOracle/is-stopped");

            // Equivalent to requiring that pass() returns true; logic repeated to save gas.
            require(block.timestamp >= zph_, "CurveLPOracle/not-passed");
        }

        uint256 val = type(uint256).max;
        for (uint256 i = 0; i < ncoins;) {
            uint256 price = OracleLike(orbs[i]).read();
            if (price < val) val = price;
            unchecked { i++; }
        }
        val = val * CurvePoolLike(pool).get_virtual_price() / 10**18;
        require(val != 0, "CurveLPOracle/zero-price");
        require(val <= type(uint128).max, "CurveLPOracle/price-overflow");
        Feed memory cur_ = nxt;
        cur = cur_;
        nxt = Feed(uint128(val), 1);

        // The below is equivalent to:
        //    zph = block.timestamp + hop
        // but ensures no extra SLOADs are performed.
        //
        // Even if _hop = (2^16 - 1), the maximum possible value, add(timestamp(), _hop)
        // will not overflow (even a 232 bit value) for a very long time.
        //
        // Also, we know stopped was zero, so there is no need to account for it explicitly here.
        assembly {
            sstore(
                1,
                add(
                    shl(24, add(timestamp(), hop_)),  // zph value starts 24 bits in
                    shl(8, hop_)                      // hop value starts 8 bits in
                )
            )
        }

        // This will revert if called during execution of a state-modifying pool function.
        if (nonreentrant) {
            uint256[2] calldata amounts;
            CurvePoolLike(pool).remove_liquidity(0, amounts);
        }

        emit Value(cur_.val, uint128(val));

        // Safe to terminate immediately since no postfix modifiers are applied.
        assembly { stop() }
    }

    function peek() external view toll returns (bytes32,bool) {
        return (bytes32(uint256(cur.val)), cur.has == 1);
    }

    function peep() external view toll returns (bytes32,bool) {
        return (bytes32(uint256(nxt.val)), nxt.has == 1);
    }

    function read() external view toll returns (bytes32) {
        require(cur.has == 1, "CurveLPOracle/no-current-value");
        return (bytes32(uint256(cur.val)));
    }

    function kiss(address _a) external auth {
        require(_a != address(0), "CurveLPOracle/no-contract-0");
        bud[_a] = 1;
        emit Kiss(_a);
    }

    function kiss(address[] calldata _a) external auth {
        for(uint256 i = 0; i < _a.length;) {
            require(_a[i] != address(0), "CurveLPOracle/no-contract-0");
            bud[_a[i]] = 1;
            emit Kiss(_a[i]);
            unchecked { i++; }
        }
    }

    function diss(address _a) external auth {
        bud[_a] = 0;
        emit Diss(_a);
    }

    function diss(address[] calldata _a) external auth {
        for(uint256 i = 0; i < _a.length;) {
            bud[_a[i]] = 0;
            emit Diss(_a[i]);
            unchecked { i++; }
        }
    }

    // Needed for Curve pool reentrancy checks, since remove_liquidity with call the caller to do an ETH transfer.
    // Technically we receive 0 Ether, but using a payable function saves a little gas.
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ward","type":"address"},{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bytes32","name":"_wat","type":"bytes32"},{"internalType":"address[]","name":"_orbs","type":"address[]"},{"internalType":"bool","name":"_nonreentrant","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"Diss","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"Kiss","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"orb","type":"address"}],"name":"Link","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[],"name":"Start","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"hop","type":"uint256"}],"name":"Step","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"curVal","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"nxtVal","type":"uint128"}],"name":"Value","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"}],"name":"diss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"diss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hop","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"}],"name":"kiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"kiss","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_orb","type":"address"}],"name":"link","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ncoins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonreentrant","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orbs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"peek","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"peep","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poke","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"read","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"src","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_hop","type":"uint16"}],"name":"step","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopped","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wat","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zph","outputs":[{"internalType":"uint232","name":"","type":"uint232"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zzz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101206040526001805462ffff001916620e10001790553480156200002357600080fd5b50604051620022c2380380620022c2833981016040819052620000469162000306565b6001600160a01b038416620000a25760405162461bcd60e51b815260206004820152601a60248201527f43757276654c504f7261636c652f696e76616c69642d706f6f6c00000000000060448201526064015b60405180910390fd5b81516001600160a01b03851660a081905260408051634163183360e11b815290516382c63066916004808201926020929091908290030181865afa158015620000ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011591906200041d565b6001600160a01b031660805260c084905260e08190528115156101005260005b818110156200021b5760006001600160a01b03168482815181106200015e576200015e62000442565b60200260200101516001600160a01b031603620001be5760405162461bcd60e51b815260206004820152601960248201527f43757276654c504f7261636c652f696e76616c69642d6f726200000000000000604482015260640162000099565b6005848281518110620001d557620001d562000442565b60209081029190910181015182546001808201855560009485529290932090920180546001600160a01b0319166001600160a01b03909316929092179091550162000135565b506001600160a01b038616620002745760405162461bcd60e51b815260206004820152601460248201527f43757276654c504f7261636c652f776172642d30000000000000000000000000604482015260640162000099565b6001600160a01b03861660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250505050505062000458565b80516001600160a01b0381168114620002da57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b80518015158114620002da57600080fd5b600080600080600060a086880312156200031f57600080fd5b6200032a86620002c2565b945060206200033b818801620002c2565b6040880151606089015191965094506001600160401b03808211156200036057600080fd5b818901915089601f8301126200037557600080fd5b8151818111156200038a576200038a620002df565b8060051b604051601f19603f83011681018181108582111715620003b257620003b2620002df565b60405291825284820192508381018501918c831115620003d157600080fd5b938501935b82851015620003fa57620003ea85620002c2565b84529385019392850192620003d6565b8097505050505050506200041160808701620002f5565b90509295509295909350565b6000602082840312156200043057600080fd5b6200043b82620002c2565b9392505050565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e05161010051611e02620004c0600039600081816102950152610ba001526000818161030d015281816108ab01526112ea0152600061036f015260008181610214015281816109a10152610c03015260006102d90152611e026000f3fe6080604052600436106101b05760003560e01c806365af7909116100ec578063a7a1ed721161008a578063be9a655511610064578063be9a6555146105a5578063bf353dbb146105ba578063e38e2cfb146105e7578063f29c29c41461060757600080fd5b8063a7a1ed72146104c9578063a9c52a3914610507578063b0b8579b1461057257600080fd5b806375f12b21116100c657806375f12b211461044857806397783a11146104745780639c52a7f114610494578063a4dff0a2146104b457600080fd5b806365af7909146103e857806365c4ce7a1461040857806365fae35e1461042857600080fd5b80632e7dc6af116101595780634ca29923116101335780634ca299231461035d5780634fce7a2a1461039157806357de26a4146103be57806359e02dd7146103d357600080fd5b80632e7dc6af146102c7578063371f8dae146102fb57806346d4577d1461033d57600080fd5b8063181783581161018a578063181783581461025b5780631b25b65f1461026357806328cfb3de1461028357600080fd5b806307da68f5146101bc5780630e5a6c70146101d357806316f0115b1461020257600080fd5b366101b757005b600080fd5b3480156101c857600080fd5b506101d1610627565b005b3480156101df57600080fd5b506101e86106ea565b604080519283529015156020830152015b60405180910390f35b34801561020e57600080fd5b506102367f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b6101d161079b565b34801561026f57600080fd5b506101d161027e366004611b1b565b610cd2565b34801561028f57600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016101f9565b3480156102d357600080fd5b506102367f000000000000000000000000000000000000000000000000000000000000000081565b34801561030757600080fd5b5061032f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101f9565b34801561034957600080fd5b506101d1610358366004611b1b565b610ecd565b34801561036957600080fd5b5061032f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039d57600080fd5b5061032f6103ac366004611bb9565b60026020526000908152604090205481565b3480156103ca57600080fd5b5061032f61101d565b3480156103df57600080fd5b506101e8611141565b3480156103f457600080fd5b506101d1610403366004611bdb565b6111f2565b34801561041457600080fd5b506101d1610423366004611bb9565b611411565b34801561043457600080fd5b506101d1610443366004611bb9565b6114ea565b34801561045457600080fd5b506001546104629060ff1681565b60405160ff90911681526020016101f9565b34801561048057600080fd5b5061023661048f366004611c07565b6115b5565b3480156104a057600080fd5b506101d16104af366004611bb9565b6115ec565b3480156104c057600080fd5b5061032f6116b6565b3480156104d557600080fd5b50600154630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff164210156102b7565b34801561051357600080fd5b5060015461054490630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b34801561057e57600080fd5b5060015461059290610100900461ffff1681565b60405161ffff90911681526020016101f9565b3480156105b157600080fd5b506101d161174e565b3480156105c657600080fd5b5061032f6105d5366004611bb9565b60006020819052908152604090205481565b3480156105f357600080fd5b506101d1610602366004611c20565b61181a565b34801561061357600080fd5b506101d1610622366004611bb9565b6119cb565b336000908152602081905260409020546001146106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a65640000000060448201526064015b60405180910390fd5b6001805460006003819055600481905562ffff0090911682179091556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b9190a1565b336000908152600260205260408120548190600114610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b50506004546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166001149091565b600154600881901c61ffff169060ff81169060181c8115610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f69732d73746f707065640000000000000000604482015260640161069c565b80421015610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f6e6f742d7061737365640000000000000000604482015260640161069c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b7f0000000000000000000000000000000000000000000000000000000000000000811015610995576000600582815481106108e6576108e6611c44565b60009182526020918290200154604080517f57de26a4000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926357de26a4926004808401938290030181865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190611c73565b90508281101561098c578092505b506001016108a9565b50670de0b6b3a76400007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190611c73565b610a389083611cbb565b610a429190611cf8565b905080600003610aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f7a65726f2d70726963650000000000000000604482015260640161069c565b6fffffffffffffffffffffffffffffffff811115610b28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f70726963652d6f766572666c6f7700000000604482015260640161069c565b604080518082018252600480546fffffffffffffffffffffffffffffffff8082168085527001000000000000000000000000000000009283900482166020808701829052908402909117600355855180870190965290861680865260019590910185905217905542840160181b600885901b019091557f000000000000000000000000000000000000000000000000000000000000000015610c81576040517f5b36389c000000000000000000000000000000000000000000000000000000008152369073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635b36389c90610c3b906000908590600401611d33565b6020604051808303816000875af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611c73565b50505b8051604080516fffffffffffffffffffffffffffffffff928316815291841660208301527f80a5d0081d7e9a7bdb15ef207c6e0772f0f56d24317693206c0e47408f2d0b73910160405180910390a1005b33600090815260208190526040902054600114610d4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b60005b81811015610ec8576000838383818110610d6a57610d6a611c44565b9050602002016020810190610d7f9190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43757276654c504f7261636c652f6e6f2d636f6e74726163742d300000000000604482015260640161069c565b600160026000858585818110610e1457610e14611c44565b9050602002016020810190610e299190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020557f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb244838383818110610e8357610e83611c44565b9050602002016020810190610e989190611bb9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1600101610d4e565b505050565b33600090815260208190526040902054600114610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b60005b81811015610ec857600060026000858585818110610f6957610f69611c44565b9050602002016020810190610f7e9190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020557f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c838383818110610fd857610fd8611c44565b9050602002016020810190610fed9190611bb9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1600101610f49565b33600090815260026020526040812054600114611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b60035470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16600114611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f43757276654c504f7261636c652f6e6f2d63757272656e742d76616c75650000604482015260640161069c565b506003546fffffffffffffffffffffffffffffffff1690565b3360009081526002602052604081205481906001146111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b50506003546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166001149091565b3360009081526020819052604090205460011461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff81166112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f43757276654c504f7261636c652f696e76616c69642d6f726200000000000000604482015260640161069c565b7f00000000000000000000000000000000000000000000000000000000000000008210611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f43757276654c504f7261636c652f696e76616c69642d6f72622d696e64657800604482015260640161069c565b806005838154811061138557611385611c44565b60009182526020918290200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93841617905560408051858152928416918301919091527f57e1d18531e0ed6c4f60bf6039e5719aa115e43e43847525125856433a69f7a791015b60405180910390a15050565b3360009081526020819052604090205460011461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260408083209290925590519182527f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c91015b60405180910390a150565b33600090815260208190526040902054600114611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b600581815481106115c557600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b33600090815260208190526040902054600114611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600154600090630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681036116ee5750600090565b60015461172a90610100810461ffff1690630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611d4d565b7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b336000908152602081905260409020546001146117c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b33600090815260208190526040902054600114611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b6001805461ffff8381166101009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff8416179384905590910416907cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6301000000909104168110156119975760015461ffff8381169161193a91841690630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611d4d565b6119449190611d8b565b600160036101000a8154817cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055505b60405161ffff831681527fd5cae49d972f01d170fb2d3409c5f318698639863c0403e59e4af06e0ce9281790602001611405565b33600090815260208190526040902054600114611a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff8116611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43757276654c504f7261636c652f6e6f2d636f6e74726163742d300000000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600260209081526040918290206001905590519182527f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24491016114df565b60008060208385031215611b2e57600080fd5b823567ffffffffffffffff80821115611b4657600080fd5b818501915085601f830112611b5a57600080fd5b813581811115611b6957600080fd5b8660208260051b8501011115611b7e57600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bb457600080fd5b919050565b600060208284031215611bcb57600080fd5b611bd482611b90565b9392505050565b60008060408385031215611bee57600080fd5b82359150611bfe60208401611b90565b90509250929050565b600060208284031215611c1957600080fd5b5035919050565b600060208284031215611c3257600080fd5b813561ffff81168114611bd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cf357611cf3611c8c565b500290565b600082611d2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152606081016040836020840137600081529392505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83811690831681811015611d8357611d83611c8c565b039392505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115611dc357611dc3611c8c565b0194935050505056fea2646970667358221220cf0c377d5c9e0fc22485a18c9fa17a980625bb0be9fda7b12a448427517ccd6664736f6c634300080d0033000000000000000000000000be8e3e3618f7474f8cb1d074a26affef007e98fb000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f67022435256563145544853544554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85000000000000000000000000911d7a8f87282c4111f621e2d100aa751bab1260

Deployed Bytecode

0x6080604052600436106101b05760003560e01c806365af7909116100ec578063a7a1ed721161008a578063be9a655511610064578063be9a6555146105a5578063bf353dbb146105ba578063e38e2cfb146105e7578063f29c29c41461060757600080fd5b8063a7a1ed72146104c9578063a9c52a3914610507578063b0b8579b1461057257600080fd5b806375f12b21116100c657806375f12b211461044857806397783a11146104745780639c52a7f114610494578063a4dff0a2146104b457600080fd5b806365af7909146103e857806365c4ce7a1461040857806365fae35e1461042857600080fd5b80632e7dc6af116101595780634ca29923116101335780634ca299231461035d5780634fce7a2a1461039157806357de26a4146103be57806359e02dd7146103d357600080fd5b80632e7dc6af146102c7578063371f8dae146102fb57806346d4577d1461033d57600080fd5b8063181783581161018a578063181783581461025b5780631b25b65f1461026357806328cfb3de1461028357600080fd5b806307da68f5146101bc5780630e5a6c70146101d357806316f0115b1461020257600080fd5b366101b757005b600080fd5b3480156101c857600080fd5b506101d1610627565b005b3480156101df57600080fd5b506101e86106ea565b604080519283529015156020830152015b60405180910390f35b34801561020e57600080fd5b506102367f000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f6702281565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b6101d161079b565b34801561026f57600080fd5b506101d161027e366004611b1b565b610cd2565b34801561028f57600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000181565b60405190151581526020016101f9565b3480156102d357600080fd5b506102367f00000000000000000000000006325440d014e39736583c165c2963ba99faf14e81565b34801561030757600080fd5b5061032f7f000000000000000000000000000000000000000000000000000000000000000281565b6040519081526020016101f9565b34801561034957600080fd5b506101d1610358366004611b1b565b610ecd565b34801561036957600080fd5b5061032f7f435256563145544853544554480000000000000000000000000000000000000081565b34801561039d57600080fd5b5061032f6103ac366004611bb9565b60026020526000908152604090205481565b3480156103ca57600080fd5b5061032f61101d565b3480156103df57600080fd5b506101e8611141565b3480156103f457600080fd5b506101d1610403366004611bdb565b6111f2565b34801561041457600080fd5b506101d1610423366004611bb9565b611411565b34801561043457600080fd5b506101d1610443366004611bb9565b6114ea565b34801561045457600080fd5b506001546104629060ff1681565b60405160ff90911681526020016101f9565b34801561048057600080fd5b5061023661048f366004611c07565b6115b5565b3480156104a057600080fd5b506101d16104af366004611bb9565b6115ec565b3480156104c057600080fd5b5061032f6116b6565b3480156104d557600080fd5b50600154630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff164210156102b7565b34801561051357600080fd5b5060015461054490630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101f9565b34801561057e57600080fd5b5060015461059290610100900461ffff1681565b60405161ffff90911681526020016101f9565b3480156105b157600080fd5b506101d161174e565b3480156105c657600080fd5b5061032f6105d5366004611bb9565b60006020819052908152604090205481565b3480156105f357600080fd5b506101d1610602366004611c20565b61181a565b34801561061357600080fd5b506101d1610622366004611bb9565b6119cb565b336000908152602081905260409020546001146106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a65640000000060448201526064015b60405180910390fd5b6001805460006003819055600481905562ffff0090911682179091556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b9190a1565b336000908152600260205260408120548190600114610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b50506004546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166001149091565b600154600881901c61ffff169060ff81169060181c8115610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f69732d73746f707065640000000000000000604482015260640161069c565b80421015610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f6e6f742d7061737365640000000000000000604482015260640161069c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b7f0000000000000000000000000000000000000000000000000000000000000002811015610995576000600582815481106108e6576108e6611c44565b60009182526020918290200154604080517f57de26a4000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216926357de26a4926004808401938290030181865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190611c73565b90508281101561098c578092505b506001016108a9565b50670de0b6b3a76400007f000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f6702273ffffffffffffffffffffffffffffffffffffffff1663bb7b8b806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190611c73565b610a389083611cbb565b610a429190611cf8565b905080600003610aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43757276654c504f7261636c652f7a65726f2d70726963650000000000000000604482015260640161069c565b6fffffffffffffffffffffffffffffffff811115610b28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f70726963652d6f766572666c6f7700000000604482015260640161069c565b604080518082018252600480546fffffffffffffffffffffffffffffffff8082168085527001000000000000000000000000000000009283900482166020808701829052908402909117600355855180870190965290861680865260019590910185905217905542840160181b600885901b019091557f000000000000000000000000000000000000000000000000000000000000000115610c81576040517f5b36389c000000000000000000000000000000000000000000000000000000008152369073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f670221690635b36389c90610c3b906000908590600401611d33565b6020604051808303816000875af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611c73565b50505b8051604080516fffffffffffffffffffffffffffffffff928316815291841660208301527f80a5d0081d7e9a7bdb15ef207c6e0772f0f56d24317693206c0e47408f2d0b73910160405180910390a1005b33600090815260208190526040902054600114610d4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b60005b81811015610ec8576000838383818110610d6a57610d6a611c44565b9050602002016020810190610d7f9190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43757276654c504f7261636c652f6e6f2d636f6e74726163742d300000000000604482015260640161069c565b600160026000858585818110610e1457610e14611c44565b9050602002016020810190610e299190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020557f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb244838383818110610e8357610e83611c44565b9050602002016020810190610e989190611bb9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1600101610d4e565b505050565b33600090815260208190526040902054600114610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b60005b81811015610ec857600060026000858585818110610f6957610f69611c44565b9050602002016020810190610f7e9190611bb9565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020557f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c838383818110610fd857610fd8611c44565b9050602002016020810190610fed9190611bb9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1600101610f49565b33600090815260026020526040812054600114611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b60035470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16600114611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f43757276654c504f7261636c652f6e6f2d63757272656e742d76616c75650000604482015260640161069c565b506003546fffffffffffffffffffffffffffffffff1690565b3360009081526002602052604081205481906001146111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f43757276654c504f7261636c652f6e6f742d77686974656c6973746564000000604482015260640161069c565b50506003546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166001149091565b3360009081526020819052604090205460011461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff81166112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f43757276654c504f7261636c652f696e76616c69642d6f726200000000000000604482015260640161069c565b7f00000000000000000000000000000000000000000000000000000000000000028210611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f43757276654c504f7261636c652f696e76616c69642d6f72622d696e64657800604482015260640161069c565b806005838154811061138557611385611c44565b60009182526020918290200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93841617905560408051858152928416918301919091527f57e1d18531e0ed6c4f60bf6039e5719aa115e43e43847525125856433a69f7a791015b60405180910390a15050565b3360009081526020819052604090205460011461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260408083209290925590519182527f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c91015b60405180910390a150565b33600090815260208190526040902054600114611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b600581815481106115c557600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b33600090815260208190526040902054600114611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600154600090630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681036116ee5750600090565b60015461172a90610100810461ffff1690630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611d4d565b7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b336000908152602081905260409020546001146117c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b33600090815260208190526040902054600114611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b6001805461ffff8381166101009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff8416179384905590910416907cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6301000000909104168110156119975760015461ffff8381169161193a91841690630100000090047cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611d4d565b6119449190611d8b565b600160036101000a8154817cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055505b60405161ffff831681527fd5cae49d972f01d170fb2d3409c5f318698639863c0403e59e4af06e0ce9281790602001611405565b33600090815260208190526040902054600114611a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43757276654c504f7261636c652f6e6f742d617574686f72697a656400000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff8116611ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43757276654c504f7261636c652f6e6f2d636f6e74726163742d300000000000604482015260640161069c565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600260209081526040918290206001905590519182527f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb24491016114df565b60008060208385031215611b2e57600080fd5b823567ffffffffffffffff80821115611b4657600080fd5b818501915085601f830112611b5a57600080fd5b813581811115611b6957600080fd5b8660208260051b8501011115611b7e57600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bb457600080fd5b919050565b600060208284031215611bcb57600080fd5b611bd482611b90565b9392505050565b60008060408385031215611bee57600080fd5b82359150611bfe60208401611b90565b90509250929050565b600060208284031215611c1957600080fd5b5035919050565b600060208284031215611c3257600080fd5b813561ffff81168114611bd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611c8557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cf357611cf3611c8c565b500290565b600082611d2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152606081016040836020840137600081529392505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83811690831681811015611d8357611d83611c8c565b039392505050565b60007cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115611dc357611dc3611c8c565b0194935050505056fea2646970667358221220cf0c377d5c9e0fc22485a18c9fa17a980625bb0be9fda7b12a448427517ccd6664736f6c634300080d0033

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

000000000000000000000000be8e3e3618f7474f8cb1d074a26affef007e98fb000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f67022435256563145544853544554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85000000000000000000000000911d7a8f87282c4111f621e2d100aa751bab1260

-----Decoded View---------------
Arg [0] : _ward (address): 0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB
Arg [1] : _pool (address): 0xDC24316b9AE028F1497c275EB9192a3Ea0f67022
Arg [2] : _wat (bytes32): 0x4352565631455448535445544800000000000000000000000000000000000000
Arg [3] : _orbs (address[]): 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85,0x911D7A8F87282C4111f621e2D100Aa751Bab1260
Arg [4] : _nonreentrant (bool): True

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000be8e3e3618f7474f8cb1d074a26affef007e98fb
Arg [1] : 000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f67022
Arg [2] : 4352565631455448535445544800000000000000000000000000000000000000
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 00000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85
Arg [7] : 000000000000000000000000911d7a8f87282c4111f621e2d100aa751bab1260


Deployed Bytecode Sourcemap

1214:7986:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4033:142;;;;;;;;;;;;;:::i;:::-;;7873:125;;;;;;;;;;;;;:::i;:::-;;;;182:25:1;;;250:14;;243:22;238:2;223:18;;216:50;155:18;7873:125:0;;;;;;;;2640:29;;;;;;;;;;;;;;;;;;453:42:1;441:55;;;423:74;;411:2;396:18;2640:29:0;277:226:1;5190:2542:0;;;:::i;8355:282::-;;;;;;;;;;-1:-1:-1;8355:282:0;;;;;:::i;:::-;;:::i;2903:37::-;;;;;;;;;;;;;;;;;;1293:14:1;;1286:22;1268:41;;1256:2;1241:18;2903:37:0;1128:187:1;1704:28:0;;;;;;;;;;;;;;;2813:31;;;;;;;;;;;;;;;;;;1466:25:1;;;1454:2;1439:18;2813:31:0;1320:177:1;8747:208:0;;;;;;;;;;-1:-1:-1;8747:208:0;;;;;:::i;:::-;;:::i;2721:28::-;;;;;;;;;;;;;;;2179:39;;;;;;;;;;-1:-1:-1;2179:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;8006:172;;;;;;;;;;;;;:::i;7740:125::-;;;;;;;;;;;;;:::i;4538:255::-;;;;;;;;;;-1:-1:-1;4538:255:0;;;;;:::i;:::-;;:::i;8645:94::-;;;;;;;;;;-1:-1:-1;8645:94:0;;;;;:::i;:::-;;:::i;1387:79::-;;;;;;;;;;-1:-1:-1;1387:79:0;;;;;:::i;:::-;;:::i;1929:22::-;;;;;;;;;;-1:-1:-1;1929:22:0;;;;;;;;;;;2507:4:1;2495:17;;;2477:36;;2465:2;2450:18;1929:22:0;2335:184:1;2542:21:0;;;;;;;;;;-1:-1:-1;2542:21:0;;;;;:::i;:::-;;:::i;1486:79::-;;;;;;;;;;-1:-1:-1;1486:79:0;;;;;:::i;:::-;;:::i;4844:143::-;;;;;;;;;;;;;:::i;4995:93::-;;;;;;;;;;-1:-1:-1;5077:3:0;;;;;;;5058:15;:22;;4995:93;;2074:18;;;;;;;;;;-1:-1:-1;2074:18:0;;;;;;;;;;;;;;2885:60:1;2873:73;;;2855:92;;2843:2;2828:18;2074::0;2709:244:1;1997:28:0;;;;;;;;;;-1:-1:-1;1997:28:0;;;;;;;;;;;;;;3132:6:1;3120:19;;;3102:38;;3090:2;3075:18;1997:28:0;2958:188:1;4183:84:0;;;;;;;;;;;;;:::i;1267:41::-;;;;;;;;;;-1:-1:-1;1267:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;4275:255;;;;;;;;;;-1:-1:-1;4275:255:0;;;;;:::i;:::-;;:::i;8186:161::-;;;;;;;;;;-1:-1:-1;8186:161:0;;;;;:::i;:::-;;:::i;4033:142::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;;;;;;;;;4084:1:::1;4074:11:::0;;:7:::1;4103:3;4096:10:::0;;;4124:3:::1;4117:10:::0;;;4138:7;;;;;;;;;4161:6:::1;::::0;::::1;::::0;4074:7;4161:6:::1;4033:142::o:0;7873:125::-;2253:10;7917:7;2249:15;;;:3;:15;;;;;;7917:7;;2268:1;2249:20;2241:62;;;;;;;3987:2:1;2241:62:0;;;3969:21:1;4026:2;4006:18;;;3999:30;4065:31;4045:18;;;4038:59;4114:18;;2241:62:0;3785:353:1;2241:62:0;-1:-1:-1;;7966:3:0::1;:7:::0;::::1;::::0;;::::1;::::0;7977;;::::1;;7966::::0;7977:12:::1;7873:125:::0;;:::o;5190:2542::-;5533:1;5527:8;5631:1;5627:13;;;5642:6;5623:26;;5585:4;5566:26;;;5684:2;5680:14;5848:13;;5840:50;;;;;;;4345:2:1;5840:50:0;;;4327:21:1;4384:2;4364:18;;;4357:30;4423:26;4403:18;;;4396:54;4467:18;;5840:50:0;4143:348:1;5840:50:0;6028:4;6009:15;:23;;6001:60;;;;;;;4698:2:1;6001:60:0;;;4680:21:1;4737:2;4717:18;;;4710:30;4776:26;4756:18;;;4749:54;4820:18;;6001:60:0;4496:348:1;6001:60:0;-1:-1:-1;6099:17:0;;-1:-1:-1;6085:11:0;6127:177;6151:6;6147:1;:10;6127:177;;;6175:13;6202:4;6207:1;6202:7;;;;;;;;:::i;:::-;;;;;;;;;;;;6191:26;;;;;;;;6202:7;;;;;6191:24;;:26;;;;;;;;;;6202:7;6191:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6175:42;;6244:3;6236:5;:11;6232:28;;;6255:5;6249:11;;6232:28;-1:-1:-1;6287:3:0;;6127:177;;;;6368:6;6340:4;6326:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6320:45;;:3;:45;:::i;:::-;:54;;;;:::i;:::-;6314:60;;6393:3;6400:1;6393:8;6385:45;;;;;;;6130:2:1;6385:45:0;;;6112:21:1;6169:2;6149:18;;;6142:30;6208:26;6188:18;;;6181:54;6252:18;;6385:45:0;5928:348:1;6385:45:0;6456:17;6449:24;;;6441:65;;;;;;;6483:2:1;6441:65:0;;;6465:21:1;6522:2;6502:18;;;6495:30;6561;6541:18;;;6534:58;6609:18;;6441:65:0;6281:352:1;6441:65:0;6517:22;;;;;;;;6536:3;6517:22;;;;;;;;;;;;;;;;;;;;;;;6550:10;;;;;;:3;:10;6577:21;;;;;;;;;;;;;;6517:22;6577:21;;;;;;;6571:27;;;7144:11;7140:22;;7136:2;7132:31;7222:1;7218:12;;;7106:194;7061:254;;;7434:12;7430:135;;;7505:48;;;;;7463:27;;7505:36;7519:4;7505:36;;;;:48;;7542:1;;7463:27;;7505:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7448:117;7430:135;7588:8;;7582:29;;;7167:34:1;7228:15;;;7210:34;;7280:15;;;7275:2;7260:18;;7253:43;7582:29:0;;7130:18:1;7582:29:0;;;;;;;7717:6;8355:282;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;8421:9:::1;8417:213;8436:13:::0;;::::1;8417:213;;;8492:1;8475:2:::0;;8478:1;8475:5;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:19;;::::0;8467:59:::1;;;::::0;::::1;::::0;;7509:2:1;8467:59:0::1;::::0;::::1;7491:21:1::0;7548:2;7528:18;;;7521:30;7587:29;7567:18;;;7560:57;7634:18;;8467:59:0::1;7307:351:1::0;8467:59:0::1;8554:1;8541:3;:10;8545:2;;8548:1;8545:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8541:10;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8541:10:0;:14;8575:11:::1;8580:2:::0;;8583:1;8580:5;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8575:11;::::0;453:42:1;441:55;;;423:74;;411:2;396:18;8575:11:0::1;;;;;;;8613:3;;8417:213;;;;8355:282:::0;;:::o;8747:208::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;8813:9:::1;8809:139;8828:13:::0;;::::1;8809:139;;;8872:1;8859:3;:10;8863:2;;8866:1;8863:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8859:10;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8859:10:0;:14;8893:11:::1;8898:2:::0;;8901:1;8898:5;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8893:11;::::0;453:42:1;441:55;;;423:74;;411:2;396:18;8893:11:0::1;;;;;;;8931:3;;8809:139;;8006:172:::0;2253:10;8050:7;2249:15;;;:3;:15;;;;;;2268:1;2249:20;2241:62;;;;;;;3987:2:1;2241:62:0;;;3969:21:1;4026:2;4006:18;;;3999:30;4065:31;4045:18;;;4038:59;4114:18;;2241:62:0;3785:353:1;2241:62:0;8078:3:::1;:7:::0;;;::::1;;;8089:1;8078:12;8070:55;;;::::0;::::1;::::0;;7865:2:1;8070:55:0::1;::::0;::::1;7847:21:1::0;7904:2;7884:18;;;7877:30;7943:32;7923:18;;;7916:60;7993:18;;8070:55:0::1;7663:354:1::0;8070:55:0::1;-1:-1:-1::0;8160:3:0::1;:7:::0;::::1;;8006:172:::0;:::o;7740:125::-;2253:10;7784:7;2249:15;;;:3;:15;;;;;;7784:7;;2268:1;2249:20;2241:62;;;;;;;3987:2:1;2241:62:0;;;3969:21:1;4026:2;4006:18;;;3999:30;4065:31;4045:18;;;4038:59;4114:18;;2241:62:0;3785:353:1;2241:62:0;-1:-1:-1;;7833:3:0::1;:7:::0;::::1;::::0;;::::1;::::0;7844;;::::1;;7833::::0;7844:12:::1;7740:125:::0;;:::o;4538:255::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;4612:18:::1;::::0;::::1;4604:56;;;::::0;::::1;::::0;;8224:2:1;4604:56:0::1;::::0;::::1;8206:21:1::0;8263:2;8243:18;;;8236:30;8302:27;8282:18;;;8275:55;8347:18;;4604:56:0::1;8022:349:1::0;4604:56:0::1;4685:6;4679:3;:12;4671:56;;;::::0;::::1;::::0;;8578:2:1;4671:56:0::1;::::0;::::1;8560:21:1::0;8617:2;8597:18;;;8590:30;8656:33;8636:18;;;8629:61;8707:18;;4671:56:0::1;8376:355:1::0;4671:56:0::1;4750:4;4738;4743:3;4738:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;::::1;:16:::0;;;::::1;;::::0;;::::1;;::::0;;4770:15:::1;::::0;;8910:25:1;;;8971:55;;;8951:18;;;8944:83;;;;4770:15:0::1;::::0;8883:18:1;4770:15:0::1;;;;;;;;4538:255:::0;;:::o;8645:94::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;8696:7:::1;::::0;::::1;8706:1;8696:7:::0;;;:3:::1;:7;::::0;;;;;;;:11;;;;8723:8;;423:74:1;;;8723:8:0::1;::::0;396:18:1;8723:8:0::1;;;;;;;;8645:94:::0;:::o;1387:79::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;1431:11:::1;::::0;::::1;:5;:11:::0;;;::::1;::::0;;;;;;;1445:1:::1;1431:15:::0;;1453:10;::::1;::::0;1431:5;1453:10:::1;1387:79:::0;:::o;2542:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2542:21:0;:::o;1486:79::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;1530:11:::1;::::0;::::1;1544:1;1530:11:::0;;;::::1;::::0;;;;;;;:15;;;1552:10;::::1;::::0;1544:1;1552:10:::1;1486:79:::0;:::o;4844:143::-;4906:3;;4882:7;;4906:3;;;;;:8;;4902:22;;-1:-1:-1;4923:1:0;;4844:143::o;4902:22::-;4976:3;;4970:9;;4976:3;;;;;;4970;;;;;:9;:::i;:::-;4963:16;;;;4844:143;:::o;4183:84::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;4225:7:::1;:11:::0;;;::::1;::::0;;4252:7:::1;::::0;::::1;::::0;4235:1:::1;::::0;4252:7:::1;4183:84::o:0;4275:255::-;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;4340:3:::1;::::0;;::::1;4354:10:::0;;::::1;4340:3;4354:10:::0;;::::1;::::0;;::::1;;::::0;;;;4340:3;;::::1;;::::0;4379::::1;::::0;;;::::1;;:9:::0;-1:-1:-1;4375:122:0::1;;;4468:3;::::0;4467:18:::1;::::0;;::::1;::::0;4468:9:::1;::::0;;::::1;::::0;:3;;::::1;;;:9;:::i;:::-;4467:18;;;;:::i;:::-;4461:3;;:24;;;;;;;;;;;;;;;;;;4375:122;4512:10;::::0;3132:6:1;3120:19;;3102:38;;4512:10:0::1;::::0;3090:2:1;3075:18;4512:10:0::1;2958:188:1::0;8186:161:0;1627:10;1621:5;:17;;;;;;;;;;;1642:1;1621:22;1613:63;;;;;;;3630:2:1;1613:63:0;;;3612:21:1;3669:2;3649:18;;;3642:30;3708;3688:18;;;3681:58;3756:18;;1613:63:0;3428:352:1;1613:63:0;8245:16:::1;::::0;::::1;8237:56;;;::::0;::::1;::::0;;7509:2:1;8237:56:0::1;::::0;::::1;7491:21:1::0;7548:2;7528:18;;;7521:30;7587:29;7567:18;;;7560:57;7634:18;;8237:56:0::1;7307:351:1::0;8237:56:0::1;8304:7;::::0;::::1;;::::0;;;:3:::1;:7;::::0;;;;;;;;8314:1:::1;8304:11:::0;;8331:8;;423:74:1;;;8331:8:0::1;::::0;396:18:1;8331:8:0::1;277:226:1::0;508:615;594:6;602;655:2;643:9;634:7;630:23;626:32;623:52;;;671:1;668;661:12;623:52;711:9;698:23;740:18;781:2;773:6;770:14;767:34;;;797:1;794;787:12;767:34;835:6;824:9;820:22;810:32;;880:7;873:4;869:2;865:13;861:27;851:55;;902:1;899;892:12;851:55;942:2;929:16;968:2;960:6;957:14;954:34;;;984:1;981;974:12;954:34;1037:7;1032:2;1022:6;1019:1;1015:14;1011:2;1007:23;1003:32;1000:45;997:65;;;1058:1;1055;1048:12;997:65;1089:2;1081:11;;;;;1111:6;;-1:-1:-1;508:615:1;;-1:-1:-1;;;;508:615:1:o;1684:196::-;1752:20;;1812:42;1801:54;;1791:65;;1781:93;;1870:1;1867;1860:12;1781:93;1684:196;;;:::o;1885:186::-;1944:6;1997:2;1985:9;1976:7;1972:23;1968:32;1965:52;;;2013:1;2010;2003:12;1965:52;2036:29;2055:9;2036:29;:::i;:::-;2026:39;1885:186;-1:-1:-1;;;1885:186:1:o;2076:254::-;2144:6;2152;2205:2;2193:9;2184:7;2180:23;2176:32;2173:52;;;2221:1;2218;2211:12;2173:52;2257:9;2244:23;2234:33;;2286:38;2320:2;2309:9;2305:18;2286:38;:::i;:::-;2276:48;;2076:254;;;;;:::o;2524:180::-;2583:6;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;2675:23:1;;2524:180;-1:-1:-1;2524:180:1:o;3151:272::-;3209:6;3262:2;3250:9;3241:7;3237:23;3233:32;3230:52;;;3278:1;3275;3268:12;3230:52;3317:9;3304:23;3367:6;3360:5;3356:18;3349:5;3346:29;3336:57;;3389:1;3386;3379:12;4849:184;4901:77;4898:1;4891:88;4998:4;4995:1;4988:15;5022:4;5019:1;5012:15;5038:184;5108:6;5161:2;5149:9;5140:7;5136:23;5132:32;5129:52;;;5177:1;5174;5167:12;5129:52;-1:-1:-1;5200:16:1;;5038:184;-1:-1:-1;5038:184:1:o;5227:::-;5279:77;5276:1;5269:88;5376:4;5373:1;5366:15;5400:4;5397:1;5390:15;5416:228;5456:7;5582:1;5514:66;5510:74;5507:1;5504:81;5499:1;5492:9;5485:17;5481:105;5478:131;;;5589:18;;:::i;:::-;-1:-1:-1;5629:9:1;;5416:228::o;5649:274::-;5689:1;5715;5705:189;;5750:77;5747:1;5740:88;5851:4;5848:1;5841:15;5879:4;5876:1;5869:15;5705:189;-1:-1:-1;5908:9:1;;5649:274::o;6638:340::-;6868:25;;;6856:2;6841:18;;6943:4;6935:6;6930:2;6915:18;;6902:46;6970:1;6964:4;6957:15;6638:340;;;;;:::o;9038:272::-;9078:4;9107:60;9217:10;;;;9187;;9239:12;;;9236:38;;;9254:18;;:::i;:::-;9291:13;;9038:272;-1:-1:-1;;;9038:272:1:o;9315:279::-;9355:3;9383:60;9470:2;9467:1;9463:10;9500:2;9497:1;9493:10;9531:3;9527:2;9523:12;9518:3;9515:21;9512:47;;;9539:18;;:::i;:::-;9575:13;;9315:279;-1:-1:-1;;;;9315:279:1:o

Swarm Source

ipfs://cf0c377d5c9e0fc22485a18c9fa17a980625bb0be9fda7b12a448427517ccd66

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.