DEX.AG: Proxy Contract has migrated to a new address.
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 55 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Trade | 10881778 | 1878 days ago | IN | 0 ETH | 0.021967 | ||||
| Trade | 8608106 | 2238 days ago | IN | 0.38 ETH | 0.00607704 | ||||
| Trade | 8607437 | 2238 days ago | IN | 0 ETH | 0.00350208 | ||||
| Trade | 8607416 | 2238 days ago | IN | 0 ETH | 0.02132584 | ||||
| Trade | 8607380 | 2238 days ago | IN | 0 ETH | 0.011965 | ||||
| Trade | 8607307 | 2238 days ago | IN | 0 ETH | 0.00848622 | ||||
| Trade | 8607286 | 2238 days ago | IN | 0 ETH | 0.0050525 | ||||
| Trade | 8607201 | 2238 days ago | IN | 0.00000493 ETH | 0.00271418 | ||||
| Trade | 8607199 | 2238 days ago | IN | 3 ETH | 0.00738828 | ||||
| Trade | 8607059 | 2238 days ago | IN | 0.00000495 ETH | 0.00244171 | ||||
| Trade | 8606373 | 2238 days ago | IN | 0.02456102 ETH | 0.0025223 | ||||
| Trade | 8606259 | 2238 days ago | IN | 0 ETH | 0.02411667 | ||||
| Trade | 8606135 | 2238 days ago | IN | 19.95405881 ETH | 0.00490702 | ||||
| Trade | 8605674 | 2238 days ago | IN | 0 ETH | 0.00478816 | ||||
| Trade | 8605343 | 2239 days ago | IN | 0 ETH | 0.00653626 | ||||
| Trade | 8605028 | 2239 days ago | IN | 5.402889 ETH | 0.00492263 | ||||
| Trade | 8604829 | 2239 days ago | IN | 0 ETH | 0.00281511 | ||||
| Trade | 8604676 | 2239 days ago | IN | 0 ETH | 0.00354484 | ||||
| Trade | 8603808 | 2239 days ago | IN | 6.1 ETH | 0.00448353 | ||||
| Trade | 8603763 | 2239 days ago | IN | 6.09999999 ETH | 0.00515497 | ||||
| Trade | 8603273 | 2239 days ago | IN | 0 ETH | 0.00602064 | ||||
| Trade | 8603262 | 2239 days ago | IN | 0 ETH | 0.00909576 | ||||
| Trade | 8603255 | 2239 days ago | IN | 0 ETH | 0.00296458 | ||||
| Trade | 8603173 | 2239 days ago | IN | 0.17731915 ETH | 0.00182168 | ||||
| Trade | 8603001 | 2239 days ago | IN | 0.00000049 ETH | 0.0022159 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
To
|
|||
|---|---|---|---|---|---|---|---|
| - | 8608106 | 2238 days ago | 0.38 ETH | ||||
| - | 8607416 | 2238 days ago | 60.37353447 ETH | ||||
| - | 8607416 | 2238 days ago | 51.94000383 ETH | ||||
| - | 8607416 | 2238 days ago | 8.43353064 ETH | ||||
| - | 8607380 | 2238 days ago | 33.68222587 ETH | ||||
| - | 8607201 | 2238 days ago | 0.00000012 ETH | ||||
| - | 8607201 | 2238 days ago | 0.00000012 ETH | ||||
| - | 8607201 | 2238 days ago | 0.00000493 ETH | ||||
| - | 8607199 | 2238 days ago | 3 ETH | ||||
| - | 8607059 | 2238 days ago | 0.00000009 ETH | ||||
| - | 8607059 | 2238 days ago | 0.00000009 ETH | ||||
| - | 8607059 | 2238 days ago | 0.00000495 ETH | ||||
| - | 8606373 | 2238 days ago | 0.00059904 ETH | ||||
| - | 8606373 | 2238 days ago | 0.00059904 ETH | ||||
| - | 8606373 | 2238 days ago | 0.02456102 ETH | ||||
| - | 8606135 | 2238 days ago | 19.95405881 ETH | ||||
| - | 8605674 | 2238 days ago | 1.12878368 ETH | ||||
| - | 8605674 | 2238 days ago | 1.12878368 ETH | ||||
| - | 8605343 | 2239 days ago | 1.04990024 ETH | ||||
| - | 8605343 | 2239 days ago | 0.5559396 ETH | ||||
| - | 8605343 | 2239 days ago | 0.49396064 ETH | ||||
| - | 8605028 | 2239 days ago | 0.10805778 ETH | ||||
| - | 8605028 | 2239 days ago | 5.29483122 ETH | ||||
| - | 8604829 | 2239 days ago | 0.26739051 ETH | ||||
| - | 8604829 | 2239 days ago | 0.26739051 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BasicTrading
Compiler Version
v0.5.8+commit.23d335f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-09-20
*/
pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;
/**
* @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.
*
* 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.
*/
contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return msg.sender == _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 onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero");
return a % b;
}
}
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see `ERC20Detailed`.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a `Transfer` event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through `transferFrom`. This is
* zero by default.
*
* This value changes when `approve` or `transferFrom` are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* > Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an `Approval` event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a `Transfer` event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to `approve`. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* > It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
}
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
contract TokenSpender is Ownable {
using SafeERC20 for IERC20;
function claimTokens(IERC20 token, address who, address dest, uint256 amount) external onlyOwner {
token.safeTransferFrom(who, dest, amount);
}
}
contract BasicTrading is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
address constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
TokenSpender public spender;
event Trade(address indexed fromToken, address indexed toToken, uint256 amount, address indexed trader, address[] exchanges);
event FeeSet(uint256 indexed _newFee);
event BeneficiarySet(address indexed _newBeneficiary);
event ProveQSet(address indexed _newProveQ);
constructor() public {
spender = new TokenSpender();
}
function trade(
IERC20 fromToken,
IERC20 toToken,
uint256 tokensAmount,
address[] memory callAddresses,
address[] memory approvals,
bytes memory callDataConcat,
uint256[] memory starts,
uint256[] memory values,
uint256 minTokensAmount
) public payable {
require(callAddresses.length > 0);
if (address(fromToken) != ETH_ADDRESS) {
spender.claimTokens(fromToken, msg.sender, address(this), tokensAmount);
}
for (uint i = 0; i < callAddresses.length; i++) {
require(callAddresses[i] != address(spender) && isContract(callAddresses[i]));
if (approvals[i] != address(0)) {
infiniteApproveIfNeeded(fromToken, approvals[i]);
} else {
infiniteApproveIfNeeded(fromToken, callAddresses[i]);
}
require(external_call(callAddresses[i], values[i], starts[i], starts[i + 1] - starts[i], callDataConcat));
}
uint256 returnAmount = _balanceOf(toToken, address(this));
require(returnAmount >= minTokensAmount);
uint256 leftover = _balanceOf(fromToken, address(this));
if (leftover > 0) {
_transfer(fromToken, msg.sender, leftover, false);
}
_transfer(toToken, msg.sender, _balanceOf(toToken, address(this)), false);
emit Trade(address(fromToken), address(toToken), returnAmount, msg.sender, callAddresses);
}
function infiniteApproveIfNeeded(IERC20 token, address to) internal {
if (
address(token) != ETH_ADDRESS &&
token.allowance(address(this), to) == 0
) {
token.safeApprove(to, uint256(-1));
}
}
function _balanceOf(IERC20 token, address who) internal view returns(uint256) {
if (address(token) == ETH_ADDRESS || token == IERC20(0)) {
return who.balance;
} else {
return token.balanceOf(who);
}
}
function _transfer(IERC20 token, address payable to, uint256 amount, bool allowFail) internal returns(bool) {
if (address(token) == ETH_ADDRESS || token == IERC20(0)) {
if (allowFail) {
return to.send(amount);
} else {
to.transfer(amount);
return true;
}
} else {
token.safeTransfer(to, amount);
return true;
}
}
// Source: https://github.com/gnosis/MultiSigWallet/blob/master/contracts/MultiSigWallet.sol
// call has been separated into its own function in order to take advantage
// of the Solidity's code generator to produce a loop that copies tx.data into memory.
function external_call(address destination, uint value, uint dataOffset, uint dataLength, bytes memory data) internal returns (bool) {
bool result;
assembly {
let x := mload(0x40) // "Allocate" memory for output (0x40 is where "free memory" pointer is stored by convention)
let d := add(data, 32) // First 32 bytes are the padded length of data, so exclude that
result := call(
sub(gas, 34710), // 34710 is the value that solidity is currently emitting
// It includes callGas (700) + callVeryLow (3, to pay for SUB) + callValueTransferGas (9000) +
// callNewAccountGas (25000, in case the destination address does not exist and needs creating)
destination,
value,
add(d, dataOffset),
dataLength, // Size of the input (in bytes) - this is what fixes the padding problem
x,
0 // Output is ignored, therefore the output size is zero
)
}
return result;
}
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* > It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
function () external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"fromToken","type":"address"},{"name":"toToken","type":"address"},{"name":"tokensAmount","type":"uint256"},{"name":"callAddresses","type":"address[]"},{"name":"approvals","type":"address[]"},{"name":"callDataConcat","type":"bytes"},{"name":"starts","type":"uint256[]"},{"name":"values","type":"uint256[]"},{"name":"minTokensAmount","type":"uint256"}],"name":"trade","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"spender","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fromToken","type":"address"},{"indexed":true,"name":"toToken","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"trader","type":"address"},{"indexed":false,"name":"exchanges","type":"address[]"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newFee","type":"uint256"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newBeneficiary","type":"address"}],"name":"BeneficiarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newProveQ","type":"address"}],"name":"ProveQSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3604051610066906100a8565b604051809103906000f080158015610082573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b03929092169190911790556100b5565b6109fb8061168f83390190565b6115cb806100c46000396000f3fe6080604052600436106100655760003560e01c80638f32d59b116100435780638f32d59b146100ba578063e8edc816146100dc578063f2fde38b146100fe57610065565b8063715018a614610067578063821d3bae1461007c5780638da5cb5b1461008f575b005b34801561007357600080fd5b5061006561011e565b61006561008a366004610f1b565b6101d4565b34801561009b57600080fd5b506100a4610500565b6040516100b1919061131f565b60405180910390f35b3480156100c657600080fd5b506100cf61051c565b6040516100b19190611371565b3480156100e857600080fd5b506100f161053a565b6040516100b191906113b4565b34801561010a57600080fd5b50610065610119366004610edf565b610556565b61012661051c565b610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113e2565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60008651116101e257600080fd5b73ffffffffffffffffffffffffffffffffffffffff891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146102a2576001546040517f0a5ea46600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630a5ea4669061026f908c90339030908d9060040161137f565b600060405180830381600087803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050505b60005b865181101561041f57600154875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106102d857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561031b575061031b87828151811061030e57fe5b60200260200101516105a0565b61032457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff1686828151811061034857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461038d576103888a87838151811061037b57fe5b60200260200101516105dc565b61039d565b61039d8a88838151811061037b57fe5b61040e8782815181106103ac57fe5b60200260200101518483815181106103c057fe5b60200260200101518684815181106103d457fe5b60200260200101518785815181106103e857fe5b60200260200101518886600101815181106103ff57fe5b60200260200101510389610707565b61041757600080fd5b6001016102a5565b50600061042c893061072f565b90508181101561043b57600080fd5b60006104478b3061072f565b9050801561045e5761045c8b3383600061084b565b505b6104748a3361046d8d3061072f565b600061084b565b503373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f7f4363a7de9f4f92c42bb0ff87a70e7b13505b57c19cad83a9c06e4bf634dcd2858c6040516104eb929190611422565b60405180910390a45050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b61055e61051c565b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113e2565b61059d8161095c565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105d45750808214155b949350505050565b73ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906106b757506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90610665903090859060040161132d565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b59190810190611057565b155b156107035761070373ffffffffffffffffffffffffffffffffffffffff8316827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff610a3616565b5050565b60008060405160208401600082878984018b8d6187965a03f193505050505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061077d575073ffffffffffffffffffffffffffffffffffffffff8316155b156107a0575073ffffffffffffffffffffffffffffffffffffffff811631610845565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906107f290859060040161131f565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108429190810190611057565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610899575073ffffffffffffffffffffffffffffffffffffffff8516155b1561092a5781156108dd5760405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f1935050505090506105d4565b60405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f19350505050158015610920573d6000803e3d6000fd5b50600190506105d4565b61095173ffffffffffffffffffffffffffffffffffffffff8616858563ffffffff610bdc16565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff81166109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113c2565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b801580610ae457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610a929030908690600401611348565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae29190810190611057565b155b610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c90611402565b604051610bd79084907f095ea7b30000000000000000000000000000000000000000000000000000000090610b559086908690602401611356565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c17565b505050565b604051610bd79084907fa9059cbb0000000000000000000000000000000000000000000000000000000090610b559086908690602401611356565b610c368273ffffffffffffffffffffffffffffffffffffffff166105a0565b610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c90611412565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610c95919061130c565b6000604051808303816000865af19150503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b509150915081610d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113d2565b805115610d645780806020019051610d2e9190810190610efd565b610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113f2565b50505050565b803561084581611562565b600082601f830112610d8657600080fd5b8135610d99610d9482611469565b611442565b91508181835260208401935060208101905083856020840282011115610dbe57600080fd5b60005b83811015610dea5781610dd48882610d6a565b8452506020928301929190910190600101610dc1565b5050505092915050565b600082601f830112610e0557600080fd5b8135610e13610d9482611469565b91508181835260208401935060208101905083856020840282011115610e3857600080fd5b60005b83811015610dea5781610e4e8882610ec9565b8452506020928301929190910190600101610e3b565b805161084581611576565b600082601f830112610e8057600080fd5b8135610e8e610d948261148a565b91508082526020830160208301858383011115610eaa57600080fd5b610eb583828461152a565b50505092915050565b80356108458161157f565b803561084581611588565b805161084581611588565b600060208284031215610ef157600080fd5b60006105d48484610d6a565b600060208284031215610f0f57600080fd5b60006105d48484610e64565b60008060008060008060008060006101208a8c031215610f3a57600080fd5b6000610f468c8c610ebe565b9950506020610f578c828d01610ebe565b9850506040610f688c828d01610ec9565b97505060608a013567ffffffffffffffff811115610f8557600080fd5b610f918c828d01610d75565b96505060808a013567ffffffffffffffff811115610fae57600080fd5b610fba8c828d01610d75565b95505060a08a013567ffffffffffffffff811115610fd757600080fd5b610fe38c828d01610e6f565b94505060c08a013567ffffffffffffffff81111561100057600080fd5b61100c8c828d01610df4565b93505060e08a013567ffffffffffffffff81111561102957600080fd5b6110358c828d01610df4565b9250506101006110478c828d01610ec9565b9150509295985092959850929598565b60006020828403121561106957600080fd5b60006105d48484610ed4565b60006110818383611098565b505060200190565b6110928161151f565b82525050565b611092816114e8565b60006110ac826114d6565b6110b681856114da565b93506110c1836114d0565b8060005b838110156110ef5781516110d98882611075565b97506110e4836114d0565b9250506001016110c5565b509495945050505050565b611092816114f3565b600061110e826114d6565b61111881856114e3565b9350611128818560208601611536565b9290920192915050565b611092816114f8565b60006111486026836114da565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006111a76020836114da565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006111e06020836114da565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611219602a836114da565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b60006112786036836114da565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b60006112d7601f836114da565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6110928161151c565b60006113188284611103565b9392505050565b602081016108458284611098565b6040810161133b8285611089565b6113186020830184611098565b6040810161133b8285611098565b604081016113648285611098565b6113186020830184611303565b6020810161084582846110fa565b6080810161138d8287611132565b61139a6020830186611089565b6113a76040830185611089565b6107266060830184611303565b602081016108458284611132565b602080825281016108458161113b565b602080825281016108458161119a565b60208082528101610845816111d3565b602080825281016108458161120c565b602080825281016108458161126b565b60208082528101610845816112ca565b604081016114308285611303565b81810360208301526105d481846110a1565b60405181810167ffffffffffffffff8111828210171561146157600080fd5b604052919050565b600067ffffffffffffffff82111561148057600080fd5b5060209081020190565b600067ffffffffffffffff8211156114a157600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061084582611503565b151590565b6000610845826114e8565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b6000610845826114f8565b82818337506000910152565b60005b83811015611551578181015183820152602001611539565b83811115610d645750506000910152565b61156b816114e8565b811461059d57600080fd5b61156b816114f3565b61156b816114f8565b61156b8161151c56fea265627a7a72305820b35c88c0a905fbea7233680ddf506038b73057f255213c29870a3a7a5bd580536c6578706572696d656e74616cf5003760806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36109a4806100576000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80638da5cb5b116100505780638da5cb5b146100895780638f32d59b146100a7578063f2fde38b146100bc57610067565b80630a5ea4661461006c578063715018a614610081575b600080fd5b61007f61007a366004610605565b6100cf565b005b61007f610144565b6100916101f1565b60405161009e9190610832565b60405180910390f35b6100af61020d565b60405161009e9190610868565b61007f6100ca3660046105c9565b61022b565b6100d761020d565b610116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d90610896565b60405180910390fd5b61013e73ffffffffffffffffffffffffffffffffffffffff851684848463ffffffff61027516565b50505050565b61014c61020d565b610182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d90610896565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b61023361020d565b610269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d90610896565b61027281610334565b50565b60405161013e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906102b290879087908790602401610840565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261040e565b73ffffffffffffffffffffffffffffffffffffffff8116610381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d90610876565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61042d8273ffffffffffffffffffffffffffffffffffffffff1661055b565b610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d906108b6565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161048c919061081f565b6000604051808303816000865af19150503d80600081146104c9576040519150601f19603f3d011682016040523d82523d6000602084013e6104ce565b606091505b50915091508161050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d90610886565b80511561013e578080602001905161052591908101906105e7565b61013e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d906108a6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811580159061058f5750808214155b949350505050565b80356105a28161093b565b92915050565b80516105a28161094f565b80356105a281610958565b80356105a281610961565b6000602082840312156105db57600080fd5b600061058f8484610597565b6000602082840312156105f957600080fd5b600061058f84846105a8565b6000806000806080858703121561061b57600080fd5b600061062787876105b3565b945050602061063887828801610597565b935050604061064987828801610597565b925050606061065a878288016105be565b91505092959194509250565b61066f816108d8565b82525050565b61066f816108e3565b6000610689826108c6565b61069381856108ca565b93506106a381856020860161090f565b9290920192915050565b60006106ba6026836108cf565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006107196020836108cf565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006107526020836108cf565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061078b602a836108cf565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b60006107ea601f836108cf565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b61066f8161090c565b600061082b828461067e565b9392505050565b602081016105a28284610666565b6060810161084e8286610666565b61085b6020830185610666565b61058f6040830184610816565b602081016105a28284610675565b602080825281016105a2816106ad565b602080825281016105a28161070c565b602080825281016105a281610745565b602080825281016105a28161077e565b602080825281016105a2816107dd565b5190565b919050565b90815260200190565b60006105a2826108f3565b151590565b60006105a2826108d8565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b60005b8381101561092a578181015183820152602001610912565b8381111561013e5750506000910152565b610944816108d8565b811461027257600080fd5b610944816108e3565b610944816108e8565b6109448161090c56fea265627a7a72305820e670d922abe258bd7089ed30cd08b90c3cdb2ce91bc509d8f5416cbdd0fe88446c6578706572696d656e74616cf50037
Deployed Bytecode
0x6080604052600436106100655760003560e01c80638f32d59b116100435780638f32d59b146100ba578063e8edc816146100dc578063f2fde38b146100fe57610065565b8063715018a614610067578063821d3bae1461007c5780638da5cb5b1461008f575b005b34801561007357600080fd5b5061006561011e565b61006561008a366004610f1b565b6101d4565b34801561009b57600080fd5b506100a4610500565b6040516100b1919061131f565b60405180910390f35b3480156100c657600080fd5b506100cf61051c565b6040516100b19190611371565b3480156100e857600080fd5b506100f161053a565b6040516100b191906113b4565b34801561010a57600080fd5b50610065610119366004610edf565b610556565b61012661051c565b610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113e2565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60008651116101e257600080fd5b73ffffffffffffffffffffffffffffffffffffffff891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146102a2576001546040517f0a5ea46600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630a5ea4669061026f908c90339030908d9060040161137f565b600060405180830381600087803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050505b60005b865181101561041f57600154875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106102d857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561031b575061031b87828151811061030e57fe5b60200260200101516105a0565b61032457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff1686828151811061034857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461038d576103888a87838151811061037b57fe5b60200260200101516105dc565b61039d565b61039d8a88838151811061037b57fe5b61040e8782815181106103ac57fe5b60200260200101518483815181106103c057fe5b60200260200101518684815181106103d457fe5b60200260200101518785815181106103e857fe5b60200260200101518886600101815181106103ff57fe5b60200260200101510389610707565b61041757600080fd5b6001016102a5565b50600061042c893061072f565b90508181101561043b57600080fd5b60006104478b3061072f565b9050801561045e5761045c8b3383600061084b565b505b6104748a3361046d8d3061072f565b600061084b565b503373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f7f4363a7de9f4f92c42bb0ff87a70e7b13505b57c19cad83a9c06e4bf634dcd2858c6040516104eb929190611422565b60405180910390a45050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b61055e61051c565b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113e2565b61059d8161095c565b50565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105d45750808214155b949350505050565b73ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906106b757506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90610665903090859060040161132d565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b59190810190611057565b155b156107035761070373ffffffffffffffffffffffffffffffffffffffff8316827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff610a3616565b5050565b60008060405160208401600082878984018b8d6187965a03f193505050505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061077d575073ffffffffffffffffffffffffffffffffffffffff8316155b156107a0575073ffffffffffffffffffffffffffffffffffffffff811631610845565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906107f290859060040161131f565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108429190810190611057565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610899575073ffffffffffffffffffffffffffffffffffffffff8516155b1561092a5781156108dd5760405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f1935050505090506105d4565b60405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f19350505050158015610920573d6000803e3d6000fd5b50600190506105d4565b61095173ffffffffffffffffffffffffffffffffffffffff8616858563ffffffff610bdc16565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff81166109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113c2565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b801580610ae457506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e90610a929030908690600401611348565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae29190810190611057565b155b610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c90611402565b604051610bd79084907f095ea7b30000000000000000000000000000000000000000000000000000000090610b559086908690602401611356565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c17565b505050565b604051610bd79084907fa9059cbb0000000000000000000000000000000000000000000000000000000090610b559086908690602401611356565b610c368273ffffffffffffffffffffffffffffffffffffffff166105a0565b610c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c90611412565b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610c95919061130c565b6000604051808303816000865af19150503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b509150915081610d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113d2565b805115610d645780806020019051610d2e9190810190610efd565b610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906113f2565b50505050565b803561084581611562565b600082601f830112610d8657600080fd5b8135610d99610d9482611469565b611442565b91508181835260208401935060208101905083856020840282011115610dbe57600080fd5b60005b83811015610dea5781610dd48882610d6a565b8452506020928301929190910190600101610dc1565b5050505092915050565b600082601f830112610e0557600080fd5b8135610e13610d9482611469565b91508181835260208401935060208101905083856020840282011115610e3857600080fd5b60005b83811015610dea5781610e4e8882610ec9565b8452506020928301929190910190600101610e3b565b805161084581611576565b600082601f830112610e8057600080fd5b8135610e8e610d948261148a565b91508082526020830160208301858383011115610eaa57600080fd5b610eb583828461152a565b50505092915050565b80356108458161157f565b803561084581611588565b805161084581611588565b600060208284031215610ef157600080fd5b60006105d48484610d6a565b600060208284031215610f0f57600080fd5b60006105d48484610e64565b60008060008060008060008060006101208a8c031215610f3a57600080fd5b6000610f468c8c610ebe565b9950506020610f578c828d01610ebe565b9850506040610f688c828d01610ec9565b97505060608a013567ffffffffffffffff811115610f8557600080fd5b610f918c828d01610d75565b96505060808a013567ffffffffffffffff811115610fae57600080fd5b610fba8c828d01610d75565b95505060a08a013567ffffffffffffffff811115610fd757600080fd5b610fe38c828d01610e6f565b94505060c08a013567ffffffffffffffff81111561100057600080fd5b61100c8c828d01610df4565b93505060e08a013567ffffffffffffffff81111561102957600080fd5b6110358c828d01610df4565b9250506101006110478c828d01610ec9565b9150509295985092959850929598565b60006020828403121561106957600080fd5b60006105d48484610ed4565b60006110818383611098565b505060200190565b6110928161151f565b82525050565b611092816114e8565b60006110ac826114d6565b6110b681856114da565b93506110c1836114d0565b8060005b838110156110ef5781516110d98882611075565b97506110e4836114d0565b9250506001016110c5565b509495945050505050565b611092816114f3565b600061110e826114d6565b61111881856114e3565b9350611128818560208601611536565b9290920192915050565b611092816114f8565b60006111486026836114da565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006111a76020836114da565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b60006111e06020836114da565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611219602a836114da565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b60006112786036836114da565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b60006112d7601f836114da565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6110928161151c565b60006113188284611103565b9392505050565b602081016108458284611098565b6040810161133b8285611089565b6113186020830184611098565b6040810161133b8285611098565b604081016113648285611098565b6113186020830184611303565b6020810161084582846110fa565b6080810161138d8287611132565b61139a6020830186611089565b6113a76040830185611089565b6107266060830184611303565b602081016108458284611132565b602080825281016108458161113b565b602080825281016108458161119a565b60208082528101610845816111d3565b602080825281016108458161120c565b602080825281016108458161126b565b60208082528101610845816112ca565b604081016114308285611303565b81810360208301526105d481846110a1565b60405181810167ffffffffffffffff8111828210171561146157600080fd5b604052919050565b600067ffffffffffffffff82111561148057600080fd5b5060209081020190565b600067ffffffffffffffff8211156114a157600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061084582611503565b151590565b6000610845826114e8565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b6000610845826114f8565b82818337506000910152565b60005b83811015611551578181015183820152602001611539565b83811115610d645750506000910152565b61156b816114e8565b811461059d57600080fd5b61156b816114f3565b61156b816114f8565b61156b8161151c56fea265627a7a72305820b35c88c0a905fbea7233680ddf506038b73057f255213c29870a3a7a5bd580536c6578706572696d656e74616cf50037
Deployed Bytecode Sourcemap
14418:5865:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1692:140:0;;;:::i;15007:1527::-;;;;;;;;;:::i;881:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;1247:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1247:92:0;;;:::i;:::-;;;;;;;;14608:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14608:27:0;;;:::i;:::-;;;;;;;;1987:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1987:109:0;;;;;;;;:::i;1692:140::-;1093:9;:7;:9::i;:::-;1085:54;;;;;;;;;;;;;;;;;;;;;;1791:1;1775:6;;1754:40;;;1775:6;;;;1754:40;;1791:1;;1754:40;1822:1;1805:19;;;;;;1692:140::o;15007:1527::-;15388:1;15365:13;:20;:24;15357:33;;;;;;15407;;;14557:42;15407:33;15403:137;;15457:7;;:71;;;;;:7;;;;;:19;;:71;;15477:9;;15488:10;;15508:4;;15515:12;;15457:71;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15457:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15457:71:0;;;;15403:137;15557:6;15552:494;15573:13;:20;15569:1;:24;15552:494;;;15651:7;;15623:16;;15651:7;;;;;15623:13;;15637:1;;15623:16;;;;;;;;;;;;:36;;;;:68;;;;;15663:28;15674:13;15688:1;15674:16;;;;;;;;;;;;;;15663:10;:28::i;:::-;15615:77;;;;;;15735:1;15711:26;;:9;15721:1;15711:12;;;;;;;;;;;;;;:26;;;15707:208;;15758:48;15782:9;15793;15803:1;15793:12;;;;;;;;;;;;;;15758:23;:48::i;:::-;15707:208;;;15847:52;15871:9;15882:13;15896:1;15882:16;;;;;;;15847:52;15937:96;15951:13;15965:1;15951:16;;;;;;;;;;;;;;15969:6;15976:1;15969:9;;;;;;;;;;;;;;15980:6;15987:1;15980:9;;;;;;;;;;;;;;16007:6;16014:1;16007:9;;;;;;;;;;;;;;15991:6;15998:1;16002;15998:5;15991:13;;;;;;;;;;;;;;:25;16018:14;15937:13;:96::i;:::-;15929:105;;;;;;15595:3;;15552:494;;;;16058:20;16081:34;16092:7;16109:4;16081:10;:34::i;:::-;16058:57;;16150:15;16134:12;:31;;16126:40;;;;;;16179:16;16198:36;16209:9;16228:4;16198:10;:36::i;:::-;16179:55;-1:-1:-1;16249:12:0;;16245:94;;16278:49;16288:9;16299:10;16311:8;16321:5;16278:9;:49::i;:::-;;16245:94;16351:73;16361:7;16370:10;16382:34;16393:7;16410:4;16382:10;:34::i;:::-;16418:5;16351:9;:73::i;:::-;;16500:10;16442:84;;16476:7;16442:84;;16456:9;16442:84;;;16486:12;16512:13;16442:84;;;;;;;;;;;;;;;;15007:1527;;;;;;;;;;;:::o;881:79::-;919:7;946:6;;;881:79;:::o;1247:92::-;1287:4;1325:6;;;1311:10;:20;;1247:92::o;14608:27::-;;;;;;:::o;1987:109::-;1093:9;:7;:9::i;:::-;1085:54;;;;;;;;;;;;;;2060:28;2079:8;2060:18;:28::i;:::-;1987:109;:::o;19423:818::-;19483:4;20150:20;;19993:66;20190:15;;;;;:42;;;20221:11;20209:8;:23;;20190:42;20182:51;19423:818;-1:-1:-1;;;;19423:818:0:o;16542:262::-;16639:29;;;14557:42;16639:29;;;;:85;;-1:-1:-1;16685:34:0;;;;;:15;;;;;;:34;;16709:4;;16716:2;;16685:34;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16685:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16685:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16685:34:0;;;;;;;;;:39;16639:85;16621:176;;;16751:34;:17;;;16769:2;16781;16751:34;:17;:34;:::i;:::-;16542:262;;:::o;17817:1162::-;17944:4;17961:11;18022:4;18016:11;18156:2;18150:4;18146:13;18848:1;18828;18719:10;18689;18686:1;18682:18;18658:5;18628:11;18280:5;18275:3;18271:15;18248:689;18238:699;-1:-1:-1;;;;17817:1162:0;;;;;;;;:::o;16812:258::-;16881:7;16905:29;;;14557:42;16905:29;;:51;;-1:-1:-1;16938:18:0;;;;16905:51;16901:162;;;-1:-1:-1;16980:11:0;;;;16973:18;;16901:162;17031:20;;;;;:15;;;;;;:20;;17047:3;;17031:20;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17031:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17031:20:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17031:20:0;;;;;;;;;17024:27;;16901:162;16812:258;;;;:::o;17078:460::-;17180:4;17201:29;;;14557:42;17201:29;;:51;;-1:-1:-1;17234:18:0;;;;17201:51;17197:334;;;17273:9;17269:162;;;17310:15;;:7;;;;:15;;;;;17318:6;;17310:15;;;;17318:6;17310:7;:15;;;;;;;17303:22;;;;17269:162;17366:19;;:11;;;;:19;;;;;17378:6;;17366:19;;;;17378:6;17366:11;:19;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17366:19:0;17411:4;17404:11;;;;17197:334;17463:30;:18;;;17482:2;17486:6;17463:30;:18;:30;:::i;:::-;-1:-1:-1;17515:4:0;17078:460;;;;;;:::o;2202:229::-;2276:22;;;2268:73;;;;;;;;;;;;;;2378:6;;;2357:38;;;;;;;2378:6;;;2357:38;;;2406:6;:17;;;;;;;;;;;;;;;2202:229::o;11458:621::-;11828:10;;;11827:62;;-1:-1:-1;11844:39:0;;;;;:15;;;;;;:39;;11868:4;;11875:7;;11844:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11844:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11844:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11844:39:0;;;;;;;;;:44;11827:62;11819:152;;;;;;;;;;;;;;12008:62;;11982:89;;12001:5;;12031:22;;12008:62;;12055:7;;12064:5;;12008:62;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;12008:62:0;;;49:4:-1;25:18;;61:17;;12008:62:0;182:15:-1;12008:62:0;;;;179:29:-1;;;;160:49;;;11982:18:0;:89::i;:::-;11458:621;;;:::o;11062:176::-;11171:58;;11145:85;;11164:5;;11194:23;;11171:58;;11219:2;;11223:5;;11171:58;;;;13056:1114;13660:27;13668:5;13660:25;;;:27::i;:::-;13652:71;;;;;;;;;;;;;;13797:12;13811:23;13846:5;13838:19;;13858:4;13838:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13796:67:0;;;;13882:7;13874:52;;;;;;;;;;;;;;13943:17;;:21;13939:224;;14085:10;14074:30;;;;;;;;;;;;;;14066:85;;;;;;;;;;;;;;13056:1114;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;893:707;;1010:3;1003:4;995:6;991:17;987:27;977:2;;1028:1;1025;1018:12;977:2;1065:6;1052:20;1087:80;1102:64;1159:6;1102:64;;1087:80;1078:89;;1184:5;1209:6;1202:5;1195:21;1239:4;1231:6;1227:17;1217:27;;1261:4;1256:3;1252:14;1245:21;;1314:6;1361:3;1353:4;1345:6;1341:17;1336:3;1332:27;1329:36;1326:2;;;1378:1;1375;1368:12;1326:2;1403:1;1388:206;1413:6;1410:1;1407:13;1388:206;;;1471:3;1493:37;1526:3;1514:10;1493:37;;;1481:50;;-1:-1;1554:4;1545:14;;;;1573;;;;;1435:1;1428:9;1388:206;;1608:128;1683:13;;1701:30;1683:13;1701:30;;1744:440;;1845:3;1838:4;1830:6;1826:17;1822:27;1812:2;;1863:1;1860;1853:12;1812:2;1900:6;1887:20;1922:64;1937:48;1978:6;1937:48;;1922:64;1913:73;;2006:6;1999:5;1992:21;2042:4;2034:6;2030:17;2075:4;2068:5;2064:16;2110:3;2101:6;2096:3;2092:16;2089:25;2086:2;;;2127:1;2124;2117:12;2086:2;2137:41;2171:6;2166:3;2161;2137:41;;;1805:379;;;;;;;;2192:158;2273:20;;2298:47;2273:20;2298:47;;2357:130;2424:20;;2449:33;2424:20;2449:33;;2494:134;2572:13;;2590:33;2572:13;2590:33;;2635:241;;2739:2;2727:9;2718:7;2714:23;2710:32;2707:2;;;2755:1;2752;2745:12;2707:2;2790:1;2807:53;2852:7;2832:9;2807:53;;2883:257;;2995:2;2983:9;2974:7;2970:23;2966:32;2963:2;;;3011:1;3008;3001:12;2963:2;3046:1;3063:61;3116:7;3096:9;3063:61;;3147:1951;;;;;;;;;;3524:3;3512:9;3503:7;3499:23;3495:33;3492:2;;;3541:1;3538;3531:12;3492:2;3576:1;3593:67;3652:7;3632:9;3593:67;;;3583:77;;3555:111;3697:2;3715:67;3774:7;3765:6;3754:9;3750:22;3715:67;;;3705:77;;3676:112;3819:2;3837:53;3882:7;3873:6;3862:9;3858:22;3837:53;;;3827:63;;3798:98;3955:2;3944:9;3940:18;3927:32;3979:18;3971:6;3968:30;3965:2;;;4011:1;4008;4001:12;3965:2;4031:78;4101:7;4092:6;4081:9;4077:22;4031:78;;;4021:88;;3906:209;4174:3;4163:9;4159:19;4146:33;4199:18;4191:6;4188:30;4185:2;;;4231:1;4228;4221:12;4185:2;4251:78;4321:7;4312:6;4301:9;4297:22;4251:78;;;4241:88;;4125:210;4394:3;4383:9;4379:19;4366:33;4419:18;4411:6;4408:30;4405:2;;;4451:1;4448;4441:12;4405:2;4471:62;4525:7;4516:6;4505:9;4501:22;4471:62;;;4461:72;;4345:194;4598:3;4587:9;4583:19;4570:33;4623:18;4615:6;4612:30;4609:2;;;4655:1;4652;4645:12;4609:2;4675:78;4745:7;4736:6;4725:9;4721:22;4675:78;;;4665:88;;4549:210;4818:3;4807:9;4803:19;4790:33;4843:18;4835:6;4832:30;4829:2;;;4875:1;4872;4865:12;4829:2;4895:78;4965:7;4956:6;4945:9;4941:22;4895:78;;;4885:88;;4769:210;5010:3;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;;;5019:63;;4989:99;3486:1612;;;;;;;;;;;;5105:263;;5220:2;5208:9;5199:7;5195:23;5191:32;5188:2;;;5236:1;5233;5226:12;5188:2;5271:1;5288:64;5344:7;5324:9;5288:64;;5376:173;;5463:46;5505:3;5497:6;5463:46;;;-1:-1;;5538:4;5529:14;;5456:93;5557:142;5648:45;5687:5;5648:45;;;5643:3;5636:58;5630:69;;;5706:103;5779:24;5797:5;5779:24;;5967:690;;6112:54;6160:5;6112:54;;;6179:86;6258:6;6253:3;6179:86;;;6172:93;;6286:56;6336:5;6286:56;;;6362:7;6390:1;6375:260;6400:6;6397:1;6394:13;6375:260;;;6467:6;6461:13;6488:63;6547:3;6532:13;6488:63;;;6481:70;;6568:60;6621:6;6568:60;;;6558:70;-1:-1;;6422:1;6415:9;6375:260;;;-1:-1;6648:3;;6091:566;-1:-1;;;;;6091:566;6665:104;6742:21;6757:5;6742:21;;6776:356;;6904:38;6936:5;6904:38;;;6954:88;7035:6;7030:3;6954:88;;;6947:95;;7047:52;7092:6;7087:3;7080:4;7073:5;7069:16;7047:52;;;7111:16;;;;;6884:248;-1:-1;;6884:248;7139:154;7236:51;7281:5;7236:51;;7474:465;;7634:67;7698:2;7693:3;7634:67;;;7734:66;7714:87;;7835:66;7830:2;7821:12;;7814:88;7930:2;7921:12;;7620:319;-1:-1;;7620:319;7948:364;;8108:67;8172:2;8167:3;8108:67;;;8208:66;8188:87;;8303:2;8294:12;;8094:218;-1:-1;;8094:218;8321:364;;8481:67;8545:2;8540:3;8481:67;;;8581:66;8561:87;;8676:2;8667:12;;8467:218;-1:-1;;8467:218;8694:465;;8854:67;8918:2;8913:3;8854:67;;;8954:66;8934:87;;9055:66;9050:2;9041:12;;9034:88;9150:2;9141:12;;8840:319;-1:-1;;8840:319;9168:465;;9328:67;9392:2;9387:3;9328:67;;;9428:66;9408:87;;9529:66;9524:2;9515:12;;9508:88;9624:2;9615:12;;9314:319;-1:-1;;9314:319;9642:364;;9802:67;9866:2;9861:3;9802:67;;;9902:66;9882:87;;9997:2;9988:12;;9788:218;-1:-1;;9788:218;10014:113;10097:24;10115:5;10097:24;;10134:262;;10278:93;10367:3;10358:6;10278:93;;;10271:100;10259:137;-1:-1;;;10259:137;10403:213;10521:2;10506:18;;10535:71;10510:9;10579:6;10535:71;;10623:340;10777:2;10762:18;;10791:79;10766:9;10843:6;10791:79;;;10881:72;10949:2;10938:9;10934:18;10925:6;10881:72;;10970:324;11116:2;11101:18;;11130:71;11105:9;11174:6;11130:71;;11301:324;11447:2;11432:18;;11461:71;11436:9;11505:6;11461:71;;;11543:72;11611:2;11600:9;11596:18;11587:6;11543:72;;11632:201;11744:2;11729:18;;11758:65;11733:9;11796:6;11758:65;;11840:607;12072:3;12057:19;;12087:85;12061:9;12145:6;12087:85;;;12183:80;12259:2;12248:9;12244:18;12235:6;12183:80;;;12274;12350:2;12339:9;12335:18;12326:6;12274:80;;;12365:72;12433:2;12422:9;12418:18;12409:6;12365:72;;12454:253;12592:2;12577:18;;12606:91;12581:9;12670:6;12606:91;;12714:407;12905:2;12919:47;;;12890:18;;12980:131;12890:18;12980:131;;13128:407;13319:2;13333:47;;;13304:18;;13394:131;13304:18;13394:131;;13542:407;13733:2;13747:47;;;13718:18;;13808:131;13718:18;13808:131;;13956:407;14147:2;14161:47;;;14132:18;;14222:131;14132:18;14222:131;;14370:407;14561:2;14575:47;;;14546:18;;14636:131;14546:18;14636:131;;14784:407;14975:2;14989:47;;;14960:18;;15050:131;14960:18;15050:131;;15198:472;15394:2;15379:18;;15408:71;15383:9;15452:6;15408:71;;;15527:9;15521:4;15517:20;15512:2;15501:9;15497:18;15490:48;15552:108;15655:4;15646:6;15552:108;;15677:256;15739:2;15733:9;15765:17;;;15840:18;15825:34;;15861:22;;;15822:62;15819:2;;;15897:1;15894;15887:12;15819:2;15913;15906:22;15717:216;;-1:-1;15717:216;15940:258;;16099:18;16091:6;16088:30;16085:2;;;16131:1;16128;16121:12;16085:2;-1:-1;16160:4;16148:17;;;16178:15;;16022:176;16470:258;;16613:18;16605:6;16602:30;16599:2;;;16645:1;16642;16635:12;16599:2;-1:-1;16718:4;16689;16666:17;;;;16685:9;16662:33;16708:15;;16536:192;16738:123;16848:4;16836:17;;16816:45;16871:107;16961:12;;16945:33;17219:178;17337:19;;;17386:4;17377:14;;17330:67;17406:144;17541:3;17519:31;-1:-1;17519:31;17730:91;;17792:24;17810:5;17792:24;;17828:85;17894:13;17887:21;;17870:43;17920:105;;17996:24;18014:5;17996:24;;18032:121;18105:42;18094:54;;18077:76;18160:72;18222:5;18205:27;18239:129;;18326:37;18357:5;18326:37;;19207:145;19288:6;19283:3;19278;19265:30;-1:-1;19344:1;19326:16;;19319:27;19258:94;19361:268;19426:1;19433:101;19447:6;19444:1;19441:13;19433:101;;;19514:11;;;19508:18;19495:11;;;19488:39;19469:2;19462:10;19433:101;;;19549:6;19546:1;19543:13;19540:2;;;-1:-1;;19614:1;19596:16;;19589:27;19410:219;19637:117;19706:24;19724:5;19706:24;;;19699:5;19696:35;19686:2;;19745:1;19742;19735:12;19761:111;19827:21;19842:5;19827:21;;19879:145;19962:38;19994:5;19962:38;;20031:117;20100:24;20118:5;20100:24;
Swarm Source
bzzr://e670d922abe258bd7089ed30cd08b90c3cdb2ce91bc509d8f5416cbdd0fe8844
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 100.00% | $1.76 | 1 | $1.76 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.