ETH Price: $1,582.30 (-0.56%)

Contract

0xC772063cE3e622B458B706Dd2e36309418A1aE42

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set_prover1330959622025-03-12 14:45:0136 days ago1741790701IN
0xC772063c...418A1aE42
0 ETH0.0000014616690.00107608
Set_prover1276989282024-11-07 16:23:53161 days ago1730996633IN
0xC772063c...418A1aE42
0 ETH0.0000003158170.00100061
Set_prover1276972452024-11-07 15:27:47161 days ago1730993267IN
0xC772063c...418A1aE42
0 ETH0.0000002485410.00100071

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
scrvUSD oracle

Compiler Version
vyper:0.4.0

Optimization Enabled:
Yes

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper Json-Input format)

File 1 of 2 : ScrvusdOracle.vy
# pragma version 0.4.0
"""
@title scrvUSD oracle
@notice Oracle of scrvUSD share price for StableSwap pool and other integrations.
    Price updates are linearly smoothed with max acceleration to eliminate sharp changes.
@license MIT
@author curve.fi
@custom:version 0.0.1
@custom:security [email protected]
"""

version: public(constant(String[8])) = "0.0.1"

from snekmate.auth import ownable

initializes: ownable
exports: ownable.__interface__

event PriceUpdate:
    new_price: uint256  # price to achieve
    at: uint256  # timestamp at which price will be achieved

event SetProver:
    prover: address

struct Interval:
    previous: uint256
    future: uint256


# scrvUSD Vault rate replication
# 0 total_debt
# 1 total_idle
ASSETS_PARAM_CNT: constant(uint256) = 2
# 0 totalSupply
# 1 full_profit_unlock_date
# 2 profit_unlocking_rate
# 3 last_profit_update
# 4 balance_of_self
# 5 block.timestamp
SUPPLY_PARAM_CNT: constant(uint256) = 6
MAX_BPS_EXTENDED: constant(uint256) = 1_000_000_000_000

prover: public(address)

price: public(Interval)  # price of asset per share
time: public(Interval)

max_acceleration: public(uint256)  # precision 10**18


@deploy
def __init__(_initial_price: uint256, _max_acceleration: uint256):
    """
    @param _initial_price Initial price of asset per share (10**18)
    @param _max_acceleration Maximum acceleration (10**12)
    """
    self.price = Interval(previous=_initial_price, future=_initial_price)
    self.time = Interval(previous=block.timestamp, future=block.timestamp)

    self.max_acceleration = _max_acceleration

    ownable.__init__()


@view
@internal
def _price_per_share(ts: uint256) -> uint256:
    """
    @notice Using linear interpolation assuming updates are often enough
        for absolute difference \approx relative difference
    """
    price: Interval = self.price
    time: Interval = self.time
    if ts >= time.future:
        return price.future
    if ts <= time.previous:
        return price.previous
    return (price.previous * (time.future - ts) + price.future * (ts - time.previous)) // (time.future - time.previous)


@view
@external
def pricePerShare(ts: uint256=block.timestamp) -> uint256:
    """
    @notice Get the price per share (pps) of the vault.
    @dev NOT precise. Price is smoothed over time to eliminate sharp changes.
    @param ts Timestamp to look price at. Only near future is supported.
    @return The price per share.
    """
    return self._price_per_share(ts)


@view
@external
def pricePerAsset(ts: uint256=block.timestamp) -> uint256:
    """
    @notice Get the price per asset of the vault.
    @dev NOT precise. Price is smoothed over time to eliminate sharp changes.
    @param ts Timestamp to look price at. Only near future is supported.
    @return The price per share.
    """
    return 10 ** 36 // self._price_per_share(ts)


@view
@external
def price_oracle(i: uint256=0) -> uint256:
    """
    @notice Alias of `pricePerShare` and `pricePerAsset` made for compatability
    @param i 0 for scrvusd per crvusd, 1 for crvusd per scrvusd
    @return Price with 10^18 precision
    """
    return self._price_per_share(block.timestamp) if i == 0 else 10 ** 36 // self._price_per_share(block.timestamp)


