Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 13615423 | 1583 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Identity
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-11-14
*/
pragma solidity 0.8.7;
// @TODO: Formatting
library LibBytes {
// @TODO: see if we can just set .length =
function trimToSize(bytes memory b, uint newLen)
internal
pure
{
require(b.length > newLen, "BytesLib: only shrinking");
assembly {
mstore(b, newLen)
}
}
/***********************************|
| Read Bytes Functions |
|__________________________________*/
/**
* @dev Reads a bytes32 value from a position in a byte array.
* @param b Byte array containing a bytes32 value.
* @param index Index in byte array of bytes32 value.
* @return result bytes32 value from byte array.
*/
function readBytes32(
bytes memory b,
uint256 index
)
internal
pure
returns (bytes32 result)
{
// Arrays are prefixed by a 256 bit length parameter
index += 32;
require(b.length >= index, "BytesLib: length");
// Read the bytes32 from array memory
assembly {
result := mload(add(b, index))
}
return result;
}
}
interface IERC1271Wallet {
function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4 magicValue);
}
library SignatureValidator {
using LibBytes for bytes;
enum SignatureMode {
EIP712,
EthSign,
SmartWallet,
Spoof
}
// bytes4(keccak256("isValidSignature(bytes32,bytes)"))
bytes4 constant internal ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e;
function recoverAddr(bytes32 hash, bytes memory sig) internal view returns (address) {
return recoverAddrImpl(hash, sig, false);
}
function recoverAddrImpl(bytes32 hash, bytes memory sig, bool allowSpoofing) internal view returns (address) {
require(sig.length >= 1, "SV_SIGLEN");
uint8 modeRaw;
unchecked { modeRaw = uint8(sig[sig.length - 1]); }
SignatureMode mode = SignatureMode(modeRaw);
// {r}{s}{v}{mode}
if (mode == SignatureMode.EIP712 || mode == SignatureMode.EthSign) {
require(sig.length == 66, "SV_LEN");
bytes32 r = sig.readBytes32(0);
bytes32 s = sig.readBytes32(32);
uint8 v = uint8(sig[64]);
// Hesitant about this check: seems like this is something that has no business being checked on-chain
require(v == 27 || v == 28, "SV_INVALID_V");
if (mode == SignatureMode.EthSign) hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
address signer = ecrecover(hash, v, r, s);
require(signer != address(0), "SV_ZERO_SIG");
return signer;
// {sig}{verifier}{mode}
} else if (mode == SignatureMode.SmartWallet) {
// 32 bytes for the addr, 1 byte for the type = 33
require(sig.length > 33, "SV_LEN_WALLET");
uint newLen;
unchecked {
newLen = sig.length - 33;
}
IERC1271Wallet wallet = IERC1271Wallet(address(uint160(uint256(sig.readBytes32(newLen)))));
sig.trimToSize(newLen);
require(ERC1271_MAGICVALUE_BYTES32 == wallet.isValidSignature(hash, sig), "SV_WALLET_INVALID");
return address(wallet);
// {address}{mode}; the spoof mode is used when simulating calls
} else if (mode == SignatureMode.Spoof && allowSpoofing) {
require(tx.origin == address(1), "SV_SPOOF_ORIGIN");
require(sig.length == 33, "SV_SPOOF_LEN");
sig.trimToSize(32);
return abi.decode(sig, (address));
} else revert("SV_SIGMODE");
}
}
contract Identity {
mapping (address => bytes32) public privileges;
// The next allowed nonce
uint public nonce;
// Events
event LogPrivilegeChanged(address indexed addr, bytes32 priv);
event LogErr(address indexed to, uint value, bytes data, bytes returnData); // only used in tryCatch
// Transaction structure
// we handle replay protection separately by requiring (address(this), chainID, nonce) as part of the sig
struct Transaction {
address to;
uint value;
bytes data;
}
constructor(address[] memory addrs) {
uint len = addrs.length;
for (uint i=0; i<len; i++) {
// @TODO should we allow setting to any arb value here?
privileges[addrs[i]] = bytes32(uint(1));
emit LogPrivilegeChanged(addrs[i], bytes32(uint(1)));
}
}
// This contract can accept ETH without calldata
receive() external payable {}
// This contract can accept ETH with calldata
// However, to support EIP 721 and EIP 1155, we need to respond to those methods with their own method signature
fallback() external payable {
bytes4 method = msg.sig;
if (
method == 0x150b7a02 // bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))
|| method == 0xf23a6e61 // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))
|| method == 0xbc197c81 // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
) {
// Copy back the method
// solhint-disable-next-line no-inline-assembly
assembly {
calldatacopy(0, 0, 0x04)
return (0, 0x20)
}
}
}
function setAddrPrivilege(address addr, bytes32 priv)
external
{
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
// Anti-bricking measure: if the privileges slot is used for special data (not 0x01),
// don't allow to set it to true
if (uint(privileges[addr]) > 1) require(priv != bytes32(uint(1)), 'UNSETTING_SPECIAL_DATA');
privileges[addr] = priv;
emit LogPrivilegeChanged(addr, priv);
}
function tipMiner(uint amount)
external
{
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
// See https://docs.flashbots.net/flashbots-auction/searchers/advanced/coinbase-payment/#managing-payments-to-coinbaseaddress-when-it-is-a-contract
// generally this contract is reentrancy proof cause of the nonce
executeCall(block.coinbase, amount, new bytes(0));
}
function tryCatch(address to, uint value, bytes calldata data)
external
{
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
(bool success, bytes memory returnData) = to.call{value: value, gas: gasleft()}(data);
if (!success) emit LogErr(to, value, data, returnData);
}
// WARNING: if the signature of this is changed, we have to change IdentityFactory
function execute(Transaction[] calldata txns, bytes calldata signature)
external
{
require(txns.length > 0, 'MUST_PASS_TX');
uint currentNonce = nonce;
// NOTE: abi.encode is safer than abi.encodePacked in terms of collision safety
bytes32 hash = keccak256(abi.encode(address(this), block.chainid, currentNonce, txns));
// We have to increment before execution cause it protects from reentrancies
nonce = currentNonce + 1;
address signer = SignatureValidator.recoverAddrImpl(hash, signature, true);
require(privileges[signer] != bytes32(0), 'INSUFFICIENT_PRIVILEGE');
uint len = txns.length;
for (uint i=0; i<len; i++) {
Transaction memory txn = txns[i];
executeCall(txn.to, txn.value, txn.data);
}
// The actual anti-bricking mechanism - do not allow a signer to drop their own priviledges
require(privileges[signer] != bytes32(0), 'PRIVILEGE_NOT_DOWNGRADED');
}
// no need for nonce management here cause we're not dealing with sigs
function executeBySender(Transaction[] calldata txns) external {
require(txns.length > 0, 'MUST_PASS_TX');
require(privileges[msg.sender] != bytes32(0), 'INSUFFICIENT_PRIVILEGE');
uint len = txns.length;
for (uint i=0; i<len; i++) {
Transaction memory txn = txns[i];
executeCall(txn.to, txn.value, txn.data);
}
// again, anti-bricking
require(privileges[msg.sender] != bytes32(0), 'PRIVILEGE_NOT_DOWNGRADED');
}
function executeBySelf(Transaction[] calldata txns) external {
require(msg.sender == address(this), 'ONLY_IDENTITY_CAN_CALL');
require(txns.length > 0, 'MUST_PASS_TX');
uint len = txns.length;
for (uint i=0; i<len; i++) {
Transaction memory txn = txns[i];
executeCall(txn.to, txn.value, txn.data);
}
}
// we shouldn't use address.call(), cause: https://github.com/ethereum/solidity/issues/2884
// copied from https://github.com/uport-project/uport-identity/blob/develop/contracts/Proxy.sol
// there's also
// https://github.com/gnosis/MultiSigWallet/commit/e1b25e8632ca28e9e9e09c81bd20bf33fdb405ce
// https://github.com/austintgriffith/bouncer-proxy/blob/master/BouncerProxy/BouncerProxy.sol
// https://github.com/gnosis/safe-contracts/blob/7e2eeb3328bb2ae85c36bc11ea6afc14baeb663c/contracts/base/Executor.sol
function executeCall(address to, uint256 value, bytes memory data)
internal
{
assembly {
let result := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)
switch result case 0 {
let size := returndatasize()
let ptr := mload(0x40)
returndatacopy(ptr, 0, size)
revert(ptr, size)
}
default {}
}
// A single call consumes around 477 more gas with the pure solidity version, for whatever reason
// WARNING: do not use this, it corrupts the returnData string (returns it in a slightly different format)
//(bool success, bytes memory returnData) = to.call{value: value, gas: gasleft()}(data);
//if (!success) revert(string(data));
}
// EIP 1271 implementation
// see https://eips.ethereum.org/EIPS/eip-1271
function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4) {
if (privileges[SignatureValidator.recoverAddr(hash, signature)] != bytes32(0)) {
// bytes4(keccak256("isValidSignature(bytes32,bytes)")
return 0x1626ba7e;
} else {
return 0xffffffff;
}
}
// EIP 1155 implementation
// we pretty much only need to signal that we support the interface for 165, but for 1155 we also need the fallback function
function supportsInterface(bytes4 interfaceID) external pure returns (bool) {
return
interfaceID == 0x01ffc9a7 || // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).
interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) ^ bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`).
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"LogErr","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"bytes32","name":"priv","type":"bytes32"}],"name":"LogPrivilegeChanged","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Identity.Transaction[]","name":"txns","type":"tuple[]"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Identity.Transaction[]","name":"txns","type":"tuple[]"}],"name":"executeBySelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Identity.Transaction[]","name":"txns","type":"tuple[]"}],"name":"executeBySender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"privileges","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes32","name":"priv","type":"bytes32"}],"name":"setAddrPrivilege","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tipMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"tryCatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620018103803806200181083398101604081905262000034916200012a565b805160005b818110156200010457600160001b6000808584815181106200005f576200005f6200022d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828181518110620000a057620000a06200022d565b60200260200101516001600160a01b03167f08ac40e0195c5998554e98853c23964a13a24309e127b2d016e8ec4adecf5e83600160001b604051620000e791815260200190565b60405180910390a280620000fb8162000203565b91505062000039565b50505062000259565b80516001600160a01b03811681146200012557600080fd5b919050565b600060208083850312156200013e57600080fd5b82516001600160401b03808211156200015657600080fd5b818501915085601f8301126200016b57600080fd5b81518181111562000180576200018062000243565b8060051b604051601f19603f83011681018181108582111715620001a857620001a862000243565b604052828152858101935084860182860187018a1015620001c857600080fd5b600095505b83861015620001f657620001e1816200010d565b855260019590950194938601938601620001cd565b5098975050505050505050565b60006000198214156200022657634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6115a780620002696000396000f3fe6080604052600436106100955760003560e01c80636769de82116100595780636769de82146101cd578063abc5345e146101ed578063affed0e01461020d578063bf1cb38314610231578063c066a5b1146102515761009c565b806301ffc9a7146100fd5780630d5828d4146101325780631626ba7e146101545780631eef7d871461018d5780636171d1c9146101ad5761009c565b3661009c57005b6001600160e01b031960003516630a85bd0160e11b8114806100ce575063f23a6e6160e01b6001600160e01b03198216145b806100e9575063bc197c8160e01b6001600160e01b03198216145b156100fa5760046000803760206000f35b50005b34801561010957600080fd5b5061011d610118366004611106565b61027e565b60405190151581526020015b60405180910390f35b34801561013e57600080fd5b5061015261014d366004610f90565b6102b5565b005b34801561016057600080fd5b5061017461016f3660046110ba565b610399565b6040516001600160e01b03199091168152602001610129565b34801561019957600080fd5b506101526101a8366004611140565b610428565b3480156101b957600080fd5b506101526101c836600461105a565b610466565b3480156101d957600080fd5b506101526101e8366004611018565b610645565b3480156101f957600080fd5b50610152610208366004611018565b6106ee565b34801561021957600080fd5b5061022360015481565b604051908152602001610129565b34801561023d57600080fd5b5061015261024c366004610fbc565b610824565b34801561025d57600080fd5b5061022361026c366004610f56565b60006020819052908152604090205481565b60006301ffc9a760e01b6001600160e01b0319831614806102af5750630271189760e51b6001600160e01b03198316145b92915050565b3330146102dd5760405162461bcd60e51b81526004016102d490611321565b60405180910390fd5b6001600160a01b038216600090815260208190526040902054600110156103485760018114156103485760405162461bcd60e51b8152602060048201526016602482015275554e53455454494e475f5350454349414c5f4441544160501b60448201526064016102d4565b6001600160a01b0382166000818152602081815260409182902084905590518381527f08ac40e0195c5998554e98853c23964a13a24309e127b2d016e8ec4adecf5e83910160405180910390a25050565b60008060001b6000806103e28787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061090092505050565b6001600160a01b03166001600160a01b0316815260200190815260200160002054146104165750630b135d3f60e11b610421565b506001600160e01b03195b9392505050565b3330146104475760405162461bcd60e51b81526004016102d490611321565b604080516000815260208101909152610463904190839061090e565b50565b826104835760405162461bcd60e51b81526004016102d4906112fb565b6001546040516000906104a2903090469085908a908a906020016111df565b6040516020818303038152906040528051906020012090508160016104c79190611402565b60018190555060006105128286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061093b915050565b6001600160a01b0381166000908152602081905260409020549091506105735760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f50524956494c45474560501b60448201526064016102d4565b8560005b818110156105da5760008989838181106105935761059361151a565b90506020028101906105a59190611388565b6105ae9061141a565b90506105c781600001518260200151836040015161090e565b50806105d2816114d3565b915050610577565b506001600160a01b03821660009081526020819052604090205461063b5760405162461bcd60e51b81526020600482015260186024820152771414925592531151d157d393d517d113d5d391d49051115160421b60448201526064016102d4565b5050505050505050565b3330146106645760405162461bcd60e51b81526004016102d490611321565b806106815760405162461bcd60e51b81526004016102d4906112fb565b8060005b818110156106e85760008484838181106106a1576106a161151a565b90506020028101906106b39190611388565b6106bc9061141a565b90506106d581600001518260200151836040015161090e565b50806106e0816114d3565b915050610685565b50505050565b8061070b5760405162461bcd60e51b81526004016102d4906112fb565b336000908152602081905260409020546107605760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f50524956494c45474560501b60448201526064016102d4565b8060005b818110156107c75760008484838181106107805761078061151a565b90506020028101906107929190611388565b61079b9061141a565b90506107b481600001518260200151836040015161090e565b50806107bf816114d3565b915050610764565b503360009081526020819052604090205461081f5760405162461bcd60e51b81526020600482015260186024820152771414925592531151d157d393d517d113d5d391d49051115160421b60448201526064016102d4565b505050565b3330146108435760405162461bcd60e51b81526004016102d490611321565b600080856001600160a01b0316855a9086866040516108639291906111cf565b600060405180830381858888f193505050503d80600081146108a1576040519150601f19603f3d011682016040523d82523d6000602084013e6108a6565b606091505b5091509150816108f857856001600160a01b03167f80c2637928bd94d0e1a90eaac1efc1553be6391d962fe5c82a01e90122c84ccc868686856040516108ef9493929190611351565b60405180910390a25b505050505050565b60006104218383600061093b565b60008082516020840185875af180801561092757610934565b3d604051816000823e8181fd5b5050505050565b600060018351101561097b5760405162461bcd60e51b815260206004820152600960248201526829ab2fa9a4a3a622a760b91b60448201526064016102d4565b6000836001855103815181106109935761099361151a565b016020015160f81c905060008160038111156109b1576109b1611504565b905060008160038111156109c7576109c7611504565b14806109e4575060018160038111156109e2576109e2611504565b145b15610bc4578451604214610a235760405162461bcd60e51b815260206004820152600660248201526529ab2fa622a760d11b60448201526064016102d4565b6000610a2f8682610e1b565b90506000610a3e876020610e1b565b9050600087604081518110610a5557610a5561151a565b016020015160f81c9050601b811480610a7157508060ff16601c145b610aac5760405162461bcd60e51b815260206004820152600c60248201526b29ab2fa4a72b20a624a22fab60a11b60448201526064016102d4565b6001846003811115610ac057610ac0611504565b1415610b12576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018a9052605c016040516020818303038152906040528051906020012098505b604080516000808252602082018084528c905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610b66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bb75760405162461bcd60e51b815260206004820152600b60248201526a53565f5a45524f5f53494760a81b60448201526064016102d4565b9550610421945050505050565b6002816003811115610bd857610bd8611504565b1415610d19576021855111610c1f5760405162461bcd60e51b815260206004820152600d60248201526c14d597d3115397d5d053131155609a1b60448201526064016102d4565b8451602019016000610c318783610e1b565b9050610c3d8783610e74565b604051630b135d3f60e11b81526001600160a01b03821690631626ba7e90610c6b908b908b906004016112da565b60206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190611123565b6001600160e01b031916630b135d3f60e11b14610d0e5760405162461bcd60e51b815260206004820152601160248201527014d597d5d05313115517d2539590531251607a1b60448201526064016102d4565b935061042192505050565b6003816003811115610d2d57610d2d611504565b148015610d375750835b15610de65732600114610d7e5760405162461bcd60e51b815260206004820152600f60248201526e29ab2fa9a827a7a32fa7a924a3a4a760891b60448201526064016102d4565b8451602114610dbe5760405162461bcd60e51b815260206004820152600c60248201526b29ab2fa9a827a7a32fa622a760a11b60448201526064016102d4565b610dc9856020610e74565b84806020019051810190610ddd9190610f73565b92505050610421565b60405162461bcd60e51b815260206004820152600a60248201526953565f5349474d4f444560b01b60448201526064016102d4565b6000610e28602083611402565b91508183511015610e6e5760405162461bcd60e51b815260206004820152601060248201526f084f2e8cae698d2c47440d8cadccee8d60831b60448201526064016102d4565b50015190565b80825111610ec45760405162461bcd60e51b815260206004820152601860248201527f42797465734c69623a206f6e6c7920736872696e6b696e67000000000000000060448201526064016102d4565b9052565b60008083601f840112610eda57600080fd5b50813567ffffffffffffffff811115610ef257600080fd5b6020830191508360208260051b8501011115610f0d57600080fd5b9250929050565b60008083601f840112610f2657600080fd5b50813567ffffffffffffffff811115610f3e57600080fd5b602083019150836020828501011115610f0d57600080fd5b600060208284031215610f6857600080fd5b813561042181611546565b600060208284031215610f8557600080fd5b815161042181611546565b60008060408385031215610fa357600080fd5b8235610fae81611546565b946020939093013593505050565b60008060008060608587031215610fd257600080fd5b8435610fdd81611546565b935060208501359250604085013567ffffffffffffffff81111561100057600080fd5b61100c87828801610f14565b95989497509550505050565b6000806020838503121561102b57600080fd5b823567ffffffffffffffff81111561104257600080fd5b61104e85828601610ec8565b90969095509350505050565b6000806000806040858703121561107057600080fd5b843567ffffffffffffffff8082111561108857600080fd5b61109488838901610ec8565b909650945060208701359150808211156110ad57600080fd5b5061100c87828801610f14565b6000806000604084860312156110cf57600080fd5b83359250602084013567ffffffffffffffff8111156110ed57600080fd5b6110f986828701610f14565b9497909650939450505050565b60006020828403121561111857600080fd5b81356104218161155b565b60006020828403121561113557600080fd5b81516104218161155b565b60006020828403121561115257600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b818110156111a85760208185018101518683018201520161118c565b818111156111ba576000602083870101525b50601f01601f19169290920160200192915050565b8183823760009101908152919050565b60006080820160018060a01b038089168452602088818601526040888187015260606080818801528488865260a08801905060a08960051b89010195508960005b8a8110156112c757898803609f190183528135368d9003605e1901811261124657600080fd5b8c01803561125381611546565b8816895280870135878a01528581013536829003601e1901811261127657600080fd5b8101803567ffffffffffffffff81111561128f57600080fd5b80360383131561129e57600080fd5b86888c01526112b2878c01828b8501611159565b9a505050928601925090850190600101611220565b50959d9c50505050505050505050505050565b8281526040602082015260006112f36040830184611182565b949350505050565b6020808252600c908201526b09aaaa6a8bea082a6a6bea8b60a31b604082015260600190565b60208082526016908201527513d3931657d25111539512551657d0d05397d0d0531360521b604082015260600190565b84815260606020820152600061136b606083018587611159565b828103604084015261137d8185611182565b979650505050505050565b60008235605e1983360301811261139e57600080fd5b9190910192915050565b6040516060810167ffffffffffffffff811182821017156113cb576113cb611530565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156113fa576113fa611530565b604052919050565b60008219821115611415576114156114ee565b500190565b60006060823603121561142c57600080fd5b6114346113a8565b823561143f81611546565b815260208381013581830152604084013567ffffffffffffffff8082111561146657600080fd5b9085019036601f83011261147957600080fd5b81358181111561148b5761148b611530565b61149d601f8201601f191685016113d1565b915080825236848285010111156114b357600080fd5b808484018584013760009082019093019290925250604082015292915050565b60006000198214156114e7576114e76114ee565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461046357600080fd5b6001600160e01b03198116811461046357600080fdfea26469706673582212200dede40df9726d7985efffcc5c0bf01c06e95dd1a9e6738c040d26ac262ee2cf64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100955760003560e01c80636769de82116100595780636769de82146101cd578063abc5345e146101ed578063affed0e01461020d578063bf1cb38314610231578063c066a5b1146102515761009c565b806301ffc9a7146100fd5780630d5828d4146101325780631626ba7e146101545780631eef7d871461018d5780636171d1c9146101ad5761009c565b3661009c57005b6001600160e01b031960003516630a85bd0160e11b8114806100ce575063f23a6e6160e01b6001600160e01b03198216145b806100e9575063bc197c8160e01b6001600160e01b03198216145b156100fa5760046000803760206000f35b50005b34801561010957600080fd5b5061011d610118366004611106565b61027e565b60405190151581526020015b60405180910390f35b34801561013e57600080fd5b5061015261014d366004610f90565b6102b5565b005b34801561016057600080fd5b5061017461016f3660046110ba565b610399565b6040516001600160e01b03199091168152602001610129565b34801561019957600080fd5b506101526101a8366004611140565b610428565b3480156101b957600080fd5b506101526101c836600461105a565b610466565b3480156101d957600080fd5b506101526101e8366004611018565b610645565b3480156101f957600080fd5b50610152610208366004611018565b6106ee565b34801561021957600080fd5b5061022360015481565b604051908152602001610129565b34801561023d57600080fd5b5061015261024c366004610fbc565b610824565b34801561025d57600080fd5b5061022361026c366004610f56565b60006020819052908152604090205481565b60006301ffc9a760e01b6001600160e01b0319831614806102af5750630271189760e51b6001600160e01b03198316145b92915050565b3330146102dd5760405162461bcd60e51b81526004016102d490611321565b60405180910390fd5b6001600160a01b038216600090815260208190526040902054600110156103485760018114156103485760405162461bcd60e51b8152602060048201526016602482015275554e53455454494e475f5350454349414c5f4441544160501b60448201526064016102d4565b6001600160a01b0382166000818152602081815260409182902084905590518381527f08ac40e0195c5998554e98853c23964a13a24309e127b2d016e8ec4adecf5e83910160405180910390a25050565b60008060001b6000806103e28787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061090092505050565b6001600160a01b03166001600160a01b0316815260200190815260200160002054146104165750630b135d3f60e11b610421565b506001600160e01b03195b9392505050565b3330146104475760405162461bcd60e51b81526004016102d490611321565b604080516000815260208101909152610463904190839061090e565b50565b826104835760405162461bcd60e51b81526004016102d4906112fb565b6001546040516000906104a2903090469085908a908a906020016111df565b6040516020818303038152906040528051906020012090508160016104c79190611402565b60018190555060006105128286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061093b915050565b6001600160a01b0381166000908152602081905260409020549091506105735760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f50524956494c45474560501b60448201526064016102d4565b8560005b818110156105da5760008989838181106105935761059361151a565b90506020028101906105a59190611388565b6105ae9061141a565b90506105c781600001518260200151836040015161090e565b50806105d2816114d3565b915050610577565b506001600160a01b03821660009081526020819052604090205461063b5760405162461bcd60e51b81526020600482015260186024820152771414925592531151d157d393d517d113d5d391d49051115160421b60448201526064016102d4565b5050505050505050565b3330146106645760405162461bcd60e51b81526004016102d490611321565b806106815760405162461bcd60e51b81526004016102d4906112fb565b8060005b818110156106e85760008484838181106106a1576106a161151a565b90506020028101906106b39190611388565b6106bc9061141a565b90506106d581600001518260200151836040015161090e565b50806106e0816114d3565b915050610685565b50505050565b8061070b5760405162461bcd60e51b81526004016102d4906112fb565b336000908152602081905260409020546107605760405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f50524956494c45474560501b60448201526064016102d4565b8060005b818110156107c75760008484838181106107805761078061151a565b90506020028101906107929190611388565b61079b9061141a565b90506107b481600001518260200151836040015161090e565b50806107bf816114d3565b915050610764565b503360009081526020819052604090205461081f5760405162461bcd60e51b81526020600482015260186024820152771414925592531151d157d393d517d113d5d391d49051115160421b60448201526064016102d4565b505050565b3330146108435760405162461bcd60e51b81526004016102d490611321565b600080856001600160a01b0316855a9086866040516108639291906111cf565b600060405180830381858888f193505050503d80600081146108a1576040519150601f19603f3d011682016040523d82523d6000602084013e6108a6565b606091505b5091509150816108f857856001600160a01b03167f80c2637928bd94d0e1a90eaac1efc1553be6391d962fe5c82a01e90122c84ccc868686856040516108ef9493929190611351565b60405180910390a25b505050505050565b60006104218383600061093b565b60008082516020840185875af180801561092757610934565b3d604051816000823e8181fd5b5050505050565b600060018351101561097b5760405162461bcd60e51b815260206004820152600960248201526829ab2fa9a4a3a622a760b91b60448201526064016102d4565b6000836001855103815181106109935761099361151a565b016020015160f81c905060008160038111156109b1576109b1611504565b905060008160038111156109c7576109c7611504565b14806109e4575060018160038111156109e2576109e2611504565b145b15610bc4578451604214610a235760405162461bcd60e51b815260206004820152600660248201526529ab2fa622a760d11b60448201526064016102d4565b6000610a2f8682610e1b565b90506000610a3e876020610e1b565b9050600087604081518110610a5557610a5561151a565b016020015160f81c9050601b811480610a7157508060ff16601c145b610aac5760405162461bcd60e51b815260206004820152600c60248201526b29ab2fa4a72b20a624a22fab60a11b60448201526064016102d4565b6001846003811115610ac057610ac0611504565b1415610b12576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018a9052605c016040516020818303038152906040528051906020012098505b604080516000808252602082018084528c905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610b66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bb75760405162461bcd60e51b815260206004820152600b60248201526a53565f5a45524f5f53494760a81b60448201526064016102d4565b9550610421945050505050565b6002816003811115610bd857610bd8611504565b1415610d19576021855111610c1f5760405162461bcd60e51b815260206004820152600d60248201526c14d597d3115397d5d053131155609a1b60448201526064016102d4565b8451602019016000610c318783610e1b565b9050610c3d8783610e74565b604051630b135d3f60e11b81526001600160a01b03821690631626ba7e90610c6b908b908b906004016112da565b60206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190611123565b6001600160e01b031916630b135d3f60e11b14610d0e5760405162461bcd60e51b815260206004820152601160248201527014d597d5d05313115517d2539590531251607a1b60448201526064016102d4565b935061042192505050565b6003816003811115610d2d57610d2d611504565b148015610d375750835b15610de65732600114610d7e5760405162461bcd60e51b815260206004820152600f60248201526e29ab2fa9a827a7a32fa7a924a3a4a760891b60448201526064016102d4565b8451602114610dbe5760405162461bcd60e51b815260206004820152600c60248201526b29ab2fa9a827a7a32fa622a760a11b60448201526064016102d4565b610dc9856020610e74565b84806020019051810190610ddd9190610f73565b92505050610421565b60405162461bcd60e51b815260206004820152600a60248201526953565f5349474d4f444560b01b60448201526064016102d4565b6000610e28602083611402565b91508183511015610e6e5760405162461bcd60e51b815260206004820152601060248201526f084f2e8cae698d2c47440d8cadccee8d60831b60448201526064016102d4565b50015190565b80825111610ec45760405162461bcd60e51b815260206004820152601860248201527f42797465734c69623a206f6e6c7920736872696e6b696e67000000000000000060448201526064016102d4565b9052565b60008083601f840112610eda57600080fd5b50813567ffffffffffffffff811115610ef257600080fd5b6020830191508360208260051b8501011115610f0d57600080fd5b9250929050565b60008083601f840112610f2657600080fd5b50813567ffffffffffffffff811115610f3e57600080fd5b602083019150836020828501011115610f0d57600080fd5b600060208284031215610f6857600080fd5b813561042181611546565b600060208284031215610f8557600080fd5b815161042181611546565b60008060408385031215610fa357600080fd5b8235610fae81611546565b946020939093013593505050565b60008060008060608587031215610fd257600080fd5b8435610fdd81611546565b935060208501359250604085013567ffffffffffffffff81111561100057600080fd5b61100c87828801610f14565b95989497509550505050565b6000806020838503121561102b57600080fd5b823567ffffffffffffffff81111561104257600080fd5b61104e85828601610ec8565b90969095509350505050565b6000806000806040858703121561107057600080fd5b843567ffffffffffffffff8082111561108857600080fd5b61109488838901610ec8565b909650945060208701359150808211156110ad57600080fd5b5061100c87828801610f14565b6000806000604084860312156110cf57600080fd5b83359250602084013567ffffffffffffffff8111156110ed57600080fd5b6110f986828701610f14565b9497909650939450505050565b60006020828403121561111857600080fd5b81356104218161155b565b60006020828403121561113557600080fd5b81516104218161155b565b60006020828403121561115257600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b818110156111a85760208185018101518683018201520161118c565b818111156111ba576000602083870101525b50601f01601f19169290920160200192915050565b8183823760009101908152919050565b60006080820160018060a01b038089168452602088818601526040888187015260606080818801528488865260a08801905060a08960051b89010195508960005b8a8110156112c757898803609f190183528135368d9003605e1901811261124657600080fd5b8c01803561125381611546565b8816895280870135878a01528581013536829003601e1901811261127657600080fd5b8101803567ffffffffffffffff81111561128f57600080fd5b80360383131561129e57600080fd5b86888c01526112b2878c01828b8501611159565b9a505050928601925090850190600101611220565b50959d9c50505050505050505050505050565b8281526040602082015260006112f36040830184611182565b949350505050565b6020808252600c908201526b09aaaa6a8bea082a6a6bea8b60a31b604082015260600190565b60208082526016908201527513d3931657d25111539512551657d0d05397d0d0531360521b604082015260600190565b84815260606020820152600061136b606083018587611159565b828103604084015261137d8185611182565b979650505050505050565b60008235605e1983360301811261139e57600080fd5b9190910192915050565b6040516060810167ffffffffffffffff811182821017156113cb576113cb611530565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156113fa576113fa611530565b604052919050565b60008219821115611415576114156114ee565b500190565b60006060823603121561142c57600080fd5b6114346113a8565b823561143f81611546565b815260208381013581830152604084013567ffffffffffffffff8082111561146657600080fd5b9085019036601f83011261147957600080fd5b81358181111561148b5761148b611530565b61149d601f8201601f191685016113d1565b915080825236848285010111156114b357600080fd5b808484018584013760009082019093019290925250604082015292915050565b60006000198214156114e7576114e76114ee565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461046357600080fd5b6001600160e01b03198116811461046357600080fdfea26469706673582212200dede40df9726d7985efffcc5c0bf01c06e95dd1a9e6738c040d26ac262ee2cf64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : addrs (address[]):
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
3379:6826:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4448:13:0;4464:7;;-1:-1:-1;;;4485:20:0;;;:121;;-1:-1:-1;;;;;;;;;;4586:20:0;;;4485:121;:231;;;-1:-1:-1;;;;;;;;;;4696:20:0;;;4485:231;4476:495;;;4933:4;4930:1;;4914:24;4955:4;4930:1;4944:16;4476:495;4443:532;3379:6826;9743:459;;;;;;;;;;-1:-1:-1;9743:459:0;;;;;:::i;:::-;;:::i;:::-;;;8280:14:1;;8273:22;8255:41;;8243:2;8228:18;9743:459:0;;;;;;;;4980:430;;;;;;;;;;-1:-1:-1;4980:430:0;;;;;:::i;:::-;;:::i;:::-;;9274:308;;;;;;;;;;-1:-1:-1;9274:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;9347:33:1;;;9329:52;;9317:2;9302:18;9274:308:0;9185:202:1;5415:391:0;;;;;;;;;;-1:-1:-1;5415:391:0;;;;;:::i;:::-;;:::i;6201:919::-;;;;;;;;;;-1:-1:-1;6201:919:0;;;;;:::i;:::-;;:::i;7645:326::-;;;;;;;;;;-1:-1:-1;7645:326:0;;;;;:::i;:::-;;:::i;7198:442::-;;;;;;;;;;-1:-1:-1;7198:442:0;;;;;:::i;:::-;;:::i;3479:17::-;;;;;;;;;;;;;;;;;;;8453:25:1;;;8441:2;8426:18;3479:17:0;8307:177:1;5811:298:0;;;;;;;;;;-1:-1:-1;5811:298:0;;;;;:::i;:::-;;:::i;3401:46::-;;;;;;;;;;-1:-1:-1;3401:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;9743:459;9813:4;-1:-1:-1;;;;;;;;;9835:25:0;;;;:137;;-1:-1:-1;;;;;;;;;;9947:25:0;;;9835:137;9824:148;9743:459;-1:-1:-1;;9743:459:0:o;4980:430::-;5061:10;5083:4;5061:27;5053:62;;;;-1:-1:-1;;;5053:62:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5254:16:0;;:10;:16;;;;;;;;;;;5274:1;-1:-1:-1;5245:91:0;;;5306:1;5285:24;;;5277:59;;;;-1:-1:-1;;;5277:59:0;;11665:2:1;5277:59:0;;;11647:21:1;11704:2;11684:18;;;11677:30;-1:-1:-1;;;11723:18:1;;;11716:52;11785:18;;5277:59:0;11463:346:1;5277:59:0;-1:-1:-1;;;;;5341:16:0;;:10;:16;;;;;;;;;;;;:23;;;5374:31;;8453:25:1;;;5374:31:0;;8426:18:1;5374:31:0;;;;;;;4980:430;;:::o;9274:308::-;9363:6;9451:1;9443:10;;9380;:59;9391:47;9422:4;9428:9;;9391:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9391:30:0;;-1:-1:-1;;;9391:47:0:i;:::-;-1:-1:-1;;;;;9380:59:0;-1:-1:-1;;;;;9380:59:0;;;;;;;;;;;;;:73;9376:202;;-1:-1:-1;;;;9520:17:0;;9376:202;-1:-1:-1;;;;;;;9376:202:0;9274:308;;;;;:::o;5415:391::-;5473:10;5495:4;5473:27;5465:62;;;;-1:-1:-1;;;5465:62:0;;;;;;;:::i;:::-;5788:12;;;5798:1;5788:12;;;;;;;;5752:49;;5764:14;;5780:6;;5752:11;:49::i;:::-;5415:391;:::o;6201:919::-;6300:15;6292:40;;;;-1:-1:-1;;;6292:40:0;;;;;;;:::i;:::-;6357:5;;6475:60;;6337:17;;6475:60;;6494:4;;6501:13;;6357:5;;6530:4;;;;6475:60;;;:::i;:::-;;;;;;;;;;;;;6465:71;;;;;;6450:86;;6629:12;6644:1;6629:16;;;;:::i;:::-;6621:5;:24;;;;6652:14;6669:57;6704:4;6710:9;;6669:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6721:4:0;;-1:-1:-1;6669:34:0;;-1:-1:-1;;6669:57:0:i;:::-;-1:-1:-1;;;;;6739:18:0;;6769:1;6739:18;;;;;;;;;;;6652:74;;-1:-1:-1;6731:67:0;;;;-1:-1:-1;;;6731:67:0;;10973:2:1;6731:67:0;;;10955:21:1;11012:2;10992:18;;;10985:30;-1:-1:-1;;;11031:18:1;;;11024:52;11093:18;;6731:67:0;10771:346:1;6731:67:0;6814:4;6803:8;6830:117;6847:3;6845:1;:5;6830:117;;;6863:22;6888:4;;6893:1;6888:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6863:32;;;:::i;:::-;;;6901:40;6913:3;:6;;;6921:3;:9;;;6932:3;:8;;;6901:11;:40::i;:::-;-1:-1:-1;6852:3:0;;;;:::i;:::-;;;;6830:117;;;-1:-1:-1;;;;;;7054:18:0;;7084:1;7054:18;;;;;;;;;;;7046:69;;;;-1:-1:-1;;;7046:69:0;;9594:2:1;7046:69:0;;;9576:21:1;9633:2;9613:18;;;9606:30;-1:-1:-1;;;9652:18:1;;;9645:54;9716:18;;7046:69:0;9392:348:1;7046:69:0;6287:833;;;;6201:919;;;;:::o;7645:326::-;7719:10;7741:4;7719:27;7711:62;;;;-1:-1:-1;;;7711:62:0;;;;;;;:::i;:::-;7786:15;7778:40;;;;-1:-1:-1;;;7778:40:0;;;;;;;:::i;:::-;7834:4;7823:8;7850:117;7867:3;7865:1;:5;7850:117;;;7883:22;7908:4;;7913:1;7908:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7883:32;;;:::i;:::-;;;7921:40;7933:3;:6;;;7941:3;:9;;;7952:3;:8;;;7921:11;:40::i;:::-;-1:-1:-1;7872:3:0;;;;:::i;:::-;;;;7850:117;;;;7706:265;7645:326;;:::o;7198:442::-;7274:15;7266:40;;;;-1:-1:-1;;;7266:40:0;;;;;;;:::i;:::-;7330:10;7353:1;7319:22;;;;;;;;;;;7311:71;;;;-1:-1:-1;;;7311:71:0;;10973:2:1;7311:71:0;;;10955:21:1;11012:2;10992:18;;;10985:30;-1:-1:-1;;;11031:18:1;;;11024:52;11093:18;;7311:71:0;10771:346:1;7311:71:0;7398:4;7387:8;7414:117;7431:3;7429:1;:5;7414:117;;;7447:22;7472:4;;7477:1;7472:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7447:32;;;:::i;:::-;;;7485:40;7497:3;:6;;;7505:3;:9;;;7516:3;:8;;;7485:11;:40::i;:::-;-1:-1:-1;7436:3:0;;;;:::i;:::-;;;;7414:117;;;-1:-1:-1;7581:10:0;7604:1;7570:22;;;;;;;;;;;7562:73;;;;-1:-1:-1;;;7562:73:0;;9594:2:1;7562:73:0;;;9576:21:1;9633:2;9613:18;;;9606:30;-1:-1:-1;;;9652:18:1;;;9645:54;9716:18;;7562:73:0;9392:348:1;7562:73:0;7261:379;7198:442;;:::o;5811:298::-;5901:10;5923:4;5901:27;5893:62;;;;-1:-1:-1;;;5893:62:0;;;;;;;:::i;:::-;5961:12;5975:23;6002:2;-1:-1:-1;;;;;6002:7:0;6017:5;6029:9;6002:43;6040:4;;6002:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5960:85;;;;6055:7;6050:54;;6076:2;-1:-1:-1;;;;;6069:35:0;;6080:5;6087:4;;6093:10;6069:35;;;;;;;;;:::i;:::-;;;;;;;;6050:54;5888:221;;5811:298;;;;:::o;1492:135::-;1568:7;1589:33;1605:4;1611:3;1616:5;1589:15;:33::i;8496:695::-;8667:1;8664;8657:4;8651:11;8644:4;8638;8634:15;8627:5;8623:2;8616:5;8611:58;8683:6;8690:133;;;;8676:162;;8690:133;8716:16;8755:4;8749:11;8789:4;8786:1;8781:3;8766:28;8812:4;8807:3;8800:17;8676:162;;;8496:695;;;:::o;1632:1738::-;1732:7;1768:1;1754:3;:10;:15;;1746:37;;;;-1:-1:-1;;;1746:37:0;;12350:2:1;1746:37:0;;;12332:21:1;12389:1;12369:18;;;12362:29;-1:-1:-1;;;12407:18:1;;;12400:39;12456:18;;1746:37:0;12148:332:1;1746:37:0;1788:13;1834:3;1851:1;1838:3;:10;:14;1834:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;1861:18:0;1834:19;1882:22;;;;;;;;:::i;:::-;1861:43;-1:-1:-1;1945:20:0;1937:4;:28;;;;;;;;:::i;:::-;;:61;;;-1:-1:-1;1977:21:0;1969:4;:29;;;;;;;;:::i;:::-;;1937:61;1933:1432;;;2014:3;:10;2028:2;2014:16;2006:35;;;;-1:-1:-1;;;2006:35:0;;12016:2:1;2006:35:0;;;11998:21:1;12055:1;12035:18;;;12028:29;-1:-1:-1;;;12073:18:1;;;12066:36;12119:18;;2006:35:0;11814:329:1;2006:35:0;2047:9;2059:18;:3;2047:9;2059:15;:18::i;:::-;2047:30;-1:-1:-1;2083:9:0;2095:19;:3;2111:2;2095:15;:19::i;:::-;2083:31;;2120:7;2136:3;2140:2;2136:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2270:2:0;2265:7;;;:18;;;2276:1;:7;;2281:2;2276:7;2265:18;2257:43;;;;-1:-1:-1;;;2257:43:0;;13724:2:1;2257:43:0;;;13706:21:1;13763:2;13743:18;;;13736:30;-1:-1:-1;;;13782:18:1;;;13775:42;13834:18;;2257:43:0;13522:336:1;2257:43:0;2318:21;2310:4;:29;;;;;;;;:::i;:::-;;2306:111;;;2358:58;;5939:66:1;2358:58:0;;;5927:79:1;6022:12;;;6015:28;;;6059:12;;2358:58:0;;;;;;;;;;;;2348:69;;;;;;2341:76;;2306:111;2440:24;;;2423:14;2440:24;;;;;;;;;9009:25:1;;;9082:4;9070:17;;9050:18;;;9043:45;;;;9104:18;;;9097:34;;;9147:18;;;9140:34;;;2440:24:0;;8981:19:1;;2440:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2440:24:0;;-1:-1:-1;;2440:24:0;;;-1:-1:-1;;;;;;;2478:20:0;;2470:44;;;;-1:-1:-1;;;2470:44:0;;9947:2:1;2470:44:0;;;9929:21:1;9986:2;9966:18;;;9959:30;-1:-1:-1;;;10005:18:1;;;9998:41;10056:18;;2470:44:0;9745:335:1;2470:44:0;2527:6;-1:-1:-1;2520:13:0;;-1:-1:-1;;;;;2520:13:0;1933:1432;2585:25;2577:4;:33;;;;;;;;:::i;:::-;;2573:792;;;2694:2;2681:3;:10;:15;2673:41;;;;-1:-1:-1;;;2673:41:0;;10631:2:1;2673:41:0;;;10613:21:1;10670:2;10650:18;;;10643:30;-1:-1:-1;;;10689:18:1;;;10682:43;10742:18;;2673:41:0;10429:337:1;2673:41:0;2763:10;;-1:-1:-1;;2763:15:0;2720:11;2853:23;2763:3;:15;2853;:23::i;:::-;2845:32;-1:-1:-1;2886:22:0;:3;2901:6;2886:14;:22::i;:::-;2952:34;;-1:-1:-1;;;2952:34:0;;-1:-1:-1;;;;;2952:23:0;;;;;:34;;2976:4;;2982:3;;2952:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2922:64:0;-1:-1:-1;;;2922:64:0;2914:94;;;;-1:-1:-1;;;2914:94:0;;14757:2:1;2914:94:0;;;14739:21:1;14796:2;14776:18;;;14769:30;-1:-1:-1;;;14815:18:1;;;14808:47;14872:18;;2914:94:0;14555:341:1;2914:94:0;3029:6;-1:-1:-1;3014:22:0;;-1:-1:-1;;;3014:22:0;2573:792;3128:19;3120:4;:27;;;;;;;;:::i;:::-;;:44;;;;;3151:13;3120:44;3116:249;;;3180:9;3201:1;3180:23;3172:51;;;;-1:-1:-1;;;3172:51:0;;10287:2:1;3172:51:0;;;10269:21:1;10326:2;10306:18;;;10299:30;-1:-1:-1;;;10345:18:1;;;10338:45;10400:18;;3172:51:0;10085:339:1;3172:51:0;3237:3;:10;3251:2;3237:16;3229:41;;;;-1:-1:-1;;;3229:41:0;;13383:2:1;3229:41:0;;;13365:21:1;13422:2;13402:18;;;13395:30;-1:-1:-1;;;13441:18:1;;;13434:42;13493:18;;3229:41:0;13181:336:1;3229:41:0;3276:18;:3;3291:2;3276:14;:18::i;:::-;3318:3;3307:26;;;;;;;;;;;;:::i;:::-;3300:33;;;;;;3116:249;3345:20;;-1:-1:-1;;;3345:20:0;;14418:2:1;3345:20:0;;;14400:21:1;14457:2;14437:18;;;14430:30;-1:-1:-1;;;14476:18:1;;;14469:40;14526:18;;3345:20:0;14216:334:1;684:387:0;789:14;873:11;882:2;873:11;;:::i;:::-;;;913:5;901:1;:8;:17;;893:46;;;;-1:-1:-1;;;893:46:0;;13038:2:1;893:46:0;;;13020:21:1;13077:2;13057:18;;;13050:30;-1:-1:-1;;;13096:18:1;;;13089:46;13152:18;;893:46:0;12836:340:1;893:46:0;-1:-1:-1;1025:13:0;1019:20;;684:387::o;117:191::-;219:6;208:1;:8;:17;200:54;;;;-1:-1:-1;;;200:54:0;;14065:2:1;200:54:0;;;14047:21:1;14104:2;14084:18;;;14077:30;14143:26;14123:18;;;14116:54;14187:18;;200:54:0;13863:348:1;200:54:0;279:17;;117:191::o;14:387:1:-;97:8;107:6;161:3;154:4;146:6;142:17;138:27;128:55;;179:1;176;169:12;128:55;-1:-1:-1;202:20:1;;245:18;234:30;;231:50;;;277:1;274;267:12;231:50;314:4;306:6;302:17;290:29;;374:3;367:4;357:6;354:1;350:14;342:6;338:27;334:38;331:47;328:67;;;391:1;388;381:12;328:67;14:387;;;;;:::o;406:347::-;457:8;467:6;521:3;514:4;506:6;502:17;498:27;488:55;;539:1;536;529:12;488:55;-1:-1:-1;562:20:1;;605:18;594:30;;591:50;;;637:1;634;627:12;591:50;674:4;666:6;662:17;650:29;;726:3;719:4;710:6;702;698:19;694:30;691:39;688:59;;;743:1;740;733:12;758:247;817:6;870:2;858:9;849:7;845:23;841:32;838:52;;;886:1;883;876:12;838:52;925:9;912:23;944:31;969:5;944:31;:::i;1010:259::-;1088:6;1141:2;1129:9;1120:7;1116:23;1112:32;1109:52;;;1157:1;1154;1147:12;1109:52;1189:9;1183:16;1208:31;1233:5;1208:31;:::i;1274:315::-;1342:6;1350;1403:2;1391:9;1382:7;1378:23;1374:32;1371:52;;;1419:1;1416;1409:12;1371:52;1458:9;1445:23;1477:31;1502:5;1477:31;:::i;:::-;1527:5;1579:2;1564:18;;;;1551:32;;-1:-1:-1;;;1274:315:1:o;1594:612::-;1682:6;1690;1698;1706;1759:2;1747:9;1738:7;1734:23;1730:32;1727:52;;;1775:1;1772;1765:12;1727:52;1814:9;1801:23;1833:31;1858:5;1833:31;:::i;:::-;1883:5;-1:-1:-1;1935:2:1;1920:18;;1907:32;;-1:-1:-1;1990:2:1;1975:18;;1962:32;2017:18;2006:30;;2003:50;;;2049:1;2046;2039:12;2003:50;2088:58;2138:7;2129:6;2118:9;2114:22;2088:58;:::i;:::-;1594:612;;;;-1:-1:-1;2165:8:1;-1:-1:-1;;;;1594:612:1:o;2211:487::-;2327:6;2335;2388:2;2376:9;2367:7;2363:23;2359:32;2356:52;;;2404:1;2401;2394:12;2356:52;2444:9;2431:23;2477:18;2469:6;2466:30;2463:50;;;2509:1;2506;2499:12;2463:50;2548:90;2630:7;2621:6;2610:9;2606:22;2548:90;:::i;:::-;2657:8;;2522:116;;-1:-1:-1;2211:487:1;-1:-1:-1;;;;2211:487:1:o;2703:795::-;2839:6;2847;2855;2863;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;2972:9;2959:23;3001:18;3042:2;3034:6;3031:14;3028:34;;;3058:1;3055;3048:12;3028:34;3097:90;3179:7;3170:6;3159:9;3155:22;3097:90;:::i;:::-;3206:8;;-1:-1:-1;3071:116:1;-1:-1:-1;3294:2:1;3279:18;;3266:32;;-1:-1:-1;3310:16:1;;;3307:36;;;3339:1;3336;3329:12;3307:36;;3378:60;3430:7;3419:8;3408:9;3404:24;3378:60;:::i;3503:477::-;3582:6;3590;3598;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3703:9;3690:23;3680:33;;3764:2;3753:9;3749:18;3736:32;3791:18;3783:6;3780:30;3777:50;;;3823:1;3820;3813:12;3777:50;3862:58;3912:7;3903:6;3892:9;3888:22;3862:58;:::i;:::-;3503:477;;3939:8;;-1:-1:-1;3836:84:1;;-1:-1:-1;;;;3503:477:1:o;3985:245::-;4043:6;4096:2;4084:9;4075:7;4071:23;4067:32;4064:52;;;4112:1;4109;4102:12;4064:52;4151:9;4138:23;4170:30;4194:5;4170:30;:::i;4235:249::-;4304:6;4357:2;4345:9;4336:7;4332:23;4328:32;4325:52;;;4373:1;4370;4363:12;4325:52;4405:9;4399:16;4424:30;4448:5;4424:30;:::i;4489:180::-;4548:6;4601:2;4589:9;4580:7;4576:23;4572:32;4569:52;;;4617:1;4614;4607:12;4569:52;-1:-1:-1;4640:23:1;;4489:180;-1:-1:-1;4489:180:1:o;4674:266::-;4762:6;4757:3;4750:19;4814:6;4807:5;4800:4;4795:3;4791:14;4778:43;-1:-1:-1;4866:1:1;4841:16;;;4859:4;4837:27;;;4830:38;;;;4922:2;4901:15;;;-1:-1:-1;;4897:29:1;4888:39;;;4884:50;;4674:266::o;4945:471::-;4986:3;5024:5;5018:12;5051:6;5046:3;5039:19;5076:1;5086:162;5100:6;5097:1;5094:13;5086:162;;;5162:4;5218:13;;;5214:22;;5208:29;5190:11;;;5186:20;;5179:59;5115:12;5086:162;;;5266:6;5263:1;5260:13;5257:87;;;5332:1;5325:4;5316:6;5311:3;5307:16;5303:27;5296:38;5257:87;-1:-1:-1;5398:2:1;5377:15;-1:-1:-1;;5373:29:1;5364:39;;;;5405:4;5360:50;;4945:471;-1:-1:-1;;4945:471:1:o;5421:271::-;5604:6;5596;5591:3;5578:33;5560:3;5630:16;;5655:13;;;5630:16;5421:271;-1:-1:-1;5421:271:1:o;6082:2028::-;6376:4;6424:3;6413:9;6409:19;6464:1;6460;6455:3;6451:11;6447:19;6505:2;6497:6;6493:15;6482:9;6475:34;6528:2;6566:6;6561:2;6550:9;6546:18;6539:34;6592:2;6630:6;6625:2;6614:9;6610:18;6603:34;6656:2;6694:3;6689:2;6678:9;6674:18;6667:31;6718:6;6748;6740;6733:22;6786:3;6775:9;6771:19;6764:26;;6849:3;6839:6;6836:1;6832:14;6821:9;6817:30;6813:40;6799:54;;6876:6;6900:1;6910:1171;6924:6;6921:1;6918:13;6910:1171;;;6989:22;;;-1:-1:-1;;6985:37:1;6973:50;;7062:20;;7137:14;7133:27;;;-1:-1:-1;;7129:41:1;7105:66;;7095:94;;7185:1;7182;7175:12;7095:94;7215:31;;7274:19;;7306:33;7274:19;7306:33;:::i;:::-;7367:16;;7352:32;;7434:14;;;7421:28;7404:15;;;7397:53;7504:14;;;7491:28;7576:14;7572:26;;;-1:-1:-1;;7568:40:1;7542:67;;7532:95;;7623:1;7620;7613:12;7532:95;7655:32;;7714:21;;7762:18;7751:30;;7748:50;;;7794:1;7791;7784:12;7748:50;7845:6;7829:14;7825:27;7818:5;7814:39;7811:59;;;7866:1;7863;7856:12;7811:59;7907:2;7902;7894:6;7890:15;7883:27;7933:68;7997:2;7989:6;7985:15;7977:6;7972:2;7963:7;7959:16;7933:68;:::i;:::-;7923:78;-1:-1:-1;;;8059:12:1;;;;-1:-1:-1;8024:15:1;;;;6946:1;6939:9;6910:1171;;;-1:-1:-1;8098:6:1;;6082:2028;-1:-1:-1;;;;;;;;;;;;;6082:2028:1:o;8489:288::-;8664:6;8653:9;8646:25;8707:2;8702;8691:9;8687:18;8680:30;8627:4;8727:44;8767:2;8756:9;8752:18;8744:6;8727:44;:::i;:::-;8719:52;8489:288;-1:-1:-1;;;;8489:288:1:o;11122:336::-;11324:2;11306:21;;;11363:2;11343:18;;;11336:30;-1:-1:-1;;;11397:2:1;11382:18;;11375:42;11449:2;11434:18;;11122:336::o;12485:346::-;12687:2;12669:21;;;12726:2;12706:18;;;12699:30;-1:-1:-1;;;12760:2:1;12745:18;;12738:52;12822:2;12807:18;;12485:346::o;15083:475::-;15314:6;15303:9;15296:25;15357:2;15352;15341:9;15337:18;15330:30;15277:4;15383:61;15440:2;15429:9;15425:18;15417:6;15409;15383:61;:::i;:::-;15492:9;15484:6;15480:22;15475:2;15464:9;15460:18;15453:50;15520:32;15545:6;15537;15520:32;:::i;:::-;15512:40;15083:475;-1:-1:-1;;;;;;;15083:475:1:o;15563:327::-;15659:4;15717:11;15704:25;15811:2;15807:7;15796:8;15780:14;15776:29;15772:43;15752:18;15748:68;15738:96;;15830:1;15827;15820:12;15738:96;15851:33;;;;;15563:327;-1:-1:-1;;15563:327:1:o;15895:253::-;15967:2;15961:9;16009:4;15997:17;;16044:18;16029:34;;16065:22;;;16026:62;16023:88;;;16091:18;;:::i;:::-;16127:2;16120:22;15895:253;:::o;16153:275::-;16224:2;16218:9;16289:2;16270:13;;-1:-1:-1;;16266:27:1;16254:40;;16324:18;16309:34;;16345:22;;;16306:62;16303:88;;;16371:18;;:::i;:::-;16407:2;16400:22;16153:275;;-1:-1:-1;16153:275:1:o;16433:128::-;16473:3;16504:1;16500:6;16497:1;16494:13;16491:39;;;16510:18;;:::i;:::-;-1:-1:-1;16546:9:1;;16433:128::o;16566:1098::-;16674:9;16733:4;16725:5;16709:14;16705:26;16701:37;16698:57;;;16751:1;16748;16741:12;16698:57;16779:22;;:::i;:::-;16838:5;16825:19;16853:33;16878:7;16853:33;:::i;:::-;16895:24;;16938:2;16987:14;;;16974:28;16956:16;;;16949:54;17050:2;17039:14;;17026:28;17073:18;17103:14;;;17100:34;;;17130:1;17127;17120:12;17100:34;17153:18;;;;17209:14;17202:4;17194:13;;17190:34;17180:62;;17238:1;17235;17228:12;17180:62;17274:2;17261:16;17296:2;17292;17289:10;17286:36;;;17302:18;;:::i;:::-;17344:53;17387:2;17368:13;;-1:-1:-1;;17364:27:1;17360:36;;17344:53;:::i;:::-;17331:66;;17420:2;17413:5;17406:17;17460:14;17455:2;17450;17446;17442:11;17438:20;17435:40;17432:60;;;17488:1;17485;17478:12;17432:60;17543:2;17538;17534;17530:11;17525:2;17518:5;17514:14;17501:45;17587:1;17566:14;;;17562:23;;;17555:34;;;;-1:-1:-1;17618:2:1;17605:16;;17598:31;17609:7;16566:1098;-1:-1:-1;;16566:1098:1:o;17669:135::-;17708:3;-1:-1:-1;;17729:17:1;;17726:43;;;17749:18;;:::i;:::-;-1:-1:-1;17796:1:1;17785:13;;17669:135::o;17809:127::-;17870:10;17865:3;17861:20;17858:1;17851:31;17901:4;17898:1;17891:15;17925:4;17922:1;17915:15;17941:127;18002:10;17997:3;17993:20;17990:1;17983:31;18033:4;18030:1;18023:15;18057:4;18054:1;18047:15;18073:127;18134:10;18129:3;18125:20;18122:1;18115:31;18165:4;18162:1;18155:15;18189:4;18186:1;18179:15;18205:127;18266:10;18261:3;18257:20;18254:1;18247:31;18297:4;18294:1;18287:15;18321:4;18318:1;18311:15;18337:131;-1:-1:-1;;;;;18412:31:1;;18402:42;;18392:70;;18458:1;18455;18448:12;18473:131;-1:-1:-1;;;;;;18547:32:1;;18537:43;;18527:71;;18594:1;18591;18584:12
Swarm Source
ipfs://0dede40df9726d7985efffcc5c0bf01c06e95dd1a9e6738c040d26ac262ee2cf
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.01
Net Worth in ETH
0.000002
Token Allocations
POL
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| POL | 100.00% | $0.101699 | 0.05 | $0.005085 |
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.