Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 71567844 | 1050 days ago | 0 ETH | ||||
| 71567816 | 1050 days ago | 0 ETH | ||||
| 71553060 | 1051 days ago | 0 ETH | ||||
| 70983809 | 1052 days ago | 0 ETH | ||||
| 69230221 | 1058 days ago | 0 ETH | ||||
| 68673565 | 1059 days ago | 0 ETH | ||||
| 68546299 | 1060 days ago | 0 ETH | ||||
| 68426054 | 1060 days ago | 0 ETH | ||||
| 67424605 | 1063 days ago | 0 ETH | ||||
| 67121454 | 1064 days ago | 0 ETH | ||||
| 66771695 | 1066 days ago | 0 ETH | ||||
| 66771165 | 1066 days ago | 0 ETH | ||||
| 66507819 | 1066 days ago | 0 ETH | ||||
| 66127300 | 1068 days ago | 0 ETH | ||||
| 65172858 | 1071 days ago | 0 ETH | ||||
| 63829613 | 1075 days ago | 0 ETH | ||||
| 63628661 | 1075 days ago | 0 ETH | ||||
| 63263483 | 1076 days ago | 0 ETH | ||||
| 61616853 | 1081 days ago | 0 ETH | ||||
| 61344928 | 1082 days ago | 0 ETH | ||||
| 61265157 | 1083 days ago | 0 ETH | ||||
| 60692616 | 1084 days ago | 0 ETH | ||||
| 60568118 | 1085 days ago | 0 ETH | ||||
| 60501201 | 1085 days ago | 0 ETH | ||||
| 59995862 | 1087 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
L2Migrator
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import {L2ArbitrumMessenger} from "./L2ArbitrumMessenger.sol";
import {IMigrator} from "../../interfaces/IMigrator.sol";
import "../../proxy/ManagerProxyTarget.sol";
import "@openzeppelin/contracts/proxy/Clones.sol";
interface IBondingManager {
function bondForWithHint(
uint256 _amount,
address _owner,
address _to,
address _oldDelegateNewPosPrev,
address _oldDelegateNewPosNext,
address _newDelegateNewPosPrev,
address _newDelegateNewPosNext
) external;
}
interface ITicketBroker {
function fundDepositAndReserveFor(
address _addr,
uint256 _depositAmount,
uint256 _reserveAmount
) external payable;
}
interface IMerkleSnapshot {
function verify(
bytes32 _id,
bytes32[] memory _proof,
bytes32 _leaf
) external view returns (bool);
}
interface IDelegatorPool {
function initialize(address _bondingManager) external;
function claim(address _addr, uint256 _stake) external;
}
interface ApproveLike {
function approve(address _addr, uint256 _amount) external;
}
contract L2Migrator is ManagerProxyTarget, L2ArbitrumMessenger, IMigrator {
address public bondingManagerAddr;
address public ticketBrokerAddr;
address public merkleSnapshotAddr;
address public tokenAddr;
address public l1MigratorAddr;
address public delegatorPoolImpl;
bool public claimStakeEnabled;
mapping(address => bool) public migratedDelegators;
mapping(address => address) public delegatorPools;
mapping(address => uint256) public claimedDelegatedStake;
mapping(address => mapping(uint256 => bool)) public migratedUnbondingLocks;
mapping(address => bool) public migratedSenders;
event L1MigratorUpdate(address _l1MigratorAddr);
event ControllerContractUpdate(bytes32 id, address addr);
event MigrateDelegatorFinalized(MigrateDelegatorParams params);
event MigrateUnbondingLocksFinalized(MigrateUnbondingLocksParams params);
event MigrateSenderFinalized(MigrateSenderParams params);
event DelegatorPoolImplUpdate(address _delegatorPoolImpl);
event DelegatorPoolCreated(address indexed l1Addr, address delegatorPool);
event ClaimStakeEnabled(bool _enabled);
event StakeClaimed(
address indexed delegator,
address delegate,
uint256 stake,
uint256 fees
);
/**
* @notice L2Migrator constructor. Only invokes constructor of base Manager contract with provided Controller address
* @dev This constructor will not initialize any state variables besides `controller`.
* - initialize() function must be called on a proxy that uses this implementation contract immediately after deployment
* @param _controller Address of Controller that this contract will be registered with
*/
constructor(address _controller) Manager(_controller) {}
function initialize(address _l1MigratorAddr, address _delegatorPoolImpl)
external
onlyControllerOwner
{
l1MigratorAddr = _l1MigratorAddr;
delegatorPoolImpl = _delegatorPoolImpl;
syncControllerContracts();
}
/**
* @notice Sets L1Migrator
* @param _l1MigratorAddr L1Migrator address
*/
function setL1Migrator(address _l1MigratorAddr)
external
onlyControllerOwner
{
l1MigratorAddr = _l1MigratorAddr;
emit L1MigratorUpdate(_l1MigratorAddr);
}
/**
* @notice Sets DelegatorPool implementation contract
* @param _delegatorPoolImpl DelegatorPool implementation contract
*/
function setDelegatorPoolImpl(address _delegatorPoolImpl)
external
onlyControllerOwner
{
delegatorPoolImpl = _delegatorPoolImpl;
emit DelegatorPoolImplUpdate(_delegatorPoolImpl);
}
/**
* @notice Enable/disable claimStake()
* @param _enabled True/false indicating claimStake() enabled/disabled
*/
function setClaimStakeEnabled(bool _enabled) external onlyControllerOwner {
claimStakeEnabled = _enabled;
emit ClaimStakeEnabled(_enabled);
}
/**
* @notice Called by L1Migrator to complete transcoder/delegator state migration
* @param _params L1 state relevant for migration
*/
function finalizeMigrateDelegator(MigrateDelegatorParams calldata _params)
external
onlyL1Counterpart(l1MigratorAddr)
{
require(
!migratedDelegators[_params.l1Addr],
"DELEGATOR_ALREADY_MIGRATED"
);
migratedDelegators[_params.l1Addr] = true;
if (_params.l1Addr == _params.delegate) {
// l1Addr is an orchestrator on L1:
// 1. Stake _params.stake on behalf of _params.l2Addr
// 2. Create delegator pool
// 3. Stake non-self delegated stake on behalf of the delegator pool
bondFor(_params.stake, _params.l2Addr, _params.l2Addr);
// _params.delegatedStake includes _params.stake which is the orchestrator's self-stake
// Subtract _params.stake to get the orchestrator's non-self delegated stake
uint256 nonSelfDelegatedStake = _params.delegatedStake -
_params.stake;
uint256 unclaimedNonSelfDelegatedStake = nonSelfDelegatedStake -
claimedDelegatedStake[_params.l1Addr];
if (unclaimedNonSelfDelegatedStake > 0) {
address poolAddr = Clones.clone(delegatorPoolImpl);
delegatorPools[_params.l1Addr] = poolAddr;
bondFor(
unclaimedNonSelfDelegatedStake,
poolAddr,
_params.l2Addr
);
IDelegatorPool(poolAddr).initialize(bondingManagerAddr);
emit DelegatorPoolCreated(_params.l1Addr, poolAddr);
}
} else {
// l1Addr is a delegator on L1:
// If a delegator pool exists for _params.delegate claim stake which
// was already migrated by delegate on behalf of _params.l2Addr.
// Otherwise, stake _params.stake on behalf of _params.l2Addr.
address pool = delegatorPools[_params.delegate];
if (pool != address(0)) {
// Claim stake that is held by the delegator pool
IDelegatorPool(pool).claim(_params.l2Addr, _params.stake);
} else {
bondFor(_params.stake, _params.l2Addr, _params.delegate);
}
}
claimedDelegatedStake[_params.delegate] += _params.stake;
// Use .call() since l2Addr could be a contract that needs more gas than
// the stipend provided by .transfer()
// The .call() is safe without a re-entrancy guard because this function cannot be re-entered
// by _params.l2Addr since the function can only be called by the L1Migrator via a cross-chain retryable ticket
if (_params.fees > 0) {
(bool ok, ) = _params.l2Addr.call{value: _params.fees}("");
require(ok, "FINALIZE_DELEGATOR:FAIL_FEE");
}
emit MigrateDelegatorFinalized(_params);
}
/**
* @notice Called by L1Migrator to complete unbonding locks migration
* @param _params L1 state relevant for migration
*/
function finalizeMigrateUnbondingLocks(
MigrateUnbondingLocksParams calldata _params
) external onlyL1Counterpart(l1MigratorAddr) {
uint256 unbondingLockIdsLen = _params.unbondingLockIds.length;
for (uint256 i; i < unbondingLockIdsLen; i++) {
uint256 id = _params.unbondingLockIds[i];
require(
!migratedUnbondingLocks[_params.l1Addr][id],
"UNBONDING_LOCK_ALREADY_MIGRATED"
);
migratedUnbondingLocks[_params.l1Addr][id] = true;
}
bondFor(_params.total, _params.l2Addr, _params.delegate);
emit MigrateUnbondingLocksFinalized(_params);
}
/**
* @notice Called by L1Migrator to complete sender deposit/reserve migration
* @param _params L1 state relevant for migration
*/
function finalizeMigrateSender(MigrateSenderParams calldata _params)
external
onlyL1Counterpart(l1MigratorAddr)
{
require(!migratedSenders[_params.l1Addr], "SENDER_ALREADY_MIGRATED");
migratedSenders[_params.l1Addr] = true;
// msg.value for this call must be equal to deposit + reserve amounts
ITicketBroker(ticketBrokerAddr).fundDepositAndReserveFor{
value: _params.deposit + _params.reserve
}(_params.l2Addr, _params.deposit, _params.reserve);
emit MigrateSenderFinalized(_params);
}
receive() external payable {}
/**
* @notice Completes delegator migration using a Merkle proof that a delegator's state was included in a state
* snapshot represented by a Merkle tree root
* @dev Assume that only EOAs are included in the snapshot
* Regardless of the caller of this function, the EOA from L1 will be able to access its stake on L2
* @param _delegate Address that is migrating
* @param _stake Stake of delegator on L1
* @param _fees Fees of delegator on L1
* @param _proof Merkle proof of inclusion in Merkle tree state snapshot
* @param _newDelegate Optional address of a new delegate on L2
*/
function claimStake(
address _delegate,
uint256 _stake,
uint256 _fees,
bytes32[] calldata _proof,
address _newDelegate
) external {
require(claimStakeEnabled, "CLAIM_STAKE_DISABLED");
address delegator = msg.sender;
require(!migratedDelegators[delegator], "CLAIM_STAKE:ALREADY_MIGRATED");
IMerkleSnapshot merkleSnapshot = IMerkleSnapshot(merkleSnapshotAddr);
bytes32 leaf = keccak256(
abi.encodePacked(delegator, _delegate, _stake, _fees)
);
require(
merkleSnapshot.verify(keccak256("LIP-73"), _proof, leaf),
"CLAIM_STAKE:INVALID_PROOF"
);
migratedDelegators[delegator] = true;
if (_delegate != address(0)) {
claimedDelegatedStake[_delegate] += _stake;
address pool = delegatorPools[_delegate];
address delegate = _delegate;
if (_newDelegate != address(0)) {
delegate = _newDelegate;
}
if (pool != address(0)) {
// Claim stake that is held by the delegator pool
IDelegatorPool(pool).claim(delegator, _stake);
} else {
bondFor(_stake, delegator, delegate);
}
}
// Only EOAs are included in the snapshot so we do not need to worry about
// the insufficeint gas stipend with transfer()
if (_fees > 0) {
payable(delegator).transfer(_fees);
}
emit StakeClaimed(delegator, _delegate, _stake, _fees);
}
function bondFor(
uint256 _amount,
address _owner,
address _to
) private {
IBondingManager bondingManager = IBondingManager(bondingManagerAddr);
ApproveLike(tokenAddr).approve(address(bondingManager), _amount);
bondingManager.bondForWithHint(
_amount,
_owner,
_to,
address(0),
address(0),
address(0),
address(0)
);
}
/**
* @notice Fetches addresses and sets bondingManagerAddr, ticketBrokerAddr, merkleSnapshotAddr
* if they are different from the stored addresses
*/
function syncControllerContracts() public {
// Check and update BondingManager address
bytes32 bondingManagerId = keccak256("BondingManager");
address _bondingManagerAddr = controller.getContract(bondingManagerId);
if (_bondingManagerAddr != bondingManagerAddr) {
bondingManagerAddr = _bondingManagerAddr;
emit ControllerContractUpdate(
bondingManagerId,
_bondingManagerAddr
);
}
// Check and update TicketBroker address
bytes32 ticketBrokerId = keccak256("TicketBroker");
address _ticketBrokerAddr = controller.getContract(ticketBrokerId);
if (_ticketBrokerAddr != ticketBrokerAddr) {
ticketBrokerAddr = _ticketBrokerAddr;
emit ControllerContractUpdate(ticketBrokerId, _ticketBrokerAddr);
}
// Check and update MerkleSnapshot address
bytes32 merkleSnapshotId = keccak256("MerkleSnapshot");
address _merkleSnapshotAddr = controller.getContract(merkleSnapshotId);
if (_merkleSnapshotAddr != merkleSnapshotAddr) {
merkleSnapshotAddr = _merkleSnapshotAddr;
emit ControllerContractUpdate(
merkleSnapshotId,
_merkleSnapshotAddr
);
}
// Check and update LivepeerToken address
bytes32 tokenId = keccak256("LivepeerToken");
address _tokenAddr = controller.getContract(tokenId);
if (_tokenAddr != tokenAddr) {
tokenAddr = _tokenAddr;
emit ControllerContractUpdate(tokenId, _tokenAddr);
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/Clones.sol)
pragma solidity ^0.8.0;
/**
* @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
* deploying minimal proxy contracts, also known as "clones".
*
* > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
* > a minimal bytecode implementation that delegates all calls to a known, fixed address.
*
* The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
* (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
* deterministic method.
*
* _Available since v3.4._
*/
library Clones {
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create opcode, which should never revert.
*/
function clone(address implementation) internal returns (address instance) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
instance := create(0, ptr, 0x37)
}
require(instance != address(0), "ERC1167: create failed");
}
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create2 opcode and a `salt` to deterministically deploy
* the clone. Using the same `implementation` and `salt` multiple time will revert, since
* the clones cannot be deployed twice at the same address.
*/
function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
instance := create2(0, ptr, 0x37, salt)
}
require(instance != address(0), "ERC1167: create2 failed");
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(
address implementation,
bytes32 salt,
address deployer
) internal pure returns (address predicted) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)
mstore(add(ptr, 0x38), shl(0x60, deployer))
mstore(add(ptr, 0x4c), salt)
mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))
predicted := keccak256(add(ptr, 0x37), 0x55)
}
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(address implementation, bytes32 salt)
internal
view
returns (address predicted)
{
return predictDeterministicAddress(implementation, salt, address(this));
}
}//SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import {IArbSys} from "../../arbitrum/IArbSys.sol";
abstract contract L2ArbitrumMessenger {
event TxToL1(
address indexed _from,
address indexed _to,
uint256 indexed _id,
bytes _data
);
function sendTxToL1(
address user,
address to,
bytes memory data
) internal returns (uint256) {
// note: this method doesn't support sending ether to L1 together with a call
uint256 id = IArbSys(address(100)).sendTxToL1(to, data);
emit TxToL1(user, to, id, data);
return id;
}
modifier onlyL1Counterpart(address l1Counterpart) {
require(
msg.sender == applyL1ToL2Alias(l1Counterpart),
"ONLY_COUNTERPART_GATEWAY"
);
_;
}
uint160 internal constant OFFSET =
uint160(0x1111000000000000000000000000000000001111);
// l1 addresses are transformed durng l1->l2 calls
function applyL1ToL2Alias(address l1Address)
internal
pure
returns (address l2Address)
{
l2Address = address(uint160(l1Address) + OFFSET);
}
}// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2021, Offchain Labs, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
pragma solidity 0.8.9;
/**
* @title Precompiled contract that exists in every Arbitrum chain at address(100), 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality.
*/
interface IArbSys {
/**
* @notice Get internal version number identifying an ArbOS build
* @return version number as int
*/
function arbOSVersion() external pure returns (uint256);
function arbChainID() external view returns (uint256);
/**
* @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)
* @return block number as int
*/
function arbBlockNumber() external view returns (uint256);
/**
* @notice Send given amount of Eth to dest from sender.
* This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.
* @param destination recipient address on L1
* @return unique identifier for this L2-to-L1 transaction.
*/
function withdrawEth(address destination)
external
payable
returns (uint256);
/**
* @notice Send a transaction to L1
* @param destination recipient address on L1
* @param calldataForL1 (optional) calldata for L1 contract call
* @return a unique identifier for this L2-to-L1 transaction.
*/
function sendTxToL1(address destination, bytes calldata calldataForL1)
external
payable
returns (uint256);
/**
* @notice get the number of transactions issued by the given external account or the account sequence number of the given contract
* @param account target account
* @return the number of transactions issued by the given external account or the account sequence number of the given contract
*/
function getTransactionCount(address account)
external
view
returns (uint256);
/**
* @notice get the value of target L2 storage slot
* This function is only callable from address 0 to prevent contracts from being able to call it
* @param account target account
* @param index target index of storage slot
* @return stotage value for the given account at the given index
*/
function getStorageAt(address account, uint256 index)
external
view
returns (uint256);
/**
* @notice check if current call is coming from l1
* @return true if the caller of this was called directly from L1
*/
function isTopLevelCall() external view returns (bool);
event EthWithdrawal(address indexed destAddr, uint256 amount);
event L2ToL1Transaction(
address caller,
address indexed destination,
uint256 indexed uniqueId,
uint256 indexed batchNumber,
uint256 indexInBatch,
uint256 arbBlockNum,
uint256 ethBlockNum,
uint256 timestamp,
uint256 callvalue,
bytes data
);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
interface IMigrator {
struct MigrateDelegatorParams {
// Address that is migrating from L1
address l1Addr;
// Address to use on L2
// If null, l1Addr is used on L2
address l2Addr;
// Stake of l1Addr on L1
uint256 stake;
// Delegated stake of l1Addr on L1
uint256 delegatedStake;
// Fees of l1Addr on L1
uint256 fees;
// Delegate of l1Addr on L1
address delegate;
}
struct MigrateUnbondingLocksParams {
// Address that is migrating from L1
address l1Addr;
// Address to use on L2
// If null, l1Addr is used on L2
address l2Addr;
// Total tokens in unbonding locks
uint256 total;
// IDs of unbonding locks being migrated
uint256[] unbondingLockIds;
// Delegate of l1Addr on L1
address delegate;
}
struct MigrateSenderParams {
// Address that is migrating from L1
address l1Addr;
// Address to use on L2
// If null, l1Addr is used on L2
address l2Addr;
// Deposit of l1Addr on L1
uint256 deposit;
// Reserve of l1Addr on L1
uint256 reserve;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
interface IController {
function owner() external view returns (address);
function paused() external view returns (bool);
function getContract(bytes32 _id) external view returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
interface IManager {
event SetController(address controller);
function setController(address _controller) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import {IManager} from "./IManager.sol";
import {IController} from "./IController.sol";
// Copy of https://github.com/livepeer/protocol/blob/confluence/contracts/Manager.sol
// Tests at https://github.com/livepeer/protocol/blob/confluence/test/unit/ManagerProxy.js
contract Manager is IManager {
// Controller that contract is registered with
IController public controller;
// Check if sender is controller
modifier onlyController() {
_onlyController();
_;
}
// Check if sender is controller owner
modifier onlyControllerOwner() {
_onlyControllerOwner();
_;
}
// Check if controller is not paused
modifier whenSystemNotPaused() {
_whenSystemNotPaused();
_;
}
// Check if controller is paused
modifier whenSystemPaused() {
_whenSystemPaused();
_;
}
constructor(address _controller) {
controller = IController(_controller);
}
/**
* @notice Set controller. Only callable by current controller
* @param _controller Controller contract address
*/
function setController(address _controller) external onlyController {
controller = IController(_controller);
emit SetController(_controller);
}
function _onlyController() private view {
require(msg.sender == address(controller), "caller must be Controller");
}
function _onlyControllerOwner() private view {
require(
msg.sender == controller.owner(),
"caller must be Controller owner"
);
}
function _whenSystemNotPaused() private view {
require(!controller.paused(), "system is paused");
}
function _whenSystemPaused() private view {
require(controller.paused(), "system is not paused");
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
import "./Manager.sol";
/**
* @title ManagerProxyTarget
* @notice The base contract that target contracts used by a proxy contract should inherit from
* @dev Both the target contract and the proxy contract (implemented as ManagerProxy) MUST inherit from ManagerProxyTarget in order to guarantee
that both contracts have the same storage layout. Differing storage layouts in a proxy contract and target contract can
potentially break the delegate proxy upgradeability mechanism
*/
abstract contract ManagerProxyTarget is Manager {
// Used to look up target contract address in controller's registry
bytes32 public targetContractId;
}{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"}],"name":"ClaimStakeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"ControllerContractUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"l1Addr","type":"address"},{"indexed":false,"internalType":"address","name":"delegatorPool","type":"address"}],"name":"DelegatorPoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_delegatorPoolImpl","type":"address"}],"name":"DelegatorPoolImplUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_l1MigratorAddr","type":"address"}],"name":"L1MigratorUpdate","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"delegatedStake","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"address","name":"delegate","type":"address"}],"indexed":false,"internalType":"struct IMigrator.MigrateDelegatorParams","name":"params","type":"tuple"}],"name":"MigrateDelegatorFinalized","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"reserve","type":"uint256"}],"indexed":false,"internalType":"struct IMigrator.MigrateSenderParams","name":"params","type":"tuple"}],"name":"MigrateSenderFinalized","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256[]","name":"unbondingLockIds","type":"uint256[]"},{"internalType":"address","name":"delegate","type":"address"}],"indexed":false,"internalType":"struct IMigrator.MigrateUnbondingLocksParams","name":"params","type":"tuple"}],"name":"MigrateUnbondingLocksFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"controller","type":"address"}],"name":"SetController","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"stake","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fees","type":"uint256"}],"name":"StakeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_data","type":"bytes"}],"name":"TxToL1","type":"event"},{"inputs":[],"name":"bondingManagerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"},{"internalType":"uint256","name":"_stake","type":"uint256"},{"internalType":"uint256","name":"_fees","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"address","name":"_newDelegate","type":"address"}],"name":"claimStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimStakeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimedDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"contract IController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delegatorPoolImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegatorPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"delegatedStake","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"address","name":"delegate","type":"address"}],"internalType":"struct IMigrator.MigrateDelegatorParams","name":"_params","type":"tuple"}],"name":"finalizeMigrateDelegator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"reserve","type":"uint256"}],"internalType":"struct IMigrator.MigrateSenderParams","name":"_params","type":"tuple"}],"name":"finalizeMigrateSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"l1Addr","type":"address"},{"internalType":"address","name":"l2Addr","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256[]","name":"unbondingLockIds","type":"uint256[]"},{"internalType":"address","name":"delegate","type":"address"}],"internalType":"struct IMigrator.MigrateUnbondingLocksParams","name":"_params","type":"tuple"}],"name":"finalizeMigrateUnbondingLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1MigratorAddr","type":"address"},{"internalType":"address","name":"_delegatorPoolImpl","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"l1MigratorAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleSnapshotAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"migratedDelegators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"migratedSenders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"migratedUnbondingLocks","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setClaimStakeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegatorPoolImpl","type":"address"}],"name":"setDelegatorPoolImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1MigratorAddr","type":"address"}],"name":"setL1Migrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"syncControllerContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"targetContractId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ticketBrokerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162003952380380620039528339818101604052810190620000379190620000ea565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200011c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000b28262000085565b9050919050565b620000c481620000a5565b8114620000d057600080fd5b50565b600081519050620000e481620000b9565b92915050565b60006020828403121562000103576200010262000080565b5b60006200011384828501620000d3565b91505092915050565b613826806200012c6000396000f3fe60806040526004361061014f5760003560e01c80638a716fbb116100b6578063b76087361161006f578063b760873614610487578063cc14c988146104b0578063d0b1cba2146104d9578063d2f40c5a14610504578063e89320e514610541578063f77c47911461056c57610156565b80638a716fbb146103795780638f2c17ed146103b6578063923f475c146103e157806392eefe9b1461040a57806396f995a214610433578063b3f5ccae1461045e57610156565b8063485cc95511610108578063485cc955146102555780635118d8cf1461027e57806351720b41146102bb5780635cf207f8146102e65780635fbe4d1d1461031157806389bec3441461033c57610156565b80631a0725d81461015b57806324583d97146101845780633aceba5d146101ad5780633f1c49cc146101ea5780633f23f8de146102135780634413a2e71461022a57610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d919061261f565b610597565b005b34801561019057600080fd5b506101ab60048036038101906101a691906126aa565b610cf8565b005b3480156101b957600080fd5b506101d460048036038101906101cf91906126aa565b610d7b565b6040516101e191906126f2565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c91906127a8565b610d9b565b005b34801561021f57600080fd5b506102286112a8565b005b34801561023657600080fd5b5061023f61193e565b60405161024c9190612851565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061286c565b611964565b005b34801561028a57600080fd5b506102a560048036038101906102a091906126aa565b6119fa565b6040516102b291906128bb565b60405180910390f35b3480156102c757600080fd5b506102d0611a12565b6040516102dd91906128ef565b60405180910390f35b3480156102f257600080fd5b506102fb611a18565b6040516103089190612851565b60405180910390f35b34801561031d57600080fd5b50610326611a3e565b6040516103339190612851565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e919061290a565b611a64565b60405161037091906126f2565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906126aa565b611a93565b6040516103ad91906126f2565b60405180910390f35b3480156103c257600080fd5b506103cb611ab3565b6040516103d89190612851565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612976565b611ad9565b005b34801561041657600080fd5b50610431600480360381019061042c91906126aa565b611b35565b005b34801561043f57600080fd5b50610448611bb7565b60405161045591906126f2565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906129c2565b611bca565b005b34801561049357600080fd5b506104ae60048036038101906104a991906126aa565b611e66565b005b3480156104bc57600080fd5b506104d760048036038101906104d29190612a0e565b611ee9565b005b3480156104e557600080fd5b506104ee61217e565b6040516104fb9190612851565b60405180910390f35b34801561051057600080fd5b5061052b600480360381019061052691906126aa565b6121a4565b6040516105389190612851565b60405180910390f35b34801561054d57600080fd5b506105566121d7565b6040516105639190612851565b60405180910390f35b34801561057857600080fd5b506105816121fd565b60405161058e9190612ab6565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c381612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062790612b2e565b60405180910390fd5b6008600083600001602081019061064791906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612b9a565b60405180910390fd5b6001600860008460000160208101906106e891906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160a001602081019061074c91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1682600001602081019061077591906126aa565b73ffffffffffffffffffffffffffffffffffffffff161415610a18576107c482604001358360200160208101906107ac91906126aa565b8460200160208101906107bf91906126aa565b61224a565b6000826040013583606001356107da9190612be9565b90506000600a60008560000160208101906107f591906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261083b9190612be9565b90506000811115610a11576000610873600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661237f565b9050806009600087600001602081019061088d91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610922828287602001602081019061091d91906126aa565b61224a565b8073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161097d9190612851565b600060405180830381600087803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050508460000160208101906109c291906126aa565b73ffffffffffffffffffffffffffffffffffffffff167ff8a0d4273560c59d7022f3feaae470fc5b68c55cff078a6ab7e618203b53041882604051610a079190612851565b60405180910390a2505b5050610b80565b6000600960008460a0016020810190610a3191906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b4a578073ffffffffffffffffffffffffffffffffffffffff1663aad3ec96846020016020810190610af191906126aa565b85604001356040518363ffffffff1660e01b8152600401610b13929190612c1d565b600060405180830381600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b50505050610b7e565b610b7d8360400135846020016020810190610b6591906126aa565b8560a0016020810190610b7891906126aa565b61224a565b5b505b8160400135600a60008460a0016020810190610b9c91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610be59190612c46565b92505081905550600082608001351115610cbd576000826020016020810190610c0e91906126aa565b73ffffffffffffffffffffffffffffffffffffffff168360800135604051610c3590612ccd565b60006040518083038185875af1925050503d8060008114610c72576040519150601f19603f3d011682016040523d82523d6000602084013e610c77565b606091505b5050905080610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290612d2e565b60405180910390fd5b505b7fab2cb96eeb8726c709227935b01f6a5c6f7e9b518ab69eda0670c7ceda752d1a82604051610cec9190612e45565b60405180910390a15050565b610d00612454565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff274fcfe10d70df2c1a3555476ecfb830e80115781fd0c9a10024291df991b2f81604051610d709190612851565b60405180910390a150565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff16610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190612eac565b60405180910390fd5b6000339050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612f18565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082898989604051602001610ebc9493929190612fa1565b6040516020818303038152906040528051906020012090508173ffffffffffffffffffffffffffffffffffffffff16630a02831c7facef05f736f89c16facc0f940c13f4c3a386cf48a9b54b50f59defd8b301c40a8888856040518563ffffffff1660e01b8152600401610f339493929190613070565b60206040518083038186803b158015610f4b57600080fd5b505afa158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8391906130c5565b610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb99061313e565b60405180910390fd5b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146111fa5787600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109d9190612c46565b925050819055506000600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008a9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611145578590505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146111eb578173ffffffffffffffffffffffffffffffffffffffff1663aad3ec96868c6040518363ffffffff1660e01b81526004016111b4929190612c1d565b600060405180830381600087803b1580156111ce57600080fd5b505af11580156111e2573d6000803e3d6000fd5b505050506111f7565b6111f68a868361224a565b5b50505b600087111561124b578273ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015611249573d6000803e3d6000fd5b505b8273ffffffffffffffffffffffffffffffffffffffff167fc08c27d872ca12215b2df3f441676fe2c084a204a487086d7436a4ac433d417a8a8a8a6040516112959392919061315e565b60405180910390a2505050505050505050565b60007f2517d59a36a86548e38734e8ab416f42afff4bca78706a66ad65750dae7f9e37905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161132991906128ef565b60206040518083038186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137991906131aa565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461144b5780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516114429291906131d7565b60405180910390a15b60007fbd1aa3e8d2464256d7fd3dcf645c16418d5d8c51d971f1ad7d57e7b1b5eee239905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b81526004016114cc91906128ef565b60206040518083038186803b1580156114e457600080fd5b505afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c91906131aa565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115ee5780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516115e59291906131d7565b60405180910390a15b60007fb6138afe6f306a47bdf645c5aebcb9781efe787d221a1880e62d1f76dae58b84905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161166f91906128ef565b60206040518083038186803b15801561168757600080fd5b505afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf91906131aa565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117915780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516117889291906131d7565b60405180910390a15b60007f3443e257065fe41dd0e4d1f5a1b73a22a62e300962b57f30cddf41d0f8273ba7905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161181291906128ef565b60206040518083038186803b15801561182a57600080fd5b505afa15801561183e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186291906131aa565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119345780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d828260405161192b9291906131d7565b60405180910390a15b5050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61196c612454565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119f66112a8565b5050565b600a6020528060005260406000206000915090505481565b60015481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ae1612454565b80600760146101000a81548160ff0219169083151502179055507f370171e543b14c71782f52c505a6b233744e5b2a35486e12ddf379221e49dfaf81604051611b2a91906126f2565b60405180910390a150565b611b3d612561565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051611bac9190612851565b60405180910390a150565b600760149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bf681612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5a90612b2e565b60405180910390fd5b600c6000836000016020810190611c7a91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf99061324c565b60405180910390fd5b6001600c6000846000016020810190611d1b91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663989f789c83606001358460400135611dbe9190612c46565b846020016020810190611dd191906126aa565b856040013586606001356040518563ffffffff1660e01b8152600401611df99392919061315e565b6000604051808303818588803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b50505050507f71adb0cec7763a4cfefd893fc873369117ed172979f7b8f7b683f6a5787c52c082604051611e5a91906132e1565b60405180910390a15050565b611e6e612454565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe51b4d409fd6629b39368b4863ab2212c8e0e0a970dccfaa5800888e507ce79d81604051611ede9190612851565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611f1581612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7990612b2e565b60405180910390fd5b6000828060600190611f94919061330b565b9050905060005b8181101561210e576000848060600190611fb5919061330b565b83818110611fc657611fc561336e565b5b905060200201359050600b6000866000016020810190611fe691906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009054906101000a900460ff161561207f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612076906133e9565b60405180910390fd5b6001600b600087600001602081019061209891906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061210690613409565b915050611f9b565b50612142836040013584602001602081019061212a91906126aa565b85608001602081019061213d91906126aa565b61224a565b7f9e36876ab9fc404649651fb29b8aebacf24393e00799e53abef98a59c5a003948360405161217191906135d1565b60405180910390a1505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007311110000000000000000000000000000000011118261224391906135f3565b9050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b81526004016122ce929190612c1d565b600060405180830381600087803b1580156122e857600080fd5b505af11580156122fc573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663ee4e804a8585856000806000806040518863ffffffff1660e01b8152600401612347979695949392919061363d565b600060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b5050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561244f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612446906136f8565b60405180910390fd5b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124ba57600080fd5b505afa1580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f291906131aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690613764565b60405180910390fd5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e6906137d0565b60405180910390fd5b565b600080fd5b600080fd5b600080fd5b600060c08284031215612616576126156125fb565b5b81905092915050565b600060c08284031215612635576126346125f1565b5b600061264384828501612600565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126778261264c565b9050919050565b6126878161266c565b811461269257600080fd5b50565b6000813590506126a48161267e565b92915050565b6000602082840312156126c0576126bf6125f1565b5b60006126ce84828501612695565b91505092915050565b60008115159050919050565b6126ec816126d7565b82525050565b600060208201905061270760008301846126e3565b92915050565b6000819050919050565b6127208161270d565b811461272b57600080fd5b50565b60008135905061273d81612717565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261276857612767612743565b5b8235905067ffffffffffffffff81111561278557612784612748565b5b6020830191508360208202830111156127a1576127a061274d565b5b9250929050565b60008060008060008060a087890312156127c5576127c46125f1565b5b60006127d389828a01612695565b96505060206127e489828a0161272e565b95505060406127f589828a0161272e565b945050606087013567ffffffffffffffff811115612816576128156125f6565b5b61282289828a01612752565b9350935050608061283589828a01612695565b9150509295509295509295565b61284b8161266c565b82525050565b60006020820190506128666000830184612842565b92915050565b60008060408385031215612883576128826125f1565b5b600061289185828601612695565b92505060206128a285828601612695565b9150509250929050565b6128b58161270d565b82525050565b60006020820190506128d060008301846128ac565b92915050565b6000819050919050565b6128e9816128d6565b82525050565b600060208201905061290460008301846128e0565b92915050565b60008060408385031215612921576129206125f1565b5b600061292f85828601612695565b92505060206129408582860161272e565b9150509250929050565b612953816126d7565b811461295e57600080fd5b50565b6000813590506129708161294a565b92915050565b60006020828403121561298c5761298b6125f1565b5b600061299a84828501612961565b91505092915050565b6000608082840312156129b9576129b86125fb565b5b81905092915050565b6000608082840312156129d8576129d76125f1565b5b60006129e6848285016129a3565b91505092915050565b600060a08284031215612a0557612a046125fb565b5b81905092915050565b600060208284031215612a2457612a236125f1565b5b600082013567ffffffffffffffff811115612a4257612a416125f6565b5b612a4e848285016129ef565b91505092915050565b6000819050919050565b6000612a7c612a77612a728461264c565b612a57565b61264c565b9050919050565b6000612a8e82612a61565b9050919050565b6000612aa082612a83565b9050919050565b612ab081612a95565b82525050565b6000602082019050612acb6000830184612aa7565b92915050565b600082825260208201905092915050565b7f4f4e4c595f434f554e544552504152545f474154455741590000000000000000600082015250565b6000612b18601883612ad1565b9150612b2382612ae2565b602082019050919050565b60006020820190508181036000830152612b4781612b0b565b9050919050565b7f44454c454741544f525f414c52454144595f4d49475241544544000000000000600082015250565b6000612b84601a83612ad1565b9150612b8f82612b4e565b602082019050919050565b60006020820190508181036000830152612bb381612b77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bf48261270d565b9150612bff8361270d565b925082821015612c1257612c11612bba565b5b828203905092915050565b6000604082019050612c326000830185612842565b612c3f60208301846128ac565b9392505050565b6000612c518261270d565b9150612c5c8361270d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c9157612c90612bba565b5b828201905092915050565b600081905092915050565b50565b6000612cb7600083612c9c565b9150612cc282612ca7565b600082019050919050565b6000612cd882612caa565b9150819050919050565b7f46494e414c495a455f44454c454741544f523a4641494c5f4645450000000000600082015250565b6000612d18601b83612ad1565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b6000612d5d6020840184612695565b905092915050565b612d6e8161266c565b82525050565b6000612d83602084018461272e565b905092915050565b612d948161270d565b82525050565b60c08201612dab6000830183612d4e565b612db86000850182612d65565b50612dc66020830183612d4e565b612dd36020850182612d65565b50612de16040830183612d74565b612dee6040850182612d8b565b50612dfc6060830183612d74565b612e096060850182612d8b565b50612e176080830183612d74565b612e246080850182612d8b565b50612e3260a0830183612d4e565b612e3f60a0850182612d65565b50505050565b600060c082019050612e5a6000830184612d9a565b92915050565b7f434c41494d5f5354414b455f44495341424c4544000000000000000000000000600082015250565b6000612e96601483612ad1565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b7f434c41494d5f5354414b453a414c52454144595f4d4947524154454400000000600082015250565b6000612f02601c83612ad1565b9150612f0d82612ecc565b602082019050919050565b60006020820190508181036000830152612f3181612ef5565b9050919050565b60008160601b9050919050565b6000612f5082612f38565b9050919050565b6000612f6282612f45565b9050919050565b612f7a612f758261266c565b612f57565b82525050565b6000819050919050565b612f9b612f968261270d565b612f80565b82525050565b6000612fad8287612f69565b601482019150612fbd8286612f69565b601482019150612fcd8285612f8a565b602082019150612fdd8284612f8a565b60208201915081905095945050505050565b600082825260208201905092915050565b600080fd5b82818337600083830152505050565b60006130208385612fef565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561305357613052613000565b5b602083029250613064838584613005565b82840190509392505050565b600060608201905061308560008301876128e0565b8181036020830152613098818587613014565b90506130a760408301846128e0565b95945050505050565b6000815190506130bf8161294a565b92915050565b6000602082840312156130db576130da6125f1565b5b60006130e9848285016130b0565b91505092915050565b7f434c41494d5f5354414b453a494e56414c49445f50524f4f4600000000000000600082015250565b6000613128601983612ad1565b9150613133826130f2565b602082019050919050565b600060208201905081810360008301526131578161311b565b9050919050565b60006060820190506131736000830186612842565b61318060208301856128ac565b61318d60408301846128ac565b949350505050565b6000815190506131a48161267e565b92915050565b6000602082840312156131c0576131bf6125f1565b5b60006131ce84828501613195565b91505092915050565b60006040820190506131ec60008301856128e0565b6131f96020830184612842565b9392505050565b7f53454e4445525f414c52454144595f4d49475241544544000000000000000000600082015250565b6000613236601783612ad1565b915061324182613200565b602082019050919050565b6000602082019050818103600083015261326581613229565b9050919050565b6080820161327d6000830183612d4e565b61328a6000850182612d65565b506132986020830183612d4e565b6132a56020850182612d65565b506132b36040830183612d74565b6132c06040850182612d8b565b506132ce6060830183612d74565b6132db6060850182612d8b565b50505050565b60006080820190506132f6600083018461326c565b92915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613328576133276132fc565b5b80840192508235915067ffffffffffffffff82111561334a57613349613301565b5b60208301925060208202360383131561336657613365613306565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f554e424f4e44494e475f4c4f434b5f414c52454144595f4d4947524154454400600082015250565b60006133d3601f83612ad1565b91506133de8261339d565b602082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b60006134148261270d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561344757613446612bba565b5b600182019050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261347e5761347d61345c565b5b83810192508235915060208301925067ffffffffffffffff8211156134a6576134a5613452565b5b6020820236038413156134bc576134bb613457565b5b509250929050565b600082825260208201905092915050565b60006134e183856134c4565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561351457613513613000565b5b602083029250613525838584613005565b82840190509392505050565b600060a083016135446000840184612d4e565b6135516000860182612d65565b5061355f6020840184612d4e565b61356c6020860182612d65565b5061357a6040840184612d74565b6135876040860182612d8b565b506135956060840184613461565b85830360608701526135a88382846134d5565b925050506135b96080840184612d4e565b6135c66080860182612d65565b508091505092915050565b600060208201905081810360008301526135eb8184613531565b905092915050565b60006135fe8261264c565b91506136098361264c565b92508273ffffffffffffffffffffffffffffffffffffffff0382111561363257613631612bba565b5b828201905092915050565b600060e082019050613652600083018a6128ac565b61365f6020830189612842565b61366c6040830188612842565b6136796060830187612842565b6136866080830186612842565b61369360a0830185612842565b6136a060c0830184612842565b98975050505050505050565b7f455243313136373a20637265617465206661696c656400000000000000000000600082015250565b60006136e2601683612ad1565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f63616c6c6572206d75737420626520436f6e74726f6c6c6572206f776e657200600082015250565b600061374e601f83612ad1565b915061375982613718565b602082019050919050565b6000602082019050818103600083015261377d81613741565b9050919050565b7f63616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000600082015250565b60006137ba601983612ad1565b91506137c582613784565b602082019050919050565b600060208201905081810360008301526137e9816137ad565b905091905056fea264697066735822122066b86eceb7ddfc038bc8e5be0f564cb4e2c604e36eababd132fa6d053e0abd6864736f6c63430008090033000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80638a716fbb116100b6578063b76087361161006f578063b760873614610487578063cc14c988146104b0578063d0b1cba2146104d9578063d2f40c5a14610504578063e89320e514610541578063f77c47911461056c57610156565b80638a716fbb146103795780638f2c17ed146103b6578063923f475c146103e157806392eefe9b1461040a57806396f995a214610433578063b3f5ccae1461045e57610156565b8063485cc95511610108578063485cc955146102555780635118d8cf1461027e57806351720b41146102bb5780635cf207f8146102e65780635fbe4d1d1461031157806389bec3441461033c57610156565b80631a0725d81461015b57806324583d97146101845780633aceba5d146101ad5780633f1c49cc146101ea5780633f23f8de146102135780634413a2e71461022a57610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d919061261f565b610597565b005b34801561019057600080fd5b506101ab60048036038101906101a691906126aa565b610cf8565b005b3480156101b957600080fd5b506101d460048036038101906101cf91906126aa565b610d7b565b6040516101e191906126f2565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c91906127a8565b610d9b565b005b34801561021f57600080fd5b506102286112a8565b005b34801561023657600080fd5b5061023f61193e565b60405161024c9190612851565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061286c565b611964565b005b34801561028a57600080fd5b506102a560048036038101906102a091906126aa565b6119fa565b6040516102b291906128bb565b60405180910390f35b3480156102c757600080fd5b506102d0611a12565b6040516102dd91906128ef565b60405180910390f35b3480156102f257600080fd5b506102fb611a18565b6040516103089190612851565b60405180910390f35b34801561031d57600080fd5b50610326611a3e565b6040516103339190612851565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e919061290a565b611a64565b60405161037091906126f2565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906126aa565b611a93565b6040516103ad91906126f2565b60405180910390f35b3480156103c257600080fd5b506103cb611ab3565b6040516103d89190612851565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612976565b611ad9565b005b34801561041657600080fd5b50610431600480360381019061042c91906126aa565b611b35565b005b34801561043f57600080fd5b50610448611bb7565b60405161045591906126f2565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906129c2565b611bca565b005b34801561049357600080fd5b506104ae60048036038101906104a991906126aa565b611e66565b005b3480156104bc57600080fd5b506104d760048036038101906104d29190612a0e565b611ee9565b005b3480156104e557600080fd5b506104ee61217e565b6040516104fb9190612851565b60405180910390f35b34801561051057600080fd5b5061052b600480360381019061052691906126aa565b6121a4565b6040516105389190612851565b60405180910390f35b34801561054d57600080fd5b506105566121d7565b6040516105639190612851565b60405180910390f35b34801561057857600080fd5b506105816121fd565b60405161058e9190612ab6565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c381612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062790612b2e565b60405180910390fd5b6008600083600001602081019061064791906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612b9a565b60405180910390fd5b6001600860008460000160208101906106e891906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160a001602081019061074c91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1682600001602081019061077591906126aa565b73ffffffffffffffffffffffffffffffffffffffff161415610a18576107c482604001358360200160208101906107ac91906126aa565b8460200160208101906107bf91906126aa565b61224a565b6000826040013583606001356107da9190612be9565b90506000600a60008560000160208101906107f591906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261083b9190612be9565b90506000811115610a11576000610873600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661237f565b9050806009600087600001602081019061088d91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610922828287602001602081019061091d91906126aa565b61224a565b8073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161097d9190612851565b600060405180830381600087803b15801561099757600080fd5b505af11580156109ab573d6000803e3d6000fd5b505050508460000160208101906109c291906126aa565b73ffffffffffffffffffffffffffffffffffffffff167ff8a0d4273560c59d7022f3feaae470fc5b68c55cff078a6ab7e618203b53041882604051610a079190612851565b60405180910390a2505b5050610b80565b6000600960008460a0016020810190610a3191906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b4a578073ffffffffffffffffffffffffffffffffffffffff1663aad3ec96846020016020810190610af191906126aa565b85604001356040518363ffffffff1660e01b8152600401610b13929190612c1d565b600060405180830381600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b50505050610b7e565b610b7d8360400135846020016020810190610b6591906126aa565b8560a0016020810190610b7891906126aa565b61224a565b5b505b8160400135600a60008460a0016020810190610b9c91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610be59190612c46565b92505081905550600082608001351115610cbd576000826020016020810190610c0e91906126aa565b73ffffffffffffffffffffffffffffffffffffffff168360800135604051610c3590612ccd565b60006040518083038185875af1925050503d8060008114610c72576040519150601f19603f3d011682016040523d82523d6000602084013e610c77565b606091505b5050905080610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290612d2e565b60405180910390fd5b505b7fab2cb96eeb8726c709227935b01f6a5c6f7e9b518ab69eda0670c7ceda752d1a82604051610cec9190612e45565b60405180910390a15050565b610d00612454565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff274fcfe10d70df2c1a3555476ecfb830e80115781fd0c9a10024291df991b2f81604051610d709190612851565b60405180910390a150565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff16610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190612eac565b60405180910390fd5b6000339050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612f18565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082898989604051602001610ebc9493929190612fa1565b6040516020818303038152906040528051906020012090508173ffffffffffffffffffffffffffffffffffffffff16630a02831c7facef05f736f89c16facc0f940c13f4c3a386cf48a9b54b50f59defd8b301c40a8888856040518563ffffffff1660e01b8152600401610f339493929190613070565b60206040518083038186803b158015610f4b57600080fd5b505afa158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8391906130c5565b610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb99061313e565b60405180910390fd5b6001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146111fa5787600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109d9190612c46565b925050819055506000600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008a9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611145578590505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146111eb578173ffffffffffffffffffffffffffffffffffffffff1663aad3ec96868c6040518363ffffffff1660e01b81526004016111b4929190612c1d565b600060405180830381600087803b1580156111ce57600080fd5b505af11580156111e2573d6000803e3d6000fd5b505050506111f7565b6111f68a868361224a565b5b50505b600087111561124b578273ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015611249573d6000803e3d6000fd5b505b8273ffffffffffffffffffffffffffffffffffffffff167fc08c27d872ca12215b2df3f441676fe2c084a204a487086d7436a4ac433d417a8a8a8a6040516112959392919061315e565b60405180910390a2505050505050505050565b60007f2517d59a36a86548e38734e8ab416f42afff4bca78706a66ad65750dae7f9e37905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161132991906128ef565b60206040518083038186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137991906131aa565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461144b5780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516114429291906131d7565b60405180910390a15b60007fbd1aa3e8d2464256d7fd3dcf645c16418d5d8c51d971f1ad7d57e7b1b5eee239905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b81526004016114cc91906128ef565b60206040518083038186803b1580156114e457600080fd5b505afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c91906131aa565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115ee5780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516115e59291906131d7565b60405180910390a15b60007fb6138afe6f306a47bdf645c5aebcb9781efe787d221a1880e62d1f76dae58b84905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161166f91906128ef565b60206040518083038186803b15801561168757600080fd5b505afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf91906131aa565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117915780600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d82826040516117889291906131d7565b60405180910390a15b60007f3443e257065fe41dd0e4d1f5a1b73a22a62e300962b57f30cddf41d0f8273ba7905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16c7d98836040518263ffffffff1660e01b815260040161181291906128ef565b60206040518083038186803b15801561182a57600080fd5b505afa15801561183e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186291906131aa565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119345780600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb8d523c5d6602683fc3e40e21a9be346f970802af52c8e045e813541394d264d828260405161192b9291906131d7565b60405180910390a15b5050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61196c612454565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119f66112a8565b5050565b600a6020528060005260406000206000915090505481565b60015481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ae1612454565b80600760146101000a81548160ff0219169083151502179055507f370171e543b14c71782f52c505a6b233744e5b2a35486e12ddf379221e49dfaf81604051611b2a91906126f2565b60405180910390a150565b611b3d612561565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7081604051611bac9190612851565b60405180910390a150565b600760149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bf681612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5a90612b2e565b60405180910390fd5b600c6000836000016020810190611c7a91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf99061324c565b60405180910390fd5b6001600c6000846000016020810190611d1b91906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663989f789c83606001358460400135611dbe9190612c46565b846020016020810190611dd191906126aa565b856040013586606001356040518563ffffffff1660e01b8152600401611df99392919061315e565b6000604051808303818588803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b50505050507f71adb0cec7763a4cfefd893fc873369117ed172979f7b8f7b683f6a5787c52c082604051611e5a91906132e1565b60405180910390a15050565b611e6e612454565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe51b4d409fd6629b39368b4863ab2212c8e0e0a970dccfaa5800888e507ce79d81604051611ede9190612851565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611f1581612221565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7990612b2e565b60405180910390fd5b6000828060600190611f94919061330b565b9050905060005b8181101561210e576000848060600190611fb5919061330b565b83818110611fc657611fc561336e565b5b905060200201359050600b6000866000016020810190611fe691906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009054906101000a900460ff161561207f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612076906133e9565b60405180910390fd5b6001600b600087600001602081019061209891906126aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061210690613409565b915050611f9b565b50612142836040013584602001602081019061212a91906126aa565b85608001602081019061213d91906126aa565b61224a565b7f9e36876ab9fc404649651fb29b8aebacf24393e00799e53abef98a59c5a003948360405161217191906135d1565b60405180910390a1505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007311110000000000000000000000000000000011118261224391906135f3565b9050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b81526004016122ce929190612c1d565b600060405180830381600087803b1580156122e857600080fd5b505af11580156122fc573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663ee4e804a8585856000806000806040518863ffffffff1660e01b8152600401612347979695949392919061363d565b600060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b5050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561244f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612446906136f8565b60405180910390fd5b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124ba57600080fd5b505afa1580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f291906131aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690613764565b60405180910390fd5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e6906137d0565b60405180910390fd5b565b600080fd5b600080fd5b600080fd5b600060c08284031215612616576126156125fb565b5b81905092915050565b600060c08284031215612635576126346125f1565b5b600061264384828501612600565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126778261264c565b9050919050565b6126878161266c565b811461269257600080fd5b50565b6000813590506126a48161267e565b92915050565b6000602082840312156126c0576126bf6125f1565b5b60006126ce84828501612695565b91505092915050565b60008115159050919050565b6126ec816126d7565b82525050565b600060208201905061270760008301846126e3565b92915050565b6000819050919050565b6127208161270d565b811461272b57600080fd5b50565b60008135905061273d81612717565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261276857612767612743565b5b8235905067ffffffffffffffff81111561278557612784612748565b5b6020830191508360208202830111156127a1576127a061274d565b5b9250929050565b60008060008060008060a087890312156127c5576127c46125f1565b5b60006127d389828a01612695565b96505060206127e489828a0161272e565b95505060406127f589828a0161272e565b945050606087013567ffffffffffffffff811115612816576128156125f6565b5b61282289828a01612752565b9350935050608061283589828a01612695565b9150509295509295509295565b61284b8161266c565b82525050565b60006020820190506128666000830184612842565b92915050565b60008060408385031215612883576128826125f1565b5b600061289185828601612695565b92505060206128a285828601612695565b9150509250929050565b6128b58161270d565b82525050565b60006020820190506128d060008301846128ac565b92915050565b6000819050919050565b6128e9816128d6565b82525050565b600060208201905061290460008301846128e0565b92915050565b60008060408385031215612921576129206125f1565b5b600061292f85828601612695565b92505060206129408582860161272e565b9150509250929050565b612953816126d7565b811461295e57600080fd5b50565b6000813590506129708161294a565b92915050565b60006020828403121561298c5761298b6125f1565b5b600061299a84828501612961565b91505092915050565b6000608082840312156129b9576129b86125fb565b5b81905092915050565b6000608082840312156129d8576129d76125f1565b5b60006129e6848285016129a3565b91505092915050565b600060a08284031215612a0557612a046125fb565b5b81905092915050565b600060208284031215612a2457612a236125f1565b5b600082013567ffffffffffffffff811115612a4257612a416125f6565b5b612a4e848285016129ef565b91505092915050565b6000819050919050565b6000612a7c612a77612a728461264c565b612a57565b61264c565b9050919050565b6000612a8e82612a61565b9050919050565b6000612aa082612a83565b9050919050565b612ab081612a95565b82525050565b6000602082019050612acb6000830184612aa7565b92915050565b600082825260208201905092915050565b7f4f4e4c595f434f554e544552504152545f474154455741590000000000000000600082015250565b6000612b18601883612ad1565b9150612b2382612ae2565b602082019050919050565b60006020820190508181036000830152612b4781612b0b565b9050919050565b7f44454c454741544f525f414c52454144595f4d49475241544544000000000000600082015250565b6000612b84601a83612ad1565b9150612b8f82612b4e565b602082019050919050565b60006020820190508181036000830152612bb381612b77565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bf48261270d565b9150612bff8361270d565b925082821015612c1257612c11612bba565b5b828203905092915050565b6000604082019050612c326000830185612842565b612c3f60208301846128ac565b9392505050565b6000612c518261270d565b9150612c5c8361270d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c9157612c90612bba565b5b828201905092915050565b600081905092915050565b50565b6000612cb7600083612c9c565b9150612cc282612ca7565b600082019050919050565b6000612cd882612caa565b9150819050919050565b7f46494e414c495a455f44454c454741544f523a4641494c5f4645450000000000600082015250565b6000612d18601b83612ad1565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b6000612d5d6020840184612695565b905092915050565b612d6e8161266c565b82525050565b6000612d83602084018461272e565b905092915050565b612d948161270d565b82525050565b60c08201612dab6000830183612d4e565b612db86000850182612d65565b50612dc66020830183612d4e565b612dd36020850182612d65565b50612de16040830183612d74565b612dee6040850182612d8b565b50612dfc6060830183612d74565b612e096060850182612d8b565b50612e176080830183612d74565b612e246080850182612d8b565b50612e3260a0830183612d4e565b612e3f60a0850182612d65565b50505050565b600060c082019050612e5a6000830184612d9a565b92915050565b7f434c41494d5f5354414b455f44495341424c4544000000000000000000000000600082015250565b6000612e96601483612ad1565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b7f434c41494d5f5354414b453a414c52454144595f4d4947524154454400000000600082015250565b6000612f02601c83612ad1565b9150612f0d82612ecc565b602082019050919050565b60006020820190508181036000830152612f3181612ef5565b9050919050565b60008160601b9050919050565b6000612f5082612f38565b9050919050565b6000612f6282612f45565b9050919050565b612f7a612f758261266c565b612f57565b82525050565b6000819050919050565b612f9b612f968261270d565b612f80565b82525050565b6000612fad8287612f69565b601482019150612fbd8286612f69565b601482019150612fcd8285612f8a565b602082019150612fdd8284612f8a565b60208201915081905095945050505050565b600082825260208201905092915050565b600080fd5b82818337600083830152505050565b60006130208385612fef565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561305357613052613000565b5b602083029250613064838584613005565b82840190509392505050565b600060608201905061308560008301876128e0565b8181036020830152613098818587613014565b90506130a760408301846128e0565b95945050505050565b6000815190506130bf8161294a565b92915050565b6000602082840312156130db576130da6125f1565b5b60006130e9848285016130b0565b91505092915050565b7f434c41494d5f5354414b453a494e56414c49445f50524f4f4600000000000000600082015250565b6000613128601983612ad1565b9150613133826130f2565b602082019050919050565b600060208201905081810360008301526131578161311b565b9050919050565b60006060820190506131736000830186612842565b61318060208301856128ac565b61318d60408301846128ac565b949350505050565b6000815190506131a48161267e565b92915050565b6000602082840312156131c0576131bf6125f1565b5b60006131ce84828501613195565b91505092915050565b60006040820190506131ec60008301856128e0565b6131f96020830184612842565b9392505050565b7f53454e4445525f414c52454144595f4d49475241544544000000000000000000600082015250565b6000613236601783612ad1565b915061324182613200565b602082019050919050565b6000602082019050818103600083015261326581613229565b9050919050565b6080820161327d6000830183612d4e565b61328a6000850182612d65565b506132986020830183612d4e565b6132a56020850182612d65565b506132b36040830183612d74565b6132c06040850182612d8b565b506132ce6060830183612d74565b6132db6060850182612d8b565b50505050565b60006080820190506132f6600083018461326c565b92915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613328576133276132fc565b5b80840192508235915067ffffffffffffffff82111561334a57613349613301565b5b60208301925060208202360383131561336657613365613306565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f554e424f4e44494e475f4c4f434b5f414c52454144595f4d4947524154454400600082015250565b60006133d3601f83612ad1565b91506133de8261339d565b602082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b60006134148261270d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561344757613446612bba565b5b600182019050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261347e5761347d61345c565b5b83810192508235915060208301925067ffffffffffffffff8211156134a6576134a5613452565b5b6020820236038413156134bc576134bb613457565b5b509250929050565b600082825260208201905092915050565b60006134e183856134c4565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561351457613513613000565b5b602083029250613525838584613005565b82840190509392505050565b600060a083016135446000840184612d4e565b6135516000860182612d65565b5061355f6020840184612d4e565b61356c6020860182612d65565b5061357a6040840184612d74565b6135876040860182612d8b565b506135956060840184613461565b85830360608701526135a88382846134d5565b925050506135b96080840184612d4e565b6135c66080860182612d65565b508091505092915050565b600060208201905081810360008301526135eb8184613531565b905092915050565b60006135fe8261264c565b91506136098361264c565b92508273ffffffffffffffffffffffffffffffffffffffff0382111561363257613631612bba565b5b828201905092915050565b600060e082019050613652600083018a6128ac565b61365f6020830189612842565b61366c6040830188612842565b6136796060830187612842565b6136866080830186612842565b61369360a0830185612842565b6136a060c0830184612842565b98975050505050505050565b7f455243313136373a20637265617465206661696c656400000000000000000000600082015250565b60006136e2601683612ad1565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f63616c6c6572206d75737420626520436f6e74726f6c6c6572206f776e657200600082015250565b600061374e601f83612ad1565b915061375982613718565b602082019050919050565b6000602082019050818103600083015261377d81613741565b9050919050565b7f63616c6c6572206d75737420626520436f6e74726f6c6c657200000000000000600082015250565b60006137ba601983612ad1565b91506137c582613784565b602082019050919050565b600060208201905081810360008301526137e9816137ad565b905091905056fea264697066735822122066b86eceb7ddfc038bc8e5be0f564cb4e2c604e36eababd132fa6d053e0abd6864736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4
-----Decoded View---------------
Arg [0] : _controller (address): 0xD8E8328501E9645d16Cf49539efC04f734606ee4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.