@view
@internal
def _unlocked_shares(
    full_profit_unlock_date: uint256,
    profit_unlocking_rate: uint256,
    last_profit_update: uint256,
    balance_of_self: uint256,
    ts: uint256,
) -> uint256:
    """
    Returns the amount of shares that have been unlocked.
    To avoid sudden price_per_share spikes, profits can be processed
    through an unlocking period. The mechanism involves shares to be
    minted to the vault which are unlocked gradually over time. Shares
    that have been locked are gradually unlocked over profit_max_unlock_time.
    """
    unlocked_shares: uint256 = 0
    if full_profit_unlock_date > ts:
        # If we have not fully unlocked, we need to calculate how much has been.
        unlocked_shares = profit_unlocking_rate * (ts - last_profit_update) // MAX_BPS_EXTENDED

    elif full_profit_unlock_date != 0:
        # All shares have been unlocked
        unlocked_shares = balance_of_self

    return unlocked_shares


@view
@internal
def _total_supply(parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT]) -> uint256:
    # Need to account for the shares issued to the vault that have unlocked.
    return parameters[ASSETS_PARAM_CNT + 0] -\
        self._unlocked_shares(
            parameters[ASSETS_PARAM_CNT + 1],  # full_profit_unlock_date
            parameters[ASSETS_PARAM_CNT + 2],  # profit_unlocking_rate
            parameters[ASSETS_PARAM_CNT + 3],  # last_profit_update
            parameters[ASSETS_PARAM_CNT + 4],  # balance_of_self
            parameters[ASSETS_PARAM_CNT + 5],  # block.timestamp
        )

@view
@internal
def _total_assets(parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT]) -> uint256:
    """
    @notice Total amount of assets that are in the vault and in the strategies.
    """
    return parameters[0] + parameters[1]


@external
def update_price(
    _parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT],
) -> uint256:
    """
    @notice Update price using `_parameters`
    @param _parameters Parameters of
    @return Relative price change of final price with 10^18 precision
    """
    assert msg.sender == self.prover

    current_price: uint256 = self._price_per_share(block.timestamp)
    new_price: uint256 = self._total_assets(_parameters) * 10 ** 18 //\
        self._total_supply(_parameters)

    # Price is always growing and updates are never from future,
    # hence allow only increasing updates
    future_price: uint256 = self.price.future
    if new_price > future_price:
        self.price = Interval(previous=current_price, future=new_price)

        rel_price_change: uint256 = (new_price - current_price) * 10 ** 18 // current_price + 1  # 1 for rounding up
        future_ts: uint256 = block.timestamp + rel_price_change // self.max_acceleration
        self.time = Interval(previous=block.timestamp, future=future_ts)

        log PriceUpdate(new_price, future_ts)
        return new_price * 10 ** 18 // future_price
    return 10 ** 18


@external
def set_max_acceleration(_max_acceleration: uint256):
    """
    @notice Set maximum acceleration of scrvUSD.
        Must be less than StableSwap's minimum fee.
        fee / (2 * block_time) is considered to be safe.
    @param _max_acceleration Maximum acceleration (per sec)
    """
    ownable._check_owner()

    assert 10 ** 8 <= _max_acceleration and _max_acceleration <= 10 ** 18
    self.max_acceleration = _max_acceleration


@external
def set_prover(_prover: address):
    """
    @notice Set the account with prover permissions.
    """
    ownable._check_owner()

    self.prover = _prover
    log SetProver(_prover)

File 2 of 2 : ownable.vy
# pragma version ~=0.4.0
"""
@title Owner-Based Access Control Functions
@custom:contract-name ownable
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions can be used to implement a basic access
        control mechanism, where there is an account (an owner)
        that can be granted exclusive access to specific functions.
        By default, the owner account will be the one that deploys
        the contract. This can later be changed with `transfer_ownership`.
        An exemplary integration can be found in the ERC-20 implementation here:
        https://github.com/pcaversaccio/snekmate/blob/main/src/snekmate/tokens/erc20.vy.
        The implementation is inspired by OpenZeppelin's implementation here:
        https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol.
"""


# @dev Returns the address of the current owner.
# @notice If you declare a variable as `public`,
# Vyper automatically generates an `external`
# getter function for the variable.
owner: public(address)


# @dev Emitted when the ownership is transferred
# from `previous_owner` to `new_owner`.
event OwnershipTransferred:
    previous_owner: indexed(address)
    new_owner: indexed(address)


