Contract 0x0E9fBb167DF83EdE3240D6a5fa5d40c6C6851e15

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x843ee87879a4ad9352d420f38130f97ce5972b5734d22cfd5123221fd9714f19Add_pool45302222022-01-10 13:13:12808 days 6 hrs ago0x7eeac6cddbd1d0b8af061742d41877d7f707289a IN  0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH0.004798857552 ETH1.44651563
0x5ee454caa3bbeb73fe4e6e190db4bf71eb56ed790d725f96464dbf73ef5c9dbdAdd_pool45301932022-01-10 13:12:34808 days 6 hrs ago0x7eeac6cddbd1d0b8af061742d41877d7f707289a IN  0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH0.007120101434 ETH1.44651563
0xa725ede6006960f78fe841ad5ad37e875f7cadb3ade8326d03f2bcc502a499aa0x6f7fffff45301152022-01-10 13:10:04808 days 6 hrs ago0x7eeac6cddbd1d0b8af061742d41877d7f707289a IN  Create: Vyper_contract0 ETH0.069645688924 ETH1.44651563
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x03ba35f89e20efba570ab79cd364fc9465f50c8dacf36271da8bce4b9a84e0d4720837342023-03-21 10:06:36373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x03ba35f89e20efba570ab79cd364fc9465f50c8dacf36271da8bce4b9a84e0d4720837342023-03-21 10:06:36373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0xcf366a866361b3ca3ecca0071b19492c5b066da5fbe1cc07a920806442a1dbcc720802772023-03-21 9:52:27373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x431f509977c55e0db0661873a1829f4be6c016e687c73a5cb996bde63fc3830d720781372023-03-21 9:43:36373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x431f509977c55e0db0661873a1829f4be6c016e687c73a5cb996bde63fc3830d720781372023-03-21 9:43:36373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x431f509977c55e0db0661873a1829f4be6c016e687c73a5cb996bde63fc3830d720781372023-03-21 9:43:36373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0xf2c7e5dba91dc03f9f694355d0bf3a5d082a1e134a75e885a9c62123048ecee8720781232023-03-21 9:43:33373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0xf2c7e5dba91dc03f9f694355d0bf3a5d082a1e134a75e885a9c62123048ecee8720781232023-03-21 9:43:33373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0xf2c7e5dba91dc03f9f694355d0bf3a5d082a1e134a75e885a9c62123048ecee8720781232023-03-21 9:43:33373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x73effc06897c7def19a18c4da3587438995979851e371311d57804beb40ea0c6720780202023-03-21 9:43:07373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x73effc06897c7def19a18c4da3587438995979851e371311d57804beb40ea0c6720780202023-03-21 9:43:07373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x8220bbbe3b3b0ca07a4e060652ccec89e5c45ce0dcd1161b5bb638ee6b6af09a720778942023-03-21 9:42:35373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x8220bbbe3b3b0ca07a4e060652ccec89e5c45ce0dcd1161b5bb638ee6b6af09a720778942023-03-21 9:42:35373 days 9 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x61cd24b7cc8c69a2e6f21919f45414c006e8f56902e844b003dbc6de752cc55e720747092023-03-21 9:29:27373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x61cd24b7cc8c69a2e6f21919f45414c006e8f56902e844b003dbc6de752cc55e720747092023-03-21 9:29:27373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x3db333e7b4483b6e9d5e66328135d75b040c5c26697987b2cc72ea7d99e15081720694942023-03-21 9:08:01373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x3db333e7b4483b6e9d5e66328135d75b040c5c26697987b2cc72ea7d99e15081720694942023-03-21 9:08:01373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x8dea49f3677c8b70ff7782494044ae20a17d51a51de784a002bec750b22aaba7720688672023-03-21 9:05:32373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x8dea49f3677c8b70ff7782494044ae20a17d51a51de784a002bec750b22aaba7720688672023-03-21 9:05:32373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x78671ae894c2784514741257f42ea313ec961dac1f72bb9f90c787541d2ba0d1720666012023-03-21 8:56:12373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0xa7e76b82d1bfca601da695cacb66b32304e5249b4df97026261bf79de5050ae1720651702023-03-21 8:50:22373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x01a7bd8f5209ff5cceb1adb2949ad7b9af80b05817f2d67b26e8440548ebf60a720649802023-03-21 8:49:35373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x01a7bd8f5209ff5cceb1adb2949ad7b9af80b05817f2d67b26e8440548ebf60a720649802023-03-21 8:49:35373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x2808910a33399a4bece9582f1fc06f64d26036c936e6686bfb92a426566d9edc720642282023-03-21 8:46:34373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
0x2808910a33399a4bece9582f1fc06f64d26036c936e6686bfb92a426566d9edc720642282023-03-21 8:46:34373 days 10 hrs ago 0x316d06dd6644ad630c73cd3a6a2c7ae0d22f939e 0x0e9fbb167df83ede3240d6a5fa5d40c6c6851e150 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.0

Optimization Enabled:
N/A

Other Settings:
, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.0
"""
@title Curve CryptoSwap Registry
@license MIT
@author Curve.Fi
"""

MAX_COINS: constant(int128) = 8
CALC_INPUT_SIZE: constant(int128) = 100


struct CoinInfo:
    index: uint256
    register_count: uint256
    swap_count: uint256
    swap_for: address[MAX_INT128]

struct PoolArray:
    location: uint256
    decimals: uint256
    coins: address[MAX_COINS]
    n_coins: uint256
    name: String[64]


interface AddressProvider:
    def admin() -> address: view
    def get_address(_id: uint256) -> address: view
    def get_registry() -> address: view

interface ERC20:
    def balanceOf(_addr: address) -> uint256: view
    def decimals() -> uint256: view
    def totalSupply() -> uint256: view

interface CurvePool:
    def token() -> address: view
    def coins(i: uint256) -> address: view
    def A() -> uint256: view
    def gamma() -> uint256: view
    def fee() -> uint256: view
    def get_virtual_price() -> uint256: view
    def mid_fee() -> uint256: view
    def out_fee() -> uint256: view
    def admin_fee() -> uint256: view
    def balances(i: uint256) -> uint256: view
    def D() -> uint256: view

interface LiquidityGauge:
    def lp_token() -> address: view

interface GaugeController:
    def gauge_types(gauge: address) -> int128: view


event PoolAdded:
    pool: indexed(address)

event PoolRemoved:
    pool: indexed(address)


address_provider: public(AddressProvider)
pool_list: public(address[65536])   # master list of pools
pool_count: public(uint256)         # actual length of pool_list

pool_data: HashMap[address, PoolArray]

coin_count: public(uint256)  # total unique coins registered
coins: HashMap[address, CoinInfo]
get_coin: public(address[65536])  # unique list of registered coins
# bitwise_xor(coina, coinb) -> (coina_pos, coinb_pos) sorted
# stored as uint128[2]
coin_swap_indexes: HashMap[uint256, uint256]

# lp token -> pool
get_pool_from_lp_token: public(HashMap[address, address])

# pool -> lp token
get_lp_token: public(HashMap[address, address])

# mapping of coins -> pools for trading
# a mapping key is generated for each pair of addresses via
# `bitwise_xor(convert(a, uint256), convert(b, uint256))`
markets: HashMap[uint256, address[65536]]
market_counts: HashMap[uint256, uint256]

liquidity_gauges: HashMap[address, address[10]]

# mapping of pool -> deposit/exchange zap
get_zap: public(HashMap[address, address])

last_updated: public(uint256)


@external
def __init__(_address_provider: AddressProvider):
    """
    @notice Constructor function
    """
    self.address_provider = _address_provider

# internal functionality for getters

@view
@internal
def _get_balances(_pool: address) -> uint256[MAX_COINS]:
    balances: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    for i in range(MAX_COINS):
        if self.pool_data[_pool].coins[i] == ZERO_ADDRESS:
            assert i != 0
            break

        balances[i] = CurvePool(_pool).balances(i)

    return balances


# targetted external getters, optimized for on-chain calls

