ETH Price: $3,252.35 (-0.05%)
Gas: 1 Gwei

Contract

0xcCBa43231aC6eceBd1278B90c3a44711a00F4e93
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Poke137720402021-12-09 16:19:07960 days ago1639066747IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.0150086681.31122526
Poke137717652021-12-09 15:18:07960 days ago1639063087IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.02368783130.30831906
Deny137349552021-12-03 17:50:07966 days ago1638553807IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.0021113790.73387181
Kiss137327862021-12-03 9:27:28966 days ago1638523648IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.0066335392.20408755
Rely137327782021-12-03 9:26:24966 days ago1638523584IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.0044203593.64372778
Rely137327612021-12-03 9:20:58966 days ago1638523258IN
Maker: PIP G-UNI V3 DAI-USDC 2
0 ETH0.0045847397.10140457

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
137327042021-12-03 9:06:35966 days ago1638522395  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GUniLPOracle

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

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

/**
 *Submitted for verification at Etherscan.io on 2021-09-17
*/

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

/// GUniLPOracle.sol

// Copyright (C) 2017-2020 Maker Ecosystem Growth Holdings, INC.

// 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/>.

///////////////////////////////////////////////////////
//                                                   //
//    Methodology for Calculating LP Token Price     //
//                                                   //
///////////////////////////////////////////////////////

// We derive the sqrtPriceX96 via Maker's own oracles to prevent price manipulation in the pool:
// 
// p0 = price of token0 in USD
// p1 = price of token1 in USD
// UNITS_0 = decimals of token0
// UNITS_1 = decimals of token1
// 
// token1/token0 = (p0 / 10^UNITS_0) / (p1 / 10^UNITS_1)               [Conversion from Maker's price ratio into Uniswap's format]
//               = (p0 * 10^UNITS_1) / (p1 * 10^UNITS_0)
// 
// sqrtPriceX96 = sqrt(token1/token0) * 2^96                           [From Uniswap's definition]
//              = sqrt((p0 * 10^UNITS_1) / (p1 * 10^UNITS_0)) * 2^96
//              = sqrt((p0 * 10^UNITS_1) / (p1 * 10^UNITS_0)) * 2^48 * 2^48
//              = sqrt((p0 * 10^UNITS_1 * 2^96) / (p1 * 10^UNITS_0)) * 2^48
// 
// Once we have the sqrtPriceX96 we can use that to compute the fair reserves for each token. This part may be slightly subjective
// depending on the implementation, but we expect most tokens to provide something like getUnderlyingBalancesAtPrice(uint160 sqrtPriceX96)
// which will forward our oracle-calculated `sqrtPriceX96` to the Uniswap-provided LiquidityAmounts.getAmountsForLiquidity(...)
// This function will return the fair reserves for each token. Vendor-specific logic is then used to tack any uninvested fees on top of those amounts.
// 
// Once we have the fair reserves and the prices we can compute the token price by:
// 
// Token Price = TVL / Token Supply
//             = (r0 * p0 + r1 * p1) / totalSupply

pragma solidity =0.6.12;

interface ERC20Like {
    function decimals()                 external view returns (uint8);
    function totalSupply()              external view returns (uint256);
}

interface GUNILike {
    function token0()                               external view returns (address);
    function token1()                               external view returns (address);
    function getUnderlyingBalancesAtPrice(uint160)  external view returns (uint256,uint256);
}

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