@deploy
@payable
def __init__():
    """
    @dev To omit the opcodes for checking the `msg.value`
         in the creation-time EVM bytecode, the constructor
         is declared as `payable`.
    @notice The `owner` role will be assigned to
            the `msg.sender`.
    """
    self._transfer_ownership(msg.sender)


@external
def transfer_ownership(new_owner: address):
    """
    @dev Transfers the ownership of the contract
         to a new account `new_owner`.
    @notice Note that this function can only be
            called by the current `owner`. Also,
            the `new_owner` cannot be the zero address.
    @param new_owner The 20-byte address of the new owner.
    """
    self._check_owner()
    assert new_owner != empty(address), "ownable: new owner is the zero address"
    self._transfer_ownership(new_owner)


@external
def renounce_ownership():
    """
    @dev Leaves the contract without an owner.
    @notice Renouncing ownership will leave the
            contract without an owner, thereby
            removing any functionality that is
            only available to the owner.
    """
    self._check_owner()
    self._transfer_ownership(empty(address))


@internal
def _check_owner():
    """
    @dev Throws if the sender is not the owner.
    """
    assert msg.sender == self.owner, "ownable: caller is not the owner"


@internal
def _transfer_ownership(new_owner: address):
    """
    @dev Transfers the ownership of the contract
         to a new account `new_owner`.
    @notice This is an `internal` function without
            access restriction.
    @param new_owner The 20-byte address of the new owner.
    """
    old_owner: address = self.owner
    self.owner = new_owner
    log OwnershipTransferred(old_owner, new_owner)