@view
@external
def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address:
    """
    @notice Find an available pool for exchanging two coins
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param i Index value. When multiple pools are available
            this value is used to return the n'th address.
    @return Pool address
    """
    key: uint256 = bitwise_xor(convert(_from, uint256), convert(_to, uint256))
    return self.markets[key][i]


@view
@external
def get_n_coins(_pool: address) -> uint256:
    """
    @notice Get the number of coins in a pool
    @dev For non-metapools, both returned values are identical
         even when the pool does not use wrapping/lending
    @param _pool Pool address
    @return Number of wrapped coins, number of underlying coins
    """
    return self.pool_data[_pool].n_coins


@view
@external
def get_coins(_pool: address) -> address[MAX_COINS]:
    """
    @notice Get the coins within a pool
    @dev For pools using lending, these are the wrapped coin addresses
    @param _pool Pool address
    @return List of coin addresses
    """
    coins: address[MAX_COINS] = empty(address[MAX_COINS])
    n_coins: uint256 = self.pool_data[_pool].n_coins
    for i in range(MAX_COINS):
        if i == n_coins:
            break
        coins[i] = self.pool_data[_pool].coins[i]

    return coins


@view
@external
def get_decimals(_pool: address) -> uint256[MAX_COINS]:
    """
    @notice Get decimal places for each coin within a pool
    @dev For pools using lending, these are the wrapped coin decimal places
    @param _pool Pool address
    @return uint256 list of decimals
    """

    # decimals are tightly packed as a series of uint8 within a little-endian bytes32
    # the packed value is stored as uint256 to simplify unpacking via shift and modulo
    packed: uint256 = self.pool_data[_pool].decimals
    decimals: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    n_coins: int128 = convert(self.pool_data[_pool].n_coins, int128)
    for i in range(MAX_COINS):
        if i == n_coins:
            break
        decimals[i] = shift(packed, -8 * i) % 256

    return decimals


@view
@external
def get_gauges(_pool: address) -> (address[10], int128[10]):
    """
    @notice Get a list of LiquidityGauge contracts associated with a pool
    @param _pool Pool address
    @return address[10] of gauge addresses, int128[10] of gauge types
    """
    liquidity_gauges: address[10] = empty(address[10])
    gauge_types: int128[10] = empty(int128[10])
    for i in range(10):
        gauge: address = self.liquidity_gauges[_pool][i]
        if gauge == ZERO_ADDRESS:
            break
        liquidity_gauges[i] = gauge

    return liquidity_gauges, gauge_types


@view
@external
def get_balances(_pool: address) -> uint256[MAX_COINS]:
    """
    @notice Get balances for each coin within a pool
    @dev For pools using lending, these are the wrapped coin balances
    @param _pool Pool address
    @return uint256 list of balances
    """
    return self._get_balances(_pool)


@view
@external
def get_virtual_price_from_lp_token(_token: address) -> uint256:
    """
    @notice Get the virtual price of a pool LP token
    @param _token LP token address
    @return uint256 Virtual price
    """
    return CurvePool(self.get_pool_from_lp_token[_token]).get_virtual_price()


@view
@external
def get_A(_pool: address) -> uint256:
    return CurvePool(_pool).A()


@view
@external
def get_D(_pool: address) -> uint256:
    return CurvePool(_pool).D()


@view
@external
def get_gamma(_pool: address) -> uint256:
    return CurvePool(_pool).gamma()


@view
@external
def get_fees(_pool: address) -> uint256[4]:
    """
    @notice Get the fees for a pool
    @dev Fees are expressed as integers
    @return Pool fee as uint256 with 1e10 precision
            Admin fee as 1e10 percentage of pool fee
            Mid fee
            Out fee
    """
    return [CurvePool(_pool).fee(), CurvePool(_pool).admin_fee(), CurvePool(_pool).mid_fee(), CurvePool(_pool).out_fee()]


@view
@external
def get_admin_balances(_pool: address) -> uint256[MAX_COINS]:
    """
    @notice Get the current admin balances (uncollected fees) for a pool
    @param _pool Pool address
    @return List of uint256 admin balances
    """
    balances: uint256[MAX_COINS] = self._get_balances(_pool)
    n_coins: uint256 = self.pool_data[_pool].n_coins
    for i in range(MAX_COINS):
        coin: address = self.pool_data[_pool].coins[i]
        if i == n_coins:
            break
        if coin == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE:
            balances[i] = _pool.balance - balances[i]
        else:
            balances[i] = ERC20(coin).balanceOf(_pool) - balances[i]

    return balances


@view
@external
def get_coin_indices(
    _pool: address,
    _from: address,
    _to: address
) -> (uint256, uint256):
    """
    @notice Convert coin addresses to indices for use with pool methods
    @param _from Coin address to be used as `i` within a pool
    @param _to Coin address to be used as `j` within a pool
    @return int128 `i`, int128 `j`, boolean indicating if `i` and `j` are underlying coins
    """
    # the return value is stored as `uint256[3]` to reduce gas costs
    # from index, to index, is the market underlying?
    result: uint256[2] = empty(uint256[2])

    found_market: bool = False

    # check coin markets
    for x in range(MAX_COINS):
        coin: address = self.pool_data[_pool].coins[x]
        if coin == ZERO_ADDRESS:
            # if we reach the end of the coins, reset `found_market` and try again
            # with the underlying coins
            found_market = False
            break
        if coin == _from:
            result[0] = x
        elif coin == _to:
            result[1] = x
        else:
            continue
        if found_market:
            # the second time we find a match, break out of the loop
            return result[0], result[1]
        # the first time we find a match, set `found_market` to True
        found_market = True

    raise "No available market"


@view
@external
def get_pool_name(_pool: address) -> String[64]:
    """
    @notice Get the given name for a pool
    @param _pool Pool address
    @return The name of a pool
    """
    return self.pool_data[_pool].name


@view
@external
def get_coin_swap_count(_coin: address) -> uint256:
    """
    @notice Get the number of unique coins available to swap `_coin` against
    @param _coin Coin address
    @return The number of unique coins available to swap for
    """
    return self.coins[_coin].swap_count


@view
@external
def get_coin_swap_complement(_coin: address, _index: uint256) -> address:
    """
    @notice Get the coin available to swap against `_coin` at `_index`
    @param _coin Coin address
    @param _index An index in the `_coin`'s set of available counter
        coin's
    @return Address of a coin available to swap against `_coin`
    """
    return self.coins[_coin].swap_for[_index]


# internal functionality used in admin setters


@internal
def _register_coin(_coin: address):
    if self.coins[_coin].register_count == 0:
        coin_count: uint256 = self.coin_count
        self.coins[_coin].index = coin_count
        self.get_coin[coin_count] = _coin
        self.coin_count += 1
    self.coins[_coin].register_count += 1


@internal
def _register_coin_pair(_coina: address, _coinb: address, _key: uint256):
    # register _coinb in _coina's array of coins
    coin_b_pos: uint256 = self.coins[_coina].swap_count
    self.coins[_coina].swap_for[coin_b_pos] = _coinb
    self.coins[_coina].swap_count += 1
    # register _coina in _coinb's array of coins
    coin_a_pos: uint256 = self.coins[_coinb].swap_count
    self.coins[_coinb].swap_for[coin_a_pos] = _coina
    self.coins[_coinb].swap_count += 1
    # register indexes (coina pos in coinb array, coinb pos in coina array)
    if convert(_coina, uint256) < convert(_coinb, uint256):
        self.coin_swap_indexes[_key] = shift(coin_a_pos, 128) + coin_b_pos
    else:
        self.coin_swap_indexes[_key] = shift(coin_b_pos, 128) + coin_a_pos


@internal
def _unregister_coin(_coin: address):
    self.coins[_coin].register_count -= 1

    if self.coins[_coin].register_count == 0:
        self.coin_count -= 1
        coin_count: uint256 = self.coin_count
        location: uint256 = self.coins[_coin].index

        if location < coin_count:
            coin_b: address = self.get_coin[coin_count]
            self.get_coin[location] = coin_b
            self.coins[coin_b].index = location

        self.coins[_coin].index = 0
        self.get_coin[coin_count] = ZERO_ADDRESS


