Overview
ETH Balance
0 ETH
Eth Value
$0.00Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Add Address | 7453772 | 2523 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MultiSigWalletWithLock
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-12-20
*/
pragma solidity 0.4.24;
/** @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
* @author Stefan George - <stefan.george@consensys.net>
*/
contract MultiSigWallet {
uint256 constant public MAX_OWNER_COUNT = 50;
event Confirmation(address indexed sender, uint256 indexed transactionId);
event Revocation(address indexed sender, uint256 indexed transactionId);
event Submission(uint256 indexed transactionId);
event Execution(uint256 indexed transactionId);
event ExecutionFailure(uint256 indexed transactionId);
event Deposit(address indexed sender, uint256 value);
event OwnerAddition(address indexed owner);
event OwnerRemoval(address indexed owner);
event RequirementChange(uint256 required);
mapping (uint256 => Transaction) public transactions;
mapping (uint256 => mapping (address => bool)) public confirmations;
mapping (address => bool) public isOwner;
address[] public owners;
uint256 public required;
uint256 public transactionCount;
struct Transaction {
address destination;
uint256 value;
bytes data;
bool executed;
}
modifier onlyWallet() {
if (msg.sender != address(this))
revert("ONLY_WALLET_ERROR");
_;
}
modifier ownerDoesNotExist(address owner) {
if (isOwner[owner])
revert("OWNER_DOES_NOT_EXIST_ERROR");
_;
}
modifier ownerExists(address owner) {
if (!isOwner[owner])
revert("OWNER_EXISTS_ERROR");
_;
}
modifier transactionExists(uint256 transactionId) {
if (transactions[transactionId].destination == 0)
revert("TRANSACTION_EXISTS_ERROR");
_;
}
modifier confirmed(uint256 transactionId, address owner) {
if (!confirmations[transactionId][owner])
revert("CONFIRMED_ERROR");
_;
}
modifier notConfirmed(uint256 transactionId, address owner) {
if (confirmations[transactionId][owner])
revert("NOT_CONFIRMED_ERROR");
_;
}
modifier notExecuted(uint256 transactionId) {
if (transactions[transactionId].executed)
revert("NOT_EXECUTED_ERROR");
_;
}
modifier notNull(address _address) {
if (_address == 0)
revert("NOT_NULL_ERROR");
_;
}
modifier validRequirement(uint256 ownerCount, uint256 _required) {
if (ownerCount > MAX_OWNER_COUNT || _required > ownerCount || _required == 0 || ownerCount == 0)
revert("VALID_REQUIREMENT_ERROR");
_;
}
/** @dev Fallback function allows to deposit ether. */
function() public payable {
if (msg.value > 0) {
emit Deposit(msg.sender, msg.value);
}
}
/** @dev Contract constructor sets initial owners and required number of confirmations.
* @param _owners List of initial owners.
* @param _required Number of required confirmations.
*/
constructor(address[] _owners, uint256 _required)
public
validRequirement(_owners.length, _required)
{
for (uint256 i = 0; i < _owners.length; i++) {
if (isOwner[_owners[i]] || _owners[i] == 0) {
revert("OWNER_ERROR");
}
isOwner[_owners[i]] = true;
}
owners = _owners;
required = _required;
}
/** @dev Allows to add a new owner. Transaction has to be sent by wallet.
* @param owner Address of new owner.
*/
function addOwner(address owner)
public
onlyWallet
ownerDoesNotExist(owner)
notNull(owner)
validRequirement(owners.length + 1, required)
{
isOwner[owner] = true;
owners.push(owner);
emit OwnerAddition(owner);
}
/** @dev Allows to remove an owner. Transaction has to be sent by wallet.
* @param owner Address of owner.
*/
function removeOwner(address owner)
public
onlyWallet
ownerExists(owner)
{
isOwner[owner] = false;
for (uint256 i = 0; i < owners.length - 1; i++) {
if (owners[i] == owner) {
owners[i] = owners[owners.length - 1];
break;
}
}
owners.length -= 1;
if (required > owners.length) {
changeRequirement(owners.length);
}
emit OwnerRemoval(owner);
}
/** @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
* @param owner Address of owner to be replaced.
* @param owner Address of new owner.
*/
function replaceOwner(address owner, address newOwner)
public
onlyWallet
ownerExists(owner)
ownerDoesNotExist(newOwner)
{
for (uint256 i = 0; i < owners.length; i++) {
if (owners[i] == owner) {
owners[i] = newOwner;
break;
}
}
isOwner[owner] = false;
isOwner[newOwner] = true;
emit OwnerRemoval(owner);
emit OwnerAddition(newOwner);
}
/** @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
* @param _required Number of required confirmations.
*/
function changeRequirement(uint256 _required)
public
onlyWallet
validRequirement(owners.length, _required)
{
required = _required;
emit RequirementChange(_required);
}
/** @dev Allows an owner to submit and confirm a transaction.
* @param destination Transaction target address.
* @param value Transaction ether value.
* @param data Transaction data payload.
* @return Returns transaction ID.
*/
function submitTransaction(address destination, uint256 value, bytes data)
public
returns (uint256 transactionId)
{
transactionId = addTransaction(destination, value, data);
confirmTransaction(transactionId);
}
/** @dev Allows an owner to confirm a transaction.
* @param transactionId Transaction ID.
*/
function confirmTransaction(uint256 transactionId)
public
ownerExists(msg.sender)
transactionExists(transactionId)
notConfirmed(transactionId, msg.sender)
{
confirmations[transactionId][msg.sender] = true;
emit Confirmation(msg.sender, transactionId);
executeTransaction(transactionId);
}
/** @dev Allows an owner to revoke a confirmation for a transaction.
* @param transactionId Transaction ID.
*/
function revokeConfirmation(uint256 transactionId)
public
ownerExists(msg.sender)
confirmed(transactionId, msg.sender)
notExecuted(transactionId)
{
confirmations[transactionId][msg.sender] = false;
emit Revocation(msg.sender, transactionId);
}
/** @dev Allows anyone to execute a confirmed transaction.
* @param transactionId Transaction ID.
*/
function executeTransaction(uint256 transactionId)
public
ownerExists(msg.sender)
notExecuted(transactionId)
{
if (isConfirmed(transactionId)) {
Transaction storage transaction = transactions[transactionId];
transaction.executed = true;
if (transaction.destination.call.value(transaction.value)(transaction.data))
emit Execution(transactionId);
else {
emit ExecutionFailure(transactionId);
transaction.executed = false;
}
}
}
/** @dev Returns the confirmation status of a transaction.
* @param transactionId Transaction ID.
* @return Confirmation status.
*/
function isConfirmed(uint256 transactionId)
public
view
returns (bool)
{
uint256 count = 0;
for (uint256 i = 0; i < owners.length; i++) {
if (confirmations[transactionId][owners[i]]) {
count += 1;
}
if (count >= required) {
return true;
}
}
}
/* Internal functions */
/** @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
* @param destination Transaction target address.
* @param value Transaction ether value.
* @param data Transaction data payload.
* @return Returns transaction ID.
*/
function addTransaction(address destination, uint256 value, bytes data)
internal
notNull(destination)
returns (uint256 transactionId)
{
transactionId = transactionCount;
transactions[transactionId] = Transaction({
destination: destination,
value: value,
data: data,
executed: false
});
transactionCount += 1;
emit Submission(transactionId);
}
/* Web3 call functions */
/** @dev Returns number of confirmations of a transaction.
* @param transactionId Transaction ID.
* @return Number of confirmations.
*/
function getConfirmationCount(uint256 transactionId)
public
view
returns (uint256 count)
{
for (uint256 i = 0; i < owners.length; i++) {
if (confirmations[transactionId][owners[i]]) {
count += 1;
}
}
}
/** @dev Returns total number of transactions after filers are applied.
* @param pending Include pending transactions.
* @param executed Include executed transactions.
* @return Total number of transactions after filters are applied.
*/
function getTransactionCount(bool pending, bool executed)
public
view
returns (uint256 count)
{
for (uint256 i = 0; i < transactionCount; i++) {
if (pending && !transactions[i].executed || executed && transactions[i].executed) {
count += 1;
}
}
}
/** @dev Returns list of owners.
* @return List of owner addresses.
*/
function getOwners() public view returns (address[]) {
return owners;
}
/** @dev Returns array with owner addresses, which confirmed transaction.
* @param transactionId Transaction ID.
* @return Returns array of owner addresses.
*/
function getConfirmations(uint256 transactionId)
public
view
returns (address[] _confirmations)
{
address[] memory confirmationsTemp = new address[](owners.length);
uint256 count = 0;
uint256 i;
for (i = 0; i < owners.length; i++) {
if (confirmations[transactionId][owners[i]]) {
confirmationsTemp[count] = owners[i];
count += 1;
}
}
_confirmations = new address[](count);
for (i = 0; i < count; i++) {
_confirmations[i] = confirmationsTemp[i];
}
}
}
contract MultiSigWalletWithLock is
MultiSigWallet
{
/* default lock time is 2 weeks, can be modified later */
uint256 public lockSeconds = 1209600;
/* events */
event UnlockTimeSet(uint256 indexed transactionId, uint256 confirmationTime);
event LockSecondsChange(uint256 lockSeconds);
/* unlock time of transactions */
mapping (uint256 => uint256) public unlockTimes;
/** @dev Contract constructor sets initial owners and required number of confirmations.
* @param _owners List of initial owners.
* @param _required Number of required confirmations.
*/
constructor (
address[] _owners,
uint256 _required
)
public
MultiSigWallet(_owners, _required)
{}
/** @dev Changes the duration of the time lock for transactions.
* @param _lockSeconds Duration needed after a transaction is confirmed and before it becomes executable, in seconds.
*/
function changeLockSeconds(uint256 _lockSeconds)
public
onlyWallet
{
lockSeconds = _lockSeconds;
emit LockSecondsChange(_lockSeconds);
}
/** @dev Allows an owner to confirm a transaction.
* @param transactionId Transaction ID.
*/
function confirmTransaction(uint256 transactionId)
public
ownerExists(msg.sender)
transactionExists(transactionId)
notConfirmed(transactionId, msg.sender)
{
confirmations[transactionId][msg.sender] = true;
emit Confirmation(msg.sender, transactionId);
if (isConfirmed(transactionId) && unlockTimes[transactionId] == 0) {
uint256 unlockTime = block.timestamp + lockSeconds;
unlockTimes[transactionId] = unlockTime;
emit UnlockTimeSet(transactionId, unlockTime);
}
}
/** @dev Allows anyone to execute a confirmed transaction.
* @param transactionId Transaction ID.
*/
function executeTransaction(uint256 transactionId)
public
ownerExists(msg.sender)
notExecuted(transactionId)
{
require(
block.timestamp >= unlockTimes[transactionId],
"TRANSACTION_NEED_TO_UNLOCK"
);
super.executeTransaction(transactionId);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"confirmations","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"unlockTimes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_lockSeconds","type":"uint256"}],"name":"changeLockSeconds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"name":"_confirmations","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockSeconds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"required","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"},{"indexed":false,"name":"confirmationTime","type":"uint256"}],"name":"UnlockTimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"lockSeconds","type":"uint256"}],"name":"LockSecondsChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"}]Contract Creation Code
6080604052621275006006553480156200001857600080fd5b506040516200244138038062002441833981016040528051602082015191018051909190829082906000908260328211806200005357508181115b806200005d575080155b8062000067575081155b15620000d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56414c49445f524551554952454d454e545f4552524f52000000000000000000604482015290519081900360640190fd5b600092505b84518310156200020a57600260008685815181101515620000f657fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff168062000149575084838151811015156200013257fe5b90602001906020020151600160a060020a03166000145b15620001b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f574e45525f4552524f52000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600260008786815181101515620001cb57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560019290920191620000d9565b84516200021f90600390602088019062000233565b50505060049190915550620002c792505050565b8280548282559060005260206000209081019282156200028b579160200282015b828111156200028b5782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000254565b50620002999291506200029d565b5090565b620002c491905b8082111562000299578054600160a060020a0319168155600101620002a4565b90565b61216a80620002d76000396000f3006080604052600436106101325763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c278114610174578063173825d9146101b557806320ea8d86146101e35780632f54bf6e146101fb5780633411c81c1461023d578063547415251461026e5780637065cb481461029f57806376ac947a146102cd578063784547a7146102e55780638b51d13f146102fd5780638c22d5d3146103155780639ace38c21461032d578063a0e67e2b14610402578063b5dc40c314610467578063b77bf6001461047f578063ba51a6df14610494578063bfa6fddb146104ac578063c01a8c84146104c1578063c6427474146104d9578063d74f8edd1461054f578063dc8452cd14610564578063e20056e614610579578063ee22610b146105ad575b60003411156101725760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561018057600080fd5b5061018c6004356105c5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c157600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff600435166105fa565b3480156101ef57600080fd5b50610172600435610915565b34801561020757600080fd5b5061022973ffffffffffffffffffffffffffffffffffffffff60043516610b13565b604080519115158252519081900360200190f35b34801561024957600080fd5b5061022960043573ffffffffffffffffffffffffffffffffffffffff60243516610b28565b34801561027a57600080fd5b5061028d60043515156024351515610b48565b60408051918252519081900360200190f35b3480156102ab57600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff60043516610bb4565b3480156102d957600080fd5b5061028d600435610ea9565b3480156102f157600080fd5b50610229600435610ebb565b34801561030957600080fd5b5061028d600435610f4b565b34801561032157600080fd5b50610172600435610fc7565b34801561033957600080fd5b50610345600435611070565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156103c45781810151838201526020016103ac565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561040e57600080fd5b50610417611159565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561045357818101518382015260200161043b565b505050509050019250505060405180910390f35b34801561047357600080fd5b506104176004356111c9565b34801561048b57600080fd5b5061028d611376565b3480156104a057600080fd5b5061017260043561137c565b3480156104b857600080fd5b5061028d6114b7565b3480156104cd57600080fd5b506101726004356114bd565b3480156104e557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261028d94823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506117529650505050505050565b34801561055b57600080fd5b5061028d611771565b34801561057057600080fd5b5061028d611776565b34801561058557600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff6004358116906024351661177c565b3480156105b957600080fd5b50610172600435611ab2565b60038054829081106105d357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600033301461066a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16151561070257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905591505b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01821015610885578273ffffffffffffffffffffffffffffffffffffffff166003838154811015156107a257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561087a57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106107fa57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918490811061082d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610885565b600190910190610750565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108b69082612082565b5060035460045411156108cf576003546108cf9061137c565b60405173ffffffffffffffffffffffffffffffffffffffff8416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff16151561099557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b60008281526001602090815260408083203380855292529091205483919060ff161515610a2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f434f4e4649524d45445f4552524f520000000000000000000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060030154849060ff1615610aa657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600085815260016020908152604080832033808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b600554811015610bad57838015610b75575060008181526020819052604090206003015460ff16155b80610b995750828015610b99575060008181526020819052604090206003015460ff165b15610ba5576001820191505b600101610b4c565b5092915050565b333014610c2257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff1615610cb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff81161515610d3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f4e554c4c5f4552524f52000000000000000000000000000000000000604482015290519081900360640190fd5b6003805490506001016004546032821180610d5857508181115b80610d61575080155b80610d6a575081155b15610dd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56414c49445f524551554952454d454e545f4552524f52000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff851660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b60076020526000908152604090205481565b600080805b600354811015610f445760008481526001602052604081206003805491929184908110610ee957fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f2a576001820191505b6004548210610f3c5760019250610f44565b600101610ec0565b5050919050565b6000805b600354811015610fc15760008381526001602052604081206003805491929184908110610f7857fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610fb9576001820191505b600101610f4f565b50919050565b33301461103557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b60068190556040805182815290517f884d6758bafbcb4b5e2e0393178ca1f3da3dd380a54ce05ab60aa59756db9dc19181900360200190a150565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff909316959094919291908301828280156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050506003909301549192505060ff1684565b606060038054806020026020016040519081016040528092919081815260200182805480156111be57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611193575b505050505090505b90565b6060806000806003805490506040519080825280602002602001820160405280156111fe578160200160208202803883390190505b50925060009150600090505b6003548110156112e2576000858152600160205260408120600380549192918490811061123357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156112da57600380548290811061127b57fe5b600091825260209091200154835173ffffffffffffffffffffffffffffffffffffffff909116908490849081106112ae57fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152600191909101905b60010161120a565b8160405190808252806020026020018201604052801561130c578160200160208202803883390190505b509350600090505b8181101561136e57828181518110151561132a57fe5b90602001906020020151848281518110151561134257fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152600101611314565b505050919050565b60055481565b3330146113ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b6003548160328211806113fc57508181115b80611405575080155b8061140e575081155b1561147a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56414c49445f524551554952454d454e545f4552524f52000000000000000000604482015290519081900360640190fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b60065481565b3360008181526002602052604081205490919060ff16151561154057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260208190526040902054839073ffffffffffffffffffffffffffffffffffffffff1615156115d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5452414e53414354494f4e5f4558495354535f4552524f520000000000000000604482015290519081900360640190fd5b60008481526001602090815260408083203380855292529091205485919060ff161561166157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e4f545f434f4e4649524d45445f4552524f5200000000000000000000000000604482015290519081900360640190fd5b600086815260016020818152604080842033808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36116d586610ebb565b80156116ed5750600086815260076020526040902054155b1561174a5760065442019450846007600088815260200190815260200160002081905550857f280af6a3ba059a74f0e894262aa07f2c4d0de1e231882263c0d7dcda111b1a44866040518082815260200191505060405180910390a25b505050505050565b600061175f848484611c40565b905061176a816114bd565b9392505050565b603281565b60045481565b60003330146117ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902054839060ff16151561188457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902054839060ff161561191b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000604482015290519081900360640190fd5b600092505b6003548310156119e0578473ffffffffffffffffffffffffffffffffffffffff1660038481548110151561195057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156119d5578360038481548110151561198857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119e0565b600190920191611920565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff161515611b3257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600082815260208190526040902060030154829060ff1615611bb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260076020526040902054421015611c3257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4e4545445f544f5f554e4c4f434b000000000000604482015290519081900360640190fd5b611c3b83611dd5565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff81161515611cc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f4e554c4c5f4552524f52000000000000000000000000000000000000604482015290519081900360640190fd5b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931783555160018301559251805194965091939092611d5f9260028501929101906120a6565b5060609190910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b3360008181526002602052604081205490919060ff161515611e5857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260208190526040902060030154839060ff1615611edb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b611ee484610ebb565b1561207c57600084815260208190526040908190206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915581548183015493516002808501805495995073ffffffffffffffffffffffffffffffffffffffff909316959492939192839285927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918316156101000291909101909116048015611fdb5780601f10611fb057610100808354040283529160200191611fdb565b820191906000526020600020905b815481529060010190602001808311611fbe57829003601f168201915b505091505060006040518083038185875af192505050156120265760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a261207c565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a26003830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050565b815481835581811115611c3b57600083815260209020611c3b918101908301612124565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120e757805160ff1916838001178555612114565b82800160010185558215612114579182015b828111156121145782518255916020019190600101906120f9565b50612120929150612124565b5090565b6111c691905b80821115612120576000815560010161212a5600a165627a7a7230582078d36aa978a067559d9b95fb0da129f3aee1b265a8fd78d7b93fa29f3d934b2f0029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000957082a1b43fc1e1b6f70c75f5cb1cd68c4327ec000000000000000000000000cd77fe287240ad55ea083b671501cb0367769d3200000000000000000000000015cbef6b721870f5dbb054ded1e61476a688a06b
Deployed Bytecode
0x6080604052600436106101325763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c278114610174578063173825d9146101b557806320ea8d86146101e35780632f54bf6e146101fb5780633411c81c1461023d578063547415251461026e5780637065cb481461029f57806376ac947a146102cd578063784547a7146102e55780638b51d13f146102fd5780638c22d5d3146103155780639ace38c21461032d578063a0e67e2b14610402578063b5dc40c314610467578063b77bf6001461047f578063ba51a6df14610494578063bfa6fddb146104ac578063c01a8c84146104c1578063c6427474146104d9578063d74f8edd1461054f578063dc8452cd14610564578063e20056e614610579578063ee22610b146105ad575b60003411156101725760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561018057600080fd5b5061018c6004356105c5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101c157600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff600435166105fa565b3480156101ef57600080fd5b50610172600435610915565b34801561020757600080fd5b5061022973ffffffffffffffffffffffffffffffffffffffff60043516610b13565b604080519115158252519081900360200190f35b34801561024957600080fd5b5061022960043573ffffffffffffffffffffffffffffffffffffffff60243516610b28565b34801561027a57600080fd5b5061028d60043515156024351515610b48565b60408051918252519081900360200190f35b3480156102ab57600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff60043516610bb4565b3480156102d957600080fd5b5061028d600435610ea9565b3480156102f157600080fd5b50610229600435610ebb565b34801561030957600080fd5b5061028d600435610f4b565b34801561032157600080fd5b50610172600435610fc7565b34801561033957600080fd5b50610345600435611070565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156103c45781810151838201526020016103ac565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561040e57600080fd5b50610417611159565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561045357818101518382015260200161043b565b505050509050019250505060405180910390f35b34801561047357600080fd5b506104176004356111c9565b34801561048b57600080fd5b5061028d611376565b3480156104a057600080fd5b5061017260043561137c565b3480156104b857600080fd5b5061028d6114b7565b3480156104cd57600080fd5b506101726004356114bd565b3480156104e557600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261028d94823573ffffffffffffffffffffffffffffffffffffffff169460248035953695946064949201919081908401838280828437509497506117529650505050505050565b34801561055b57600080fd5b5061028d611771565b34801561057057600080fd5b5061028d611776565b34801561058557600080fd5b5061017273ffffffffffffffffffffffffffffffffffffffff6004358116906024351661177c565b3480156105b957600080fd5b50610172600435611ab2565b60038054829081106105d357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600033301461066a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054829060ff16151561070257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905591505b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01821015610885578273ffffffffffffffffffffffffffffffffffffffff166003838154811015156107a257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561087a57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081106107fa57fe5b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff909216918490811061082d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610885565b600190910190610750565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01906108b69082612082565b5060035460045411156108cf576003546108cf9061137c565b60405173ffffffffffffffffffffffffffffffffffffffff8416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff16151561099557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b60008281526001602090815260408083203380855292529091205483919060ff161515610a2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f434f4e4649524d45445f4552524f520000000000000000000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060030154849060ff1615610aa657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600085815260016020908152604080832033808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b600554811015610bad57838015610b75575060008181526020819052604090206003015460ff16155b80610b995750828015610b99575060008181526020819052604090206003015460ff165b15610ba5576001820191505b600101610b4c565b5092915050565b333014610c2257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054819060ff1615610cb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff81161515610d3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f4e554c4c5f4552524f52000000000000000000000000000000000000604482015290519081900360640190fd5b6003805490506001016004546032821180610d5857508181115b80610d61575080155b80610d6a575081155b15610dd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56414c49445f524551554952454d454e545f4552524f52000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff851660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b60076020526000908152604090205481565b600080805b600354811015610f445760008481526001602052604081206003805491929184908110610ee957fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610f2a576001820191505b6004548210610f3c5760019250610f44565b600101610ec0565b5050919050565b6000805b600354811015610fc15760008381526001602052604081206003805491929184908110610f7857fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1615610fb9576001820191505b600101610f4f565b50919050565b33301461103557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b60068190556040805182815290517f884d6758bafbcb4b5e2e0393178ca1f3da3dd380a54ce05ab60aa59756db9dc19181900360200190a150565b60006020818152918152604090819020805460018083015460028085018054875161010095821615959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691909104601f810188900488028401880190965285835273ffffffffffffffffffffffffffffffffffffffff909316959094919291908301828280156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050506003909301549192505060ff1684565b606060038054806020026020016040519081016040528092919081815260200182805480156111be57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611193575b505050505090505b90565b6060806000806003805490506040519080825280602002602001820160405280156111fe578160200160208202803883390190505b50925060009150600090505b6003548110156112e2576000858152600160205260408120600380549192918490811061123357fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16156112da57600380548290811061127b57fe5b600091825260209091200154835173ffffffffffffffffffffffffffffffffffffffff909116908490849081106112ae57fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152600191909101905b60010161120a565b8160405190808252806020026020018201604052801561130c578160200160208202803883390190505b509350600090505b8181101561136e57828181518110151561132a57fe5b90602001906020020151848281518110151561134257fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830290910190910152600101611314565b505050919050565b60055481565b3330146113ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b6003548160328211806113fc57508181115b80611405575080155b8061140e575081155b1561147a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56414c49445f524551554952454d454e545f4552524f52000000000000000000604482015290519081900360640190fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b60065481565b3360008181526002602052604081205490919060ff16151561154057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260208190526040902054839073ffffffffffffffffffffffffffffffffffffffff1615156115d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5452414e53414354494f4e5f4558495354535f4552524f520000000000000000604482015290519081900360640190fd5b60008481526001602090815260408083203380855292529091205485919060ff161561166157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e4f545f434f4e4649524d45445f4552524f5200000000000000000000000000604482015290519081900360640190fd5b600086815260016020818152604080842033808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909317909255905188927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a36116d586610ebb565b80156116ed5750600086815260076020526040902054155b1561174a5760065442019450846007600088815260200190815260200160002081905550857f280af6a3ba059a74f0e894262aa07f2c4d0de1e231882263c0d7dcda111b1a44866040518082815260200191505060405180910390a25b505050505050565b600061175f848484611c40565b905061176a816114bd565b9392505050565b603281565b60045481565b60003330146117ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f4e4c595f57414c4c45545f4552524f52000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902054839060ff16151561188457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902054839060ff161561191b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f574e45525f444f45535f4e4f545f45584953545f4552524f52000000000000604482015290519081900360640190fd5b600092505b6003548310156119e0578473ffffffffffffffffffffffffffffffffffffffff1660038481548110151561195057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156119d5578360038481548110151561198857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119e0565b600190920191611920565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a260405173ffffffffffffffffffffffffffffffffffffffff8516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604090205460ff161515611b3257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600082815260208190526040902060030154829060ff1615611bb557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260076020526040902054421015611c3257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4e4545445f544f5f554e4c4f434b000000000000604482015290519081900360640190fd5b611c3b83611dd5565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff81161515611cc757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f4e554c4c5f4552524f52000000000000000000000000000000000000604482015290519081900360640190fd5b6005546040805160808101825273ffffffffffffffffffffffffffffffffffffffff8881168252602080830189815283850189815260006060860181905287815280845295909520845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001694169390931783555160018301559251805194965091939092611d5f9260028501929101906120a6565b5060609190910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b3360008181526002602052604081205490919060ff161515611e5857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4f574e45525f4558495354535f4552524f520000000000000000000000000000604482015290519081900360640190fd5b600083815260208190526040902060030154839060ff1615611edb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f45584543555445445f4552524f520000000000000000000000000000604482015290519081900360640190fd5b611ee484610ebb565b1561207c57600084815260208190526040908190206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915581548183015493516002808501805495995073ffffffffffffffffffffffffffffffffffffffff909316959492939192839285927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918316156101000291909101909116048015611fdb5780601f10611fb057610100808354040283529160200191611fdb565b820191906000526020600020905b815481529060010190602001808311611fbe57829003601f168201915b505091505060006040518083038185875af192505050156120265760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a261207c565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a26003830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050565b815481835581811115611c3b57600083815260209020611c3b918101908301612124565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120e757805160ff1916838001178555612114565b82800160010185558215612114579182015b828111156121145782518255916020019190600101906120f9565b50612120929150612124565b5090565b6111c691905b80821115612120576000815560010161212a5600a165627a7a7230582078d36aa978a067559d9b95fb0da129f3aee1b265a8fd78d7b93fa29f3d934b2f0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000957082a1b43fc1e1b6f70c75f5cb1cd68c4327ec000000000000000000000000cd77fe287240ad55ea083b671501cb0367769d3200000000000000000000000015cbef6b721870f5dbb054ded1e61476a688a06b
-----Decoded View---------------
Arg [0] : _owners (address[]): 0x957082A1B43Fc1e1B6F70c75F5CB1cD68C4327eC,0xcd77fe287240Ad55EA083b671501cb0367769D32,0x15CbEf6b721870F5dBB054dED1e61476A688a06b
Arg [1] : _required (uint256): 2
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 000000000000000000000000957082a1b43fc1e1b6f70c75f5cb1cd68c4327ec
Arg [4] : 000000000000000000000000cd77fe287240ad55ea083b671501cb0367769d32
Arg [5] : 00000000000000000000000015cbef6b721870f5dbb054ded1e61476a688a06b
Swarm Source
bzzr://78d36aa978a067559d9b95fb0da129f3aee1b265a8fd78d7b93fa29f3d934b2f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 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.