More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,320 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Fees | 14360614 | 1112 days ago | IN | 0 ETH | 0.00176633 | ||||
Withdraw Fees | 14360595 | 1112 days ago | IN | 0 ETH | 0.00272799 | ||||
Withdraw Fees | 14360584 | 1112 days ago | IN | 0 ETH | 0.0025395 | ||||
Return Funds | 11359871 | 1577 days ago | IN | 0 ETH | 0.00296685 | ||||
Return Funds | 10932598 | 1643 days ago | IN | 0 ETH | 0.00488907 | ||||
Release | 10918252 | 1645 days ago | IN | 0 ETH | 0.00762426 | ||||
Create | 10918235 | 1645 days ago | IN | 0 ETH | 0.01052847 | ||||
Create | 10912713 | 1646 days ago | IN | 0 ETH | 0.00892818 | ||||
Release | 10886379 | 1650 days ago | IN | 0 ETH | 0.01349416 | ||||
Create | 10886369 | 1650 days ago | IN | 0 ETH | 0.01818782 | ||||
Return Funds | 10839734 | 1657 days ago | IN | 0 ETH | 0.00670159 | ||||
Release | 10835239 | 1658 days ago | IN | 0 ETH | 0.01277357 | ||||
Create | 10835231 | 1658 days ago | IN | 0 ETH | 0.0142984 | ||||
Release | 10821116 | 1660 days ago | IN | 0 ETH | 0.00455395 | ||||
Create | 10821111 | 1660 days ago | IN | 0 ETH | 0.007809 | ||||
Create | 10819800 | 1660 days ago | IN | 0 ETH | 0.00672079 | ||||
Return Funds | 10816374 | 1661 days ago | IN | 0 ETH | 0.00355914 | ||||
Create | 10796322 | 1664 days ago | IN | 0 ETH | 0.009687 | ||||
Release | 10788560 | 1665 days ago | IN | 0 ETH | 0.02105672 | ||||
Create | 10788535 | 1665 days ago | IN | 0 ETH | 0.03698641 | ||||
Return Funds | 10759326 | 1670 days ago | IN | 0 ETH | 0.00460042 | ||||
Create | 10739356 | 1673 days ago | IN | 0 ETH | 0.00561856 | ||||
Release | 10717664 | 1676 days ago | IN | 0 ETH | 0.0051451 | ||||
Create | 10717613 | 1676 days ago | IN | 0 ETH | 0.0087768 | ||||
Return Funds | 10716701 | 1676 days ago | IN | 0 ETH | 0.00395544 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RampInstantTokenEscrows
Compiler Version
v0.5.10+commit.5a6ea5b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-05 */ pragma solidity 0.5.10; /** * Copyright © 2017-2019 Ramp Network sp. z o.o. All rights reserved (MIT License). * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software * is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies * or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ interface Erc20Token { /** * Send `_value` of tokens from `msg.sender` to `_to` * * @param _to The recipient address * @param _value The amount of tokens to be transferred * @return Indication if the transfer was successful */ function transfer(address _to, uint256 _value) external returns (bool success); /** * Approve `_spender` to withdraw from sender's account multiple times, up to `_value` * amount. If this function is called again it overwrites the current allowance with _value. * * @param _spender The address allowed to operate on sender's tokens * @param _value The amount of tokens allowed to be transferred * @return Indication if the approval was successful */ function approve(address _spender, uint256 _value) external returns (bool success); /** * Transfer tokens on behalf of `_from`, provided it was previously approved. * * @param _from The transfer source address (tokens owner) * @param _to The transfer destination address * @param _value The amount of tokens to be transferred * @return Indication if the approval was successful */ function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); /** * Returns the account balance of another account with address `_owner`. */ function balanceOf(address _owner) external view returns (uint256); } contract AssetAdapter { uint16 public ASSET_TYPE; constructor( uint16 assetType ) internal { ASSET_TYPE = assetType; } /** * Ensure the described asset is sent to the given address. * Should revert if the transfer failed, but callers must also handle `false` being returned, * much like ERC-20's `transfer`. */ function rawSendAsset( bytes memory assetData, uint256 _amount, address payable _to ) internal returns (bool success); // solium-disable-line indentation // indentation rule bug ^ https://github.com/duaraghav8/Ethlint/issues/268 /** * Ensure the described asset is sent to this contract. * Should revert if the transfer failed, but callers must also handle `false` being returned, * much like ERC-20's `transfer`. */ function rawLockAsset( uint256 amount, address payable _from ) internal returns (bool success) { return RampInstantPoolInterface(_from).sendFundsToSwap(amount); } function getAmount(bytes memory assetData) internal pure returns (uint256); /** * Verify that the passed asset data can be handled by this adapter and given pool. * * @dev it's sufficient to use this only when creating a new swap -- all the other swap * functions first check if the swap hash is valid, while a swap hash with invalid * asset type wouldn't be created at all. * * @dev asset type is 2 bytes long, and it's at offset 32 in `assetData`'s memory (the first 32 * bytes are the data length). We load the word at offset 2 (it ends with the asset type bytes), * and retrieve its last 2 bytes into a `uint16` variable. */ modifier checkAssetTypeAndData(bytes memory assetData, address _pool) { uint16 assetType; // solium-disable-next-line security/no-inline-assembly assembly { assetType := and( mload(add(assetData, 2)), 0xffff ) } require(assetType == ASSET_TYPE, "invalid asset type"); checkAssetData(assetData, _pool); _; } function checkAssetData(bytes memory assetData, address _pool) internal view; function () external payable { revert("this contract cannot receive ether"); } } contract RampInstantPoolInterface { uint16 public ASSET_TYPE; function sendFundsToSwap(uint256 _amount) public /*onlyActive onlySwapsContract isWithinLimits*/ returns(bool success); } contract RampInstantTokenPoolInterface is RampInstantPoolInterface { address public token; } contract Ownable { address public owner; event OwnerChanged(address oldOwner, address newOwner); constructor() internal { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "only the owner can call this"); _; } function changeOwner(address _newOwner) external onlyOwner { owner = _newOwner; emit OwnerChanged(msg.sender, _newOwner); } } contract WithStatus is Ownable { enum Status { STOPPED, RETURN_ONLY, FINALIZE_ONLY, ACTIVE } event StatusChanged(Status oldStatus, Status newStatus); Status public status = Status.ACTIVE; function setStatus(Status _status) external onlyOwner { emit StatusChanged(status, _status); status = _status; } modifier statusAtLeast(Status _status) { require(status >= _status, "invalid contract status"); _; } } contract WithOracles is Ownable { mapping (address => bool) oracles; constructor() internal { oracles[msg.sender] = true; } function approveOracle(address _oracle) external onlyOwner { oracles[_oracle] = true; } function revokeOracle(address _oracle) external onlyOwner { oracles[_oracle] = false; } modifier isOracle(address _oracle) { require(oracles[_oracle], "invalid oracle address"); _; } modifier onlyOracleOrPool(address _pool, address _oracle) { require( msg.sender == _pool || (msg.sender == _oracle && oracles[msg.sender]), "only the oracle or the pool can call this" ); _; } } contract WithSwapsCreator is Ownable { address internal swapCreator; event SwapCreatorChanged(address _oldCreator, address _newCreator); constructor() internal { swapCreator = msg.sender; } function changeSwapCreator(address _newCreator) public onlyOwner { swapCreator = _newCreator; emit SwapCreatorChanged(msg.sender, _newCreator); } modifier onlySwapCreator() { require(msg.sender == swapCreator, "only the swap creator can call this"); _; } } contract AssetAdapterWithFees is Ownable, AssetAdapter { uint16 public feeThousandthsPercent; uint256 public minFeeAmount; constructor(uint16 _feeThousandthsPercent, uint256 _minFeeAmount) public { require(_feeThousandthsPercent < (1 << 16), "fee % too high"); require(_minFeeAmount <= (1 << 255), "minFeeAmount too high"); feeThousandthsPercent = _feeThousandthsPercent; minFeeAmount = _minFeeAmount; } function rawAccumulateFee(bytes memory assetData, uint256 _amount) internal; function accumulateFee(bytes memory assetData) internal { rawAccumulateFee(assetData, getFee(getAmount(assetData))); } function withdrawFees( bytes calldata assetData, address payable _to ) external /*onlyOwner*/ returns (bool success); // solium-disable-line indentation function getFee(uint256 _amount) internal view returns (uint256) { uint256 fee = _amount * feeThousandthsPercent / 100000; return fee < minFeeAmount ? minFeeAmount : fee; } function getAmountWithFee(bytes memory assetData) internal view returns (uint256) { uint256 baseAmount = getAmount(assetData); return baseAmount + getFee(baseAmount); } function lockAssetWithFee( bytes memory assetData, address payable _from ) internal returns (bool success) { return rawLockAsset(getAmountWithFee(assetData), _from); } function sendAssetWithFee( bytes memory assetData, address payable _to ) internal returns (bool success) { return rawSendAsset(assetData, getAmountWithFee(assetData), _to); } function sendAssetKeepingFee( bytes memory assetData, address payable _to ) internal returns (bool success) { bool result = rawSendAsset(assetData, getAmount(assetData), _to); if (result) accumulateFee(assetData); return result; } } /** * The main contract managing Ramp Swaps escrows lifecycle: create, release or return. * Uses an abstract AssetAdapter to carry out the transfers and handle the particular asset data. * With a corresponding off-chain oracle protocol allows for atomic-swap-like transfer between * fiat currencies and crypto assets. * * @dev an active swap is represented by a hash of its details, mapped to its escrow expiration * timestamp. When the swap is created, its end time is set a given amount of time in the future * (but within {MIN,MAX}_SWAP_LOCK_TIME_S). * The hashed swap details are: * * address pool: the `RampInstantPool` contract that sells the crypto asset; * * address receiver: the user that buys the crypto asset; * * address oracle: address of the oracle that handles this particular swap; * * bytes assetData: description of the crypto asset, handled by an AssetAdapter; * * bytes32 paymentDetailsHash: hash of the fiat payment details: account numbers, fiat value * and currency, and the transfer reference (title), that can be verified off-chain. * * @author Ramp Network sp. z o.o. */ contract RampInstantEscrows is Ownable, WithStatus, WithOracles, WithSwapsCreator, AssetAdapterWithFees { /// @dev contract version, defined in semver string public constant VERSION = "0.5.1"; uint32 internal constant MIN_ACTUAL_TIMESTAMP = 1000000000; /// @notice lock time limits for pool's assets, after which unreleased escrows can be returned uint32 internal constant MIN_SWAP_LOCK_TIME_S = 24 hours; uint32 internal constant MAX_SWAP_LOCK_TIME_S = 30 days; event Created(bytes32 indexed swapHash); event Released(bytes32 indexed swapHash); event PoolReleased(bytes32 indexed swapHash); event Returned(bytes32 indexed swapHash); event PoolReturned(bytes32 indexed swapHash); /** * @notice Mapping from swap details hash to its end time (as a unix timestamp). * After the end time the swap can be cancelled, and the funds will be returned to the pool. */ mapping (bytes32 => uint32) internal swaps; /** * Swap creation, called by the Ramp Network. Checks swap parameters and ensures the crypto * asset is locked on this contract. * * Emits a `Created` event with the swap hash. */ function create( address payable _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash, uint32 lockTimeS ) external statusAtLeast(Status.ACTIVE) onlySwapCreator() isOracle(_oracle) checkAssetTypeAndData(_assetData, _pool) returns (bool success) { require( lockTimeS >= MIN_SWAP_LOCK_TIME_S && lockTimeS <= MAX_SWAP_LOCK_TIME_S, "lock time outside limits" ); bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapNotExists(swapHash); // Set up swap status before transfer, to avoid reentrancy attacks. // Even if a malicious token is somehow passed to this function (despite the oracle // signature of its details), the state of this contract is already fully updated, // so it will behave correctly (as it would be a separate call). // solium-disable-next-line security/no-block-members swaps[swapHash] = uint32(block.timestamp) + lockTimeS; require( lockAssetWithFee(_assetData, _pool), "escrow lock failed" ); emit Created(swapHash); return true; } /** * Swap release, which transfers the crypto asset to the receiver and removes the swap from * the active swap mapping. Normally called by the swap's oracle after it confirms a matching * wire transfer on pool's bank account. Can be also called by the pool, for example in case * of a dispute, when the parties reach an agreement off-chain. * * Emits a `Released` or `PoolReleased` event with the swap's hash. */ function release( address _pool, address payable _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external statusAtLeast(Status.FINALIZE_ONLY) onlyOracleOrPool(_pool, _oracle) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapCreated(swapHash); // Delete the swap status before transfer, to avoid reentrancy attacks. swaps[swapHash] = 0; require( sendAssetKeepingFee(_assetData, _receiver), "asset release failed" ); if (msg.sender == _pool) { emit PoolReleased(swapHash); } else { emit Released(swapHash); } } /** * Swap return, which transfers the crypto asset back to the pool and removes the swap from * the active swap mapping. Can be called by the pool or the swap's oracle, but only if the * escrow lock time expired. * * Emits a `Returned` or `PoolReturned` event with the swap's hash. */ function returnFunds( address payable _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external statusAtLeast(Status.RETURN_ONLY) onlyOracleOrPool(_pool, _oracle) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); requireSwapExpired(swapHash); // Delete the swap status before transfer, to avoid reentrancy attacks. swaps[swapHash] = 0; require( sendAssetWithFee(_assetData, _pool), "asset return failed" ); if (msg.sender == _pool) { emit PoolReturned(swapHash); } else { emit Returned(swapHash); } } /** * Given all valid swap details, returns its status. The return can be: * 0: the swap details are invalid, swap doesn't exist, or was already released/returned. * >1: the swap was created, and the value is a timestamp indicating end of its lock time. */ function getSwapStatus( address _pool, address _receiver, address _oracle, bytes calldata _assetData, bytes32 _paymentDetailsHash ) external view returns (uint32 status) { bytes32 swapHash = getSwapHash( _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash ); return swaps[swapHash]; } /** * Calculates the swap hash used to reference the swap in this contract's storage. */ function getSwapHash( address _pool, address _receiver, address _oracle, bytes32 assetHash, bytes32 _paymentDetailsHash ) internal pure returns (bytes32) { return keccak256( abi.encodePacked( _pool, _receiver, _oracle, assetHash, _paymentDetailsHash ) ); } function requireSwapNotExists(bytes32 swapHash) internal view { require( swaps[swapHash] == 0, "swap already exists" ); } function requireSwapCreated(bytes32 swapHash) internal view { require( swaps[swapHash] > MIN_ACTUAL_TIMESTAMP, "swap invalid" ); } function requireSwapExpired(bytes32 swapHash) internal view { require( // solium-disable-next-line security/no-block-members swaps[swapHash] > MIN_ACTUAL_TIMESTAMP && block.timestamp > swaps[swapHash], "swap not expired or invalid" ); } } contract TokenAdapter is AssetAdapterWithFees { uint16 internal constant TOKEN_TYPE_ID = 2; uint16 internal constant TOKEN_ASSET_DATA_LENGTH = 54; mapping (address => uint256) internal accumulatedFees; constructor() internal AssetAdapter(TOKEN_TYPE_ID) {} /** * @dev token assetData bytes contents: * offset length type contents * +00 32 uint256 data length (== 0x36 == 54 bytes) * +32 2 uint16 asset type (== TOKEN_TYPE_ID == 2) * +34 32 uint256 token amount in units * +66 20 address token contract address */ function getAmount(bytes memory assetData) internal pure returns (uint256 amount) { // solium-disable-next-line security/no-inline-assembly assembly { amount := mload(add(assetData, 34)) } } /** * @dev To retrieve the address at offset 66, get the word at offset 54 and return its last * 20 bytes. See `getAmount` for byte offsets table. */ function getTokenAddress(bytes memory assetData) internal pure returns (address tokenAddress) { // solium-disable-next-line security/no-inline-assembly assembly { tokenAddress := and( mload(add(assetData, 54)), 0xffffffffffffffffffffffffffffffffffffffff ) } } function rawSendAsset( bytes memory assetData, uint256 _amount, address payable _to ) internal returns (bool success) { Erc20Token token = Erc20Token(getTokenAddress(assetData)); return token.transfer(_to, _amount); } function rawAccumulateFee(bytes memory assetData, uint256 _amount) internal { accumulatedFees[getTokenAddress(assetData)] += _amount; } function withdrawFees( bytes calldata assetData, address payable _to ) external onlyOwner returns (bool success) { address token = getTokenAddress(assetData); uint256 fees = accumulatedFees[token]; accumulatedFees[token] = 0; require(Erc20Token(token).transfer(_to, fees), "fees transfer failed"); return true; } function checkAssetData(bytes memory assetData, address _pool) internal view { require(assetData.length == TOKEN_ASSET_DATA_LENGTH, "invalid asset data length"); require( RampInstantTokenPoolInterface(_pool).token() == getTokenAddress(assetData), "invalid pool token address" ); } } contract RampInstantTokenEscrows is RampInstantEscrows, TokenAdapter { constructor( uint16 _feeThousandthsPercent, uint256 _minFeeAmount ) public AssetAdapterWithFees(_feeThousandthsPercent, _minFeeAmount) {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"},{"name":"lockTimeS","type":"uint32"}],"name":"create","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeThousandthsPercent","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCreator","type":"address"}],"name":"changeSwapCreator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_status","type":"uint8"}],"name":"setStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","type":"address"}],"name":"revokeOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ASSET_TYPE","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"getSwapStatus","outputs":[{"name":"status","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"returnFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assetData","type":"bytes"},{"name":"_to","type":"address"}],"name":"withdrawFees","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","type":"address"}],"name":"approveOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minFeeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_feeThousandthsPercent","type":"uint16"},{"name":"_minFeeAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"PoolReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Returned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"PoolReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldCreator","type":"address"},{"indexed":false,"name":"_newCreator","type":"address"}],"name":"SwapCreatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldStatus","type":"uint8"},{"indexed":false,"name":"newStatus","type":"uint8"}],"name":"StatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]
Contract Creation Code
60806040526000805460ff60a01b19167403000000000000000000000000000000000000000017905534801561003457600080fd5b50604051611bc2380380611bc28339818101604052604081101561005757600080fd5b50805160209182015160008054336001600160a01b0319918216811783558083526001958690526040909220805460ff1916909517909455600280549094161761ffff60a01b191674020000000000000000000000000000000000000000179092559081816201000061ffff83161061013157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f666565202520746f6f2068696768000000000000000000000000000000000000604482015290519081900360640190fd5b7f80000000000000000000000000000000000000000000000000000000000000008111156101c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d696e466565416d6f756e7420746f6f20686967680000000000000000000000604482015290519081900360640190fd5b6002805461ffff9093167601000000000000000000000000000000000000000000000261ffff60b01b199093169290921790915560035550506119ba806102086000396000f3fe6080604052600436106100f35760003560e01c8063946519f11161008a578063bfe5d9c511610059578063bfe5d9c51461054e578063f47bc89c146105d4578063f5d3647514610607578063ffa1ad741461062e576100f3565b8063946519f1146103285780639a3c6e29146103df578063a6f9dae11461047d578063a80e7acb146104b0576100f3565b80632e49d78b116100c65780632e49d78b146102825780635983e6b0146102af5780638815eb39146102e25780638da5cb5b146102f7576100f3565b80630b898c9e1461012a5780630bc2aad2146101e8578063200d2ed21461021457806326bdee371461024d575b60405162461bcd60e51b81526004018080602001828103825260228152602001806118f86022913960400191505060405180910390fd5b34801561013657600080fd5b506101d4600480360360c081101561014d57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561018957600080fd5b82018360208201111561019b57600080fd5b803590602001918460018302840111640100000000831117156101bd57600080fd5b91935091508035906020013563ffffffff166106b8565b604080519115158252519081900360200190f35b3480156101f457600080fd5b506101fd610a31565b6040805161ffff9092168252519081900360200190f35b34801561022057600080fd5b50610229610a42565b6040518082600381111561023957fe5b60ff16815260200191505060405180910390f35b34801561025957600080fd5b506102806004803603602081101561027057600080fd5b50356001600160a01b0316610a52565b005b34801561028e57600080fd5b50610280600480360360208110156102a557600080fd5b503560ff16610afb565b3480156102bb57600080fd5b50610280600480360360208110156102d257600080fd5b50356001600160a01b0316610bd9565b3480156102ee57600080fd5b506101fd610c47565b34801561030357600080fd5b5061030c610c58565b604080516001600160a01b039092168252519081900360200190f35b34801561033457600080fd5b506103c6600480360360a081101561034b57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561038757600080fd5b82018360208201111561039957600080fd5b803590602001918460018302840111640100000000831117156103bb57600080fd5b919350915035610c67565b6040805163ffffffff9092168252519081900360200190f35b3480156103eb57600080fd5b50610280600480360360a081101561040257600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b919350915035610cb5565b34801561048957600080fd5b50610280600480360360208110156104a057600080fd5b50356001600160a01b0316610eed565b3480156104bc57600080fd5b50610280600480360360a08110156104d357600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184600183028401116401000000008311171561054357600080fd5b919350915035610f96565b34801561055a57600080fd5b506101d46004803603604081101561057157600080fd5b81019060208101813564010000000081111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111640100000000831117156105c057600080fd5b9193509150356001600160a01b03166111cd565b3480156105e057600080fd5b50610280600480360360208110156105f757600080fd5b50356001600160a01b031661134e565b34801561061357600080fd5b5061061c6113c2565b60408051918252519081900360200190f35b34801561063a57600080fd5b506106436113c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561067d578181015183820152602001610665565b50505050905090810190601f1680156106aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106d557fe5b1015610722576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b6002546001600160a01b0316331461076b5760405162461bcd60e51b815260040180806020018281038252602381526020018061191a6023913960400191505060405180910390fd5b6001600160a01b038716600090815260016020526040902054879060ff166107da576040805162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c65206164647265737300000000000000000000604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028181015190548c9161ffff90811691600160a01b900416811461087c576040805162461bcd60e51b815260206004820152601260248201527f696e76616c696420617373657420747970650000000000000000000000000000604482015290519081900360640190fd5b61088683836113e9565b6201518063ffffffff8816108015906108a8575062278d0063ffffffff881611155b6108f9576040805162461bcd60e51b815260206004820152601860248201527f6c6f636b2074696d65206f757473696465206c696d6974730000000000000000604482015290519081900360640190fd5b60006109268e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611515565b905061093181611577565b600081815260046020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b82526109a191908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f6115e1565b6109f2576040805162461bcd60e51b815260206004820152601260248201527f657363726f77206c6f636b206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600254600160b01b900461ffff1681565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a9f576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fadf20380d9033e7f11fc1856d69012aa18e03195a098cd38ce3be225966968a89281900390910190a150565b6000546001600160a01b03163314610b48576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610b8a57fe5b60ff168152602001826003811115610b9e57fe5b60ff1681526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610bd157fe5b021790555050565b6000546001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600254600160a01b900461ffff1681565b6000546001600160a01b031681565b600080610c94888888888860405180838380828437604051920182900390912093508a9250611515915050565b60009081526004602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610cd057fe5b1015610d1d576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b0383161480610d585750336001600160a01b038216148015610d5857503360009081526001602052604090205460ff165b610d935760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b6000610dbf8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b9050610dca816115fc565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610e23919089908990819084018382808284376000920191909152508d9250611659915050565b610e74576040805162461bcd60e51b815260206004820152601460248201527f61737365742072656c65617365206661696c6564000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b161415610eb55760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610ee1565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610f3a576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610fb157fe5b1015610ffe576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b03831614806110395750336001600160a01b03821614801561103957503360009081526001602052604090205460ff165b6110745760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b60006110a08a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b90506110ab81611680565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252611104919089908990819084018382808284376000920191909152508e925061170d915050565b611155576040805162461bcd60e51b815260206004820152601360248201527f61737365742072657475726e206661696c656400000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b1614156111965760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610ee1565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b0316331461121b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600061125c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172292505050565b6001600160a01b038082166000818152600560209081526040808320805490849055815163a9059cbb60e01b8152958a16600487015260248601819052905195965094929363a9059cbb9360448083019491928390030190829087803b1580156112c557600080fd5b505af11580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b5051611342576040805162461bcd60e51b815260206004820152601460248201527f66656573207472616e73666572206661696c6564000000000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6000546001600160a01b0316331461139b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60035481565b60405180604001604052806005815260200164302e352e3160d81b81525081565b815160361461143f576040805162461bcd60e51b815260206004820152601960248201527f696e76616c69642061737365742064617461206c656e67746800000000000000604482015290519081900360640190fd5b61144882611722565b6001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b50516001600160a01b031614611511576040805162461bcd60e51b815260206004820152601a60248201527f696e76616c696420706f6f6c20746f6b656e2061646472657373000000000000604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526004602052604090205463ffffffff16156115de576040805162461bcd60e51b815260206004820152601360248201527f7377617020616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b50565b60006115f56115ef84611732565b83611750565b9392505050565b600081815260046020526040902054633b9aca0063ffffffff909116116115de576040805162461bcd60e51b815260206004820152600c60248201526b1cddd85c081a5b9d985b1a5960a21b604482015290519081900360640190fd5b60008061166f84611669866117cb565b856117d2565b905080156115f5576115f584611875565b600081815260046020526040902054633b9aca0063ffffffff9091161180156116bc575060008181526004602052604090205463ffffffff1642115b6115de576040805162461bcd60e51b815260206004820152601b60248201527f73776170206e6f742065787069726564206f7220696e76616c69640000000000604482015290519081900360640190fd5b60006115f58361171c85611732565b846117d2565b603601516001600160a01b031690565b60008061173e836117cb565b90506117498161188f565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b50519392505050565b6022015190565b6000806117de85611722565b9050806001600160a01b031663a9059cbb84866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050506040513d602081101561186a57600080fd5b505195945050505050565b6115de8161188a611885846117cb565b61188f565b6118c5565b6002546000908190620186a090600160b01b900461ffff16840204905060035481106118bb57806115f5565b6003549392505050565b80600560006118d385611722565b6001600160a01b03168152602081019190915260400160002080549091019055505056fe7468697320636f6e74726163742063616e6e6f7420726563656976652065746865726f6e6c792074686520737761702063726561746f722063616e2063616c6c20746869736f6e6c7920746865206f776e65722063616e2063616c6c2074686973000000006f6e6c7920746865206f7261636c65206f722074686520706f6f6c2063616e2063616c6c2074686973a265627a7a7230582077241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e64736f6c634300050a003200000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064
Deployed Bytecode
0x6080604052600436106100f35760003560e01c8063946519f11161008a578063bfe5d9c511610059578063bfe5d9c51461054e578063f47bc89c146105d4578063f5d3647514610607578063ffa1ad741461062e576100f3565b8063946519f1146103285780639a3c6e29146103df578063a6f9dae11461047d578063a80e7acb146104b0576100f3565b80632e49d78b116100c65780632e49d78b146102825780635983e6b0146102af5780638815eb39146102e25780638da5cb5b146102f7576100f3565b80630b898c9e1461012a5780630bc2aad2146101e8578063200d2ed21461021457806326bdee371461024d575b60405162461bcd60e51b81526004018080602001828103825260228152602001806118f86022913960400191505060405180910390fd5b34801561013657600080fd5b506101d4600480360360c081101561014d57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561018957600080fd5b82018360208201111561019b57600080fd5b803590602001918460018302840111640100000000831117156101bd57600080fd5b91935091508035906020013563ffffffff166106b8565b604080519115158252519081900360200190f35b3480156101f457600080fd5b506101fd610a31565b6040805161ffff9092168252519081900360200190f35b34801561022057600080fd5b50610229610a42565b6040518082600381111561023957fe5b60ff16815260200191505060405180910390f35b34801561025957600080fd5b506102806004803603602081101561027057600080fd5b50356001600160a01b0316610a52565b005b34801561028e57600080fd5b50610280600480360360208110156102a557600080fd5b503560ff16610afb565b3480156102bb57600080fd5b50610280600480360360208110156102d257600080fd5b50356001600160a01b0316610bd9565b3480156102ee57600080fd5b506101fd610c47565b34801561030357600080fd5b5061030c610c58565b604080516001600160a01b039092168252519081900360200190f35b34801561033457600080fd5b506103c6600480360360a081101561034b57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561038757600080fd5b82018360208201111561039957600080fd5b803590602001918460018302840111640100000000831117156103bb57600080fd5b919350915035610c67565b6040805163ffffffff9092168252519081900360200190f35b3480156103eb57600080fd5b50610280600480360360a081101561040257600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b919350915035610cb5565b34801561048957600080fd5b50610280600480360360208110156104a057600080fd5b50356001600160a01b0316610eed565b3480156104bc57600080fd5b50610280600480360360a08110156104d357600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184600183028401116401000000008311171561054357600080fd5b919350915035610f96565b34801561055a57600080fd5b506101d46004803603604081101561057157600080fd5b81019060208101813564010000000081111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111640100000000831117156105c057600080fd5b9193509150356001600160a01b03166111cd565b3480156105e057600080fd5b50610280600480360360208110156105f757600080fd5b50356001600160a01b031661134e565b34801561061357600080fd5b5061061c6113c2565b60408051918252519081900360200190f35b34801561063a57600080fd5b506106436113c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561067d578181015183820152602001610665565b50505050905090810190601f1680156106aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106d557fe5b1015610722576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b6002546001600160a01b0316331461076b5760405162461bcd60e51b815260040180806020018281038252602381526020018061191a6023913960400191505060405180910390fd5b6001600160a01b038716600090815260016020526040902054879060ff166107da576040805162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c65206164647265737300000000000000000000604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028181015190548c9161ffff90811691600160a01b900416811461087c576040805162461bcd60e51b815260206004820152601260248201527f696e76616c696420617373657420747970650000000000000000000000000000604482015290519081900360640190fd5b61088683836113e9565b6201518063ffffffff8816108015906108a8575062278d0063ffffffff881611155b6108f9576040805162461bcd60e51b815260206004820152601860248201527f6c6f636b2074696d65206f757473696465206c696d6974730000000000000000604482015290519081900360640190fd5b60006109268e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611515565b905061093181611577565b600081815260046020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b82526109a191908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f6115e1565b6109f2576040805162461bcd60e51b815260206004820152601260248201527f657363726f77206c6f636b206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600254600160b01b900461ffff1681565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a9f576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fadf20380d9033e7f11fc1856d69012aa18e03195a098cd38ce3be225966968a89281900390910190a150565b6000546001600160a01b03163314610b48576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610b8a57fe5b60ff168152602001826003811115610b9e57fe5b60ff1681526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610bd157fe5b021790555050565b6000546001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600254600160a01b900461ffff1681565b6000546001600160a01b031681565b600080610c94888888888860405180838380828437604051920182900390912093508a9250611515915050565b60009081526004602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610cd057fe5b1015610d1d576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b0383161480610d585750336001600160a01b038216148015610d5857503360009081526001602052604090205460ff165b610d935760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b6000610dbf8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b9050610dca816115fc565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610e23919089908990819084018382808284376000920191909152508d9250611659915050565b610e74576040805162461bcd60e51b815260206004820152601460248201527f61737365742072656c65617365206661696c6564000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b161415610eb55760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610ee1565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610f3a576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610fb157fe5b1015610ffe576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b03831614806110395750336001600160a01b03821614801561103957503360009081526001602052604090205460ff165b6110745760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b60006110a08a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b90506110ab81611680565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252611104919089908990819084018382808284376000920191909152508e925061170d915050565b611155576040805162461bcd60e51b815260206004820152601360248201527f61737365742072657475726e206661696c656400000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b1614156111965760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610ee1565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b0316331461121b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600061125c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172292505050565b6001600160a01b038082166000818152600560209081526040808320805490849055815163a9059cbb60e01b8152958a16600487015260248601819052905195965094929363a9059cbb9360448083019491928390030190829087803b1580156112c557600080fd5b505af11580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b5051611342576040805162461bcd60e51b815260206004820152601460248201527f66656573207472616e73666572206661696c6564000000000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6000546001600160a01b0316331461139b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60035481565b60405180604001604052806005815260200164302e352e3160d81b81525081565b815160361461143f576040805162461bcd60e51b815260206004820152601960248201527f696e76616c69642061737365742064617461206c656e67746800000000000000604482015290519081900360640190fd5b61144882611722565b6001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b50516001600160a01b031614611511576040805162461bcd60e51b815260206004820152601a60248201527f696e76616c696420706f6f6c20746f6b656e2061646472657373000000000000604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526004602052604090205463ffffffff16156115de576040805162461bcd60e51b815260206004820152601360248201527f7377617020616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b50565b60006115f56115ef84611732565b83611750565b9392505050565b600081815260046020526040902054633b9aca0063ffffffff909116116115de576040805162461bcd60e51b815260206004820152600c60248201526b1cddd85c081a5b9d985b1a5960a21b604482015290519081900360640190fd5b60008061166f84611669866117cb565b856117d2565b905080156115f5576115f584611875565b600081815260046020526040902054633b9aca0063ffffffff9091161180156116bc575060008181526004602052604090205463ffffffff1642115b6115de576040805162461bcd60e51b815260206004820152601b60248201527f73776170206e6f742065787069726564206f7220696e76616c69640000000000604482015290519081900360640190fd5b60006115f58361171c85611732565b846117d2565b603601516001600160a01b031690565b60008061173e836117cb565b90506117498161188f565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b50519392505050565b6022015190565b6000806117de85611722565b9050806001600160a01b031663a9059cbb84866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050506040513d602081101561186a57600080fd5b505195945050505050565b6115de8161188a611885846117cb565b61188f565b6118c5565b6002546000908190620186a090600160b01b900461ffff16840204905060035481106118bb57806115f5565b6003549392505050565b80600560006118d385611722565b6001600160a01b03168152602081019190915260400160002080549091019055505056fe7468697320636f6e74726163742063616e6e6f7420726563656976652065746865726f6e6c792074686520737761702063726561746f722063616e2063616c6c20746869736f6e6c7920746865206f776e65722063616e2063616c6c2074686973000000006f6e6c7920746865206f7261636c65206f722074686520706f6f6c2063616e2063616c6c2074686973a265627a7a7230582077241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e64736f6c634300050a0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064
-----Decoded View---------------
Arg [0] : _feeThousandthsPercent (uint16): 1000
Arg [1] : _minFeeAmount (uint256): 100
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000064
Deployed Bytecode Sourcemap
20398:243:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5055:44;;-1:-1:-1;;;5055:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:1388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12132:1388:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;12132:1388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12132:1388:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12132:1388:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12132:1388:0;;-1:-1:-1;12132:1388:0;-1:-1:-1;12132:1388:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7800:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7800:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6108:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6108:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7420:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7420:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7420:168:0;-1:-1:-1;;;;;7420:168:0;;:::i;:::-;;6153:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6153:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6153:135:0;;;;:::i;6696:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6696:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6696:101:0;-1:-1:-1;;;;;6696:101:0;;:::i;2731:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2731:24:0;;;:::i;5461:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5461:20:0;;;:::i;:::-;;;;-1:-1:-1;;;;;5461:20:0;;;;;;;;;;;;;;16261:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16261:397:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;16261:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;16261:397:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16261:397:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16261:397:0;;-1:-1:-1;16261:397:0;-1:-1:-1;16261:397:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;13990:824;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13990:824:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;13990:824:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13990:824:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13990:824:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13990:824:0;;-1:-1:-1;13990:824:0;-1:-1:-1;13990:824:0;;:::i;5741:146::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5741:146:0;-1:-1:-1;;;;;5741:146:0;;:::i;15149:818::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15149:818:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;15149:818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15149:818:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15149:818:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15149:818:0;;-1:-1:-1;15149:818:0;-1:-1:-1;15149:818:0;;:::i;19658:385::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19658:385:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19658:385:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19658:385:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19658:385:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19658:385:0;;-1:-1:-1;19658:385:0;-1:-1:-1;19658:385:0;-1:-1:-1;;;;;19658:385:0;;:::i;6587:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6587:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6587:101:0;-1:-1:-1;;;;;6587:101:0;;:::i;7842:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;11075:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11075:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11075:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:1388;12529:12;12383:13;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;7656:11;;-1:-1:-1;;;;;7656:11:0;7642:10;:25;7634:73;;;;-1:-1:-1;;;7634:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6859:16:0;;;;;;:7;:16;;;;;;12443:7;;6859:16;;6851:51;;;;;-1:-1:-1;;;6851:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12483:10;;4488:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;4741:1:0;4726:17;;;4720:24;4826:10;;12495:5;;4763:6;4698:86;;;;-1:-1:-1;;;4826:10:0;;;4813:23;;4805:54;;;;;-1:-1:-1;;;4805:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4870:32;4885:9;4896:5;4870:14;:32::i;:::-;11339:8;12581:33;;;;;;;:70;;-1:-1:-1;11402:7:0;12618:33;;;;;12581:70;12559:144;;;;;-1:-1:-1;;;12559:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12714:16;12733:106;12759:5;12766:9;12777:7;12796:10;;12786:21;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12786:21:0;;;;;;;;;;;;;12809:19;12733:11;:106::i;:::-;12714:125;;12850:30;12871:8;12850:20;:30::i;:::-;13290:15;;;;:5;:15;;;;;;;;;:53;;-1:-1:-1;;13290:53:0;13315:15;13308:35;;13290:53;;;;;13376:35;;;;;;;;;;;;;;;;;;;;;;;13393:10;;13376:35;;;;;;13393:10;13376:35;;13393:10;13376:35;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13376:35:0;;;;;;13405:5;13376:16;:35::i;:::-;13354:103;;;;;-1:-1:-1;;;13354:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13473:17;;13481:8;;13473:17;;;;;-1:-1:-1;13508:4:0;;12132:1388;-1:-1:-1;;;;;;;;;;;;;12132:1388:0:o;7800:35::-;;;-1:-1:-1;;;7800:35:0;;;;;:::o;6108:36::-;;;-1:-1:-1;;;6108:36:0;;;;;:::o;7420:168::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;7496:11;:25;;-1:-1:-1;;;;;;7496:25:0;-1:-1:-1;;;;;7496:25:0;;;;;;;;7537:43;;;7556:10;7537:43;;;;;;;;;;;;;;;;;;;;;7420:168;:::o;6153:135::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;6223:30;6237:6;;;;;;;;;;;6245:7;6223:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6264:6;:16;;6273:7;;6264:6;-1:-1:-1;;;;6264:16:0;-1:-1:-1;;;6273:7:0;6264:16;;;;;;;;;;;;;6153:135;:::o;6696:101::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6765:16:0;6784:5;6765:16;;;:7;:16;;;;;:24;;-1:-1:-1;;6765:24:0;;;6696:101::o;2731:24::-;;;-1:-1:-1;;;2731:24:0;;;;;:::o;5461:20::-;;;-1:-1:-1;;;;;5461:20:0;;:::o;16261:397::-;16466:13;16492:16;16511:106;16537:5;16544:9;16555:7;16574:10;;16564:21;;;;;30:3:-1;22:6;14;1:33;16564:21:0;;45:16:-1;;16564:21:0;;;;;;;-1:-1:-1;16587:19:0;;-1:-1:-1;16511:11:0;;-1:-1:-1;;16511:106:0:i;:::-;16635:15;;;;:5;:15;;;;;;;;;16261:397;-1:-1:-1;;;;;;;;16261:397:0:o;13990:824::-;14197:20;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;14236:5;14243:7;7021:10;-1:-1:-1;;;;;7021:19:0;;;;:69;;-1:-1:-1;7045:10:0;-1:-1:-1;;;;;7045:21:0;;;:44;;;;-1:-1:-1;7078:10:0;7070:19;;;;:7;:19;;;;;;;;7045:44;6999:160;;;;-1:-1:-1;;;6999:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14263:16;14282:106;14308:5;14315:9;14326:7;14345:10;;14335:21;;;;;30:3:-1;22:6;14;1:33;14335:21:0;;45:16:-1;;14335:21:0;;;;;;;-1:-1:-1;14358:19:0;;-1:-1:-1;14282:11:0;;-1:-1:-1;;14282:106:0:i;:::-;14263:125;;14399:28;14418:8;14399:18;:28::i;:::-;14537:1;14519:15;;;:5;:15;;;;;;;;;:19;;-1:-1:-1;;14519:19:0;;;14571:42;;;;;;;;;;;;;;;;;;;;;;;14591:10;;;;;;14571:42;;14591:10;;;;14571:42;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;14603:9:0;;-1:-1:-1;14571:19:0;;-1:-1:-1;;14571:42:0:i;:::-;14549:112;;;;;-1:-1:-1;;;14549:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14676:10;-1:-1:-1;;;;;14676:19:0;;;14672:135;;;14717:22;;14730:8;;14717:22;;;;;14672:135;;;14777:18;;14786:8;;14777:18;;;;;14672:135;7170:1;6410;;13990:824;;;;;;;:::o;5741:146::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;5811:5;:17;;-1:-1:-1;;;;;;5811:17:0;-1:-1:-1;;;;;5811:17:0;;;;;;;;5844:35;;;5857:10;5844:35;;;;;;;;;;;;;;;;;;;;;5741:146;:::o;15149:818::-;15360:18;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;15397:5;15404:7;7021:10;-1:-1:-1;;;;;7021:19:0;;;;:69;;-1:-1:-1;7045:10:0;-1:-1:-1;;;;;7045:21:0;;;:44;;;;-1:-1:-1;7078:10:0;7070:19;;;;:7;:19;;;;;;;;7045:44;6999:160;;;;-1:-1:-1;;;6999:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:16;15443:106;15469:5;15476:9;15487:7;15506:10;;15496:21;;;;;30:3:-1;22:6;14;1:33;15496:21:0;;45:16:-1;;15496:21:0;;;;;;;-1:-1:-1;15519:19:0;;-1:-1:-1;15443:11:0;;-1:-1:-1;;15443:106:0:i;:::-;15424:125;;15560:28;15579:8;15560:18;:28::i;:::-;15698:1;15680:15;;;:5;:15;;;;;;;;;:19;;-1:-1:-1;;15680:19:0;;;15732:35;;;;;;;;;;;;;;;;;;;;;;;15749:10;;;;;;15732:35;;15749:10;;;;15732:35;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;15761:5:0;;-1:-1:-1;15732:16:0;;-1:-1:-1;;15732:35:0:i;:::-;15710:104;;;;;-1:-1:-1;;;15710:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15829:10;-1:-1:-1;;;;;15829:19:0;;;15825:135;;;15870:22;;15883:8;;15870:22;;;;;15825:135;;;15930:18;;15939:8;;15930:18;;;;;7170:1;6410;;15149:818;;;;;;;:::o;19658:385::-;19780:12;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;19805:13;19821:26;19837:9;;19821:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19821:15:0;;-1:-1:-1;;;19821:26:0:i;:::-;-1:-1:-1;;;;;19873:22:0;;;19858:12;19873:22;;;:15;:22;;;;;;;;;;19906:26;;;;19951:37;;-1:-1:-1;;;19951:37:0;;;;;;;;;;;;;;;;;19805:42;;-1:-1:-1;19873:22:0;;;19951:26;;:37;;;;;;;;;;;;;;19873:22;19951:37;;;5:2:-1;;;;30:1;27;20:12;5:2;19951:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19951:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19951:37:0;19943:70;;;;;-1:-1:-1;;;19943:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20031:4:0;;19658:385;-1:-1:-1;;;;;19658:385:0:o;6587:101::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6657:16:0;;;;;6676:4;6657:16;;;;;;;;:23;;-1:-1:-1;;6657:23:0;;;;;;6587:101::o;7842:27::-;;;;:::o;11075:40::-;;;;;;;;;;;;;;-1:-1:-1;;;11075:40:0;;;;:::o;20051:338::-;20147:16;;17979:2;20147:43;20139:81;;;;;-1:-1:-1;;;20139:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20301:26;20317:9;20301:15;:26::i;:::-;-1:-1:-1;;;;;20253:74:0;20283:5;-1:-1:-1;;;;;20253:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20253:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20253:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20253:44:0;-1:-1:-1;;;;;20253:74:0;;20231:150;;;;;-1:-1:-1;;;20231:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20051:338;;:::o;16772:372::-;17018:107;;;-1:-1:-1;;17018:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17018:107:0;;;;;;16994:142;;;;;;16772:372::o;17152:170::-;17247:15;;;;:5;:15;;;;;;;;:20;17225:89;;;;;-1:-1:-1;;;17225:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17152:170;:::o;9043:204::-;9159:12;9191:48;9204:27;9221:9;9204:16;:27::i;:::-;9233:5;9191:12;:48::i;:::-;9184:55;9043:204;-1:-1:-1;;;9043:204:0:o;17330:179::-;17423:15;;;;:5;:15;;;;;;11172:10;17423:38;:15;;;:38;17401:100;;;;;-1:-1:-1;;;17401:100:0;;;;;;;;;;;;-1:-1:-1;;;17401:100:0;;;;;;;;;;;;;;9474:285;9591:12;9616:11;9630:50;9643:9;9654:20;9664:9;9654;:20::i;:::-;9676:3;9630:12;:50::i;:::-;9616:64;;9695:6;9691:36;;;9703:24;9717:9;9703:13;:24::i;17517:298::-;17677:15;;;;:5;:15;;;;;;11172:10;17677:38;:15;;;:38;:75;;;;-1:-1:-1;17737:15:0;;;;:5;:15;;;;;;;;17719;:33;17677:75;17588:219;;;;;-1:-1:-1;;;17588:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9255:211;9369:12;9401:57;9414:9;9425:27;9442:9;9425:16;:27::i;:::-;9454:3;9401:12;:57::i;18862:351::-;19115:2;19100:18;19094:25;-1:-1:-1;;;;;19072:123:0;;19041:165::o;8844:191::-;8917:7;8937:18;8958:20;8968:9;8958;:20::i;:::-;8937:41;;9009:18;9016:10;9009:6;:18::i;:::-;8996:31;;8844:191;-1:-1:-1;;8844:191:0:o;3580:199::-;3684:12;3741:5;-1:-1:-1;;;;;3716:47:0;;3764:6;3716:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3716:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3716:55:0;;3580:199;-1:-1:-1;;;3580:199:0:o;18446:235::-;18659:2;18644:18;18638:25;;18613:61::o;19221:272::-;19357:12;19382:16;19412:26;19428:9;19412:15;:26::i;:::-;19382:57;;19457:5;-1:-1:-1;;;;;19457:14:0;;19472:3;19477:7;19457:28;;;;;;;;;;;;;-1:-1:-1;;;;;19457:28:0;-1:-1:-1;;;;;19457:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19457:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19457:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19457:28:0;;19221:272;-1:-1:-1;;;;;19221:272:0:o;8291:132::-;8358:57;8375:9;8386:28;8393:20;8403:9;8393;:20::i;:::-;8386:6;:28::i;:::-;8358:16;:57::i;8615:221::-;8715:21;;8671:7;;;;8739:6;;-1:-1:-1;;;8715:21:0;;;;8705:31;;:40;8691:54;;8769:12;;8763:3;:18;:65;;8825:3;8763:65;;;8797:12;;8756:72;8615:221;-1:-1:-1;;;8615:221:0:o;19501:149::-;19635:7;19588:15;:43;19604:26;19620:9;19604:15;:26::i;:::-;-1:-1:-1;;;;;19588:43:0;;;;;;;;;;;;-1:-1:-1;19588:43:0;:54;;;;;;;-1:-1:-1;;19501:149:0:o
Swarm Source
bzzr://77241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.999689 | 2.02 | $2.02 |
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.