@internal
def _unregister_coin_pair(_coina: address, _coinb: address, _coinb_idx: uint256):
    """
    @param _coinb_idx the index of _coinb in _coina's array of unique coin's
    """
    # decrement swap counts for both coins
    self.coins[_coina].swap_count -= 1

    # retrieve the last currently occupied index in coina's array
    coina_arr_last_idx: uint256 = self.coins[_coina].swap_count

    # if coinb's index in coina's array is less than the last
    # overwrite it's position with the last coin
    if _coinb_idx < coina_arr_last_idx:
        # here's our last coin in coina's array
        coin_c: address = self.coins[_coina].swap_for[coina_arr_last_idx]
        # get the bitwise_xor of the pair to retrieve their indexes
        key: uint256 = bitwise_xor(convert(_coina, uint256), convert(coin_c, uint256))
        indexes: uint256 = self.coin_swap_indexes[key]

        # update the pairing's indexes
        if convert(_coina, uint256) < convert(coin_c, uint256):
            # least complicated most readable way of shifting twice to remove the lower order bits
            self.coin_swap_indexes[key] = shift(shift(indexes, -128), 128) + _coinb_idx
        else:
            self.coin_swap_indexes[key] = shift(_coinb_idx, 128) + indexes % 2 ** 128
        # set _coinb_idx in coina's array to coin_c
        self.coins[_coina].swap_for[_coinb_idx] = coin_c

    self.coins[_coina].swap_for[coina_arr_last_idx] = ZERO_ADDRESS


@internal
def _get_new_pool_coins(
    _pool: address,
    _n_coins: uint256,
) -> address[MAX_COINS]:
    coin_list: address[MAX_COINS] = empty(address[MAX_COINS])
    coin: address = ZERO_ADDRESS
    for i in range(MAX_COINS):
        if i == _n_coins:
            break
        coin = CurvePool(_pool).coins(i)
        self.pool_data[_pool].coins[i] = coin
        coin_list[i] = coin

    for i in range(MAX_COINS):
        if i == _n_coins:
            break

        self._register_coin(coin_list[i])
        # add pool to markets
        i2: uint256 = i + 1
        for x in range(i2, i2 + MAX_COINS):
            if x == _n_coins:
                break

            key: uint256 = bitwise_xor(convert(coin_list[i], uint256), convert(coin_list[x], uint256))
            length: uint256 = self.market_counts[key]
            self.markets[key][length] = _pool
            self.market_counts[key] = length + 1

            # register the coin pair
            if length == 0:
                self._register_coin_pair(coin_list[x], coin_list[i], key)

    return coin_list


@view
@internal
def _get_new_pool_decimals(_coins: address[MAX_COINS], _n_coins: uint256) -> uint256:
    packed: uint256 = 0
    value: uint256 = 0

    n_coins: int128 = convert(_n_coins, int128)
    for i in range(MAX_COINS):
        if i == n_coins:
            break
        coin: address = _coins[i]
        if coin == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE:
            value = 18
        else:
            value = ERC20(coin).decimals()
            assert value < 256  # dev: decimal overflow

        packed += shift(value, i * 8)

    return packed


@internal
def _remove_market(_pool: address, _coina: address, _coinb: address):
    key: uint256 = bitwise_xor(convert(_coina, uint256), convert(_coinb, uint256))
    length: uint256 = self.market_counts[key] - 1
    if length == 0:
        indexes: uint256 = self.coin_swap_indexes[key]
        if convert(_coina, uint256) < convert(_coinb, uint256):
            self._unregister_coin_pair(_coina, _coinb, indexes % 2 ** 128)
            self._unregister_coin_pair(_coinb, _coina, shift(indexes, -128))
        else:
            self._unregister_coin_pair(_coina, _coinb, shift(indexes, -128))
            self._unregister_coin_pair(_coinb, _coina, indexes % 2 ** 128)
        self.coin_swap_indexes[key] = 0
    for i in range(65536):
        if i > length:
            break
        if self.markets[key][i] == _pool:
            if i < length:
                self.markets[key][i] = self.markets[key][length]
            self.markets[key][length] = ZERO_ADDRESS
            self.market_counts[key] = length
            break


# admin functions

@external
def add_pool(
    _pool: address,
    _n_coins: uint256,
    _lp_token: address,
    _gauge: address,
    _zap: address,
    _decimals: uint256,
    _name: String[64],
):
    """
    @notice Add a pool to the registry
    @dev Only callable by admin
    @param _pool Pool address to add
    @param _n_coins Number of coins in the pool
    @param _lp_token Pool deposit token address
    @param _decimals Coin decimal values, tightly packed as uint8 in a little-endian bytes32
    @param _name The name of the pool
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function
    assert _lp_token != ZERO_ADDRESS
    assert self.pool_data[_pool].coins[0] == ZERO_ADDRESS  # dev: pool exists
    assert self.get_pool_from_lp_token[_lp_token] == ZERO_ADDRESS

    # add pool to pool_list
    length: uint256 = self.pool_count
    self.pool_list[length] = _pool
    self.pool_count = length + 1
    self.pool_data[_pool].location = length
    self.pool_data[_pool].n_coins = _n_coins
    self.pool_data[_pool].name = _name

    # update public mappings
    self.get_pool_from_lp_token[_lp_token] = _pool
    self.get_lp_token[_pool] = _lp_token

    coins: address[MAX_COINS] = self._get_new_pool_coins(_pool, _n_coins)
    decimals: uint256 = _decimals
    if decimals == 0:
        decimals = self._get_new_pool_decimals(coins, _n_coins)
    self.pool_data[_pool].decimals = decimals

    if _zap != ZERO_ADDRESS:
        self.get_zap[_pool] = _zap

    if _gauge != ZERO_ADDRESS:
        self.liquidity_gauges[_pool][0] = _gauge

    self.last_updated = block.timestamp
    log PoolAdded(_pool)


@external
def remove_pool(_pool: address):
    """
    @notice Remove a pool to the registry
    @dev Only callable by admin
    @param _pool Pool address to remove
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function
    assert self.pool_data[_pool].coins[0] != ZERO_ADDRESS  # dev: pool does not exist


    self.get_pool_from_lp_token[self.get_lp_token[_pool]] = ZERO_ADDRESS
    self.get_lp_token[_pool] = ZERO_ADDRESS

    # remove _pool from pool_list
    location: uint256 = self.pool_data[_pool].location
    length: uint256 = self.pool_count - 1

    if location < length:
        # replace _pool with final value in pool_list
        addr: address = self.pool_list[length]
        self.pool_list[location] = addr
        self.pool_data[addr].location = location

    # delete final pool_list value
    self.pool_list[length] = ZERO_ADDRESS
    self.pool_count = length

    self.pool_data[_pool].decimals = 0
    self.pool_data[_pool].n_coins = 0
    self.pool_data[_pool].name = ""

    coins: address[MAX_COINS] = empty(address[MAX_COINS])

    for i in range(MAX_COINS):
        coins[i] = self.pool_data[_pool].coins[i]
        if coins[i] == ZERO_ADDRESS:
            break
        # delete coin address from pool_data
        self.pool_data[_pool].coins[i] = ZERO_ADDRESS
        self._unregister_coin(coins[i])

    for i in range(MAX_COINS):
        coin: address = coins[i]
        if coin == ZERO_ADDRESS:
            break

        # remove pool from markets
        i2: uint256 = i + 1
        for x in range(i2, i2 + MAX_COINS):
            coinx: address = coins[x]
            if coinx == ZERO_ADDRESS:
                break
            self._remove_market(_pool, coin, coinx)

    if self.get_zap[_pool] != ZERO_ADDRESS:
        self.get_zap[_pool] = ZERO_ADDRESS

    self.last_updated = block.timestamp
    log PoolRemoved(_pool)