contract GUniLPOracle {

    // --- 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, "GUniLPOracle/not-authorized");
        _;
    }

    address public immutable src;   // Price source

    // hop and zph are packed into single slot to reduce SLOADs;
    // this outweighs the cost from added bitmasking operations.
    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

    bytes32 public immutable wat;   // Label of token whose price is being tracked

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

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

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

    // --- Data ---
    uint256 private immutable UNIT_0;  // Numerical representation of one token of token0 (10^decimals) 
    uint256 private immutable UNIT_1;  // Numerical representation of one token of token1 (10^decimals) 
    uint256 private immutable TO_18_DEC_0;  // Conversion factor to 18 decimals
    uint256 private immutable TO_18_DEC_1;  // Conversion factor to 18 decimals

    address public            orb0;  // Oracle for token0, ideally a Medianizer
    address public            orb1;  // Oracle for token1, ideally a Medianizer

    // --- Math ---
    uint256 constant WAD = 10 ** 18;

    function _add(uint256 _x, uint256 _y) internal pure returns (uint256 z) {
        require((z = _x + _y) >= _x, "GUniLPOracle/add-overflow");
    }
    function _sub(uint256 _x, uint256 _y) internal pure returns (uint256 z) {
        require((z = _x - _y) <= _x, "GUniLPOracle/sub-underflow");
    }
    function _mul(uint256 _x, uint256 _y) internal pure returns (uint256 z) {
        require(_y == 0 || (z = _x * _y) / _y == _x, "GUniLPOracle/mul-overflow");
    }
    function toUint160(uint256 x) internal pure returns (uint160 z) {
        require((z = uint160(x)) == x, "GUniLPOracle/uint160-overflow");
    }

    // FROM https://github.com/abdk-consulting/abdk-libraries-solidity/blob/16d7e1dd8628dfa2f88d5dadab731df7ada70bdd/ABDKMath64x64.sol#L687
    function sqrt(uint256 _x) private pure returns (uint128) {
        if (_x == 0) return 0;
        else {
            uint256 xx = _x;
            uint256 r = 1;
            if (xx >= 0x100000000000000000000000000000000) { xx >>= 128; r <<= 64; }
            if (xx >= 0x10000000000000000) { xx >>= 64; r <<= 32; }
            if (xx >= 0x100000000) { xx >>= 32; r <<= 16; }
            if (xx >= 0x10000) { xx >>= 16; r <<= 8; }
            if (xx >= 0x100) { xx >>= 8; r <<= 4; }
            if (xx >= 0x10) { xx >>= 4; r <<= 2; }
            if (xx >= 0x8) { r <<= 1; }
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1;
            r = (r + _x / r) >> 1; // Seven iterations should be enough
            uint256 r1 = _x / r;
            return uint128 (r < r1 ? r : r1);
        }
    }

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

    // --- Init ---
    constructor (address _src, bytes32 _wat, address _orb0, address _orb1) public {
        require(_src  != address(0),                        "GUniLPOracle/invalid-src-address");
        require(_orb0 != address(0) && _orb1 != address(0), "GUniLPOracle/invalid-oracle-address");
        wards[msg.sender] = 1;
        emit Rely(msg.sender);
        src  = _src;
        wat  = _wat;
        uint256 dec0 = uint256(ERC20Like(GUNILike(_src).token0()).decimals());
        require(dec0 <= 18, "GUniLPOracle/token0-dec-gt-18");
        UNIT_0 = 10 ** dec0;
        TO_18_DEC_0 = 10 ** (18 - dec0);
        uint256 dec1 = uint256(ERC20Like(GUNILike(_src).token1()).decimals());
        require(dec1 <= 18, "GUniLPOracle/token1-dec-gt-18");
        UNIT_1 = 10 ** dec1;
        TO_18_DEC_1 = 10 ** (18 - dec1);
        orb0 = _orb0;
        orb1 = _orb1;
    }

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

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

    function step(uint256 _hop) external auth {
        require(_hop <= uint16(-1), "GUniLPOracle/invalid-hop");
        hop = uint16(_hop);
        emit Step(_hop);
    }

    function link(uint256 _id, address _orb) external auth {
        require(_orb != address(0), "GUniLPOracle/no-contract-0");
        if(_id == 0) {
            orb0 = _orb;
        } else if (_id == 1) {
            orb1 = _orb;
        } else {
            revert("GUniLPOracle/invalid-id");
        }
        emit Link(_id, _orb);
    }

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

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

    function seek() internal returns (uint128 quote) {
        // All Oracle prices are priced with 18 decimals against USD
        uint256 p0 = OracleLike(orb0).read();  // Query token0 price from oracle (WAD)
        require(p0 != 0, "GUniLPOracle/invalid-oracle-0-price");
        uint256 p1 = OracleLike(orb1).read();  // Query token1 price from oracle (WAD)
        require(p1 != 0, "GUniLPOracle/invalid-oracle-1-price");
        uint160 sqrtPriceX96 = toUint160(sqrt(_mul(_mul(p0, UNIT_1), (1 << 96)) / (_mul(p1, UNIT_0))) << 48);

        // Get balances of the tokens in the pool
        (uint256 r0, uint256 r1) = GUNILike(src).getUnderlyingBalancesAtPrice(sqrtPriceX96);
        require(r0 > 0 || r1 > 0, "GUniLPOracle/invalid-balances");
        uint256 totalSupply = ERC20Like(src).totalSupply();
        require(totalSupply >= 1e9, "GUniLPOracle/total-supply-too-small"); // Protect against precision errors with dust-levels of collateral

        // Add the total value of each token together and divide by the totalSupply to get the unit price
        uint256 preq = _add(
            _mul(p0, _mul(r0, TO_18_DEC_0)),
            _mul(p1, _mul(r1, TO_18_DEC_1))
        ) / totalSupply;
        require(preq < 2 ** 128, "GUniLPOracle/quote-overflow");
        quote = uint128(preq);  // WAD
    }

    function poke() external {

        // 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, "GUniLPOracle/is-stopped");

            // Equivalent to requiring that pass() returns true.
            // The logic is repeated instead of calling pass() to save gas
            // (both by eliminating an internal call here, and allowing pass to be external).
            require(block.timestamp >= zph_, "GUniLPOracle/not-passed");
        }

        uint128 val = seek();
        require(val != 0, "GUniLPOracle/invalid-price");
        Feed memory cur_ = nxt;  // This memory value is used to save an SLOAD later.
        cur = cur_;
        nxt = Feed(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(
                    // zph value starts 24 bits in
                    shl(24, add(timestamp(), hop_)),

                    // hop value starts 8 bits in
                    shl(8, hop_)
                )
            )
        }

        // Equivalent to emitting Value(cur.val, nxt.val), but averts extra SLOADs.
        emit Value(cur_.val, 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, "GUniLPOracle/no-current-value");
        return (bytes32(uint256(cur.val)));
    }

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

    function kiss(address[] calldata _a) external auth {
        for(uint256 i = 0; i < _a.length; i++) {
            require(_a[i] != address(0), "GUniLPOracle/no-contract-0");
            bud[_a[i]] = 1;
            emit Kiss(_a[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; i++) {
            bud[_a[i]] = 0;
            emit Diss(_a[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_src","type":"address"},{"internalType":"bytes32","name":"_wat","type":"bytes32"},{"internalType":"address","name":"_orb0","type":"address"},{"internalType":"address","name":"_orb1","type":"address"}],"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":"orb0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orb1","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":"nonpayable","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":"uint256","name":"_hop","type":"uint256"}],"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"}]

6101406040526001805462ffff001916620e10001790553480156200002357600080fd5b5060405162001f7c38038062001f7c833981810160405260808110156200004957600080fd5b50805160208201516040830151606090930151919290916001600160a01b038416620000bc576040805162461bcd60e51b815260206004820181905260248201527f47556e694c504f7261636c652f696e76616c69642d7372632d61646472657373604482015290519081900360640190fd5b6001600160a01b03821615801590620000dd57506001600160a01b03811615155b6200011a5760405162461bcd60e51b815260040180806020018281038252602381526020018062001f596023913960400191505060405180910390fd5b3360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a2836001600160a01b03166080816001600160a01b031660601b815250508260a081815250506000846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b457600080fd5b505afa158015620001c9573d6000803e3d6000fd5b505050506040513d6020811015620001e057600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156200022557600080fd5b505afa1580156200023a573d6000803e3d6000fd5b505050506040513d60208110156200025157600080fd5b505160ff1690506012811115620002af576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f746f6b656e302d6465632d67742d3138000000604482015290519081900360640190fd5b80600a0a60c0818152505080601203600a0a61010081815250506000856001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030557600080fd5b505afa1580156200031a573d6000803e3d6000fd5b505050506040513d60208110156200033157600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156200037657600080fd5b505afa1580156200038b573d6000803e3d6000fd5b505050506040513d6020811015620003a257600080fd5b505160ff169050601281111562000400576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f746f6b656e312d6465632d67742d3138000000604482015290519081900360640190fd5b600a81810a60e052601291909103900a6101205250600580546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055505060805160601c60a05160c05160e0516101005161012051611abf6200049a600039806116665250806116335250806113fb5250806113ce525080610b435250806109235280611456528061155b5250611abf6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806365c4ce7a116100de578063a7a1ed7211610097578063be9a655511610071578063be9a655514610447578063bf353dbb1461044f578063dca44f6f14610475578063f29c29c41461047d57610173565b8063a7a1ed72146103e8578063a9c52a3914610404578063b0b8579b1461042857610173565b806365c4ce7a1461034857806365fae35e1461036e5780636c2552f91461039457806375f12b211461039c5780639c52a7f1146103ba578063a4dff0a2146103e057610173565b806346d4577d1161013057806346d4577d1461025c5780634ca29923146102cc5780634fce7a2a146102e657806357de26a41461030c57806359e02dd71461031457806365af79091461031c57610173565b806307da68f5146101785780630e5a6c701461018257806318178358146101a35780631b25b65f146101ab5780632e7dc6af1461021b5780633a1cde751461023f575b600080fd5b6101806104a3565b005b61018a61053e565b6040805192835290151560208301528051918290030190f35b6101806105ae565b610180600480360360208110156101c157600080fd5b8101906020810181356401000000008111156101dc57600080fd5b8201836020820111156101ee57600080fd5b8035906020019184602083028401116401000000008311171561021057600080fd5b50909250905061079f565b610223610921565b604080516001600160a01b039092168252519081900360200190f35b6101806004803603602081101561025557600080fd5b5035610945565b6101806004803603602081101561027257600080fd5b81019060208101813564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b509092509050610a3b565b6102d4610b41565b60408051918252519081900360200190f35b6102d4600480360360208110156102fc57600080fd5b50356001600160a01b0316610b65565b6102d4610b77565b61018a610c3d565b6101806004803603604081101561033257600080fd5b50803590602001356001600160a01b0316610cad565b6101806004803603602081101561035e57600080fd5b50356001600160a01b0316610e39565b6101806004803603602081101561038457600080fd5b50356001600160a01b0316610ede565b610223610f75565b6103a4610f84565b6040805160ff9092168252519081900360200190f35b610180600480360360208110156103d057600080fd5b50356001600160a01b0316610f8d565b6102d4611023565b6103f0611070565b604080519115158252519081900360200190f35b61040c611089565b604080516001600160e81b039092168252519081900360200190f35b61043061109f565b6040805161ffff9092168252519081900360200190f35b6101806110ae565b6102d46004803603602081101561046557600080fd5b50356001600160a01b0316611135565b610223611147565b6101806004803603602081101561049357600080fd5b50356001600160a01b0316611156565b336000908152602081905260409020546001146104f5576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001805460006003819055600481905560ff19909116821762ffffff169091556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b9190a1565b33600090815260026020526040812054819060011461058e5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b50506004546001600160801b0380821691600160801b9004166001149091565b600154600881901c61ffff169060ff81169060181c8115610616576040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f69732d73746f70706564000000000000000000604482015290519081900360640190fd5b8042101561066b576040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f6e6f742d706173736564000000000000000000604482015290519081900360640190fd5b50506000610677611254565b90506001600160801b0381166106d4576040805162461bcd60e51b815260206004820152601a60248201527f47556e694c504f7261636c652f696e76616c69642d7072696365000000000000604482015290519081900360640190fd5b6106dc6119c4565b50604080518082018252600480546001600160801b03808216808552600160801b80840483166020808801829052600380546fffffffffffffffffffffffffffffffff199081169095178616928402929092179091558751808901895289851680825260019183018290529390951683178416909117909455600888901b42890160181b01909255835185519116815291820152825191927f80a5d0081d7e9a7bdb15ef207c6e0772f0f56d24317693206c0e47408f2d0b7392918290030190a1005b336000908152602081905260409020546001146107f1576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b60005b8181101561091c57600083838381811061080a57fe5b905060200201356001600160a01b03166001600160a01b03161415610873576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b60016002600085858581811061088557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2448383838181106108e657fe5b905060200201356001600160a01b031660405180826001600160a01b0316815260200191505060405180910390a16001016107f4565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b33600090815260208190526040902054600114610997576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b61ffff8111156109ee576040805162461bcd60e51b815260206004820152601860248201527f47556e694c504f7261636c652f696e76616c69642d686f700000000000000000604482015290519081900360640190fd5b6001805462ffff00191661010061ffff8416021790556040805182815290517fd5cae49d972f01d170fb2d3409c5f318698639863c0403e59e4af06e0ce92817916020908290030190a150565b33600090815260208190526040902054600114610a8d576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b60005b8181101561091c57600060026000858585818110610aaa57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c838383818110610b0b57fe5b905060200201356001600160a01b031660405180826001600160a01b0316815260200191505060405180910390a1600101610a90565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026020526000908152604090205481565b33600090815260026020526040812054600114610bc55760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b600354600160801b90046001600160801b0316600114610c2c576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f6e6f2d63757272656e742d76616c7565000000604482015290519081900360640190fd5b506003546001600160801b03165b90565b336000908152600260205260408120548190600114610c8d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b50506003546001600160801b0380821691600160801b9004166001149091565b33600090815260208190526040902054600114610cff576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116610d57576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b81610d7c57600580546001600160a01b0319166001600160a01b038316179055610df2565b8160011415610da557600680546001600160a01b0319166001600160a01b038316179055610df2565b6040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f696e76616c69642d6964000000000000000000604482015290519081900360640190fd5b604080518381526001600160a01b038316602082015281517f57e1d18531e0ed6c4f60bf6039e5719aa115e43e43847525125856433a69f7a7929181900390910190a15050565b33600090815260208190526040902054600114610e8b576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604080832092909255815192835290517f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c9281900390910190a150565b33600090815260208190526040902054600114610f30576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6005546001600160a01b031681565b60015460ff1681565b33600090815260208190526040902054600114610fdf576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600154600090630100000090046001600160e81b031661104557506000610c3a565b60015461106b90630100000081046001600160e81b031690610100900461ffff166116fc565b905090565b600154630100000090046001600160e81b031642101590565b600154630100000090046001600160e81b031681565b600154610100900461ffff1681565b33600090815260208190526040902054600114611100576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001805460ff191690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b60006020819052908152604090205481565b6006546001600160a01b031681565b336000908152602081905260409020546001146111a8576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116611200576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b6001600160a01b03811660008181526002602090815260409182902060019055815192835290517f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2449281900390910190a150565b600080600560009054906101000a90046001600160a01b03166001600160a01b03166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a557600080fd5b505afa1580156112b9573d6000803e3d6000fd5b505050506040513d60208110156112cf57600080fd5b505190508061130f5760405162461bcd60e51b8152600401808060200182810382526023815260200180611a446023913960400191505060405180910390fd5b600654604080516315f789a960e21b815290516000926001600160a01b0316916357de26a4916004808301926020929190829003018186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d602081101561137e57600080fd5b50519050806113be5760405162461bcd60e51b81526004018080602001828103825260238152602001806119dc6023913960400191505060405180910390fd5b600061144f60306114366113f2857f000000000000000000000000000000000000000000000000000000000000000061175a565b61142961141f887f000000000000000000000000000000000000000000000000000000000000000061175a565b600160601b61175a565b8161143057fe5b046117c6565b6001600160801b0316901b6001600160801b031661190e565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b670ed7d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050604080518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d60408110156114ea57600080fd5b5080516020909101519092509050811515806115065750600081115b611557576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f696e76616c69642d62616c616e636573000000604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d60208110156115dc57600080fd5b50519050633b9aca008110156116235760405162461bcd60e51b8152600401808060200182810382526023815260200180611a676023913960400191505060405180910390fd5b60008161168f61165c89611657887f000000000000000000000000000000000000000000000000000000000000000061175a565b61175a565b61168a89611657887f000000000000000000000000000000000000000000000000000000000000000061175a565b61196c565b8161169657fe5b049050600160801b81106116f1576040805162461bcd60e51b815260206004820152601b60248201527f47556e694c504f7261636c652f71756f74652d6f766572666c6f770000000000604482015290519081900360640190fd5b979650505050505050565b80820382811115611754576040805162461bcd60e51b815260206004820152601a60248201527f47556e694c504f7261636c652f7375622d756e646572666c6f77000000000000604482015290519081900360640190fd5b92915050565b60008115806117755750508082028282828161177257fe5b04145b611754576040805162461bcd60e51b815260206004820152601960248201527f47556e694c504f7261636c652f6d756c2d6f766572666c6f7700000000000000604482015290519081900360640190fd5b6000816117d557506000611909565b816001600160801b82106117ee5760809190911c9060401b5b6801000000000000000082106118095760409190911c9060201b5b64010000000082106118205760209190911c9060101b5b6201000082106118355760109190911c9060081b5b61010082106118495760089190911c9060041b5b6010821061185c5760049190911c9060021b5b600882106118685760011b5b600181858161187357fe5b048201901c9050600181858161188557fe5b048201901c9050600181858161189757fe5b048201901c905060018185816118a957fe5b048201901c905060018185816118bb57fe5b048201901c905060018185816118cd57fe5b048201901c905060018185816118df57fe5b048201901c905060008185816118f157fe5b0490508082106119015780611903565b815b93505050505b919050565b806001600160a01b0381168114611909576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f75696e743136302d6f766572666c6f77000000604482015290519081900360640190fd5b80820182811015611754576040805162461bcd60e51b815260206004820152601960248201527f47556e694c504f7261636c652f6164642d6f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051808201909152600080825260208201529056fe47556e694c504f7261636c652f696e76616c69642d6f7261636c652d312d707269636547556e694c504f7261636c652f6e6f742d617574686f72697a6564000000000047556e694c504f7261636c652f636f6e74726163742d6e6f742d77686974656c697374656447556e694c504f7261636c652f696e76616c69642d6f7261636c652d302d707269636547556e694c504f7261636c652f746f74616c2d737570706c792d746f6f2d736d616c6ca2646970667358221220869df76b56e08bd8fae51cc93bbbd6e3973eb722c14fb3c70763bc9656afd8a964736f6c634300060c003347556e694c504f7261636c652f696e76616c69642d6f7261636c652d6164647265737300000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e47554e495633444149555344433200000000000000000000000000000000000000000000000000000000000047c3dc029825da43be595e21fffd0b66ffcb7f6e00000000000000000000000077b68899b99b686f415d074278a9a16b336085a0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806365c4ce7a116100de578063a7a1ed7211610097578063be9a655511610071578063be9a655514610447578063bf353dbb1461044f578063dca44f6f14610475578063f29c29c41461047d57610173565b8063a7a1ed72146103e8578063a9c52a3914610404578063b0b8579b1461042857610173565b806365c4ce7a1461034857806365fae35e1461036e5780636c2552f91461039457806375f12b211461039c5780639c52a7f1146103ba578063a4dff0a2146103e057610173565b806346d4577d1161013057806346d4577d1461025c5780634ca29923146102cc5780634fce7a2a146102e657806357de26a41461030c57806359e02dd71461031457806365af79091461031c57610173565b806307da68f5146101785780630e5a6c701461018257806318178358146101a35780631b25b65f146101ab5780632e7dc6af1461021b5780633a1cde751461023f575b600080fd5b6101806104a3565b005b61018a61053e565b6040805192835290151560208301528051918290030190f35b6101806105ae565b610180600480360360208110156101c157600080fd5b8101906020810181356401000000008111156101dc57600080fd5b8201836020820111156101ee57600080fd5b8035906020019184602083028401116401000000008311171561021057600080fd5b50909250905061079f565b610223610921565b604080516001600160a01b039092168252519081900360200190f35b6101806004803603602081101561025557600080fd5b5035610945565b6101806004803603602081101561027257600080fd5b81019060208101813564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b509092509050610a3b565b6102d4610b41565b60408051918252519081900360200190f35b6102d4600480360360208110156102fc57600080fd5b50356001600160a01b0316610b65565b6102d4610b77565b61018a610c3d565b6101806004803603604081101561033257600080fd5b50803590602001356001600160a01b0316610cad565b6101806004803603602081101561035e57600080fd5b50356001600160a01b0316610e39565b6101806004803603602081101561038457600080fd5b50356001600160a01b0316610ede565b610223610f75565b6103a4610f84565b6040805160ff9092168252519081900360200190f35b610180600480360360208110156103d057600080fd5b50356001600160a01b0316610f8d565b6102d4611023565b6103f0611070565b604080519115158252519081900360200190f35b61040c611089565b604080516001600160e81b039092168252519081900360200190f35b61043061109f565b6040805161ffff9092168252519081900360200190f35b6101806110ae565b6102d46004803603602081101561046557600080fd5b50356001600160a01b0316611135565b610223611147565b6101806004803603602081101561049357600080fd5b50356001600160a01b0316611156565b336000908152602081905260409020546001146104f5576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001805460006003819055600481905560ff19909116821762ffffff169091556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b9190a1565b33600090815260026020526040812054819060011461058e5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b50506004546001600160801b0380821691600160801b9004166001149091565b600154600881901c61ffff169060ff81169060181c8115610616576040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f69732d73746f70706564000000000000000000604482015290519081900360640190fd5b8042101561066b576040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f6e6f742d706173736564000000000000000000604482015290519081900360640190fd5b50506000610677611254565b90506001600160801b0381166106d4576040805162461bcd60e51b815260206004820152601a60248201527f47556e694c504f7261636c652f696e76616c69642d7072696365000000000000604482015290519081900360640190fd5b6106dc6119c4565b50604080518082018252600480546001600160801b03808216808552600160801b80840483166020808801829052600380546fffffffffffffffffffffffffffffffff199081169095178616928402929092179091558751808901895289851680825260019183018290529390951683178416909117909455600888901b42890160181b01909255835185519116815291820152825191927f80a5d0081d7e9a7bdb15ef207c6e0772f0f56d24317693206c0e47408f2d0b7392918290030190a1005b336000908152602081905260409020546001146107f1576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b60005b8181101561091c57600083838381811061080a57fe5b905060200201356001600160a01b03166001600160a01b03161415610873576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b60016002600085858581811061088557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2448383838181106108e657fe5b905060200201356001600160a01b031660405180826001600160a01b0316815260200191505060405180910390a16001016107f4565b505050565b7f00000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e81565b33600090815260208190526040902054600114610997576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b61ffff8111156109ee576040805162461bcd60e51b815260206004820152601860248201527f47556e694c504f7261636c652f696e76616c69642d686f700000000000000000604482015290519081900360640190fd5b6001805462ffff00191661010061ffff8416021790556040805182815290517fd5cae49d972f01d170fb2d3409c5f318698639863c0403e59e4af06e0ce92817916020908290030190a150565b33600090815260208190526040902054600114610a8d576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b60005b8181101561091c57600060026000858585818110610aaa57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c838383818110610b0b57fe5b905060200201356001600160a01b031660405180826001600160a01b0316815260200191505060405180910390a1600101610a90565b7f47554e495633444149555344433200000000000000000000000000000000000081565b60026020526000908152604090205481565b33600090815260026020526040812054600114610bc55760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b600354600160801b90046001600160801b0316600114610c2c576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f6e6f2d63757272656e742d76616c7565000000604482015290519081900360640190fd5b506003546001600160801b03165b90565b336000908152600260205260408120548190600114610c8d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a1f6025913960400191505060405180910390fd5b50506003546001600160801b0380821691600160801b9004166001149091565b33600090815260208190526040902054600114610cff576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116610d57576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b81610d7c57600580546001600160a01b0319166001600160a01b038316179055610df2565b8160011415610da557600680546001600160a01b0319166001600160a01b038316179055610df2565b6040805162461bcd60e51b815260206004820152601760248201527f47556e694c504f7261636c652f696e76616c69642d6964000000000000000000604482015290519081900360640190fd5b604080518381526001600160a01b038316602082015281517f57e1d18531e0ed6c4f60bf6039e5719aa115e43e43847525125856433a69f7a7929181900390910190a15050565b33600090815260208190526040902054600114610e8b576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260026020908152604080832092909255815192835290517f12fdafd291eb287a54e3416070923d22aa5072f5ee04c4fb8361615e7508a37c9281900390910190a150565b33600090815260208190526040902054600114610f30576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6005546001600160a01b031681565b60015460ff1681565b33600090815260208190526040902054600114610fdf576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b600154600090630100000090046001600160e81b031661104557506000610c3a565b60015461106b90630100000081046001600160e81b031690610100900461ffff166116fc565b905090565b600154630100000090046001600160e81b031642101590565b600154630100000090046001600160e81b031681565b600154610100900461ffff1681565b33600090815260208190526040902054600114611100576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001805460ff191690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b60006020819052908152604090205481565b6006546001600160a01b031681565b336000908152602081905260409020546001146111a8576040805162461bcd60e51b815260206004820152601b60248201526000805160206119ff833981519152604482015290519081900360640190fd5b6001600160a01b038116611200576040805162461bcd60e51b815260206004820152601a602482015279047556e694c504f7261636c652f6e6f2d636f6e74726163742d360341b604482015290519081900360640190fd5b6001600160a01b03811660008181526002602090815260409182902060019055815192835290517f6ffc0fabf0709270e42087e84a3bfc36041d3b281266d04ae1962185092fb2449281900390910190a150565b600080600560009054906101000a90046001600160a01b03166001600160a01b03166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a557600080fd5b505afa1580156112b9573d6000803e3d6000fd5b505050506040513d60208110156112cf57600080fd5b505190508061130f5760405162461bcd60e51b8152600401808060200182810382526023815260200180611a446023913960400191505060405180910390fd5b600654604080516315f789a960e21b815290516000926001600160a01b0316916357de26a4916004808301926020929190829003018186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d602081101561137e57600080fd5b50519050806113be5760405162461bcd60e51b81526004018080602001828103825260238152602001806119dc6023913960400191505060405180910390fd5b600061144f60306114366113f2857f0000000000000000000000000000000000000000000000000de0b6b3a764000061175a565b61142961141f887f00000000000000000000000000000000000000000000000000000000000f424061175a565b600160601b61175a565b8161143057fe5b046117c6565b6001600160801b0316901b6001600160801b031661190e565b90506000807f00000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e6001600160a01b031663b670ed7d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050604080518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d60408110156114ea57600080fd5b5080516020909101519092509050811515806115065750600081115b611557576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f696e76616c69642d62616c616e636573000000604482015290519081900360640190fd5b60007f00000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d60208110156115dc57600080fd5b50519050633b9aca008110156116235760405162461bcd60e51b8152600401808060200182810382526023815260200180611a676023913960400191505060405180910390fd5b60008161168f61165c89611657887f000000000000000000000000000000000000000000000000000000000000000161175a565b61175a565b61168a89611657887f000000000000000000000000000000000000000000000000000000e8d4a5100061175a565b61196c565b8161169657fe5b049050600160801b81106116f1576040805162461bcd60e51b815260206004820152601b60248201527f47556e694c504f7261636c652f71756f74652d6f766572666c6f770000000000604482015290519081900360640190fd5b979650505050505050565b80820382811115611754576040805162461bcd60e51b815260206004820152601a60248201527f47556e694c504f7261636c652f7375622d756e646572666c6f77000000000000604482015290519081900360640190fd5b92915050565b60008115806117755750508082028282828161177257fe5b04145b611754576040805162461bcd60e51b815260206004820152601960248201527f47556e694c504f7261636c652f6d756c2d6f766572666c6f7700000000000000604482015290519081900360640190fd5b6000816117d557506000611909565b816001600160801b82106117ee5760809190911c9060401b5b6801000000000000000082106118095760409190911c9060201b5b64010000000082106118205760209190911c9060101b5b6201000082106118355760109190911c9060081b5b61010082106118495760089190911c9060041b5b6010821061185c5760049190911c9060021b5b600882106118685760011b5b600181858161187357fe5b048201901c9050600181858161188557fe5b048201901c9050600181858161189757fe5b048201901c905060018185816118a957fe5b048201901c905060018185816118bb57fe5b048201901c905060018185816118cd57fe5b048201901c905060018185816118df57fe5b048201901c905060008185816118f157fe5b0490508082106119015780611903565b815b93505050505b919050565b806001600160a01b0381168114611909576040805162461bcd60e51b815260206004820152601d60248201527f47556e694c504f7261636c652f75696e743136302d6f766572666c6f77000000604482015290519081900360640190fd5b80820182811015611754576040805162461bcd60e51b815260206004820152601960248201527f47556e694c504f7261636c652f6164642d6f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051808201909152600080825260208201529056fe47556e694c504f7261636c652f696e76616c69642d6f7261636c652d312d707269636547556e694c504f7261636c652f6e6f742d617574686f72697a6564000000000047556e694c504f7261636c652f636f6e74726163742d6e6f742d77686974656c697374656447556e694c504f7261636c652f696e76616c69642d6f7261636c652d302d707269636547556e694c504f7261636c652f746f74616c2d737570706c792d746f6f2d736d616c6ca2646970667358221220869df76b56e08bd8fae51cc93bbbd6e3973eb722c14fb3c70763bc9656afd8a964736f6c634300060c0033

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

00000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e47554e495633444149555344433200000000000000000000000000000000000000000000000000000000000047c3dc029825da43be595e21fffd0b66ffcb7f6e00000000000000000000000077b68899b99b686f415d074278a9a16b336085a0

-----Decoded View---------------
Arg [0] : _src (address): 0x50379f632ca68D36E50cfBC8F78fe16bd1499d1e
Arg [1] : _wat (bytes32): 0x47554e4956334441495553444332000000000000000000000000000000000000
Arg [2] : _orb0 (address): 0x47c3dC029825Da43BE595E21fffD0b66FfcB7F6e
Arg [3] : _orb1 (address): 0x77b68899b99b686F415d074278a9a16b336085A0

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000050379f632ca68d36e50cfbc8f78fe16bd1499d1e
Arg [1] : 47554e4956334441495553444332000000000000000000000000000000000000
Arg [2] : 00000000000000000000000047c3dc029825da43be595e21fffd0b66ffcb7f6e
Arg [3] : 00000000000000000000000077b68899b99b686f415d074278a9a16b336085a0


Deployed Bytecode Sourcemap

3260:10838:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8235:142;;;:::i;:::-;;13072:125;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10649:2282;;;:::i;13552:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13552:253:0;;-1:-1:-1;13552:253:0;-1:-1:-1;13552:253:0;:::i;3748:28::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3748:28:0;;;;;;;;;;;;;;8477:171;;;;;;;;;;;;;;;;-1:-1:-1;8477:171:0;;:::i;13915:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13915:180:0;;-1:-1:-1;13915:180:0;-1:-1:-1;13915:180:0;:::i;4159:28::-;;;:::i;:::-;;;;;;;;;;;;;;;;4274:39;;;;;;;;;;;;;;;;-1:-1:-1;4274:39:0;-1:-1:-1;;;;;4274:39:0;;:::i;13205:171::-;;;:::i;12939:125::-;;;:::i;8656:347::-;;;;;;;;;;;;;;;;-1:-1:-1;8656:347:0;;;;;;-1:-1:-1;;;;;8656:347:0;;:::i;13813:94::-;;;;;;;;;;;;;;;;-1:-1:-1;13813:94:0;-1:-1:-1;;;;;13813:94:0;;:::i;3432:79::-;;;;;;;;;;;;;;;;-1:-1:-1;3432:79:0;-1:-1:-1;;;;;3432:79:0;;:::i;5042:30::-;;;:::i;3935:22::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3531:79;;;;;;;;;;;;;;;;-1:-1:-1;3531:79:0;-1:-1:-1;;;;;3531:79:0;;:::i;9055:148::-;;;:::i;9211:93::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4082:18;;;:::i;:::-;;;;-1:-1:-1;;;;;4082:18:0;;;;;;;;;;;;;;4004:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8385:84;;;:::i;3312:41::-;;;;;;;;;;;;;;;;-1:-1:-1;3312:41:0;-1:-1:-1;;;;;3312:41:0;;:::i;5123:30::-;;;:::i;13384:160::-;;;;;;;;;;;;;;;;-1:-1:-1;13384:160:0;-1:-1:-1;;;;;13384:160:0;;:::i;8235:142::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;8286:1:::1;8276:11:::0;;:7:::1;8305:3;8298:10:::0;;;8326:3:::1;8319:10:::0;;;-1:-1:-1;;8276:11:0;;::::1;::::0;::::1;8340:7:::0;::::1;::::0;;;8363:6:::1;::::0;::::1;::::0;8276:7;8363:6:::1;8235:142::o:0;13072:125::-;4348:10;13116:7;4344:15;;;:3;:15;;;;;;13116:7;;4363:1;4344:20;4336:70;;;;-1:-1:-1;;;4336:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13165:3:0::1;:7:::0;-1:-1:-1;;;;;13165:7:0;;::::1;::::0;-1:-1:-1;;;13176:7:0;::::1;;13165::::0;13176:12:::1;13072:125:::0;;:::o;10649:2282::-;10984:1;10978:8;11082:1;11078:13;;;11093:6;11074:26;;11036:4;11017:26;;;11135:2;11131:14;11299:13;;11291:49;;;;;-1:-1:-1;;;11291:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11621:4;11602:15;:23;;11594:59;;;;;-1:-1:-1;;;11594:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10649:2282;;11677:11;11691:6;:4;:6::i;:::-;11677:20;-1:-1:-1;;;;;;11716:8:0;;11708:47;;;;;-1:-1:-1;;;11708:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11766:16;;:::i;:::-;-1:-1:-1;11766:22:0;;;;;;;;11785:3;11766:22;;-1:-1:-1;;;;;11766:22:0;;;;;;-1:-1:-1;;;11766:22:0;;;;;;;;;;;;11853:3;:10;;-1:-1:-1;;11853:10:0;;;;;;;;;;;;;;;;;;11880:12;;;;;;;;;;;;;-1:-1:-1;11880:12:0;;;;;;11874:18;;;;;;;;;;;;;;12613:1;12609:12;;;12514:11;12510:22;;12506:2;12502:31;12424:216;12379:276;;;12774:8;;12768:20;;;;;;;;;;;;11766:22;;12768:20;;;;;;;;;12907:6;13552:253;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;13618:9:::1;13614:184;13633:13:::0;;::::1;13614:184;;;13693:1;13676:2:::0;;13679:1;13676:5;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13676:5:0::1;-1:-1:-1::0;;;;;13676:19:0::1;;;13668:58;;;::::0;;-1:-1:-1;;;13668:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13668:58:0;;;;;;;;;;;;;::::1;;13754:1;13741:3;:10;13745:2;;13748:1;13745:5;;;;;;;;;;;;;-1:-1:-1::0;;;;;13745:5:0::1;-1:-1:-1::0;;;;;13741:10:0::1;-1:-1:-1::0;;;;;13741:10:0::1;;;;;;;;;;;;:14;;;;13775:11;13780:2;;13783:1;13780:5;;;;;;;;;;;;;-1:-1:-1::0;;;;;13780:5:0::1;13775:11;;;;-1:-1:-1::0;;;;;13775:11:0::1;;;;;;;;;;;;;;;13648:3;;13614:184;;;;13552:253:::0;;:::o;3748:28::-;;;:::o;8477:171::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;8538:18:::1;::::0;::::1;;8530:55;;;::::0;;-1:-1:-1;;;8530:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;8596:3;:18:::0;;-1:-1:-1;;8596:18:0::1;;;::::0;::::1;;;::::0;;8630:10:::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;8477:171:::0;:::o;13915:180::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;13981:9:::1;13977:111;13996:13:::0;;::::1;13977:111;;;14044:1;14031:3;:10;14035:2;;14038:1;14035:5;;;;;;;;;;;;;-1:-1:-1::0;;;;;14035:5:0::1;-1:-1:-1::0;;;;;14031:10:0::1;-1:-1:-1::0;;;;;14031:10:0::1;;;;;;;;;;;;:14;;;;14065:11;14070:2;;14073:1;14070:5;;;;;;;;;;;;;-1:-1:-1::0;;;;;14070:5:0::1;14065:11;;;;-1:-1:-1::0;;;;;14065:11:0::1;;;;;;;;;;;;;;;14011:3;;13977:111;;4159:28:::0;;;:::o;4274:39::-;;;;;;;;;;;;;:::o;13205:171::-;4348:10;13249:7;4344:15;;;:3;:15;;;;;;4363:1;4344:20;4336:70;;;;-1:-1:-1;;;4336:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:3:::1;:7:::0;-1:-1:-1;;;13277:7:0;::::1;-1:-1:-1::0;;;;;13277:7:0::1;13288:1;13277:12;13269:54;;;::::0;;-1:-1:-1;;;13269:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;13358:3:0::1;:7:::0;-1:-1:-1;;;;;13358:7:0::1;4408:1;13205:171:::0;:::o;12939:125::-;4348:10;12983:7;4344:15;;;:3;:15;;;;;;12983:7;;4363:1;4344:20;4336:70;;;;-1:-1:-1;;;4336:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13032:3:0::1;:7:::0;-1:-1:-1;;;;;13032:7:0;;::::1;::::0;-1:-1:-1;;;13043:7:0;::::1;;13032::::0;13043:12:::1;12939:125:::0;;:::o;8656:347::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;8730:18:0;::::1;8722:57;;;::::0;;-1:-1:-1;;;8722:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8722:57:0;;;;;;;;;;;;;::::1;;8793:8:::0;8790:175:::1;;8818:4;:11:::0;;-1:-1:-1;;;;;;8818:11:0::1;-1:-1:-1::0;;;;;8818:11:0;::::1;;::::0;;8790:175:::1;;;8851:3;8858:1;8851:8;8847:118;;;8876:4;:11:::0;;-1:-1:-1;;;;;;8876:11:0::1;-1:-1:-1::0;;;;;8876:11:0;::::1;;::::0;;8847:118:::1;;;8920:33;::::0;;-1:-1:-1;;;8920:33:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;8847:118;8980:15;::::0;;;;;-1:-1:-1;;;;;8980:15:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;8656:347:::0;;:::o;13813:94::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13864:7:0;::::1;13874:1;13864:7:::0;;;:3:::1;:7;::::0;;;;;;;:11;;;;13891:8;;;;;;;::::1;::::0;;;;;;;;::::1;13813:94:::0;:::o;3432:79::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3476:11:0;::::1;:5;:11:::0;;;::::1;::::0;;;;;;;3490:1:::1;3476:15:::0;;3498:10;::::1;::::0;3476:5;3498:10:::1;3432:79:::0;:::o;5042:30::-;;;-1:-1:-1;;;;;5042:30:0;;:::o;3935:22::-;;;;;;:::o;3531:79::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3575:11:0;::::1;3589:1;3575:11:::0;;;::::1;::::0;;;;;;;:15;;;3597:10;::::1;::::0;3589:1;3597:10:::1;3531:79:::0;:::o;9055:148::-;9117:3;;9093:7;;9117:3;;;-1:-1:-1;;;;;9117:3:0;9113:22;;-1:-1:-1;9134:1:0;9127:8;;9113:22;9186:3;;9181:14;;9186:3;;;-1:-1:-1;;;;;9186:3:0;;;9191;;;;9181:4;:14::i;:::-;9174:21;;9055:148;:::o;9211:93::-;9293:3;;;;;-1:-1:-1;;;;;9293:3:0;9274:15;:22;;;9211:93::o;4082:18::-;;;;;;-1:-1:-1;;;;;4082:18:0;;:::o;4004:28::-;;;;;;;;;:::o;8385:84::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;8427:7:::1;:11:::0;;-1:-1:-1;;8427:11:0::1;::::0;;8454:7:::1;::::0;::::1;::::0;8437:1:::1;::::0;8454:7:::1;8385:84::o:0;3312:41::-;;;;;;;;;;;;;;:::o;5123:30::-;;;-1:-1:-1;;;;;5123:30:0;;:::o;13384:160::-;3672:10;3666:5;:17;;;;;;;;;;;3687:1;3666:22;3658:62;;;;;-1:-1:-1;;;3658:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3658:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13443:16:0;::::1;13435:55;;;::::0;;-1:-1:-1;;;13435:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13435:55:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;13501:7:0;::::1;;::::0;;;:3:::1;:7;::::0;;;;;;;;13511:1:::1;13501:11:::0;;13528:8;;;;;;;::::1;::::0;;;;;;;;::::1;13384:160:::0;:::o;9312:1329::-;9346:13;9442:10;9466:4;;;;;;;;;-1:-1:-1;;;;;9466:4:0;-1:-1:-1;;;;;9455:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9455:23:0;;-1:-1:-1;9538:7:0;9530:55;;;;-1:-1:-1;;;9530:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9620:4;;9609:23;;;-1:-1:-1;;;9609:23:0;;;;9596:10;;-1:-1:-1;;;;;9620:4:0;;9609:21;;:23;;;;;;;;;;;;;;9620:4;9609:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9609:23:0;;-1:-1:-1;9692:7:0;9684:55;;;;-1:-1:-1;;;9684:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9750:20;9773:77;9847:2;9783:60;9825:16;9830:2;9834:6;9825:4;:16::i;:::-;9788:33;9793:16;9798:2;9802:6;9793:4;:16::i;:::-;-1:-1:-1;;;9788:4:0;:33::i;:::-;:54;;;;;;9783:4;:60::i;:::-;-1:-1:-1;;;;;9783:66:0;;;-1:-1:-1;;;;;9773:77:0;:9;:77::i;:::-;9750:100;;9915:10;9927;9950:3;-1:-1:-1;;;;;9941:42:0;;9984:12;9941:56;;;;;;;;;;;;;-1:-1:-1;;;;;9941:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9941:56:0;;;;;;;;;-1:-1:-1;9941:56:0;-1:-1:-1;10016:6:0;;;;:16;;;10031:1;10026:2;:6;10016:16;10008:58;;;;;-1:-1:-1;;;10008:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10077:19;10109:3;-1:-1:-1;;;;;10099:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10099:28:0;;-1:-1:-1;10161:3:0;10146:18;;;10138:66;;;;-1:-1:-1;;;10138:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10391:12;10516:11;10406:107;10425:31;10430:2;10434:21;10439:2;10443:11;10434:4;:21::i;:::-;10425:4;:31::i;:::-;10471;10476:2;10480:21;10485:2;10489:11;10480:4;:21::i;10471:31::-;10406:4;:107::i;:::-;:121;;;;;;10391:136;;-1:-1:-1;;;10546:4:0;:15;10538:55;;;;;-1:-1:-1;;;10538:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10620:4;9312:1329;-1:-1:-1;;;;;;;9312:1329:0:o;5421:149::-;5517:7;;;5512:19;;;;5504:58;;;;;-1:-1:-1;;;5504:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:149;;;;:::o;5576:164::-;5637:9;5667:7;;;:35;;-1:-1:-1;;5683:7:0;;;5700:2;5694;5683:7;5694:2;5678:18;;;;;:24;5667:35;5659:73;;;;;-1:-1:-1;;;5659:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6041:970;6089:7;6113;6109:895;;-1:-1:-1;6129:1:0;6122:8;;6109:895;6174:2;6203:1;-1:-1:-1;;;6223:41:0;;6219:72;;6275:3;6268:10;;;;;6286:2;6280:8;6219:72;6315:19;6309:2;:25;6305:55;;6345:2;6338:9;;;;;6355:2;6349:8;6305:55;6384:11;6378:2;:17;6374:47;;6406:2;6399:9;;;;;6416:2;6410:8;6374:47;6445:7;6439:2;:13;6435:42;;6463:2;6456:9;;;;;6473:1;6467:7;6435:42;6501:5;6495:2;:11;6491:39;;6517:1;6510:8;;;;;6526:1;6520:7;6491:39;6554:4;6548:2;:10;6544:38;;6569:1;6562:8;;;;;6578:1;6572:7;6544:38;6606:3;6600:2;:9;6596:27;;6619:1;6613:7;6596:27;6657:1;6651;6646:2;:6;;;;;;6642:1;:10;6641:17;;6637:21;;6693:1;6687;6682:2;:6;;;;;;6678:1;:10;6677:17;;6673:21;;6729:1;6723;6718:2;:6;;;;;;6714:1;:10;6713:17;;6709:21;;6765:1;6759;6754:2;:6;;;;;;6750:1;:10;6749:17;;6745:21;;6801:1;6795;6790:2;:6;;;;;;6786:1;:10;6785:17;;6781:21;;6837:1;6831;6826:2;:6;;;;;;6822:1;:10;6821:17;;6817:21;;6873:1;6867;6862:2;:6;;;;;;6858:1;:10;6857:17;;6853:21;;6926:10;6944:1;6939:2;:6;;;;;;6926:19;;6980:2;6976:1;:6;:15;;6989:2;6976:15;;;6985:1;6976:15;6960:32;;;;;6109:895;6041:970;;;:::o;5746:146::-;5849:1;-1:-1:-1;;;;;5829:21:0;;;;5821:63;;;;;-1:-1:-1;;;5821:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5267:148;5363:7;;;5358:19;;;;5350:57;;;;;-1:-1:-1;;;5350:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://869df76b56e08bd8fae51cc93bbbd6e3973eb722c14fb3c70763bc9656afd8a9

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  ]
[ 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.