Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 57 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Execute As Owner | 12669127 | 1729 days ago | IN | 0 ETH | 0.01497998 | ||||
| Execute As Owner | 12650573 | 1732 days ago | IN | 0 ETH | 0.04191124 | ||||
| Execute As Owner | 12650566 | 1732 days ago | IN | 0 ETH | 0.06436446 | ||||
| Execute As Owner | 12650556 | 1732 days ago | IN | 0 ETH | 0.03675667 | ||||
| Execute As Owner | 12650550 | 1732 days ago | IN | 0 ETH | 0.0383716 | ||||
| Execute As Owner | 12650545 | 1732 days ago | IN | 0 ETH | 0.03779739 | ||||
| Execute As Owner | 12650539 | 1732 days ago | IN | 0 ETH | 0.04358381 | ||||
| Manage Contract | 12650531 | 1732 days ago | IN | 0 ETH | 0.03536495 | ||||
| Manage Contract | 12650529 | 1732 days ago | IN | 0 ETH | 0.04568665 | ||||
| Execute As Owner | 12650428 | 1732 days ago | IN | 0 ETH | 0.02640563 | ||||
| Manage Contract | 12650038 | 1732 days ago | IN | 0 ETH | 0.04565743 | ||||
| Manage Contract | 12650016 | 1732 days ago | IN | 0 ETH | 0.044 | ||||
| Execute As Owner | 12650008 | 1732 days ago | IN | 0 ETH | 0.03377952 | ||||
| Execute As Owner | 12650001 | 1732 days ago | IN | 0 ETH | 0.06087402 | ||||
| Execute As Owner | 12649942 | 1732 days ago | IN | 0 ETH | 0.03181163 | ||||
| Execute As Owner | 12649921 | 1732 days ago | IN | 0 ETH | 0.03594458 | ||||
| Execute As Owner | 12649910 | 1732 days ago | IN | 0 ETH | 0.03522875 | ||||
| Execute As Owner | 12649894 | 1732 days ago | IN | 0 ETH | 0.04101529 | ||||
| Manage Contract | 12649890 | 1732 days ago | IN | 0 ETH | 0.03999973 | ||||
| Manage Contract | 12649890 | 1732 days ago | IN | 0 ETH | 0.0310102 | ||||
| Manage Contract | 12649890 | 1732 days ago | IN | 0 ETH | 0.03962007 | ||||
| Manage Contract | 12649890 | 1732 days ago | IN | 0 ETH | 0.02055035 | ||||
| Disable Contract | 12308857 | 1785 days ago | IN | 0 ETH | 0.00831284 | ||||
| Disable Contract | 12308829 | 1785 days ago | IN | 0 ETH | 0.00452109 | ||||
| Execute As Owner | 12308783 | 1785 days ago | IN | 0 ETH | 0.13567218 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DependencyController
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "./RoleAware.sol";
import "./Executor.sol";
import "../interfaces/IDependencyController.sol";
/// @title Provides a single point of reference to verify integrity
/// of the roles structure and facilitate governance actions
/// within our system as well as performing cache invalidation for
/// roles and inter-contract relationships
contract DependencyController is RoleAware, IDependencyController {
constructor(address _roles) RoleAware(_roles) {}
address public override currentExecutor;
address[] public managedContracts;
mapping(uint256 => bool) public knownCharacters;
mapping(uint256 => bool) public knownRoles;
uint256[] public allCharacters;
uint256[] public allRoles;
function executeAsOwner(address executor) external onlyOwnerExec {
uint256[] memory requiredRoles = Executor(executor).requiredRoles();
for (uint256 i = 0; requiredRoles.length > i; i++) {
_giveRole(requiredRoles[i], executor);
}
updateCaches(executor);
currentExecutor = executor;
Executor(executor).execute();
currentExecutor = address(0);
uint256 len = requiredRoles.length;
for (uint256 i = 0; len > i; i++) {
_removeRole(requiredRoles[i], executor);
}
}
/// Orchestrate roles and permission for contract
function manageContract(
address contr,
uint256[] memory charactersPlayed,
uint256[] memory rolesPlayed
) external onlyOwnerExec {
managedContracts.push(contr);
// set up all characters this contract plays
uint256 len = charactersPlayed.length;
for (uint256 i = 0; len > i; i++) {
uint256 character = charactersPlayed[i];
_setMainCharacter(character, contr);
}
// all roles this contract plays
len = rolesPlayed.length;
for (uint256 i = 0; len > i; i++) {
uint256 role = rolesPlayed[i];
_giveRole(role, contr);
}
updateCaches(contr);
}
/// Remove roles and permissions for contract
function disableContract(address contr) external onlyOwnerExecDisabler {
_disableContract(contr);
}
function _disableContract(address contr) internal {
uint256 len = allRoles.length;
for (uint256 i = 0; len > i; i++) {
if (roles.getRole(allRoles[i], contr)) {
_removeRole(allRoles[i], contr);
}
}
len = allCharacters.length;
for (uint256 i = 0; len > i; i++) {
if (roles.mainCharacters(allCharacters[i]) == contr) {
_setMainCharacter(allCharacters[i], address(0));
}
}
}
/// Activate role
function giveRole(uint256 role, address actor) external onlyOwnerExec {
_giveRole(role, actor);
}
/// Disable role
function removeRole(uint256 role, address actor)
external
onlyOwnerExecDisabler
{
_removeRole(role, actor);
}
function _removeRole(uint256 role, address actor) internal {
roles.removeRole(role, actor);
updateRoleCache(role, actor);
}
function setMainCharacter(uint256 role, address actor)
external
onlyOwnerExec
{
_setMainCharacter(role, actor);
}
function _giveRole(uint256 role, address actor) internal {
if (!knownRoles[role]) {
knownRoles[role] = true;
allRoles.push(role);
}
roles.giveRole(role, actor);
updateRoleCache(role, actor);
}
function _setMainCharacter(uint256 character, address actor) internal {
if (!knownCharacters[character]) {
knownCharacters[character] = true;
allCharacters.push(character);
}
roles.setMainCharacter(character, actor);
updateMainCharacterCache(character);
}
function updateMainCharacterCache(uint256 character) public override {
uint256 len = managedContracts.length;
for (uint256 i = 0; len > i; i++) {
RoleAware(managedContracts[i]).updateMainCharacterCache(character);
}
}
function updateRoleCache(uint256 role, address contr) public override {
uint256 len = managedContracts.length;
for (uint256 i = 0; len > i; i++) {
RoleAware(managedContracts[i]).updateRoleCache(role, contr);
}
}
function updateCaches(address contr) public {
// update this contract with all characters we know about
uint256 len = allCharacters.length;
for (uint256 i = 0; len > i; i++) {
RoleAware(contr).updateMainCharacterCache(allCharacters[i]);
}
// update this contract with all roles for all contracts we know about
len = allRoles.length;
for (uint256 i = 0; len > i; i++) {
for (uint256 j = 0; managedContracts.length > j; j++) {
RoleAware(contr).updateRoleCache(
allRoles[i],
managedContracts[j]
);
}
}
}
function allManagedContracts() external view returns (address[] memory) {
return managedContracts;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "./RoleAware.sol";
abstract contract Executor is RoleAware {
function requiredRoles() external virtual returns (uint256[] memory);
function execute() external virtual;
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "./Roles.sol";
/// @title Role management behavior
/// Main characters are for service discovery
/// Whereas roles are for access control
contract RoleAware {
Roles public immutable roles;
mapping(uint256 => address) public mainCharacterCache;
mapping(address => mapping(uint256 => bool)) public roleCache;
constructor(address _roles) {
require(_roles != address(0), "Please provide valid roles address");
roles = Roles(_roles);
}
modifier noIntermediary() {
require(
msg.sender == tx.origin,
"Currently no intermediaries allowed for this function call"
);
_;
}
// @dev Throws if called by any account other than the owner or executor
modifier onlyOwnerExec() {
require(
owner() == msg.sender || executor() == msg.sender,
"Roles: caller is not the owner"
);
_;
}
modifier onlyOwnerExecDisabler() {
require(
owner() == msg.sender ||
executor() == msg.sender ||
disabler() == msg.sender,
"Caller is not the owner, executor or authorized disabler"
);
_;
}
modifier onlyOwnerExecActivator() {
require(
owner() == msg.sender ||
executor() == msg.sender ||
isTokenActivator(msg.sender),
"Caller is not the owner, executor or authorized activator"
);
_;
}
function updateRoleCache(uint256 role, address contr) public virtual {
roleCache[contr][role] = roles.getRole(role, contr);
}
function updateMainCharacterCache(uint256 role) public virtual {
mainCharacterCache[role] = roles.mainCharacters(role);
}
function owner() internal view returns (address) {
return roles.owner();
}
function executor() internal returns (address) {
return roles.executor();
}
function disabler() internal view returns (address) {
return mainCharacterCache[DISABLER];
}
function fund() internal view returns (address) {
return mainCharacterCache[FUND];
}
function lending() internal view returns (address) {
return mainCharacterCache[LENDING];
}
function marginRouter() internal view returns (address) {
return mainCharacterCache[MARGIN_ROUTER];
}
function crossMarginTrading() internal view returns (address) {
return mainCharacterCache[CROSS_MARGIN_TRADING];
}
function feeController() internal view returns (address) {
return mainCharacterCache[FEE_CONTROLLER];
}
function price() internal view returns (address) {
return mainCharacterCache[PRICE_CONTROLLER];
}
function admin() internal view returns (address) {
return mainCharacterCache[ADMIN];
}
function incentiveDistributor() internal view returns (address) {
return mainCharacterCache[INCENTIVE_DISTRIBUTION];
}
function tokenAdmin() internal view returns (address) {
return mainCharacterCache[TOKEN_ADMIN];
}
function isBorrower(address contr) internal view returns (bool) {
return roleCache[contr][BORROWER];
}
function isFundTransferer(address contr) internal view returns (bool) {
return roleCache[contr][FUND_TRANSFERER];
}
function isMarginTrader(address contr) internal view returns (bool) {
return roleCache[contr][MARGIN_TRADER];
}
function isFeeSource(address contr) internal view returns (bool) {
return roleCache[contr][FEE_SOURCE];
}
function isMarginCaller(address contr) internal view returns (bool) {
return roleCache[contr][MARGIN_CALLER];
}
function isLiquidator(address contr) internal view returns (bool) {
return roleCache[contr][LIQUIDATOR];
}
function isAuthorizedFundTrader(address contr)
internal
view
returns (bool)
{
return roleCache[contr][AUTHORIZED_FUND_TRADER];
}
function isIncentiveReporter(address contr) internal view returns (bool) {
return roleCache[contr][INCENTIVE_REPORTER];
}
function isTokenActivator(address contr) internal view returns (bool) {
return roleCache[contr][TOKEN_ACTIVATOR];
}
function isStakePenalizer(address contr) internal view returns (bool) {
return roleCache[contr][STAKE_PENALIZER];
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/access/Ownable.sol";
import "../interfaces/IDependencyController.sol";
// we chose not to go with an enum
// to make this list easy to extend
uint256 constant FUND_TRANSFERER = 1;
uint256 constant MARGIN_CALLER = 2;
uint256 constant BORROWER = 3;
uint256 constant MARGIN_TRADER = 4;
uint256 constant FEE_SOURCE = 5;
uint256 constant LIQUIDATOR = 6;
uint256 constant AUTHORIZED_FUND_TRADER = 7;
uint256 constant INCENTIVE_REPORTER = 8;
uint256 constant TOKEN_ACTIVATOR = 9;
uint256 constant STAKE_PENALIZER = 10;
uint256 constant FUND = 101;
uint256 constant LENDING = 102;
uint256 constant MARGIN_ROUTER = 103;
uint256 constant CROSS_MARGIN_TRADING = 104;
uint256 constant FEE_CONTROLLER = 105;
uint256 constant PRICE_CONTROLLER = 106;
uint256 constant ADMIN = 107;
uint256 constant INCENTIVE_DISTRIBUTION = 108;
uint256 constant TOKEN_ADMIN = 109;
uint256 constant DISABLER = 1001;
uint256 constant DEPENDENCY_CONTROLLER = 1002;
/// @title Manage permissions of contracts and ownership of everything
/// owned by a multisig wallet (0xEED9D1c6B4cdEcB3af070D85bfd394E7aF179CBd) during
/// beta and will then be transfered to governance
/// https://github.com/marginswap/governance
contract Roles is Ownable {
mapping(address => mapping(uint256 => bool)) public roles;
mapping(uint256 => address) public mainCharacters;
constructor() Ownable() {
// token activation from the get-go
roles[msg.sender][TOKEN_ACTIVATOR] = true;
}
/// @dev Throws if called by any account other than the owner.
modifier onlyOwnerExecDepController() {
require(
owner() == msg.sender ||
executor() == msg.sender ||
mainCharacters[DEPENDENCY_CONTROLLER] == msg.sender,
"Roles: caller is not the owner"
);
_;
}
function giveRole(uint256 role, address actor)
external
onlyOwnerExecDepController
{
roles[actor][role] = true;
}
function removeRole(uint256 role, address actor)
external
onlyOwnerExecDepController
{
roles[actor][role] = false;
}
function setMainCharacter(uint256 role, address actor)
external
onlyOwnerExecDepController
{
mainCharacters[role] = actor;
}
function getRole(uint256 role, address contr) external view returns (bool) {
return roles[contr][role];
}
/// @dev current executor
function executor() public returns (address exec) {
address depController = mainCharacters[DEPENDENCY_CONTROLLER];
if (depController != address(0)) {
exec = IDependencyController(depController).currentExecutor();
}
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
interface IDependencyController {
function currentExecutor() external returns (address);
}{
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 30000
},
"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":"_roles","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allCharacters","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allManagedContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allRoles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentExecutor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"disableContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"}],"name":"executeAsOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"role","type":"uint256"},{"internalType":"address","name":"actor","type":"address"}],"name":"giveRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"knownCharacters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"knownRoles","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mainCharacterCache","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contr","type":"address"},{"internalType":"uint256[]","name":"charactersPlayed","type":"uint256[]"},{"internalType":"uint256[]","name":"rolesPlayed","type":"uint256[]"}],"name":"manageContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"managedContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"role","type":"uint256"},{"internalType":"address","name":"actor","type":"address"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"roleCache","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roles","outputs":[{"internalType":"contract Roles","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"role","type":"uint256"},{"internalType":"address","name":"actor","type":"address"}],"name":"setMainCharacter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"updateCaches","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"character","type":"uint256"}],"name":"updateMainCharacterCache","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"role","type":"uint256"},{"internalType":"address","name":"contr","type":"address"}],"name":"updateRoleCache","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405162001dca38038062001dca833981016040819052610031916100ad565b806001600160a01b0381166100975760405162461bcd60e51b815260206004820152602260248201527f506c656173652070726f766964652076616c696420726f6c6573206164647265604482015261737360f01b606482015260840160405180910390fd5b60601b6001600160601b031916608052506100db565b6000602082840312156100be578081fd5b81516001600160a01b03811681146100d4578182fd5b9392505050565b60805160601c611c9f6200012b6000396000818161020801528181611191015281816112360152818161137e015281816114310152818161152e015281816115a3015261173d0152611c9f6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80635d4ef0b8116100cd578063a154ce8211610081578063e9c3f77d11610066578063e9c3f77d14610322578063f19990d714610358578063f1ce598e1461037b57610151565b8063a154ce82146102fc578063a1fdc4581461030f57610151565b8063713dade2116100b2578063713dade2146102a85780637a1a04df146102bb578063840c53bd146102e957610151565b80635d4ef0b8146102755780636b60a09b1461028857610151565b80632be5c6c011610124578063392f5f6411610109578063392f5f6414610203578063447d52ba1461024f5780634d5377691461026257610151565b80632be5c6c0146101bd5780633238405b146101f057610151565b8063071060a6146101565780631023d3e01461016b57806317b7b61b1461018957806325398f83146101aa575b600080fd5b610169610164366004611aa6565b61038e565b005b61017361047b565b6040516101809190611aed565b60405180910390f35b61019c610197366004611aa6565b6104ea565b604051908152602001610180565b6101696101b8366004611abe565b61050b565b6101e06101cb366004611aa6565b60056020526000908152604090205460ff1681565b6040519015158152602001610180565b6101696101fe366004611abe565b6105cb565b61022a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610180565b61016961025d366004611abe565b610710565b610169610270366004611abe565b610806565b610169610283366004611955565b6108bd565b60025461022a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101696102b6366004611916565b610abe565b6101e06102c93660046119c8565b600160209081526000928352604080842090915290825290205460ff1681565b61019c6102f7366004611aa6565b610cfe565b61016961030a366004611916565b610d0e565b61016961031d366004611916565b610e55565b61022a610330366004611aa6565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101e0610366366004611aa6565b60046020526000908152604090205460ff1681565b61022a610389366004611aa6565b611156565b60035460005b8082111561047657600381815481106103d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546040517f071060a60000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091169063071060a690602401600060405180830381600087803b15801561044b57600080fd5b505af115801561045f573d6000803e3d6000fd5b50505050808061046e90611bba565b915050610394565b505050565b606060038054806020026020016040519081016040528092919081815260200182805480156104e057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104b5575b5050505050905090565b600681815481106104fa57600080fd5b600091825260209091200154905081565b3361051461118d565b73ffffffffffffffffffffffffffffffffffffffff16148061055257503361053a611232565b73ffffffffffffffffffffffffffffffffffffffff16145b6105bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064015b60405180910390fd5b6105c782826112b0565b5050565b336105d461118d565b73ffffffffffffffffffffffffffffffffffffffff1614806106125750336105fa611232565b73ffffffffffffffffffffffffffffffffffffffff16145b8061067a5750336106626103e960009081526020527f236f539bf6e1b3b15a335e3cd157d360bc4be88c071635c19ba8a82b4f665e9f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16145b610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f43616c6c6572206973206e6f7420746865206f776e65722c206578656375746f60448201527f72206f7220617574686f72697a65642064697361626c6572000000000000000060648201526084016105b4565b6105c782826113e5565b60035460005b808211156108005760038181548110610758577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546040517f447d52ba0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff85811660248301529091169063447d52ba90604401600060405180830381600087803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b5050505080806107f890611bba565b915050610716565b50505050565b3361080f61118d565b73ffffffffffffffffffffffffffffffffffffffff16148061084d575033610835611232565b73ffffffffffffffffffffffffffffffffffffffff16145b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b6105c78282611460565b336108c661118d565b73ffffffffffffffffffffffffffffffffffffffff1614806109045750336108ec611232565b73ffffffffffffffffffffffffffffffffffffffff16145b61096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b6003805460018101825560009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790558251905b80821115610a47576000848281518110610a20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610a348187611460565b5080610a3f81611bba565b9150506109dd565b5050805160005b80821115610ab8576000838281518110610a91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610aa581876112b0565b5080610ab081611bba565b915050610a4e565b50610800845b60065460005b80821115610b90578273ffffffffffffffffffffffffffffffffffffffff1663071060a660068381548110610b22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546040518263ffffffff1660e01b8152600401610b4b91815260200190565b600060405180830381600087803b158015610b6557600080fd5b505af1158015610b79573d6000803e3d6000fd5b505050508080610b8890611bba565b915050610ac4565b505060075460005b808211156104765760005b600354811015610ceb578373ffffffffffffffffffffffffffffffffffffffff1663447d52ba60078481548110610c03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015460038481548110610c48577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015460405160e084901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050508080610ce390611bba565b915050610ba3565b5080610cf681611bba565b915050610b98565b600781815481106104fa57600080fd5b33610d1761118d565b73ffffffffffffffffffffffffffffffffffffffff161480610d55575033610d3d611232565b73ffffffffffffffffffffffffffffffffffffffff16145b80610dbd575033610da56103e960009081526020527f236f539bf6e1b3b15a335e3cd157d360bc4be88c071635c19ba8a82b4f665e9f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16145b610e49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f43616c6c6572206973206e6f7420746865206f776e65722c206578656375746f60448201527f72206f7220617574686f72697a65642064697361626c6572000000000000000060648201526084016105b4565b610e5281611593565b50565b33610e5e61118d565b73ffffffffffffffffffffffffffffffffffffffff161480610e9c575033610e84611232565b73ffffffffffffffffffffffffffffffffffffffff16145b610f02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b60008173ffffffffffffffffffffffffffffffffffffffff1663cd28fc8f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fa691908101906119f3565b905060005b808251111561101057610ffe828281518110610ff0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151846112b0565b8061100881611bba565b915050610fab565b5061101a82610abe565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080517f61461954000000000000000000000000000000000000000000000000000000008152905163614619549160048082019260009290919082900301818387803b1580156110ad57600080fd5b505af11580156110c1573d6000803e3d6000fd5b5050600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050805160005b8082111561080057611144838281518110611136577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151856113e5565b8061114e81611bba565b9150506110f2565b6003818154811061116657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190611939565b905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c34c08e56040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561129c57600080fd5b505af1158015611209573d6000803e3d6000fd5b60008281526005602052604090205460ff1661133257600082815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018290555b6040517f25398f830000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000000000000000000000000000000000000000000016906325398f83906044015b600060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b505050506105c78282610710565b6040517f3238405b0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f00000000000000000000000000000000000000000000000000000000000000001690633238405b906044016113a9565b60008281526004602052604090205460ff166114e257600082815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018290555b6040517f4d5377690000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634d53776990604401600060405180830381600087803b15801561157257600080fd5b505af1158015611586573d6000803e3d6000fd5b505050506105c78261038e565b60075460005b80821115611714577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166393552a3d60078381548110611617577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154856040518363ffffffff1660e01b815260040161165f92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60206040518083038186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190611a86565b1561170257611702600782815481106116f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154846113e5565b8061170c81611bba565b915050611599565b505060065460005b80821115610476578273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4ed0b6d600684815481106117b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546040518263ffffffff1660e01b81526004016117da91815260200190565b60206040518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190611939565b73ffffffffffffffffffffffffffffffffffffffff1614156118955761189560068281548110611883577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546000611460565b8061189f81611bba565b91505061171c565b600082601f8301126118b7578081fd5b813560206118cc6118c783611b96565b611b47565b80838252828201915082860187848660051b89010111156118eb578586fd5b855b85811015611909578135845292840192908401906001016118ed565b5090979650505050505050565b600060208284031215611927578081fd5b813561193281611c47565b9392505050565b60006020828403121561194a578081fd5b815161193281611c47565b600080600060608486031215611969578182fd5b833561197481611c47565b9250602084013567ffffffffffffffff80821115611990578384fd5b61199c878388016118a7565b935060408601359150808211156119b1578283fd5b506119be868287016118a7565b9150509250925092565b600080604083850312156119da578182fd5b82356119e581611c47565b946020939093013593505050565b60006020808385031215611a05578182fd5b825167ffffffffffffffff811115611a1b578283fd5b8301601f81018513611a2b578283fd5b8051611a396118c782611b96565b80828252848201915084840188868560051b8701011115611a58578687fd5b8694505b83851015611a7a578051835260019490940193918501918501611a5c565b50979650505050505050565b600060208284031215611a97578081fd5b81518015158114611932578182fd5b600060208284031215611ab7578081fd5b5035919050565b60008060408385031215611ad0578182fd5b823591506020830135611ae281611c47565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611b3b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611b09565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b8e57611b8e611c18565b604052919050565b600067ffffffffffffffff821115611bb057611bb0611c18565b5060051b60200190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c11577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e5257600080fdfea264697066735822122022af1b24627772a0ff3fc7031feeba3e1d0e46e7abd9ab1018915aae2f0ccc5e64736f6c63430008030033000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c80635d4ef0b8116100cd578063a154ce8211610081578063e9c3f77d11610066578063e9c3f77d14610322578063f19990d714610358578063f1ce598e1461037b57610151565b8063a154ce82146102fc578063a1fdc4581461030f57610151565b8063713dade2116100b2578063713dade2146102a85780637a1a04df146102bb578063840c53bd146102e957610151565b80635d4ef0b8146102755780636b60a09b1461028857610151565b80632be5c6c011610124578063392f5f6411610109578063392f5f6414610203578063447d52ba1461024f5780634d5377691461026257610151565b80632be5c6c0146101bd5780633238405b146101f057610151565b8063071060a6146101565780631023d3e01461016b57806317b7b61b1461018957806325398f83146101aa575b600080fd5b610169610164366004611aa6565b61038e565b005b61017361047b565b6040516101809190611aed565b60405180910390f35b61019c610197366004611aa6565b6104ea565b604051908152602001610180565b6101696101b8366004611abe565b61050b565b6101e06101cb366004611aa6565b60056020526000908152604090205460ff1681565b6040519015158152602001610180565b6101696101fe366004611abe565b6105cb565b61022a7f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610180565b61016961025d366004611abe565b610710565b610169610270366004611abe565b610806565b610169610283366004611955565b6108bd565b60025461022a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101696102b6366004611916565b610abe565b6101e06102c93660046119c8565b600160209081526000928352604080842090915290825290205460ff1681565b61019c6102f7366004611aa6565b610cfe565b61016961030a366004611916565b610d0e565b61016961031d366004611916565b610e55565b61022a610330366004611aa6565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101e0610366366004611aa6565b60046020526000908152604090205460ff1681565b61022a610389366004611aa6565b611156565b60035460005b8082111561047657600381815481106103d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546040517f071060a60000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091169063071060a690602401600060405180830381600087803b15801561044b57600080fd5b505af115801561045f573d6000803e3d6000fd5b50505050808061046e90611bba565b915050610394565b505050565b606060038054806020026020016040519081016040528092919081815260200182805480156104e057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116104b5575b5050505050905090565b600681815481106104fa57600080fd5b600091825260209091200154905081565b3361051461118d565b73ffffffffffffffffffffffffffffffffffffffff16148061055257503361053a611232565b73ffffffffffffffffffffffffffffffffffffffff16145b6105bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064015b60405180910390fd5b6105c782826112b0565b5050565b336105d461118d565b73ffffffffffffffffffffffffffffffffffffffff1614806106125750336105fa611232565b73ffffffffffffffffffffffffffffffffffffffff16145b8061067a5750336106626103e960009081526020527f236f539bf6e1b3b15a335e3cd157d360bc4be88c071635c19ba8a82b4f665e9f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16145b610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f43616c6c6572206973206e6f7420746865206f776e65722c206578656375746f60448201527f72206f7220617574686f72697a65642064697361626c6572000000000000000060648201526084016105b4565b6105c782826113e5565b60035460005b808211156108005760038181548110610758577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546040517f447d52ba0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff85811660248301529091169063447d52ba90604401600060405180830381600087803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b5050505080806107f890611bba565b915050610716565b50505050565b3361080f61118d565b73ffffffffffffffffffffffffffffffffffffffff16148061084d575033610835611232565b73ffffffffffffffffffffffffffffffffffffffff16145b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b6105c78282611460565b336108c661118d565b73ffffffffffffffffffffffffffffffffffffffff1614806109045750336108ec611232565b73ffffffffffffffffffffffffffffffffffffffff16145b61096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b6003805460018101825560009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790558251905b80821115610a47576000848281518110610a20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610a348187611460565b5080610a3f81611bba565b9150506109dd565b5050805160005b80821115610ab8576000838281518110610a91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050610aa581876112b0565b5080610ab081611bba565b915050610a4e565b50610800845b60065460005b80821115610b90578273ffffffffffffffffffffffffffffffffffffffff1663071060a660068381548110610b22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546040518263ffffffff1660e01b8152600401610b4b91815260200190565b600060405180830381600087803b158015610b6557600080fd5b505af1158015610b79573d6000803e3d6000fd5b505050508080610b8890611bba565b915050610ac4565b505060075460005b808211156104765760005b600354811015610ceb578373ffffffffffffffffffffffffffffffffffffffff1663447d52ba60078481548110610c03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015460038481548110610c48577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015460405160e084901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b158015610cc057600080fd5b505af1158015610cd4573d6000803e3d6000fd5b505050508080610ce390611bba565b915050610ba3565b5080610cf681611bba565b915050610b98565b600781815481106104fa57600080fd5b33610d1761118d565b73ffffffffffffffffffffffffffffffffffffffff161480610d55575033610d3d611232565b73ffffffffffffffffffffffffffffffffffffffff16145b80610dbd575033610da56103e960009081526020527f236f539bf6e1b3b15a335e3cd157d360bc4be88c071635c19ba8a82b4f665e9f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16145b610e49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f43616c6c6572206973206e6f7420746865206f776e65722c206578656375746f60448201527f72206f7220617574686f72697a65642064697361626c6572000000000000000060648201526084016105b4565b610e5281611593565b50565b33610e5e61118d565b73ffffffffffffffffffffffffffffffffffffffff161480610e9c575033610e84611232565b73ffffffffffffffffffffffffffffffffffffffff16145b610f02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572000060448201526064016105b4565b60008173ffffffffffffffffffffffffffffffffffffffff1663cd28fc8f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fa691908101906119f3565b905060005b808251111561101057610ffe828281518110610ff0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151846112b0565b8061100881611bba565b915050610fab565b5061101a82610abe565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080517f61461954000000000000000000000000000000000000000000000000000000008152905163614619549160048082019260009290919082900301818387803b1580156110ad57600080fd5b505af11580156110c1573d6000803e3d6000fd5b5050600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555050805160005b8082111561080057611144838281518110611136577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151856113e5565b8061114e81611bba565b9150506110f2565b6003818154811061116657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60007f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190611939565b905090565b60007f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c73ffffffffffffffffffffffffffffffffffffffff1663c34c08e56040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561129c57600080fd5b505af1158015611209573d6000803e3d6000fd5b60008281526005602052604090205460ff1661133257600082815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018290555b6040517f25398f830000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c16906325398f83906044015b600060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b505050506105c78282610710565b6040517f3238405b0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c1690633238405b906044016113a9565b60008281526004602052604090205460ff166114e257600082815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018290555b6040517f4d5377690000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff82811660248301527f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c1690634d53776990604401600060405180830381600087803b15801561157257600080fd5b505af1158015611586573d6000803e3d6000fd5b505050506105c78261038e565b60075460005b80821115611714577f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c73ffffffffffffffffffffffffffffffffffffffff166393552a3d60078381548110611617577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154856040518363ffffffff1660e01b815260040161165f92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60206040518083038186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190611a86565b1561170257611702600782815481106116f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154846113e5565b8061170c81611bba565b915050611599565b505060065460005b80821115610476578273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c73ffffffffffffffffffffffffffffffffffffffff1663b4ed0b6d600684815481106117b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546040518263ffffffff1660e01b81526004016117da91815260200190565b60206040518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190611939565b73ffffffffffffffffffffffffffffffffffffffff1614156118955761189560068281548110611883577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546000611460565b8061189f81611bba565b91505061171c565b600082601f8301126118b7578081fd5b813560206118cc6118c783611b96565b611b47565b80838252828201915082860187848660051b89010111156118eb578586fd5b855b85811015611909578135845292840192908401906001016118ed565b5090979650505050505050565b600060208284031215611927578081fd5b813561193281611c47565b9392505050565b60006020828403121561194a578081fd5b815161193281611c47565b600080600060608486031215611969578182fd5b833561197481611c47565b9250602084013567ffffffffffffffff80821115611990578384fd5b61199c878388016118a7565b935060408601359150808211156119b1578283fd5b506119be868287016118a7565b9150509250925092565b600080604083850312156119da578182fd5b82356119e581611c47565b946020939093013593505050565b60006020808385031215611a05578182fd5b825167ffffffffffffffff811115611a1b578283fd5b8301601f81018513611a2b578283fd5b8051611a396118c782611b96565b80828252848201915084840188868560051b8701011115611a58578687fd5b8694505b83851015611a7a578051835260019490940193918501918501611a5c565b50979650505050505050565b600060208284031215611a97578081fd5b81518015158114611932578182fd5b600060208284031215611ab7578081fd5b5035919050565b60008060408385031215611ad0578182fd5b823591506020830135611ae281611c47565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611b3b57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611b09565b50909695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b8e57611b8e611c18565b604052919050565b600067ffffffffffffffff821115611bb057611bb0611c18565b5060051b60200190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c11577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e5257600080fdfea264697066735822122022af1b24627772a0ff3fc7031feeba3e1d0e46e7abd9ab1018915aae2f0ccc5e64736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c
-----Decoded View---------------
Arg [0] : _roles (address): 0xC6D13A49cdC5Afc7798dd0eBA7698DB9BFCc1D8c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c6d13a49cdc5afc7798dd0eba7698db9bfcc1d8c
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.