@external
def set_liquidity_gauges(_pool: address, _liquidity_gauges: address[10]):
    """
    @notice Set liquidity gauge contracts
    @param _pool Pool address
    @param _liquidity_gauges Liquidity gauge address
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function

    _lp_token: address = self.get_lp_token[_pool]
    for i in range(10):
        _gauge: address = _liquidity_gauges[i]
        if _gauge != ZERO_ADDRESS:
            assert LiquidityGauge(_gauge).lp_token() == _lp_token  # dev: wrong token
            self.liquidity_gauges[_pool][i] = _gauge
        elif self.liquidity_gauges[_pool][i] != ZERO_ADDRESS:
            self.liquidity_gauges[_pool][i] = ZERO_ADDRESS
        else:
            break
    self.last_updated = block.timestamp


@external
def batch_set_liquidity_gauges(_pools: address[10], _liquidity_gauges: address[10]):
    """
    @notice Set many liquidity gauge contracts
    @param _pools List of pool addresses
    @param _liquidity_gauges List of liquidity gauge addresses
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function

    for i in range(10):
        _pool: address = _pools[i]
        if _pool == ZERO_ADDRESS:
            break
        _gauge: address = _liquidity_gauges[i]
        assert LiquidityGauge(_gauge).lp_token() == self.get_lp_token[_pool]  # dev: wrong token
        self.liquidity_gauges[_pool][0] = _gauge

    self.last_updated = block.timestamp

Contract ABI

[{"name":"PoolAdded","inputs":[{"name":"pool","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"PoolRemoved","inputs":[{"name":"pool","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_address_provider","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":3111},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3111},{"stateMutability":"view","type":"function","name":"get_n_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2834},{"stateMutability":"view","type":"function","name":"get_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[8]"}],"gas":22975},{"stateMutability":"view","type":"function","name":"get_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}],"gas":9818},{"stateMutability":"view","type":"function","name":"get_gauges","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[10]"},{"name":"","type":"int128[10]"}],"gas":26055},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}],"gas":41626},{"stateMutability":"view","type":"function","name":"get_virtual_price_from_lp_token","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":5321},{"stateMutability":"view","type":"function","name":"get_A","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3139},{"stateMutability":"view","type":"function","name":"get_D","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3169},{"stateMutability":"view","type":"function","name":"get_gamma","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3199},{"stateMutability":"view","type":"function","name":"get_fees","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[4]"}],"gas":10333},{"stateMutability":"view","type":"function","name":"get_admin_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}],"gas":85771},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"gas":23608},{"stateMutability":"view","type":"function","name":"get_pool_name","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"string"}],"gas":13576},{"stateMutability":"view","type":"function","name":"get_coin_swap_count","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3224},{"stateMutability":"view","type":"function","name":"get_coin_swap_complement","inputs":[{"name":"_coin","type":"address"},{"name":"_index","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3299},{"stateMutability":"nonpayable","type":"function","name":"add_pool","inputs":[{"name":"_pool","type":"address"},{"name":"_n_coins","type":"uint256"},{"name":"_lp_token","type":"address"},{"name":"_gauge","type":"address"},{"name":"_zap","type":"address"},{"name":"_decimals","type":"uint256"},{"name":"_name","type":"string"}],"outputs":[],"gas":18586944},{"stateMutability":"nonpayable","type":"function","name":"remove_pool","inputs":[{"name":"_pool","type":"address"}],"outputs":[],"gas":399675363514},{"stateMutability":"nonpayable","type":"function","name":"set_liquidity_gauges","inputs":[{"name":"_pool","type":"address"},{"name":"_liquidity_gauges","type":"address[10]"}],"outputs":[],"gas":422284},{"stateMutability":"nonpayable","type":"function","name":"batch_set_liquidity_gauges","inputs":[{"name":"_pools","type":"address[10]"},{"name":"_liquidity_gauges","type":"address[10]"}],"outputs":[],"gas":444084},{"stateMutability":"view","type":"function","name":"address_provider","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3126},{"stateMutability":"view","type":"function","name":"pool_list","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3201},{"stateMutability":"view","type":"function","name":"pool_count","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3186},{"stateMutability":"view","type":"function","name":"coin_count","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3216},{"stateMutability":"view","type":"function","name":"get_coin","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3291},{"stateMutability":"view","type":"function","name":"get_pool_from_lp_token","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":3548},{"stateMutability":"view","type":"function","name":"get_lp_token","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":3578},{"stateMutability":"view","type":"function","name":"get_zap","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":3608},{"stateMutability":"view","type":"function","name":"last_updated","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3366}]