Settings
{
  "outputSelection": {
    "contracts/oracles/ScrvusdOracle.vy": [
      "evm.bytecode",
      "evm.deployedBytecode",
      "abi"
    ]
  },
  "search_paths": [
    "venv/lib/python3.11/site-packages",
    "."
  ]
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"name":"new_price","type":"uint256"},{"indexed":false,"name":"at","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"prover","type":"address"}],"name":"SetProver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previous_owner","type":"address"},{"indexed":true,"name":"new_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"name":"new_owner","type":"address"}],"name":"transfer_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounce_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerShare","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"ts","type":"uint256"}],"name":"pricePerShare","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerAsset","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"ts","type":"uint256"}],"name":"pricePerAsset","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price_oracle","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"i","type":"uint256"}],"name":"price_oracle","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_parameters","type":"uint256[8]"}],"name":"update_price","outputs":[{"name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_max_acceleration","type":"uint256"}],"name":"set_max_acceleration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_prover","type":"address"}],"name":"set_prover","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prover","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"components":[{"name":"previous","type":"uint256"},{"name":"future","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"time","outputs":[{"components":[{"name":"previous","type":"uint256"},{"name":"future","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_acceleration","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_initial_price","type":"uint256"},{"name":"_max_acceleration","type":"uint256"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]

3461008f5760206108f85f395f5160025560206108f85f395f51600355426004554260055560206109185f395f51600655610038610081565b61085061009361000039610850610000f35b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b3360405261008d61004a565b565b5f80fd5f3560e01c6002600e820660011b61083401601e395f51565b63f0350c0481186105fb57602436103417610830576004358060a01c61083057610100526100446105ff565b610100516100ee576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100fd610680565b005b63b15e13ee81186105fb5734610830576101176105ff565b5f604052610123610680565b005b638da5cb5b81186105fb5734610830575f5460405260206040f35b6399530b0681186101595734610830574260e0526101ef565b6354fd4d5081186105fb57346108305760208060805260056040527f302e302e3100000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63f759cc3b8118610207576024361034176108305760043560e0525b602060e0516040526102026101006106b7565b610100f35b63183d32db81186102205734610830574260e0526102af565b636872765381186105fb576024361034176108305760043560e0525b602060e05161025c57426040526102546101006106b7565b610100610291565b4260405261026b6101206106b7565b61012051801561083057806ec097ce7bc90715b34b9f1000000000049050610140526101405bf35b63745e181381186102e9576024361034176108305760043560e0525b60e0516040526102c06101006106b7565b61010051801561083057806ec097ce7bc90715b34b9f1000000000049050610120526020610120f35b6367b8e28181186105fb576101043610341761083057600154331861083057426040526103176102406106b7565b61024051610220526101006004604037610332610260610786565b61026051670de0b6b3a7640000810281670de0b6b3a7640000820418610830579050610100600461010037610368610280610802565b61028051801561083057808204905090506102405260035461026052610260516102405111156104a057610220516002556102405160035561024051610220518082038281116108305790509050670de0b6b3a7640000810281670de0b6b3a76400008204186108305790506102205180156108305780820490509050600181018181106108305790506102805242610280516006548015610830578082049050905080820182811061083057905090506102a052426004556102a0516005557f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c765711610240516102c0526102a0516102e05260406102c0a161024051670de0b6b3a7640000810281670de0b6b3a764000082041861083057905061026051801561083057808204905090506102c05260206102c06104b3565b670de0b6b3a76400006102805260206102805bf35b6386fc88d381186104ce5734610830575f60e05261023c565b630afbebdd811861051b57602436103417610830576104eb6105ff565b6004356305f5e10011156104ff575f61050e565b670de0b6b3a764000060043511155b1561083057600435600655005b6316ada54781186105fb57346108305760045460405260055460605260406040f35b639cb6d4f481186105fb57602436103417610830576004358060a01c61083057610100526105696105ff565b610100516001557ff97487bf235f7d2213e9a9b8eeb23642af9c77ef7aa05f6cd97e03af9288b3c561010051610120526020610120a1005b6332a8f30f81186105fb57346108305760015460405260206040f35b63a035b1fe81186105fb57346108305760025460405260035460605260406040f35b632521f57d81186105fb57346108305760065460405260206040f35b5f5ffd5b5f5433181561067e5760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025460605260035460805260045460a05260055460c05260c051604051106106e557608051815250610784565b60a051604051116106fb57606051815250610784565b60605160c0516040518082038281116108305790509050808202811583838304141715610830579050905060805160405160a05180820382811161083057905090508082028115838383041417156108305790509050808201828110610830579050905060c05160a0518082038281116108305790509050801561083057808204905090508152505b565b6040516060518082018281106108305790509050815250565b5f60e05260c051604051116107c157604051156107fa5760a05160e0526107fa565b60605160c0516080518082038281116108305790509050808202811583838304141715610830579050905064e8d4a510008104905060e0525b60e051815250565b6101405160a061016060405e61081961020061079f565b610200518082038281116108305790509050815250565b5f80fd00ff05a1053d05fb05fb01d3001804b505fb012505bd05df014002938419085081181c00a16576797065728300040000150000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000009184e72a000

Deployed Bytecode

0x5f3560e01c6002600e820660011b61083401601e395f51565b63f0350c0481186105fb57602436103417610830576004358060a01c61083057610100526100446105ff565b610100516100ee576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100fd610680565b005b63b15e13ee81186105fb5734610830576101176105ff565b5f604052610123610680565b005b638da5cb5b81186105fb5734610830575f5460405260206040f35b6399530b0681186101595734610830574260e0526101ef565b6354fd4d5081186105fb57346108305760208060805260056040527f302e302e3100000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63f759cc3b8118610207576024361034176108305760043560e0525b602060e0516040526102026101006106b7565b610100f35b63183d32db81186102205734610830574260e0526102af565b636872765381186105fb576024361034176108305760043560e0525b602060e05161025c57426040526102546101006106b7565b610100610291565b4260405261026b6101206106b7565b61012051801561083057806ec097ce7bc90715b34b9f1000000000049050610140526101405bf35b63745e181381186102e9576024361034176108305760043560e0525b60e0516040526102c06101006106b7565b61010051801561083057806ec097ce7bc90715b34b9f1000000000049050610120526020610120f35b6367b8e28181186105fb576101043610341761083057600154331861083057426040526103176102406106b7565b61024051610220526101006004604037610332610260610786565b61026051670de0b6b3a7640000810281670de0b6b3a7640000820418610830579050610100600461010037610368610280610802565b61028051801561083057808204905090506102405260035461026052610260516102405111156104a057610220516002556102405160035561024051610220518082038281116108305790509050670de0b6b3a7640000810281670de0b6b3a76400008204186108305790506102205180156108305780820490509050600181018181106108305790506102805242610280516006548015610830578082049050905080820182811061083057905090506102a052426004556102a0516005557f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c765711610240516102c0526102a0516102e05260406102c0a161024051670de0b6b3a7640000810281670de0b6b3a764000082041861083057905061026051801561083057808204905090506102c05260206102c06104b3565b670de0b6b3a76400006102805260206102805bf35b6386fc88d381186104ce5734610830575f60e05261023c565b630afbebdd811861051b57602436103417610830576104eb6105ff565b6004356305f5e10011156104ff575f61050e565b670de0b6b3a764000060043511155b1561083057600435600655005b6316ada54781186105fb57346108305760045460405260055460605260406040f35b639cb6d4f481186105fb57602436103417610830576004358060a01c61083057610100526105696105ff565b610100516001557ff97487bf235f7d2213e9a9b8eeb23642af9c77ef7aa05f6cd97e03af9288b3c561010051610120526020610120a1005b6332a8f30f81186105fb57346108305760015460405260206040f35b63a035b1fe81186105fb57346108305760025460405260035460605260406040f35b632521f57d81186105fb57346108305760065460405260206040f35b5f5ffd5b5f5433181561067e5760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025460605260035460805260045460a05260055460c05260c051604051106106e557608051815250610784565b60a051604051116106fb57606051815250610784565b60605160c0516040518082038281116108305790509050808202811583838304141715610830579050905060805160405160a05180820382811161083057905090508082028115838383041417156108305790509050808201828110610830579050905060c05160a0518082038281116108305790509050801561083057808204905090508152505b565b6040516060518082018281106108305790509050815250565b5f60e05260c051604051116107c157604051156107fa5760a05160e0526107fa565b60605160c0516080518082038281116108305790509050808202811583838304141715610830579050905064e8d4a510008104905060e0525b60e051815250565b6101405160a061016060405e61081961020061079f565b610200518082038281116108305790509050815250565b5f80fd00ff05a1053d05fb05fb01d3001804b505fb012505bd05df01400293

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

0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000009184e72a000

-----Decoded View---------------
Arg [0] : _initial_price (uint256): 1000000000000000000
Arg [1] : _max_acceleration (uint256): 10000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [1] : 000000000000000000000000000000000000000000000000000009184e72a000


Deployed Bytecode Sourcemap

0:6846:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;1624:18:1;-1:-1:-1;-1:-1:-1;1624:18:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1965:19:1;-1:-1:-1;-1:-1:-1;1965:19:1:i;1965:19:1:-;1996:9:1;-1:-1:-1;-1:-1:-1;1996:27:1;1989:76:1;-1:-1:-1;-1:-1:-1;1989:76:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1989:76:1:-;2095:9:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2070:35:1;1601:504:1;-1:-1:-1;-1:-1:-1;2070:35:1;-1:-1:-1;-1:-1:-1;2070:35:1:i;1601:504:1:-;1601:504:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;2394:19:1;-1:-1:-1;-1:-1:-1;2394:19:1:i;2394:19:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;2418:40:1;2118:340:1;-1:-1:-1;-1:-1:-1;2418:40:1;-1:-1:-1;-1:-1:-1;2418:40:1:i;2118:340:1:-;2118:340:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1054:22:1;-1:-1:-1;1054:22:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2157:15:0;2145:11:0;-1:-1:-1;2145:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;352:7:0;-1:-1:-1;352:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;352:7:0;352:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;313:46:0;-1:-1:-1;313:46:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2145:11:0;2145:11:0;-1:-1:-1;2145:11:0;2127:351:0:-;2127:351:0;-1:-1:-1;2475:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;2453:25:0:i;2453:25:0:-;2453:25:0;-1:-1:-1;-1:-1:-1;2127:351:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2527:15:0;2515:11:0;-1:-1:-1;2515:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2890:10:0;2890:10:0;-1:-1:-1;2890:10:0;2873:357:0:-;2873:357:0;-1:-1:-1;3168:1:0;-1:-1:-1;3168:6:0;3126:104:0;-1:-1:-1;-1:-1:-1;3126:104:0:-;3148:15:0;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;3126:38:0:i;3126:38:0:-;3126:38:0;-1:-1:-1;-1:-1:-1;2873:357:0;-1:-1:-1;-1:-1:-1;3126:104:0:-;3126:104:0:-;3214:15:0;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;3192:38:0:i;3192:38:0:-;3192:38:0;-1:-1:-1;-1:-1:-1;3180:50:0;3180:50:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;3180:50:0;3180:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3180:50:0;3180:50:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2873:357:0:-;2873:357:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2515:11:0;2515:11:0;-1:-1:-1;2515:11:0;2497:357:0:-;2851:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;2829:25:0:i;2829:25:0:-;2829:25:0;-1:-1:-1;-1:-1:-1;2817:37:0;2817:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2817:37:0;2817:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2817:37:0;2817:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2497:357:0;-1:-1:-1;-1:-1:-1;2497:357:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5352:11:0;-1:-1:-1;5338:25:0;5338:10:0;5338:25:0;5331:32:0;-1:-1:-1;-1:-1:-1;5331:32:0:-;5416:15:0;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;5394:38:0:i;5394:38:0:-;5394:38:0;-1:-1:-1;-1:-1:-1;5369:63:0;5369:63:0;-1:-1:-1;-1:-1:-1;5369:63:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;5458:31:0:i;5458:31:0:-;5458:31:0;-1:-1:-1;-1:-1:-1;5458:42:0;5492:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:42:0;-1:-1:-1;5458:42:0;5492:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5458:42:0;5458:42:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;5513:31:0:i;5513:31:0:-;5513:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5458:86:0;-1:-1:-1;5458:86:0;5458:86:0;5458:86:0;5458:86:0;5437:107:0;-1:-1:-1;-1:-1:-1;5437:107:0;5681:17:0;-1:-1:-1;5657:41:0;5657:41:0;-1:-1:-1;-1:-1:-1;5657:41:0;5718:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5706:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5706:24:0;5703:479:0;5703:479:0;-1:-1:-1;-1:-1:-1;5703:479:0:-;5771:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5793:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5842:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5854:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;5842:25:0;5842:25:0;5871:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5841:38:0;-1:-1:-1;5841:38:0;5871:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5841:38:0;5841:38:0;5883:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5841:55:0;-1:-1:-1;5841:55:0;5841:55:0;5841:55:0;5841:55:0;5899:1:0;-1:-1:-1;5841:59:0;-1:-1:-1;5841:59:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5841:59:0;5841:59:0;5813:87:0;-1:-1:-1;-1:-1:-1;5813:87:0;5951:15:0;5969:16:0;-1:-1:-1;-1:-1:-1;5969:41:0;5989:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5969:41:0;-1:-1:-1;5969:41:0;5969:41:0;5969:41:0;5969:41:0;-1:-1:-1;5951:59:0;-1:-1:-1;5951:59:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5951:59:0;5951:59:0;5951:59:0;5951:59:0;5930:80:0;-1:-1:-1;-1:-1:-1;5930:80:0;6049:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6073:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6093:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6109:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6120:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6093:37:0;-1:-1:-1;-1:-1:-1;6093:37:0;6146:9:0;-1:-1:-1;-1:-1:-1;6146:20:0;6158:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6146:20:0;-1:-1:-1;6146:20:0;6158:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;6146:20:0;6146:20:0;6170:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;6146:36:0;-1:-1:-1;6146:36:0;6146:36:0;6146:36:0;6146:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5703:479:0:-;6194:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5064:1138:0;-1:-1:-1;-1:-1:-1;5064:1138:0:-;5064:1138:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2901:1:0;2890:10:0;-1:-1:-1;2890:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;6507:22:0;-1:-1:-1;-1:-1:-1;6507:22:0:i;6507:22:0:-;6633:17:0;-1:-1:-1;6542:28:0;6542:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6542:62:0;6542:62:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6542:62:0;6542:62:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6542:62:0:-;6596:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6633:17:0;-1:-1:-1;6575:29:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6535:69:0;6535:69:0;-1:-1:-1;-1:-1:-1;6535:69:0:-;6633:17:0;-1:-1:-1;-1:-1:-1;6609:21:0;-1:-1:-1;-1:-1:-1;6215:435:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1082:22:0;-1:-1:-1;1082:22:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;6678:16:0;-1:-1:-1;-1:-1:-1;6678:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6770:22:0;-1:-1:-1;-1:-1:-1;6770:22:0:i;6770:22:0:-;6812:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6798:11:0;-1:-1:-1;-1:-1:-1;6824:22:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6838:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6824:22:0;-1:-1:-1;-1:-1:-1;6824:22:0;6663:183:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1005:23:0;-1:-1:-1;1005:23:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1030:23:0;-1:-1:-1;1030:23:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1106:33:0;-1:-1:-1;1106:33:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2580:10:1;2566:24:1;2566:10:1;2566:24:1;2566:24:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2559:67:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:1;-1:-1:-1;2592:34:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:1;2592:34:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;2955:10:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2934:31:1;2983:9:1;-1:-1:-1;-1:-1:-1;2970:10:1;-1:-1:-1;3033:9:1;-1:-1:-1;2997:46:1;3022:9:1;-1:-1:-1;2997:46:1;2997:46:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2997:46:1;2997:46:1;-1:-1:-1;2997:46:1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1890:11:0;-1:-1:-1;1884:17:0;1884:2:0;-1:-1:-1;1884:17:0;-1:-1:-1;1881:49:0;-1:-1:-1;-1:-1:-1;1881:49:0:-;1918:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;1911:19:0;1911:19:0;1911:19:0;-1:-1:-1;-1:-1:-1;1911:19:0:o;1881:49:0:-;1944:13:0;-1:-1:-1;1938:19:0;1938:2:0;-1:-1:-1;1938:19:0;-1:-1:-1;1935:53:0;-1:-1:-1;-1:-1:-1;1935:53:0:-;1974:14:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;1967:21:0;1967:21:0;1967:21:0;-1:-1:-1;-1:-1:-1;1967:21:0:o;1935:53:0:-;2001:14:0;-1:-1:-1;2001:35:0;2019:11:0;-1:-1:-1;2019:16:0;2033:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2019:16:0;-1:-1:-1;2019:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2019:16:0;2019:16:0;2019:16:0;2019:16:0;-1:-1:-1;2001:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2001:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2001:35:0;2001:35:0;2001:35:0;2001:35:0;2039:12:0;-1:-1:-1;2039:35:0;2055:2:0;-1:-1:-1;2055:18:0;2060:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2055:18:0;-1:-1:-1;2055:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2055:18:0;2055:18:0;2055:18:0;2055:18:0;-1:-1:-1;2039:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2039:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2039:35:0;2039:35:0;2039:35:0;2039:35:0;-1:-1:-1;2001:73:0;-1:-1:-1;2001:73:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2001:73:0;2001:73:0;2001:73:0;2001:73:0;2080:11:0;-1:-1:-1;2080:27:0;2094:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2080:27:0;-1:-1:-1;2080:27:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2080:27:0;2080:27:0;2080:27:0;2080:27:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;2000:108:0;-1:-1:-1;2000:108:0;2000:108:0;2000:108:0;2000:108:0;-1:-1:-1;1993:115:0;1993:115:0;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;5022:13:0;-1:-1:-1;5022:29:0;5038:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5022:29:0;-1:-1:-1;5022:29:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5022:29:0;5022:29:0;5022:29:0;5022:29:0;-1:-1:-1;5015:36:0;5015:36:0;-1:-1:-1:-;-1:-1:-1:-;3831:1:0;-1:-1:-1;-1:-1:-1;3804:28:0;3866:2:0;-1:-1:-1;-1:-1:-1;3840:23:0;-1:-1:-1;-1:-1:-1;3840:28:0;3837:331:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;4057:23:0;-1:-1:-1;4057:28:0;4057:28:0;3837:331:0;-1:-1:-1;-1:-1:-1;4052:116:0:-;4153:15:0;-1:-1:-1;-1:-1:-1;4135:15:0;-1:-1:-1;-1:-1:-1;3837:331:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;3837:331:0:-;3977:21:0;-1:-1:-1;-1:-1:-1;4002:2:0;-1:-1:-1;-1:-1:-1;4007:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;4002:23:0;4002:23:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;3977:49:0;3977:49:0;4030:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3977:69:0;-1:-1:-1;3977:69:0;3977:69:0;3959:15:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;4181:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;4174:22:0;4174:22:0;-1:-1:-1:-;-1:-1:-1:-;4391:32:0;-1:-1:-1;-1:-1:-1;4391:418:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;4435:374:0:i;4435:374:0:-;4435:374:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4391:418:0;-1:-1:-1;4391:418:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;4391:418:0;4391:418:0;4391:418:0;4391:418:0;-1:-1:-1;4384:425:0;4384:425:0;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1

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