Overview
ETH Balance
0 ETH
ETH Value
$0.00Latest 25 from a total of 505 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Max Oi | 267989455 | 473 days ago | IN | 0 ETH | 0.00000064 | ||||
| Set Max Oi | 267989295 | 473 days ago | IN | 0 ETH | 0.00000064 | ||||
| Set Max Oi | 267988913 | 473 days ago | IN | 0 ETH | 0.00000064 | ||||
| Set Max Oi | 267988790 | 473 days ago | IN | 0 ETH | 0.00000064 | ||||
| Pause Asset | 218339936 | 617 days ago | IN | 0 ETH | 0.00000108 | ||||
| Set Max Oi | 210824921 | 639 days ago | IN | 0 ETH | 0.00000042 | ||||
| Set Max Oi | 210824863 | 639 days ago | IN | 0 ETH | 0.0000004 | ||||
| Set Max Oi | 210824809 | 639 days ago | IN | 0 ETH | 0.00000043 | ||||
| Set Max Oi | 210824755 | 639 days ago | IN | 0 ETH | 0.0000004 | ||||
| Set Max Oi | 210824703 | 639 days ago | IN | 0 ETH | 0.0000004 | ||||
| Set Max Oi | 210824650 | 639 days ago | IN | 0 ETH | 0.0000004 | ||||
| Set Max Oi | 210812665 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812605 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812552 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812499 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812445 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812391 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812339 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812285 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812232 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812178 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812124 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812070 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210812017 | 639 days ago | IN | 0 ETH | 0.00000051 | ||||
| Set Max Oi | 210811964 | 639 days ago | IN | 0 ETH | 0.00000051 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PairsContract
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.18;
import "@openzeppelin/contracts/access/Ownable.sol";
import "./interfaces/IPairsContract.sol";
import "./interfaces/IPosition.sol";
contract PairsContract is Ownable, IPairsContract {
address public protocol;
mapping(uint256 => bool) public allowedAsset;
uint256 private maxBaseFundingRate = 1e10;
mapping(uint256 => Asset) private _idToAsset;
function idToAsset(uint256 _asset) public view returns (Asset memory) {
return _idToAsset[_asset];
}
mapping(uint256 => mapping(address => OpenInterest)) private _idToOi;
function idToOi(uint256 _asset, address _tigAsset) public view returns (OpenInterest memory) {
return _idToOi[_asset][_tigAsset];
}
// OWNER
/**
* @dev Update the Chainlink price feed of an asset
* @param _asset index of the requested asset
* @param _feed contract address of the Chainlink price feed
*/
function setAssetChainlinkFeed(uint256 _asset, address _feed) external onlyOwner exists(_asset) {
_idToAsset[_asset].chainlinkFeed = _feed;
}
/**
* @dev Add an allowed asset to fetch prices for
* @param _asset index of the requested asset
* @param _name name of the asset
* @param _chainlinkFeed optional address of the respective Chainlink price feed
* @param _minLeverage minimum allowed leverage
* @param _maxLeverage maximum allowed leverage
* @param _feeMultiplier percent value that the opening/closing fee is multiplied by in BP
* @param _baseFundingRate Funding rate applied to pair when open interest is completely unbalanced
*/
function addAsset(uint256 _asset, string memory _name, address _chainlinkFeed, uint256 _minLeverage, uint256 _maxLeverage, uint256 _feeMultiplier, uint256 _baseFundingRate) external onlyOwner {
bytes memory _assetName = bytes(_idToAsset[_asset].name);
require(_assetName.length == 0, "Already exists");
require(bytes(_name).length > 0, "No name");
require(_maxLeverage >= _minLeverage, "Wrong leverage values");
require(_minLeverage > 0, "Wrong leverage values");
allowedAsset[_asset] = true;
_idToAsset[_asset].name = _name;
_idToAsset[_asset].chainlinkFeed = _chainlinkFeed;
_idToAsset[_asset].minLeverage = _minLeverage;
_idToAsset[_asset].maxLeverage = _maxLeverage;
_idToAsset[_asset].feeMultiplier = _feeMultiplier;
_idToAsset[_asset].baseFundingRate = _baseFundingRate;
emit AssetAdded(_asset, _name);
}
/**
* @dev Update the leverage allowed per asset
* @param _asset index of the asset
* @param _minLeverage minimum leverage allowed
* @param _maxLeverage Maximum leverage allowed
*/
function updateAssetLeverage(uint256 _asset, uint256 _minLeverage, uint256 _maxLeverage) external onlyOwner exists(_asset) {
if (_maxLeverage > 0) {
_idToAsset[_asset].maxLeverage = _maxLeverage;
}
if (_minLeverage > 0) {
_idToAsset[_asset].minLeverage = _minLeverage;
}
require(_idToAsset[_asset].maxLeverage >= _idToAsset[_asset].minLeverage, "Wrong leverage values");
}
/**
* @notice update the base rate for funding fees per asset
* @param _asset index of the asset
* @param _baseFundingRate the rate to set
*/
function setAssetBaseFundingRate(uint256 _asset, uint256 _baseFundingRate) external onlyOwner exists(_asset) {
require(_baseFundingRate <= maxBaseFundingRate, "baseFundingRate too high");
_idToAsset[_asset].baseFundingRate = _baseFundingRate;
}
/**
* @notice update the fee multiplier per asset
* @param _asset index of the asset
* @param _feeMultiplier the fee multiplier
*/
function updateAssetFeeMultiplier(uint256 _asset, uint256 _feeMultiplier) external onlyOwner exists(_asset) {
_idToAsset[_asset].feeMultiplier = _feeMultiplier;
}
/**
* @notice pause an asset from being traded
* @param _asset index of the asset
* @param _isPaused paused if true
*/
function pauseAsset(uint256 _asset, bool _isPaused) external onlyOwner exists(_asset) {
allowedAsset[_asset] = !_isPaused;
}
/**
* @notice sets the max rate for funding fees
* @param _maxBaseFundingRate max base funding rate
*/
function setMaxBaseFundingRate(uint256 _maxBaseFundingRate) external onlyOwner {
maxBaseFundingRate = _maxBaseFundingRate;
}
function setProtocol(address _protocol) external onlyOwner {
protocol = _protocol;
}
/**
* @dev Update max open interest limits
* @param _asset index of the asset
* @param _tigAsset contract address of the tigAsset
* @param _maxOi Maximum open interest value per side
*/
function setMaxOi(uint256 _asset, address _tigAsset, uint256 _maxOi) external onlyOwner exists(_asset) {
_idToOi[_asset][_tigAsset].maxOi = _maxOi;
}
// Protocol-only
/**
* @dev edits the current open interest for long
* @param _asset index of the asset
* @param _tigAsset contract address of the tigAsset
* @param _onOpen true if adding to open interest
* @param _amount amount to be added/removed from open interest
*/
function modifyLongOi(uint256 _asset, address _tigAsset, bool _onOpen, uint256 _amount) external onlyProtocol {
OpenInterest storage oi = _idToOi[_asset][_tigAsset];
if (_onOpen) {
oi.longOi += _amount;
require(oi.longOi <= oi.maxOi || oi.maxOi == 0, "MaxLongOi");
}
else {
if (_amount > oi.longOi && _amount < oi.longOi+1e9) {
_amount = oi.longOi;
}
oi.longOi -= _amount;
if (oi.longOi < 1e9) {
oi.longOi = 0;
}
}
}
/**
* @dev edits the current open interest for short
* @param _asset index of the asset
* @param _tigAsset contract address of the tigAsset
* @param _onOpen true if adding to open interest
* @param _amount amount to be added/removed from open interest
*/
function modifyShortOi(uint256 _asset, address _tigAsset, bool _onOpen, uint256 _amount) external onlyProtocol {
OpenInterest storage oi = _idToOi[_asset][_tigAsset];
if (_onOpen) {
oi.shortOi += _amount;
require(oi.shortOi <= oi.maxOi || oi.maxOi == 0, "MaxShortOi");
}
else {
if (_amount > oi.shortOi && _amount < oi.shortOi+1e9) {
_amount = oi.shortOi;
}
oi.shortOi -= _amount;
if (oi.shortOi < 1e9) {
oi.shortOi = 0;
}
}
}
// Modifiers
modifier onlyProtocol() {
require(_msgSender() == address(protocol), "!Protocol");
_;
}
modifier exists(uint256 _asset){
bytes memory _name = bytes(_idToAsset[_asset].name);
require(_name.length > 0, "!Asset");
_;
}
// EVENTS
event AssetAdded(
uint256 _asset,
string _name
);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
interface IPosition {
struct Trade {
uint256 margin;
uint256 leverage;
uint256 asset;
bool direction;
uint256 price;
uint256 tpPrice;
uint256 slPrice;
uint256 orderType;
address trader;
uint256 id;
address tigAsset;
int accInterest;
}
struct MintTrade {
address account;
uint256 margin;
uint256 leverage;
uint256 asset;
bool direction;
uint256 price;
uint256 tp;
uint256 sl;
uint256 orderType;
address tigAsset;
}
function trades(uint256) external view returns (Trade memory);
function executeLimitOrder(uint256 _id, uint256 _price, uint256 _newMargin) external;
function modifyMargin(uint256 _id, uint256 _newMargin, uint256 _newLeverage) external;
function addToPosition(uint256 _id, uint256 _newMargin, uint256 _newPrice) external;
function reducePosition(uint256 _id, uint256 _newMargin) external;
function assetOpenPositions(uint256 _asset) external view returns (uint256[] calldata);
function assetOpenPositionsIndexes(uint256 _asset, uint256 _id) external view returns (uint256);
function limitOrders(uint256 _asset) external view returns (uint256[] memory);
function limitOrderIndexes(uint256 _asset, uint256 _id) external view returns (uint256);
function assetOpenPositionsLength(uint256 _asset) external view returns (uint256);
function limitOrdersLength(uint256 _asset) external view returns (uint256);
function ownerOf(uint256 _id) external view returns (address);
function mint(MintTrade memory _mintTrade) external;
function burn(uint256 _id) external;
function modifyTp(uint256 _id, uint256 _tpPrice) external;
function modifySl(uint256 _id, uint256 _slPrice) external;
function getCount() external view returns (uint);
function updateFunding(uint256 _asset, address _tigAsset, uint256 _longOi, uint256 _shortOi, uint256 _baseFundingRate, uint256 _vaultFundingPercent) external;
function setAccInterest(uint256 _id) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
interface IPairsContract {
struct Asset {
string name;
address chainlinkFeed;
uint256 minLeverage;
uint256 maxLeverage;
uint256 feeMultiplier;
uint256 baseFundingRate;
}
struct OpenInterest {
uint256 longOi;
uint256 shortOi;
uint256 maxOi;
}
function allowedAsset(uint) external view returns (bool);
function idToAsset(uint256 _asset) external view returns (Asset memory);
function idToOi(uint256 _asset, address _tigAsset) external view returns (OpenInterest memory);
function setAssetBaseFundingRate(uint256 _asset, uint256 _baseFundingRate) external;
function modifyLongOi(uint256 _asset, address _tigAsset, bool _onOpen, uint256 _amount) external;
function modifyShortOi(uint256 _asset, address _tigAsset, bool _onOpen, uint256 _amount) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_asset","type":"uint256"},{"indexed":false,"internalType":"string","name":"_name","type":"string"}],"name":"AssetAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_chainlinkFeed","type":"address"},{"internalType":"uint256","name":"_minLeverage","type":"uint256"},{"internalType":"uint256","name":"_maxLeverage","type":"uint256"},{"internalType":"uint256","name":"_feeMultiplier","type":"uint256"},{"internalType":"uint256","name":"_baseFundingRate","type":"uint256"}],"name":"addAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowedAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"}],"name":"idToAsset","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"chainlinkFeed","type":"address"},{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"feeMultiplier","type":"uint256"},{"internalType":"uint256","name":"baseFundingRate","type":"uint256"}],"internalType":"struct IPairsContract.Asset","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"address","name":"_tigAsset","type":"address"}],"name":"idToOi","outputs":[{"components":[{"internalType":"uint256","name":"longOi","type":"uint256"},{"internalType":"uint256","name":"shortOi","type":"uint256"},{"internalType":"uint256","name":"maxOi","type":"uint256"}],"internalType":"struct IPairsContract.OpenInterest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"address","name":"_tigAsset","type":"address"},{"internalType":"bool","name":"_onOpen","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"modifyLongOi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"address","name":"_tigAsset","type":"address"},{"internalType":"bool","name":"_onOpen","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"modifyShortOi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"bool","name":"_isPaused","type":"bool"}],"name":"pauseAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"protocol","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"uint256","name":"_baseFundingRate","type":"uint256"}],"name":"setAssetBaseFundingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"address","name":"_feed","type":"address"}],"name":"setAssetChainlinkFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBaseFundingRate","type":"uint256"}],"name":"setMaxBaseFundingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"address","name":"_tigAsset","type":"address"},{"internalType":"uint256","name":"_maxOi","type":"uint256"}],"name":"setMaxOi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_protocol","type":"address"}],"name":"setProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"uint256","name":"_feeMultiplier","type":"uint256"}],"name":"updateAssetFeeMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_asset","type":"uint256"},{"internalType":"uint256","name":"_minLeverage","type":"uint256"},{"internalType":"uint256","name":"_maxLeverage","type":"uint256"}],"name":"updateAssetLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526402540be40060035534801561001957600080fd5b5061002333610028565b610078565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c59806100876000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806374e0246b116100b2578063c688fca711610081578063dc0eb33411610066578063dc0eb334146102be578063e8ea9945146102d1578063f2fde38b1461030657600080fd5b8063c688fca71461026b578063d8a5f72f1461028b57600080fd5b806374e0246b146101dd57806387a64cfa146101f05780638ce74426146102035780638da5cb5b1461024d57600080fd5b80634dde179311610109578063620b9584116100ee578063620b9584146101af5780636b3c17bb146101c2578063715018a6146101d557600080fd5b80634dde179314610189578063533d5c441461019c57600080fd5b80630a9d793d1461013b5780630ef567e2146101505780630fdef28814610163578063200defdd14610176575b600080fd5b61014e61014936600461167f565b610319565b005b61014e61015e3660046116a1565b610368565b61014e6101713660046116a1565b610500565b61014e6101843660046116d3565b610629565b61014e6101973660046116ff565b610778565b61014e6101aa366004611751565b6108e0565b61014e6101bd36600461185f565b610c27565b61014e6101d03660046118a3565b610df9565b61014e610e06565b61014e6101eb3660046118bc565b610e1a565b61014e6101fe36600461185f565b610fe1565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff16610223565b61027e6102793660046118a3565b61119a565b604051610244919061194c565b6102ae6102993660046118a3565b60026020526000908152604090205460ff1681565b6040519015158152602001610244565b61014e6102cc3660046119bc565b6112e2565b6102e46102df3660046116ff565b61142a565b6040805182518152602080840151908201529181015190820152606001610244565b61014e61031436600461167f565b6114a9565b610321611560565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610370611560565b600082815260046020526040812080548492919061038d906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546103b9906119f1565b80156104065780601f106103db57610100808354040283529160200191610406565b820191906000526020600020905b8154815290600101906020018083116103e957829003601f168201915b50505050509050600081511161047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214173736574000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003548311156104e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6261736546756e64696e675261746520746f6f206869676800000000000000006044820152606401610474565b505060009182526004602052604090912060050155565b610508611560565b6000828152600460205260408120805484929190610525906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610551906119f1565b801561059e5780601f106105735761010080835404028352916020019161059e565b820191906000526020600020905b81548152906001019060200180831161058157829003601f168201915b505050505090506000815111610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b5050600091825260046020819052604090922090910155565b610631611560565b600082815260046020526040812080548492919061064e906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906119f1565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505090506000815111610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b505060009182526002602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115919091179055565b610780611560565b600082815260046020526040812080548492919061079d906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546107c9906119f1565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505090506000815111610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b505060009182526004602052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6108e8611560565b60008781526004602052604081208054610901906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906119f1565b801561097a5780601f1061094f5761010080835404028352916020019161097a565b820191906000526020600020905b81548152906001019060200180831161095d57829003601f168201915b5050505050905080516000146109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f416c7265616479206578697374730000000000000000000000000000000000006044820152606401610474565b6000875111610a57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4e6f206e616d65000000000000000000000000000000000000000000000000006044820152606401610474565b84841015610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b60008511610b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b600088815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560049091529020610b768882611a93565b506000888152600460208190526040918290206001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b161790556002810188905560038101879055908101859055600501839055517f65d503a6d77e4a61eae8cf0284a0edf59c61659ceb7585a11664c40e8fcf09fa90610c15908a908a90611bad565b60405180910390a15050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f2150726f746f636f6c00000000000000000000000000000000000000000000006044820152606401610474565b600084815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290208215610d905781816001016000828254610d079190611bfd565b909155505060028101546001820154111580610d2557506002810154155b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d617853686f72744f69000000000000000000000000000000000000000000006044820152606401610474565b610df2565b806001015482118015610db457506001810154610db190633b9aca00611bfd565b82105b15610dc157806001015491505b81816001016000828254610dd59190611c10565b90915550506001810154633b9aca001115610df257600060018201555b5050505050565b610e01611560565b600355565b610e0e611560565b610e1860006115e1565b565b610e22611560565b6000838152600460205260408120805485929190610e3f906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6b906119f1565b8015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b505050505090506000815111610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b8215610f455760008581526004602052604090206003018390555b8315610f605760008581526004602052604090206002018490555b600085815260046020526040902060028101546003909101541015610df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f2150726f746f636f6c00000000000000000000000000000000000000000000006044820152606401610474565b600084815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020821561114257818160000160008282546110c19190611bfd565b9091555050600281015481541115806110dc57506002810154155b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d61784c6f6e674f6900000000000000000000000000000000000000000000006044820152606401610474565b8054821180156111605750805461115d90633b9aca00611bfd565b82105b1561116a57805491505b8181600001600082825461117e9190611c10565b90915550508054633b9aca001115610df2576000905550505050565b6111e96040518060c0016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b60008281526004602052604090819020815160c08101909252805482908290611211906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461123d906119f1565b801561128a5780601f1061125f5761010080835404028352916020019161128a565b820191906000526020600020905b81548152906001019060200180831161126d57829003601f168201915b5050509183525050600182015473ffffffffffffffffffffffffffffffffffffffff16602082015260028201546040820152600382015460608201526004820154608082015260059091015460a09091015292915050565b6112ea611560565b6000838152600460205260408120805485929190611307906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611333906119f1565b80156113805780601f1061135557610100808354040283529160200191611380565b820191906000526020600020905b81548152906001019060200180831161136357829003601f168201915b5050505050905060008151116113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b5050600092835260056020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060020155565b61144e60405180606001604052806000815260200160008152602001600081525090565b50600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845282529182902082516060810184528154815260018201549281019290925260020154918101919091525b92915050565b6114b1611560565b73ffffffffffffffffffffffffffffffffffffffff8116611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610474565b61155d816115e1565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610474565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167a57600080fd5b919050565b60006020828403121561169157600080fd5b61169a82611656565b9392505050565b600080604083850312156116b457600080fd5b50508035926020909101359150565b8035801515811461167a57600080fd5b600080604083850312156116e657600080fd5b823591506116f6602084016116c3565b90509250929050565b6000806040838503121561171257600080fd5b823591506116f660208401611656565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561176c57600080fd5b87359650602088013567ffffffffffffffff8082111561178b57600080fd5b818a0191508a601f83011261179f57600080fd5b8135818111156117b1576117b1611722565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156117f7576117f7611722565b816040528281528d602084870101111561181057600080fd5b82602086016020830137600060208483010152809a50505050505061183760408901611656565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806000806080858703121561187557600080fd5b8435935061188560208601611656565b9250611893604086016116c3565b9396929550929360600135925050565b6000602082840312156118b557600080fd5b5035919050565b6000806000606084860312156118d157600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b8181101561190e576020818501810151868301820152016118f2565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000825160c0602084015261196860e08401826118e8565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401526040840151606084015260608401516080840152608084015160a084015260a084015160c08401528091505092915050565b6000806000606084860312156119d157600080fd5b833592506119e160208501611656565b9150604084013590509250925092565b600181811c90821680611a0557607f821691505b602082108103611a3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115611a8e57600081815260208120601f850160051c81016020861015611a6b5750805b601f850160051c820191505b81811015611a8a57828155600101611a77565b5050505b505050565b815167ffffffffffffffff811115611aad57611aad611722565b611ac181611abb84546119f1565b84611a44565b602080601f831160018114611b145760008415611ade5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611a8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611b6157888601518255948401946001909101908401611b42565b5085821015611b9d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611bc660408301846118e8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156114a3576114a3611bce565b818103818111156114a3576114a3611bce56fea2646970667358221220697a3dbc24394ce0b4a875ff79746203cb5f9d2dacfeb636935b0147d61ae94b64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101365760003560e01c806374e0246b116100b2578063c688fca711610081578063dc0eb33411610066578063dc0eb334146102be578063e8ea9945146102d1578063f2fde38b1461030657600080fd5b8063c688fca71461026b578063d8a5f72f1461028b57600080fd5b806374e0246b146101dd57806387a64cfa146101f05780638ce74426146102035780638da5cb5b1461024d57600080fd5b80634dde179311610109578063620b9584116100ee578063620b9584146101af5780636b3c17bb146101c2578063715018a6146101d557600080fd5b80634dde179314610189578063533d5c441461019c57600080fd5b80630a9d793d1461013b5780630ef567e2146101505780630fdef28814610163578063200defdd14610176575b600080fd5b61014e61014936600461167f565b610319565b005b61014e61015e3660046116a1565b610368565b61014e6101713660046116a1565b610500565b61014e6101843660046116d3565b610629565b61014e6101973660046116ff565b610778565b61014e6101aa366004611751565b6108e0565b61014e6101bd36600461185f565b610c27565b61014e6101d03660046118a3565b610df9565b61014e610e06565b61014e6101eb3660046118bc565b610e1a565b61014e6101fe36600461185f565b610fe1565b6001546102239073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff16610223565b61027e6102793660046118a3565b61119a565b604051610244919061194c565b6102ae6102993660046118a3565b60026020526000908152604090205460ff1681565b6040519015158152602001610244565b61014e6102cc3660046119bc565b6112e2565b6102e46102df3660046116ff565b61142a565b6040805182518152602080840151908201529181015190820152606001610244565b61014e61031436600461167f565b6114a9565b610321611560565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610370611560565b600082815260046020526040812080548492919061038d906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546103b9906119f1565b80156104065780601f106103db57610100808354040283529160200191610406565b820191906000526020600020905b8154815290600101906020018083116103e957829003601f168201915b50505050509050600081511161047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214173736574000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6003548311156104e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6261736546756e64696e675261746520746f6f206869676800000000000000006044820152606401610474565b505060009182526004602052604090912060050155565b610508611560565b6000828152600460205260408120805484929190610525906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610551906119f1565b801561059e5780601f106105735761010080835404028352916020019161059e565b820191906000526020600020905b81548152906001019060200180831161058157829003601f168201915b505050505090506000815111610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b5050600091825260046020819052604090922090910155565b610631611560565b600082815260046020526040812080548492919061064e906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906119f1565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b505050505090506000815111610739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b505060009182526002602052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115919091179055565b610780611560565b600082815260046020526040812080548492919061079d906119f1565b80601f01602080910402602001604051908101604052809291908181526020018280546107c9906119f1565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b505050505090506000815111610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b505060009182526004602052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6108e8611560565b60008781526004602052604081208054610901906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461092d906119f1565b801561097a5780601f1061094f5761010080835404028352916020019161097a565b820191906000526020600020905b81548152906001019060200180831161095d57829003601f168201915b5050505050905080516000146109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f416c7265616479206578697374730000000000000000000000000000000000006044820152606401610474565b6000875111610a57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4e6f206e616d65000000000000000000000000000000000000000000000000006044820152606401610474565b84841015610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b60008511610b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b600088815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560049091529020610b768882611a93565b506000888152600460208190526040918290206001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b161790556002810188905560038101879055908101859055600501839055517f65d503a6d77e4a61eae8cf0284a0edf59c61659ceb7585a11664c40e8fcf09fa90610c15908a908a90611bad565b60405180910390a15050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f2150726f746f636f6c00000000000000000000000000000000000000000000006044820152606401610474565b600084815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290208215610d905781816001016000828254610d079190611bfd565b909155505060028101546001820154111580610d2557506002810154155b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d617853686f72744f69000000000000000000000000000000000000000000006044820152606401610474565b610df2565b806001015482118015610db457506001810154610db190633b9aca00611bfd565b82105b15610dc157806001015491505b81816001016000828254610dd59190611c10565b90915550506001810154633b9aca001115610df257600060018201555b5050505050565b610e01611560565b600355565b610e0e611560565b610e1860006115e1565b565b610e22611560565b6000838152600460205260408120805485929190610e3f906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6b906119f1565b8015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b505050505090506000815111610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b8215610f455760008581526004602052604090206003018390555b8315610f605760008581526004602052604090206002018490555b600085815260046020526040902060028101546003909101541015610df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57726f6e67206c657665726167652076616c75657300000000000000000000006044820152606401610474565b60015473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f2150726f746f636f6c00000000000000000000000000000000000000000000006044820152606401610474565b600084815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020821561114257818160000160008282546110c19190611bfd565b9091555050600281015481541115806110dc57506002810154155b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d61784c6f6e674f6900000000000000000000000000000000000000000000006044820152606401610474565b8054821180156111605750805461115d90633b9aca00611bfd565b82105b1561116a57805491505b8181600001600082825461117e9190611c10565b90915550508054633b9aca001115610df2576000905550505050565b6111e96040518060c0016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b60008281526004602052604090819020815160c08101909252805482908290611211906119f1565b80601f016020809104026020016040519081016040528092919081815260200182805461123d906119f1565b801561128a5780601f1061125f5761010080835404028352916020019161128a565b820191906000526020600020905b81548152906001019060200180831161126d57829003601f168201915b5050509183525050600182015473ffffffffffffffffffffffffffffffffffffffff16602082015260028201546040820152600382015460608201526004820154608082015260059091015460a09091015292915050565b6112ea611560565b6000838152600460205260408120805485929190611307906119f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611333906119f1565b80156113805780601f1061135557610100808354040283529160200191611380565b820191906000526020600020905b81548152906001019060200180831161136357829003601f168201915b5050505050905060008151116113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21417373657400000000000000000000000000000000000000000000000000006044820152606401610474565b5050600092835260056020908152604080852073ffffffffffffffffffffffffffffffffffffffff9094168552929052912060020155565b61144e60405180606001604052806000815260200160008152602001600081525090565b50600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845282529182902082516060810184528154815260018201549281019290925260020154918101919091525b92915050565b6114b1611560565b73ffffffffffffffffffffffffffffffffffffffff8116611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610474565b61155d816115e1565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610474565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167a57600080fd5b919050565b60006020828403121561169157600080fd5b61169a82611656565b9392505050565b600080604083850312156116b457600080fd5b50508035926020909101359150565b8035801515811461167a57600080fd5b600080604083850312156116e657600080fd5b823591506116f6602084016116c3565b90509250929050565b6000806040838503121561171257600080fd5b823591506116f660208401611656565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561176c57600080fd5b87359650602088013567ffffffffffffffff8082111561178b57600080fd5b818a0191508a601f83011261179f57600080fd5b8135818111156117b1576117b1611722565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156117f7576117f7611722565b816040528281528d602084870101111561181057600080fd5b82602086016020830137600060208483010152809a50505050505061183760408901611656565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b6000806000806080858703121561187557600080fd5b8435935061188560208601611656565b9250611893604086016116c3565b9396929550929360600135925050565b6000602082840312156118b557600080fd5b5035919050565b6000806000606084860312156118d157600080fd5b505081359360208301359350604090920135919050565b6000815180845260005b8181101561190e576020818501810151868301820152016118f2565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000825160c0602084015261196860e08401826118e8565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401526040840151606084015260608401516080840152608084015160a084015260a084015160c08401528091505092915050565b6000806000606084860312156119d157600080fd5b833592506119e160208501611656565b9150604084013590509250925092565b600181811c90821680611a0557607f821691505b602082108103611a3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115611a8e57600081815260208120601f850160051c81016020861015611a6b5750805b601f850160051c820191505b81811015611a8a57828155600101611a77565b5050505b505050565b815167ffffffffffffffff811115611aad57611aad611722565b611ac181611abb84546119f1565b84611a44565b602080601f831160018114611b145760008415611ade5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611a8a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611b6157888601518255948401946001909101908401611b42565b5085821015611b9d57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611bc660408301846118e8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156114a3576114a3611bce565b818103818111156114a3576114a3611bce56fea2646970667358221220697a3dbc24394ce0b4a875ff79746203cb5f9d2dacfeb636935b0147d61ae94b64736f6c63430008120033
Loading...
Loading
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.