6f7fffffffffffffffffffffffffffffff60405260206125a760c03960c0518060a01c6125a257809050610140526101405160005561258a56600436101561000d57611974565b60046000601c376f7fffffffffffffffffffffffffffffff6040526000513461254c5763a87df06c8114156100475760006101805261005b565b636982eb0b8114156100be57604435610180525b6004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526101605161014051186101a0526001610180516201000081101561254c5702620200086101a05160e05260c052604060c02001546101c05260206101c0f35b63940494f18114156100fe576004358060a01c61254c5780905061014052600a620100026101405160e05260c052604060c0200154610160526020610160f35b639ac90d3d8114156101f5576004358060a01c61254c57809050610140526101003661016037600a620100026101405160e05260c052604060c02001546102605261028060006008818352015b6102605161028051141561015e576101ab565b600161028051600881101561254c57026002620100026101405160e05260c052604060c02001015461016061028051600881101561254c576020020152815160010180835281141561014b575b50506101605161028052610180516102a0526101a0516102c0526101c0516102e0526101e05161030052610200516103205261022051610340526102405161036052610100610280f35b6352b5155581141561034f576004358060a01c61254c57809050610140526001620100026101405160e05260c052604060c0200154610160526101003661018037600a620100026101405160e05260c052604060c0200154604051811161254c57610280526102a060006008818352015b610280516102a051141561027957610305565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86102a05180820280607f1d8160801d141561254c578090509050905060008112156102cd5761016051816000031c6102d4565b61016051811b5b9050610100808206905090506101806102a051600881101561254c5760200201528151600101808352811415610266575b5050610180516102a0526101a0516102c0526101c0516102e0526101e0516103005261020051610320526102205161034052610240516103605261026051610380526101006102a0f35b6356059ffb81141561048a576004358060a01c61254c578090506101405261028036610160376103e06000600a818352015b60016103e051600a81101561254c57026202000a6101405160e05260c052604060c020015461040052610400516103b7576103e0565b610400516101606103e051600a81101561254c5760200201528151600101808352811415610381575b5050610160516103e05261018051610400526101a051610420526101c051610440526101e051610460526102005161048052610220516104a052610240516104c052610260516104e05261028051610500526102a051610520526102c051610540526102e051610560526103005161058052610320516105a052610340516105c052610360516105e05261038051610600526103a051610620526103c051610640526102806103e0f35b6392e3cc2d81141561050c576004358060a01c61254c578090506102c0526102c051610140526104bb6102e061197a565b6102e080516103e0528060200151610400528060400151610420528060600151610440528060800151610460528060a00151610480528060c001516104a0528060e001516104c052506101006103e0f35b63c5b7074a811415610570576004358060a01c61254c578090506101405263bb7b8b80610160526020610160600461017c620200066101405160e05260c052604060c020545afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b6355b30b198114156105c4576004358060a01c61254c578090506101405263f446c1d0610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b63e3663c99811415610618576004358060a01c61254c5780905061014052630f529ba2610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b637c400ccf81141561066c576004358060a01c61254c578090506101405263b1373929610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b637cdb72b081141561074d576004358060a01c61254c578090506101405263ddca3f43610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516102605263fee3f7f96101a05260206101a060046101bc610140515afa1561254c57601f3d111561254c576101a051610280526392526c0c6101e05260206101e060046101fc610140515afa1561254c57601f3d111561254c576101e0516102a05263ee8de675610220526020610220600461023c610140515afa1561254c57601f3d111561254c57610220516102c0526080610260f35b63c11e45b8811415610954576004358060a01c61254c578090506102c0526102c0516101405261077e6103e061197a565b6103e080516102e0528060200151610300528060400151610320528060600151610340528060800151610360528060a00151610380528060c001516103a0528060e001516103c05250600a620100026102c05160e05260c052604060c02001546103e05261040060006008818352015b600161040051600881101561254c57026002620100026102c05160e05260c052604060c020010154610420526103e05161040051141561082d5761090a565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61042051141561088e576102c051316102e061040051600881101561254c57602002015180821061254c57808203905090506102e061040051600881101561254c5760200201526108fa565b6370a08231610440526102c051610460526020610440602461045c610420515afa1561254c57601f3d111561254c57610440516102e061040051600881101561254c57602002015180821061254c57808203905090506102e061040051600881101561254c5760200201525b81516001018083528114156107ee575b50506102e051610400526103005161042052610320516104405261034051610460526103605161048052610380516104a0526103a0516104c0526103c0516104e052610100610400f35b63eb85226d811415610aaa576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526060366101a03761020060006008818352015b600161020051600881101561254c57026002620100026101405160e05260c052604060c02001015461022052610220516109e85760006101e052610a61565b61016051610220511415610a0357610200516101a052610a24565b61018051610220511415610a1e57610200516101c052610a23565b610a51565b5b6101e05115610a4a575050506101a051610240526101c051610260526040610240610aa8565b60016101e0525b81516001018083528114156109a9575b50506308c379a0610200526020610220526013610240527f4e6f20617661696c61626c65206d61726b6574000000000000000000000000006102605261024050606461021cfd5bf35b635c911741811415610b80576004358060a01c61254c5780905061014052610160806020808252600b620100026101405160e05260c052604060c0200181840180828082602082540161012060006003818352015b82610120516020021115610b1257610b33565b61012051850154610120516020028501528151600101808352811415610aff575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905080905090509050610160f35b6398aede16811415610bc0576004358060a01c61254c57809050610140526002620100046101405160e05260c052604060c0200154610160526020610160f35b635d211982811415610c1f576004358060a01c61254c578090506101405260016024356f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c020010154610160526020610160f35b63c927255f811415610f6b576004358060a01c61254c578090506103e0526044358060a01c61254c57809050610400526064358060a01c61254c57809050610420526084358060a01c61254c578090506104405260c435600401604081351161254c5780803560200180826104603750505063f851a4406104c05260206104c060046104dc6000545afa1561254c57601f3d111561254c576104c05133141561254c57600061040051181561254c576002620100026103e05160e05260c052604060c020015461254c57620200066104005160e05260c052604060c0205461254c5762010001546104c0526103e05160016104c0516201000081101561254c5702600101556104c0516001818183011061254c578082019050905062010001556104c051620100026103e05160e05260c052604060c02055602435600a620100026103e05160e05260c052604060c020015561046080600b620100026103e05160e05260c052604060c02001602082510161012060006003818352015b82610120516020021115610daf57610dd0565b61012051602002850151610120518501558151600101808352811415610d9c575b5050505050506103e051620200066104005160e05260c052604060c0205561040051620200076103e05160e05260c052604060c020556103e0516101e05260243561020052610e206105e0611f55565b6105e080516104e0528060200151610500528060400151610520528060600151610540528060800151610560528060a00151610580528060c001516105a0528060e001516105c0525060a4356105e0526105e051610ed3576104e0516101405261050051610160526105205161018052610540516101a052610560516101c052610580516101e0526105a051610200526105c0516102205260243561024052610eca6106006121e3565b610600516105e0525b6105e0516001620100026103e05160e05260c052604060c02001556000610440511815610f1357610440516202000b6103e05160e05260c052604060c020555b6000610420511815610f3857610420516202000a6103e05160e05260c052604060c020555b426202000c556103e0517f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea66000610600a2005b63474932b0811415611355576004358060a01c61254c578090506102e05263f851a440610300526020610300600461031c6000545afa1561254c57601f3d111561254c576103005133141561254c5760006002620100026102e05160e05260c052604060c0200154181561254c57600062020006620200076102e05160e05260c052604060c0205460e05260c052604060c020556000620200076102e05160e05260c052604060c02055620100026102e05160e05260c052604060c02054610300526201000154600180821061254c578082039050905061032052610320516103005110156110a1576001610320516201000081101561254c57026001015461034052610340516001610300516201000081101561254c57026001015561030051620100026103405160e05260c052604060c020555b60006001610320516201000081101561254c57026001015561032051620100015560006001620100026102e05160e05260c052604060c02001556000600a620100026102e05160e05260c052604060c020015560006103405261034080600b620100026102e05160e05260c052604060c02001602082510161012060006001818352015b8261012051602002111561113857611159565b61012051602002850151610120518501558151600101808352811415611125575b505050505050610100366103403761044060006008818352015b600161044051600881101561254c57026002620100026102e05160e05260c052604060c02001015461034061044051600881101561254c57602002015261034061044051600881101561254c5760200201516111ce57611229565b6000600161044051600881101561254c57026002620100026102e05160e05260c052604060c02001015561034061044051600881101561254c57602002015161014052611219611c8a565b8151600101808352811415611173575b505061044060006008818352015b61034061044051600881101561254c576020020151610460526104605161125d576112ed565b610440516001818183011061254c5780820190509050610480526104a0610480516008818352015b6103406104a051600881101561254c5760200201516104c0526104c0516112ab576112db565b6102e0516102205261046051610240526104c051610260526112cb61230b565b8151600101808352811415611285575b50508151600101808352811415611237575b505060006202000b6102e05160e05260c052604060c0205418156113225760006202000b6102e05160e05260c052604060c020555b426202000c556102e0517f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f6000610440a2005b63ef6b9788811415611580576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526064358060a01c61254c578090506101a0526084358060a01c61254c578090506101c05260a4358060a01c61254c578090506101e05260c4358060a01c61254c578090506102005260e4358060a01c61254c5780905061022052610104358060a01c61254c5780905061024052610124358060a01c61254c5780905061026052610144358060a01c61254c578090506102805263f851a4406102a05260206102a060046102bc6000545afa1561254c57601f3d111561254c576102a05133141561254c57620200076101405160e05260c052604060c020546102a0526102c06000600a818352015b6101606102c051600a81101561254c5760200201516102e05260006102e0511815611507576102a0516382c63066610300526020610300600461031c6102e0515afa1561254c57601f3d111561254c5761030051141561254c576102e05160016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200155611566565b600060016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200154181561156057600060016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200155611565565b611576565b5b815160010180835281141561147f575b5050426202000c55005b63fec61ef58114156117f3576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526064358060a01c61254c578090506101a0526084358060a01c61254c578090506101c05260a4358060a01c61254c578090506101e05260c4358060a01c61254c578090506102005260e4358060a01c61254c5780905061022052610104358060a01c61254c5780905061024052610124358060a01c61254c5780905061026052610144358060a01c61254c5780905061028052610164358060a01c61254c578090506102a052610184358060a01c61254c578090506102c0526101a4358060a01c61254c578090506102e0526101c4358060a01c61254c57809050610300526101e4358060a01c61254c5780905061032052610204358060a01c61254c5780905061034052610224358060a01c61254c5780905061036052610244358060a01c61254c5780905061038052610264358060a01c61254c578090506103a05263f851a4406103c05260206103c060046103dc6000545afa1561254c57601f3d111561254c576103c05133141561254c576103c06000600a818352015b6101406103c051600a81101561254c5760200201516103e0526103e051611763576117e9565b6102806103c051600a81101561254c57602002015161040052620200076103e05160e05260c052604060c020546382c63066610420526020610420600461043c610400515afa1561254c57601f3d111561254c5761042051141561254c57610400516202000a6103e05160e05260c052604060c02055815160010180835281141561173d575b5050426202000c55005b63ce50c2e781141561180d57600054610140526020610140f35b633a1d5d8e8114156118395760016004356201000081101561254c570260010154610140526020610140f35b63956aae3a811415611855576201000154610140526020610140f35b635075770f811415611871576201000354610140526020610140f35b6345f0db2481141561189f5760016004356201000081101561254c5702620100050154610140526020610140f35b63bdf475c38114156118dc576004358060a01c61254c5780905061014052620200066101405160e05260c052604060c02054610160526020610160f35b6337951049811415611919576004358060a01c61254c5780905061014052620200076101405160e05260c052604060c02054610160526020610160f35b6355335d7b811415611956576004358060a01c61254c57809050610140526202000b6101405160e05260c052604060c02054610160526020610160f35b6368900961811415611972576202000c54610140526020610140f35b505b60006000fd5b610100366101603761026060006008818352015b600161026051600881101561254c57026002620100026101405160e05260c052604060c0200101546119cb57600061026051181561254c57611a23565b634903b0d161028052610260516102a0526020610280602461029c610140515afa1561254c57601f3d111561254c576102805161016061026051600881101561254c576020020152815160010180835281141561198e575b50506101605181526101805181602001526101a05181604001526101c05181606001526101e0518160800152610200518160a00152610220518160c00152610240518160e0015250565b6001620100046101405160e05260c052604060c0200154611ae15762010003546101605261016051620100046101405160e05260c052604060c02055610140516001610160516201000081101561254c57026201000501556201000380546001818183011061254c57808201905090508155505b6001620100046101405160e05260c052604060c0200180546001818183011061254c5780820190509050815550565b6002620100046101405160e05260c052604060c02001546101a0526101605160016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101556002620100046101405160e05260c052604060c0200180546001818183011061254c57808201905090508155506002620100046101605160e05260c052604060c02001546101c0526101405160016101c0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101605160e05260c052604060c0200101556002620100046101605160e05260c052604060c0200180546001818183011061254c578082019050905081555061016051610140511015611c58576101c05160801b6101a051818183011061254c5780820190509050620200056101805160e05260c052604060c02055611c88565b6101a05160801b6101c051818183011061254c5780820190509050620200056101805160e05260c052604060c020555b565b6001620100046101405160e05260c052604060c020018054600180821061254c57808203905090508155506001620100046101405160e05260c052604060c0200154611d9a57620100038054600180821061254c5780820390509050815550620100035461016052620100046101405160e05260c052604060c020546101805261016051610180511015611d69576001610160516201000081101561254c57026201000501546101a0526101a0516001610180516201000081101561254c570262010005015561018051620100046101a05160e05260c052604060c020555b6000620100046101405160e05260c052604060c0205560006001610160516201000081101561254c57026201000501555b565b6002620100046101405160e05260c052604060c020018054600180821061254c57808203905090508155506002620100046101405160e05260c052604060c02001546101a0526101a051610180511015611f1a5760016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101546101c0526101c05161014051186101e052620200056101e05160e05260c052604060c02054610200526101c051610140511015611e95576102005160801c60801b61018051818183011061254c5780820190509050620200056101e05160e05260c052604060c02055611ede565b6101805160801b6102005170010000000000000000000000000000000080820690509050818183011061254c5780820190509050620200056101e05160e05260c052604060c020555b6101c0516001610180516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101555b600060016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c020010155565b610120366102203761034060006008818352015b61020051610340511415611f7c57612013565b63c66106576103605261034051610380526020610360602461037c6101e0515afa1561254c57601f3d111561254c57610360518060a01c61254c578090506103205261032051600161034051600881101561254c57026002620100026101e05160e05260c052604060c0200101556103205161022061034051600881101561254c5760200201528151600101808352811415611f69575b505061034060006008818352015b6102005161034051141561203457612199565b61022061034051600881101561254c57602002015161014052612055611a6d565b610340516001818183011061254c578082019050905061036052610380610360516008818352015b6102005161038051141561209057612187565b61022061038051600881101561254c57602002015161022061034051600881101561254c576020020151186103a052620200096103a05160e05260c052604060c020546103c0526101e05160016103c0516201000081101561254c5702620200086103a05160e05260c052604060c02001556103c0516001818183011061254c5780820190509050620200096103a05160e05260c052604060c020556103c0516121775761022061038051600881101561254c5760200201516101405261022061034051600881101561254c576020020151610160526103a05161018052612176611b10565b5b815160010180835281141561207d575b50508151600101808352811415612021575b50506102205181526102405181602001526102605181604001526102805181606001526102a05181608001526102c0518160a001526102e0518160c00152610300518160e0015250565b6040366102603761024051604051811161254c576102a0526102c060006008818352015b6102a0516102c051141561221a57612300565b6101406102c051600881101561254c5760200201516102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102e051141561225d5760126102805261229a565b63313ce567610300526020610300600461031c6102e0515afa1561254c57601f3d111561254c57610300516102805261010061028051101561254c575b61026080516102c051600880820280607f1d8160801d141561254c578090509050905060008112156122d45761028051816000031c6122db565b61028051811b5b9050818183011061254c57808201905090508152508151600101808352811415612207575b505061026051815250565b61026051610240511861028052620200096102805160e05260c052604060c02054600180821061254c57808203905090506102a0526102a05161244357620200056102805160e05260c052604060c020546102c052610260516102405110156123cf57610240516101405261026051610160526102c05170010000000000000000000000000000000080820690509050610180526123a7611d9c565b610260516101405261024051610160526102c05160801c610180526123ca611d9c565b61242c565b610240516101405261026051610160526102c05160801c610180526123f2611d9c565b610260516101405261024051610160526102c051700100000000000000000000000000000000808206905090506101805261242b611d9c565b5b6000620200056102805160e05260c052604060c020555b6102c0600062010000818352015b6102a0516102c051111561246457612548565b6102205160016102c0516201000081101561254c5702620200086102805160e05260c052604060c02001541415612538576102a0516102c05110156124f25760016102a0516201000081101561254c5702620200086102805160e05260c052604060c020015460016102c0516201000081101561254c5702620200086102805160e05260c052604060c02001555b600060016102a0516201000081101561254c5702620200086102805160e05260c052604060c02001556102a051620200096102805160e05260c052604060c02055612548565b8151600101808352811415612451575b5050565b600080fd5b61003961258a0361003960003961003961258a036000f35b600080fd0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383

Deployed Bytecode

0x600436101561000d57611974565b60046000601c376f7fffffffffffffffffffffffffffffff6040526000513461254c5763a87df06c8114156100475760006101805261005b565b636982eb0b8114156100be57604435610180525b6004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526101605161014051186101a0526001610180516201000081101561254c5702620200086101a05160e05260c052604060c02001546101c05260206101c0f35b63940494f18114156100fe576004358060a01c61254c5780905061014052600a620100026101405160e05260c052604060c0200154610160526020610160f35b639ac90d3d8114156101f5576004358060a01c61254c57809050610140526101003661016037600a620100026101405160e05260c052604060c02001546102605261028060006008818352015b6102605161028051141561015e576101ab565b600161028051600881101561254c57026002620100026101405160e05260c052604060c02001015461016061028051600881101561254c576020020152815160010180835281141561014b575b50506101605161028052610180516102a0526101a0516102c0526101c0516102e0526101e05161030052610200516103205261022051610340526102405161036052610100610280f35b6352b5155581141561034f576004358060a01c61254c57809050610140526001620100026101405160e05260c052604060c0200154610160526101003661018037600a620100026101405160e05260c052604060c0200154604051811161254c57610280526102a060006008818352015b610280516102a051141561027957610305565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86102a05180820280607f1d8160801d141561254c578090509050905060008112156102cd5761016051816000031c6102d4565b61016051811b5b9050610100808206905090506101806102a051600881101561254c5760200201528151600101808352811415610266575b5050610180516102a0526101a0516102c0526101c0516102e0526101e0516103005261020051610320526102205161034052610240516103605261026051610380526101006102a0f35b6356059ffb81141561048a576004358060a01c61254c578090506101405261028036610160376103e06000600a818352015b60016103e051600a81101561254c57026202000a6101405160e05260c052604060c020015461040052610400516103b7576103e0565b610400516101606103e051600a81101561254c5760200201528151600101808352811415610381575b5050610160516103e05261018051610400526101a051610420526101c051610440526101e051610460526102005161048052610220516104a052610240516104c052610260516104e05261028051610500526102a051610520526102c051610540526102e051610560526103005161058052610320516105a052610340516105c052610360516105e05261038051610600526103a051610620526103c051610640526102806103e0f35b6392e3cc2d81141561050c576004358060a01c61254c578090506102c0526102c051610140526104bb6102e061197a565b6102e080516103e0528060200151610400528060400151610420528060600151610440528060800151610460528060a00151610480528060c001516104a0528060e001516104c052506101006103e0f35b63c5b7074a811415610570576004358060a01c61254c578090506101405263bb7b8b80610160526020610160600461017c620200066101405160e05260c052604060c020545afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b6355b30b198114156105c4576004358060a01c61254c578090506101405263f446c1d0610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b63e3663c99811415610618576004358060a01c61254c5780905061014052630f529ba2610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b637c400ccf81141561066c576004358060a01c61254c578090506101405263b1373929610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516101a05260206101a0f35b637cdb72b081141561074d576004358060a01c61254c578090506101405263ddca3f43610160526020610160600461017c610140515afa1561254c57601f3d111561254c57610160516102605263fee3f7f96101a05260206101a060046101bc610140515afa1561254c57601f3d111561254c576101a051610280526392526c0c6101e05260206101e060046101fc610140515afa1561254c57601f3d111561254c576101e0516102a05263ee8de675610220526020610220600461023c610140515afa1561254c57601f3d111561254c57610220516102c0526080610260f35b63c11e45b8811415610954576004358060a01c61254c578090506102c0526102c0516101405261077e6103e061197a565b6103e080516102e0528060200151610300528060400151610320528060600151610340528060800151610360528060a00151610380528060c001516103a0528060e001516103c05250600a620100026102c05160e05260c052604060c02001546103e05261040060006008818352015b600161040051600881101561254c57026002620100026102c05160e05260c052604060c020010154610420526103e05161040051141561082d5761090a565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61042051141561088e576102c051316102e061040051600881101561254c57602002015180821061254c57808203905090506102e061040051600881101561254c5760200201526108fa565b6370a08231610440526102c051610460526020610440602461045c610420515afa1561254c57601f3d111561254c57610440516102e061040051600881101561254c57602002015180821061254c57808203905090506102e061040051600881101561254c5760200201525b81516001018083528114156107ee575b50506102e051610400526103005161042052610320516104405261034051610460526103605161048052610380516104a0526103a0516104c0526103c0516104e052610100610400f35b63eb85226d811415610aaa576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526060366101a03761020060006008818352015b600161020051600881101561254c57026002620100026101405160e05260c052604060c02001015461022052610220516109e85760006101e052610a61565b61016051610220511415610a0357610200516101a052610a24565b61018051610220511415610a1e57610200516101c052610a23565b610a51565b5b6101e05115610a4a575050506101a051610240526101c051610260526040610240610aa8565b60016101e0525b81516001018083528114156109a9575b50506308c379a0610200526020610220526013610240527f4e6f20617661696c61626c65206d61726b6574000000000000000000000000006102605261024050606461021cfd5bf35b635c911741811415610b80576004358060a01c61254c5780905061014052610160806020808252600b620100026101405160e05260c052604060c0200181840180828082602082540161012060006003818352015b82610120516020021115610b1257610b33565b61012051850154610120516020028501528151600101808352811415610aff575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905080905090509050610160f35b6398aede16811415610bc0576004358060a01c61254c57809050610140526002620100046101405160e05260c052604060c0200154610160526020610160f35b635d211982811415610c1f576004358060a01c61254c578090506101405260016024356f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c020010154610160526020610160f35b63c927255f811415610f6b576004358060a01c61254c578090506103e0526044358060a01c61254c57809050610400526064358060a01c61254c57809050610420526084358060a01c61254c578090506104405260c435600401604081351161254c5780803560200180826104603750505063f851a4406104c05260206104c060046104dc6000545afa1561254c57601f3d111561254c576104c05133141561254c57600061040051181561254c576002620100026103e05160e05260c052604060c020015461254c57620200066104005160e05260c052604060c0205461254c5762010001546104c0526103e05160016104c0516201000081101561254c5702600101556104c0516001818183011061254c578082019050905062010001556104c051620100026103e05160e05260c052604060c02055602435600a620100026103e05160e05260c052604060c020015561046080600b620100026103e05160e05260c052604060c02001602082510161012060006003818352015b82610120516020021115610daf57610dd0565b61012051602002850151610120518501558151600101808352811415610d9c575b5050505050506103e051620200066104005160e05260c052604060c0205561040051620200076103e05160e05260c052604060c020556103e0516101e05260243561020052610e206105e0611f55565b6105e080516104e0528060200151610500528060400151610520528060600151610540528060800151610560528060a00151610580528060c001516105a0528060e001516105c0525060a4356105e0526105e051610ed3576104e0516101405261050051610160526105205161018052610540516101a052610560516101c052610580516101e0526105a051610200526105c0516102205260243561024052610eca6106006121e3565b610600516105e0525b6105e0516001620100026103e05160e05260c052604060c02001556000610440511815610f1357610440516202000b6103e05160e05260c052604060c020555b6000610420511815610f3857610420516202000a6103e05160e05260c052604060c020555b426202000c556103e0517f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea66000610600a2005b63474932b0811415611355576004358060a01c61254c578090506102e05263f851a440610300526020610300600461031c6000545afa1561254c57601f3d111561254c576103005133141561254c5760006002620100026102e05160e05260c052604060c0200154181561254c57600062020006620200076102e05160e05260c052604060c0205460e05260c052604060c020556000620200076102e05160e05260c052604060c02055620100026102e05160e05260c052604060c02054610300526201000154600180821061254c578082039050905061032052610320516103005110156110a1576001610320516201000081101561254c57026001015461034052610340516001610300516201000081101561254c57026001015561030051620100026103405160e05260c052604060c020555b60006001610320516201000081101561254c57026001015561032051620100015560006001620100026102e05160e05260c052604060c02001556000600a620100026102e05160e05260c052604060c020015560006103405261034080600b620100026102e05160e05260c052604060c02001602082510161012060006001818352015b8261012051602002111561113857611159565b61012051602002850151610120518501558151600101808352811415611125575b505050505050610100366103403761044060006008818352015b600161044051600881101561254c57026002620100026102e05160e05260c052604060c02001015461034061044051600881101561254c57602002015261034061044051600881101561254c5760200201516111ce57611229565b6000600161044051600881101561254c57026002620100026102e05160e05260c052604060c02001015561034061044051600881101561254c57602002015161014052611219611c8a565b8151600101808352811415611173575b505061044060006008818352015b61034061044051600881101561254c576020020151610460526104605161125d576112ed565b610440516001818183011061254c5780820190509050610480526104a0610480516008818352015b6103406104a051600881101561254c5760200201516104c0526104c0516112ab576112db565b6102e0516102205261046051610240526104c051610260526112cb61230b565b8151600101808352811415611285575b50508151600101808352811415611237575b505060006202000b6102e05160e05260c052604060c0205418156113225760006202000b6102e05160e05260c052604060c020555b426202000c556102e0517f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f6000610440a2005b63ef6b9788811415611580576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526064358060a01c61254c578090506101a0526084358060a01c61254c578090506101c05260a4358060a01c61254c578090506101e05260c4358060a01c61254c578090506102005260e4358060a01c61254c5780905061022052610104358060a01c61254c5780905061024052610124358060a01c61254c5780905061026052610144358060a01c61254c578090506102805263f851a4406102a05260206102a060046102bc6000545afa1561254c57601f3d111561254c576102a05133141561254c57620200076101405160e05260c052604060c020546102a0526102c06000600a818352015b6101606102c051600a81101561254c5760200201516102e05260006102e0511815611507576102a0516382c63066610300526020610300600461031c6102e0515afa1561254c57601f3d111561254c5761030051141561254c576102e05160016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200155611566565b600060016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200154181561156057600060016102c051600a81101561254c57026202000a6101405160e05260c052604060c0200155611565565b611576565b5b815160010180835281141561147f575b5050426202000c55005b63fec61ef58114156117f3576004358060a01c61254c57809050610140526024358060a01c61254c57809050610160526044358060a01c61254c57809050610180526064358060a01c61254c578090506101a0526084358060a01c61254c578090506101c05260a4358060a01c61254c578090506101e05260c4358060a01c61254c578090506102005260e4358060a01c61254c5780905061022052610104358060a01c61254c5780905061024052610124358060a01c61254c5780905061026052610144358060a01c61254c5780905061028052610164358060a01c61254c578090506102a052610184358060a01c61254c578090506102c0526101a4358060a01c61254c578090506102e0526101c4358060a01c61254c57809050610300526101e4358060a01c61254c5780905061032052610204358060a01c61254c5780905061034052610224358060a01c61254c5780905061036052610244358060a01c61254c5780905061038052610264358060a01c61254c578090506103a05263f851a4406103c05260206103c060046103dc6000545afa1561254c57601f3d111561254c576103c05133141561254c576103c06000600a818352015b6101406103c051600a81101561254c5760200201516103e0526103e051611763576117e9565b6102806103c051600a81101561254c57602002015161040052620200076103e05160e05260c052604060c020546382c63066610420526020610420600461043c610400515afa1561254c57601f3d111561254c5761042051141561254c57610400516202000a6103e05160e05260c052604060c02055815160010180835281141561173d575b5050426202000c55005b63ce50c2e781141561180d57600054610140526020610140f35b633a1d5d8e8114156118395760016004356201000081101561254c570260010154610140526020610140f35b63956aae3a811415611855576201000154610140526020610140f35b635075770f811415611871576201000354610140526020610140f35b6345f0db2481141561189f5760016004356201000081101561254c5702620100050154610140526020610140f35b63bdf475c38114156118dc576004358060a01c61254c5780905061014052620200066101405160e05260c052604060c02054610160526020610160f35b6337951049811415611919576004358060a01c61254c5780905061014052620200076101405160e05260c052604060c02054610160526020610160f35b6355335d7b811415611956576004358060a01c61254c57809050610140526202000b6101405160e05260c052604060c02054610160526020610160f35b6368900961811415611972576202000c54610140526020610140f35b505b60006000fd5b610100366101603761026060006008818352015b600161026051600881101561254c57026002620100026101405160e05260c052604060c0200101546119cb57600061026051181561254c57611a23565b634903b0d161028052610260516102a0526020610280602461029c610140515afa1561254c57601f3d111561254c576102805161016061026051600881101561254c576020020152815160010180835281141561198e575b50506101605181526101805181602001526101a05181604001526101c05181606001526101e0518160800152610200518160a00152610220518160c00152610240518160e0015250565b6001620100046101405160e05260c052604060c0200154611ae15762010003546101605261016051620100046101405160e05260c052604060c02055610140516001610160516201000081101561254c57026201000501556201000380546001818183011061254c57808201905090508155505b6001620100046101405160e05260c052604060c0200180546001818183011061254c5780820190509050815550565b6002620100046101405160e05260c052604060c02001546101a0526101605160016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101556002620100046101405160e05260c052604060c0200180546001818183011061254c57808201905090508155506002620100046101605160e05260c052604060c02001546101c0526101405160016101c0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101605160e05260c052604060c0200101556002620100046101605160e05260c052604060c0200180546001818183011061254c578082019050905081555061016051610140511015611c58576101c05160801b6101a051818183011061254c5780820190509050620200056101805160e05260c052604060c02055611c88565b6101a05160801b6101c051818183011061254c5780820190509050620200056101805160e05260c052604060c020555b565b6001620100046101405160e05260c052604060c020018054600180821061254c57808203905090508155506001620100046101405160e05260c052604060c0200154611d9a57620100038054600180821061254c5780820390509050815550620100035461016052620100046101405160e05260c052604060c020546101805261016051610180511015611d69576001610160516201000081101561254c57026201000501546101a0526101a0516001610180516201000081101561254c570262010005015561018051620100046101a05160e05260c052604060c020555b6000620100046101405160e05260c052604060c0205560006001610160516201000081101561254c57026201000501555b565b6002620100046101405160e05260c052604060c020018054600180821061254c57808203905090508155506002620100046101405160e05260c052604060c02001546101a0526101a051610180511015611f1a5760016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101546101c0526101c05161014051186101e052620200056101e05160e05260c052604060c02054610200526101c051610140511015611e95576102005160801c60801b61018051818183011061254c5780820190509050620200056101e05160e05260c052604060c02055611ede565b6101805160801b6102005170010000000000000000000000000000000080820690509050818183011061254c5780820190509050620200056101e05160e05260c052604060c020555b6101c0516001610180516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c0200101555b600060016101a0516f7fffffffffffffffffffffffffffffff81101561254c57026003620100046101405160e05260c052604060c020010155565b610120366102203761034060006008818352015b61020051610340511415611f7c57612013565b63c66106576103605261034051610380526020610360602461037c6101e0515afa1561254c57601f3d111561254c57610360518060a01c61254c578090506103205261032051600161034051600881101561254c57026002620100026101e05160e05260c052604060c0200101556103205161022061034051600881101561254c5760200201528151600101808352811415611f69575b505061034060006008818352015b6102005161034051141561203457612199565b61022061034051600881101561254c57602002015161014052612055611a6d565b610340516001818183011061254c578082019050905061036052610380610360516008818352015b6102005161038051141561209057612187565b61022061038051600881101561254c57602002015161022061034051600881101561254c576020020151186103a052620200096103a05160e05260c052604060c020546103c0526101e05160016103c0516201000081101561254c5702620200086103a05160e05260c052604060c02001556103c0516001818183011061254c5780820190509050620200096103a05160e05260c052604060c020556103c0516121775761022061038051600881101561254c5760200201516101405261022061034051600881101561254c576020020151610160526103a05161018052612176611b10565b5b815160010180835281141561207d575b50508151600101808352811415612021575b50506102205181526102405181602001526102605181604001526102805181606001526102a05181608001526102c0518160a001526102e0518160c00152610300518160e0015250565b6040366102603761024051604051811161254c576102a0526102c060006008818352015b6102a0516102c051141561221a57612300565b6101406102c051600881101561254c5760200201516102e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6102e051141561225d5760126102805261229a565b63313ce567610300526020610300600461031c6102e0515afa1561254c57601f3d111561254c57610300516102805261010061028051101561254c575b61026080516102c051600880820280607f1d8160801d141561254c578090509050905060008112156122d45761028051816000031c6122db565b61028051811b5b9050818183011061254c57808201905090508152508151600101808352811415612207575b505061026051815250565b61026051610240511861028052620200096102805160e05260c052604060c02054600180821061254c57808203905090506102a0526102a05161244357620200056102805160e05260c052604060c020546102c052610260516102405110156123cf57610240516101405261026051610160526102c05170010000000000000000000000000000000080820690509050610180526123a7611d9c565b610260516101405261024051610160526102c05160801c610180526123ca611d9c565b61242c565b610240516101405261026051610160526102c05160801c610180526123f2611d9c565b610260516101405261024051610160526102c051700100000000000000000000000000000000808206905090506101805261242b611d9c565b5b6000620200056102805160e05260c052604060c020555b6102c0600062010000818352015b6102a0516102c051111561246457612548565b6102205160016102c0516201000081101561254c5702620200086102805160e05260c052604060c02001541415612538576102a0516102c05110156124f25760016102a0516201000081101561254c5702620200086102805160e05260c052604060c020015460016102c0516201000081101561254c5702620200086102805160e05260c052604060c02001555b600060016102a0516201000081101561254c5702620200086102805160e05260c052604060c02001556102a051620200096102805160e05260c052604060c02055612548565b8151600101808352811415612451575b5050565b600080fd

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

0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383

-----Decoded View---------------
Arg [0] : _address_provider (address): 0x0000000022D53366457F9d5E68Ec105046FC4383

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.