Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 153 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 19947047 | 322 days ago | IN | 0 ETH | 0.00045376 | ||||
Return To Reserv... | 17027618 | 732 days ago | IN | 0 ETH | 0.00332464 | ||||
Redeem | 17025227 | 732 days ago | IN | 0 ETH | 0.00498214 | ||||
Redeem | 17024329 | 732 days ago | IN | 0 ETH | 0.0033042 | ||||
Redeem | 17023430 | 733 days ago | IN | 0 ETH | 0.00315197 | ||||
Redeem | 17021221 | 733 days ago | IN | 0 ETH | 0.00437704 | ||||
Redeem | 17019515 | 733 days ago | IN | 0 ETH | 0.00473203 | ||||
Redeem | 17017361 | 733 days ago | IN | 0 ETH | 0.00550016 | ||||
Redeem | 17017215 | 733 days ago | IN | 0 ETH | 0.0039123 | ||||
Redeem | 17014437 | 734 days ago | IN | 0 ETH | 0.00397672 | ||||
Redeem | 17008569 | 735 days ago | IN | 0 ETH | 0.00428494 | ||||
Redeem | 16998948 | 736 days ago | IN | 0 ETH | 0.00264683 | ||||
Redeem | 16980221 | 739 days ago | IN | 0 ETH | 0.00556065 | ||||
Redeem | 16971324 | 740 days ago | IN | 0 ETH | 0.00631469 | ||||
Redeem | 16969157 | 740 days ago | IN | 0 ETH | 0.00701664 | ||||
Redeem | 16943239 | 744 days ago | IN | 0 ETH | 0.00430208 | ||||
Redeem | 16943204 | 744 days ago | IN | 0 ETH | 0.00494693 | ||||
Redeem | 16943135 | 744 days ago | IN | 0 ETH | 0.00459474 | ||||
Redeem | 16940799 | 744 days ago | IN | 0 ETH | 0.00657067 | ||||
Redeem | 16939383 | 744 days ago | IN | 0 ETH | 0.00430077 | ||||
Redeem | 16913085 | 748 days ago | IN | 0 ETH | 0.00475618 | ||||
Redeem | 16913068 | 748 days ago | IN | 0 ETH | 0.00559523 | ||||
Redeem | 16912245 | 748 days ago | IN | 0 ETH | 0.00458957 | ||||
Redeem | 16911624 | 748 days ago | IN | 0 ETH | 0.00249168 | ||||
Redeem | 16911376 | 748 days ago | IN | 0 ETH | 0.00201649 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TreasuryRedeemTemporary
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-04 */ // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } // File: @openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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. * * IMPORTANT: 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @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 IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @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. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: TreasuryRedeemTemporary.sol pragma solidity ^0.8.4; /// @title contract used to redeem a list of tokens, by permanently /// taking another token out of circulation. /// @author Yam Protocol contract TreasuryRedeemTemporary is ReentrancyGuard { using SafeERC20 for IERC20; /// @notice event to track redemptions event Redeemed( address indexed owner, address indexed receiver, uint256 amount, uint256 base ); /// @notice event to track return to reserves event ReturnToReserves(address indexed owner); /// @notice $YAM token to redeem: 0x0AaCfbeC6a24756c20D41914F2caba817C0d8521 address public immutable _redeemedToken; /// @notice tokens to receive when redeeming //WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 //USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 / 6 * 10 //All tokens must have a balance otherwise redeem fails address[] private _tokensReceived; /// @notice base used to compute the redemption amounts. /// For instance, if the base is 100, and a user provides 100 `redeemedToken`, /// they will receive all the balances of each `tokensReceived` held on this contract. uint256 public _redeemBase; /// @notice deployment time uint256 public _deployTimestamp; /// @notice time in which users can redeem uint256 public _redeemLength; /// @notice treasury address address public constant reserves = 0x97990B693835da58A281636296D2Bf02787DEa17; //Constructor Args = Yam Token Address, [WETH Address, USDC Address], 14586738.954685070682848328 Yam Base,7776000 90 days //0x0AaCfbeC6a24756c20D41914F2caba817C0d8521,["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"],14586738954685070682848328,7776000 constructor( address redeemedToken, address[] memory tokensReceived, uint256 redeemBase, uint256 redeemLength ) { _redeemedToken = redeemedToken; _tokensReceived = tokensReceived; _redeemBase = redeemBase; _redeemLength = redeemLength; _deployTimestamp = block.timestamp; } /// @notice Return the balances of `_tokensReceived` that would be /// transferred if redeeming `amountIn` of `_redeemedToken`. function previewRedeem( uint256 amountIn ) public view returns (address[] memory tokens, uint256[] memory amountsOut) { tokens = tokensReceivedOnRedeem(); amountsOut = new uint256[](tokens.length); uint256 base = _redeemBase; for (uint256 i = 0; i < _tokensReceived.length; i++) { uint256 balance = IERC20(_tokensReceived[i]).balanceOf( address(this) ); require(balance != 0, "ZERO_BALANCE"); // @dev, this assumes all of `_tokensReceived` and `_redeemedToken` // have the same number of decimals uint256 redeemedAmount = (amountIn * balance) / base; amountsOut[i] = redeemedAmount; } } /// @notice Redeem `_redeemedToken` for a pro-rata basket of `_tokensReceived` function redeem(address to, uint256 amountIn) external nonReentrant { IERC20(_redeemedToken).safeTransferFrom( msg.sender, address(this), amountIn ); (address[] memory tokens, uint256[] memory amountsOut) = previewRedeem( amountIn ); uint256 base = _redeemBase; _redeemBase = base - amountIn; // decrement the base for future redemptions for (uint256 i = 0; i < tokens.length; i++) { IERC20(tokens[i]).safeTransfer(to, amountsOut[i]); } emit Redeemed(msg.sender, to, amountIn, base); } /// @notice returnToReserves sends the all remaining funds back to treasury function returnToReserves() external nonReentrant { require( block.timestamp >= _deployTimestamp + _redeemLength + 7 days, "not enough time" ); (address[] memory tokens, uint256[] memory amountsOut) = previewRedeem( _redeemBase ); for (uint256 i = 0; i < tokens.length; i++) { IERC20(tokens[i]).safeTransfer(reserves, amountsOut[i]); } // Tokens are transferred to reserves to be burnt IERC20(_redeemedToken).safeTransfer( reserves, IERC20(_redeemedToken).balanceOf(address(this)) ); emit ReturnToReserves(msg.sender); } /// @notice Public function to get `_tokensReceived` function tokensReceivedOnRedeem() public view returns (address[] memory) { return _tokensReceived; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"redeemedToken","type":"address"},{"internalType":"address[]","name":"tokensReceived","type":"address[]"},{"internalType":"uint256","name":"redeemBase","type":"uint256"},{"internalType":"uint256","name":"redeemLength","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"base","type":"uint256"}],"name":"Redeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"ReturnToReserves","type":"event"},{"inputs":[],"name":"_deployTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redeemBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redeemLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redeemedToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserves","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnToReserves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensReceivedOnRedeem","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001aeb38038062001aeb833981810160405281019062000037919062000382565b60016000819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505082600190805190602001906200008b929190620000ab565b508160028190555080600481905550426003819055505050505062000413565b82805482825590600052602060002090810192821562000127579160200282015b82811115620001265782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620000cc565b5b5090506200013691906200013a565b5090565b5b80821115620001555760008160009055506001016200013b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200019a826200016d565b9050919050565b620001ac816200018d565b8114620001b857600080fd5b50565b600081519050620001cc81620001a1565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200022282620001d7565b810181811067ffffffffffffffff82111715620002445762000243620001e8565b5b80604052505050565b60006200025962000159565b905062000267828262000217565b919050565b600067ffffffffffffffff8211156200028a5762000289620001e8565b5b602082029050602081019050919050565b600080fd5b6000620002b7620002b1846200026c565b6200024d565b90508083825260208201905060208402830185811115620002dd57620002dc6200029b565b5b835b818110156200030a5780620002f58882620001bb565b845260208401935050602081019050620002df565b5050509392505050565b600082601f8301126200032c576200032b620001d2565b5b81516200033e848260208601620002a0565b91505092915050565b6000819050919050565b6200035c8162000347565b81146200036857600080fd5b50565b6000815190506200037c8162000351565b92915050565b600080600080608085870312156200039f576200039e62000163565b5b6000620003af87828801620001bb565b945050602085015167ffffffffffffffff811115620003d357620003d262000168565b5b620003e18782880162000314565b9350506040620003f4878288016200036b565b925050606062000407878288016200036b565b91505092959194509250565b6080516116a762000444600039600081816101b301528181610579015281816106c2015261075c01526116a76000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063628b950011610066578063628b95001461012157806362e236021461013f578063644d5b3e1461015d57806375172a8b146101675780639bba0eb51461018557610093565b80631e9a69501461009857806347ba89cc146100b45780634cdad506146100d2578063506f680714610103575b600080fd5b6100b260048036038101906100ad9190610ca4565b6101a3565b005b6100bc610316565b6040516100c99190610cf3565b60405180910390f35b6100ec60048036038101906100e79190610d0e565b61031c565b6040516100fa929190610eb7565b60405180910390f35b61010b6104e3565b6040516101189190610eee565b60405180910390f35b610129610571565b6040516101369190610cf3565b60405180910390f35b610147610577565b6040516101549190610f1f565b60405180910390f35b61016561059b565b005b61016f6107ef565b60405161017c9190610f1f565b60405180910390f35b61018d610807565b60405161019a9190610cf3565b60405180910390f35b6101ab61080d565b6101f83330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661085d909392919063ffffffff16565b6000806102048361031c565b9150915060006002549050838161021b9190610f69565b60028190555060005b835181101561029f5761028c8684838151811061024457610243610f9d565b5b602002602001015186848151811061025f5761025e610f9d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b808061029790610fcc565b915050610224565b508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348086846040516102ff929190611015565b60405180910390a350505061031261096c565b5050565b60035481565b6060806103276104e3565b9150815167ffffffffffffffff8111156103445761034361103e565b5b6040519080825280602002602001820160405280156103725781602001602082028036833780820191505090505b5090506000600254905060005b6001805490508110156104dc576000600182815481106103a2576103a1610f9d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104059190610f1f565b602060405180830381865afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190611082565b9050600081141561048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104839061110c565b60405180910390fd5b600083828861049b919061112c565b6104a591906111b5565b9050808584815181106104bb576104ba610f9d565b5b602002602001018181525050505080806104d490610fcc565b91505061037f565b5050915091565b6060600180548060200260200160405190810160405280929190818152602001828054801561056757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161051d575b5050505050905090565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6105a361080d565b62093a806004546003546105b791906111e6565b6105c191906111e6565b421015610603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fa90611288565b60405180910390fd5b60008061061160025461031c565b9150915060005b82518110156106a7576106947397990b693835da58a281636296d2bf02787dea1783838151811061064c5761064b610f9d565b5b602002602001015185848151811061066757610666610f9d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b808061069f90610fcc565b915050610618565b506107a07397990b693835da58a281636296d2bf02787dea177f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107199190610f1f565b602060405180830381865afa158015610736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075a9190611082565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f2503d0ef18f50fde8f874d456d11a7852c5ee93862330d0439fa410b0968ffc060405160405180910390a250506107ed61096c565b565b7397990b693835da58a281636296d2bf02787dea1781565b60045481565b60026000541415610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a906112f4565b60405180910390fd5b6002600081905550565b6108e0846323b872dd60e01b85858560405160240161087e93929190611314565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610976565b50505050565b6109678363a9059cbb60e01b848460405160240161090592919061134b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610976565b505050565b6001600081905550565b60006109d8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610a3d9092919063ffffffff16565b9050600081511115610a3857808060200190518101906109f891906113ac565b610a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2e9061144b565b60405180910390fd5b5b505050565b6060610a4c8484600085610a55565b90509392505050565b606082471015610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906114dd565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ac39190611577565b60006040518083038185875af1925050503d8060008114610b00576040519150601f19603f3d011682016040523d82523d6000602084013e610b05565b606091505b5091509150610b1687838387610b22565b92505050949350505050565b60608315610b8557600083511415610b7d57610b3d85610b98565b610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b73906115da565b60405180910390fd5b5b829050610b90565b610b8f8383610bbb565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610bce5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02919061164f565b60405180910390fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3b82610c10565b9050919050565b610c4b81610c30565b8114610c5657600080fd5b50565b600081359050610c6881610c42565b92915050565b6000819050919050565b610c8181610c6e565b8114610c8c57600080fd5b50565b600081359050610c9e81610c78565b92915050565b60008060408385031215610cbb57610cba610c0b565b5b6000610cc985828601610c59565b9250506020610cda85828601610c8f565b9150509250929050565b610ced81610c6e565b82525050565b6000602082019050610d086000830184610ce4565b92915050565b600060208284031215610d2457610d23610c0b565b5b6000610d3284828501610c8f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7081610c30565b82525050565b6000610d828383610d67565b60208301905092915050565b6000602082019050919050565b6000610da682610d3b565b610db08185610d46565b9350610dbb83610d57565b8060005b83811015610dec578151610dd38882610d76565b9750610dde83610d8e565b925050600181019050610dbf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610e2e81610c6e565b82525050565b6000610e408383610e25565b60208301905092915050565b6000602082019050919050565b6000610e6482610df9565b610e6e8185610e04565b9350610e7983610e15565b8060005b83811015610eaa578151610e918882610e34565b9750610e9c83610e4c565b925050600181019050610e7d565b5085935050505092915050565b60006040820190508181036000830152610ed18185610d9b565b90508181036020830152610ee58184610e59565b90509392505050565b60006020820190508181036000830152610f088184610d9b565b905092915050565b610f1981610c30565b82525050565b6000602082019050610f346000830184610f10565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f7482610c6e565b9150610f7f83610c6e565b925082821015610f9257610f91610f3a565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610fd782610c6e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561100a57611009610f3a565b5b600182019050919050565b600060408201905061102a6000830185610ce4565b6110376020830184610ce4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061107c81610c78565b92915050565b60006020828403121561109857611097610c0b565b5b60006110a68482850161106d565b91505092915050565b600082825260208201905092915050565b7f5a45524f5f42414c414e43450000000000000000000000000000000000000000600082015250565b60006110f6600c836110af565b9150611101826110c0565b602082019050919050565b60006020820190508181036000830152611125816110e9565b9050919050565b600061113782610c6e565b915061114283610c6e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561117b5761117a610f3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006111c082610c6e565b91506111cb83610c6e565b9250826111db576111da611186565b5b828204905092915050565b60006111f182610c6e565b91506111fc83610c6e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561123157611230610f3a565b5b828201905092915050565b7f6e6f7420656e6f7567682074696d650000000000000000000000000000000000600082015250565b6000611272600f836110af565b915061127d8261123c565b602082019050919050565b600060208201905081810360008301526112a181611265565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006112de601f836110af565b91506112e9826112a8565b602082019050919050565b6000602082019050818103600083015261130d816112d1565b9050919050565b60006060820190506113296000830186610f10565b6113366020830185610f10565b6113436040830184610ce4565b949350505050565b60006040820190506113606000830185610f10565b61136d6020830184610ce4565b9392505050565b60008115159050919050565b61138981611374565b811461139457600080fd5b50565b6000815190506113a681611380565b92915050565b6000602082840312156113c2576113c1610c0b565b5b60006113d084828501611397565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611435602a836110af565b9150611440826113d9565b604082019050919050565b6000602082019050818103600083015261146481611428565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006114c76026836110af565b91506114d28261146b565b604082019050919050565b600060208201905081810360008301526114f6816114ba565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611531578082015181840152602081019050611516565b83811115611540576000848401525b50505050565b6000611551826114fd565b61155b8185611508565b935061156b818560208601611513565b80840191505092915050565b60006115838284611546565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006115c4601d836110af565b91506115cf8261158e565b602082019050919050565b600060208201905081810360008301526115f3816115b7565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b6000611621826115fa565b61162b81856110af565b935061163b818560208601611513565b61164481611605565b840191505092915050565b600060208201905081810360008301526116698184611616565b90509291505056fea2646970667358221220f290d34a96529a3634815d7cbbbf4bd3ec2d7e27a4d2be1150b374e066ca16e064736f6c634300080a00330000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000c10dcb40566da74f37c48000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063628b950011610066578063628b95001461012157806362e236021461013f578063644d5b3e1461015d57806375172a8b146101675780639bba0eb51461018557610093565b80631e9a69501461009857806347ba89cc146100b45780634cdad506146100d2578063506f680714610103575b600080fd5b6100b260048036038101906100ad9190610ca4565b6101a3565b005b6100bc610316565b6040516100c99190610cf3565b60405180910390f35b6100ec60048036038101906100e79190610d0e565b61031c565b6040516100fa929190610eb7565b60405180910390f35b61010b6104e3565b6040516101189190610eee565b60405180910390f35b610129610571565b6040516101369190610cf3565b60405180910390f35b610147610577565b6040516101549190610f1f565b60405180910390f35b61016561059b565b005b61016f6107ef565b60405161017c9190610f1f565b60405180910390f35b61018d610807565b60405161019a9190610cf3565b60405180910390f35b6101ab61080d565b6101f83330837f0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852173ffffffffffffffffffffffffffffffffffffffff1661085d909392919063ffffffff16565b6000806102048361031c565b9150915060006002549050838161021b9190610f69565b60028190555060005b835181101561029f5761028c8684838151811061024457610243610f9d565b5b602002602001015186848151811061025f5761025e610f9d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b808061029790610fcc565b915050610224565b508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5cdf07ad0fc222442720b108e3ed4c4640f0fadc2ab2253e66f259a0fea8348086846040516102ff929190611015565b60405180910390a350505061031261096c565b5050565b60035481565b6060806103276104e3565b9150815167ffffffffffffffff8111156103445761034361103e565b5b6040519080825280602002602001820160405280156103725781602001602082028036833780820191505090505b5090506000600254905060005b6001805490508110156104dc576000600182815481106103a2576103a1610f9d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104059190610f1f565b602060405180830381865afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190611082565b9050600081141561048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104839061110c565b60405180910390fd5b600083828861049b919061112c565b6104a591906111b5565b9050808584815181106104bb576104ba610f9d565b5b602002602001018181525050505080806104d490610fcc565b91505061037f565b5050915091565b6060600180548060200260200160405190810160405280929190818152602001828054801561056757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161051d575b5050505050905090565b60025481565b7f0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852181565b6105a361080d565b62093a806004546003546105b791906111e6565b6105c191906111e6565b421015610603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fa90611288565b60405180910390fd5b60008061061160025461031c565b9150915060005b82518110156106a7576106947397990b693835da58a281636296d2bf02787dea1783838151811061064c5761064b610f9d565b5b602002602001015185848151811061066757610666610f9d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b808061069f90610fcc565b915050610618565b506107a07397990b693835da58a281636296d2bf02787dea177f0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107199190610f1f565b602060405180830381865afa158015610736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075a9190611082565b7f0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852173ffffffffffffffffffffffffffffffffffffffff166108e69092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f2503d0ef18f50fde8f874d456d11a7852c5ee93862330d0439fa410b0968ffc060405160405180910390a250506107ed61096c565b565b7397990b693835da58a281636296d2bf02787dea1781565b60045481565b60026000541415610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a906112f4565b60405180910390fd5b6002600081905550565b6108e0846323b872dd60e01b85858560405160240161087e93929190611314565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610976565b50505050565b6109678363a9059cbb60e01b848460405160240161090592919061134b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610976565b505050565b6001600081905550565b60006109d8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610a3d9092919063ffffffff16565b9050600081511115610a3857808060200190518101906109f891906113ac565b610a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2e9061144b565b60405180910390fd5b5b505050565b6060610a4c8484600085610a55565b90509392505050565b606082471015610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906114dd565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ac39190611577565b60006040518083038185875af1925050503d8060008114610b00576040519150601f19603f3d011682016040523d82523d6000602084013e610b05565b606091505b5091509150610b1687838387610b22565b92505050949350505050565b60608315610b8557600083511415610b7d57610b3d85610b98565b610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b73906115da565b60405180910390fd5b5b829050610b90565b610b8f8383610bbb565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610bce5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02919061164f565b60405180910390fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3b82610c10565b9050919050565b610c4b81610c30565b8114610c5657600080fd5b50565b600081359050610c6881610c42565b92915050565b6000819050919050565b610c8181610c6e565b8114610c8c57600080fd5b50565b600081359050610c9e81610c78565b92915050565b60008060408385031215610cbb57610cba610c0b565b5b6000610cc985828601610c59565b9250506020610cda85828601610c8f565b9150509250929050565b610ced81610c6e565b82525050565b6000602082019050610d086000830184610ce4565b92915050565b600060208284031215610d2457610d23610c0b565b5b6000610d3284828501610c8f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7081610c30565b82525050565b6000610d828383610d67565b60208301905092915050565b6000602082019050919050565b6000610da682610d3b565b610db08185610d46565b9350610dbb83610d57565b8060005b83811015610dec578151610dd38882610d76565b9750610dde83610d8e565b925050600181019050610dbf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610e2e81610c6e565b82525050565b6000610e408383610e25565b60208301905092915050565b6000602082019050919050565b6000610e6482610df9565b610e6e8185610e04565b9350610e7983610e15565b8060005b83811015610eaa578151610e918882610e34565b9750610e9c83610e4c565b925050600181019050610e7d565b5085935050505092915050565b60006040820190508181036000830152610ed18185610d9b565b90508181036020830152610ee58184610e59565b90509392505050565b60006020820190508181036000830152610f088184610d9b565b905092915050565b610f1981610c30565b82525050565b6000602082019050610f346000830184610f10565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f7482610c6e565b9150610f7f83610c6e565b925082821015610f9257610f91610f3a565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610fd782610c6e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561100a57611009610f3a565b5b600182019050919050565b600060408201905061102a6000830185610ce4565b6110376020830184610ce4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061107c81610c78565b92915050565b60006020828403121561109857611097610c0b565b5b60006110a68482850161106d565b91505092915050565b600082825260208201905092915050565b7f5a45524f5f42414c414e43450000000000000000000000000000000000000000600082015250565b60006110f6600c836110af565b9150611101826110c0565b602082019050919050565b60006020820190508181036000830152611125816110e9565b9050919050565b600061113782610c6e565b915061114283610c6e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561117b5761117a610f3a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006111c082610c6e565b91506111cb83610c6e565b9250826111db576111da611186565b5b828204905092915050565b60006111f182610c6e565b91506111fc83610c6e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561123157611230610f3a565b5b828201905092915050565b7f6e6f7420656e6f7567682074696d650000000000000000000000000000000000600082015250565b6000611272600f836110af565b915061127d8261123c565b602082019050919050565b600060208201905081810360008301526112a181611265565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006112de601f836110af565b91506112e9826112a8565b602082019050919050565b6000602082019050818103600083015261130d816112d1565b9050919050565b60006060820190506113296000830186610f10565b6113366020830185610f10565b6113436040830184610ce4565b949350505050565b60006040820190506113606000830185610f10565b61136d6020830184610ce4565b9392505050565b60008115159050919050565b61138981611374565b811461139457600080fd5b50565b6000815190506113a681611380565b92915050565b6000602082840312156113c2576113c1610c0b565b5b60006113d084828501611397565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611435602a836110af565b9150611440826113d9565b604082019050919050565b6000602082019050818103600083015261146481611428565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006114c76026836110af565b91506114d28261146b565b604082019050919050565b600060208201905081810360008301526114f6816114ba565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611531578082015181840152602081019050611516565b83811115611540576000848401525b50505050565b6000611551826114fd565b61155b8185611508565b935061156b818560208601611513565b80840191505092915050565b60006115838284611546565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006115c4601d836110af565b91506115cf8261158e565b602082019050919050565b600060208201905081810360008301526115f3816115b7565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b6000611621826115fa565b61162b81856110af565b935061163b818560208601611513565b61164481611605565b840191505092915050565b600060208201905081810360008301526116698184611616565b90509291505056fea2646970667358221220f290d34a96529a3634815d7cbbbf4bd3ec2d7e27a4d2be1150b374e066ca16e064736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d852100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000c10dcb40566da74f37c48000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
-----Decoded View---------------
Arg [0] : redeemedToken (address): 0x0AaCfbeC6a24756c20D41914F2caba817C0d8521
Arg [1] : tokensReceived (address[]): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [2] : redeemBase (uint256): 14586738954685070682848328
Arg [3] : redeemLength (uint256): 7776000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d8521
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000c10dcb40566da74f37c48
Arg [3] : 000000000000000000000000000000000000000000000000000000000076a700
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [6] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Deployed Bytecode Sourcemap
22336:4650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25385:636;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23432:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24501:792;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;26869:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23364:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22806:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26110:693;;;:::i;:::-;;23591:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23520:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25385:636;2345:21;:19;:21::i;:::-;25464:126:::1;25518:10;25551:4;25571:8;25471:14;25464:39;;;;:126;;;;;;:::i;:::-;25602:23;25627:27:::0;25658:47:::1;25686:8;25658:13;:47::i;:::-;25601:104;;;;25716:12;25731:11;;25716:26;;25774:8;25767:4;:15;;;;:::i;:::-;25753:11;:29;;;;25843:9;25838:120;25862:6;:13;25858:1;:17;25838:120;;;25897:49;25928:2;25932:10;25943:1;25932:13;;;;;;;;:::i;:::-;;;;;;;;25904:6;25911:1;25904:9;;;;;;;;:::i;:::-;;;;;;;;25897:30;;;;:49;;;;;:::i;:::-;25877:3;;;;;:::i;:::-;;;;25838:120;;;;25994:2;25973:40;;25982:10;25973:40;;;25998:8;26008:4;25973:40;;;;;;;:::i;:::-;;;;;;;;25453:568;;;2389:20:::0;:18;:20::i;:::-;25385:636;;:::o;23432:31::-;;;;:::o;24501:792::-;24606:23;24631:27;24685:24;:22;:24::i;:::-;24676:33;;24747:6;:13;24733:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24720:41;;24774:12;24789:11;;24774:26;;24816:9;24811:475;24835:15;:22;;;;24831:1;:26;24811:475;;;24879:15;24904;24920:1;24904:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24897:36;;;24960:4;24897:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24879:101;;25014:1;25003:7;:12;;24995:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;25177:22;25225:4;25214:7;25203:8;:18;;;;:::i;:::-;25202:27;;;;:::i;:::-;25177:52;;25260:14;25244:10;25255:1;25244:13;;;;;;;;:::i;:::-;;;;;;;:30;;;;;24864:422;;24859:3;;;;;:::i;:::-;;;;24811:475;;;;24665:628;24501:792;;;:::o;26869:114::-;26924:16;26960:15;26953:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26869:114;:::o;23364:26::-;;;;:::o;22806:39::-;;;:::o;26110:693::-;2345:21;:19;:21::i;:::-;26247:6:::1;26231:13;;26212:16;;:32;;;;:::i;:::-;:41;;;;:::i;:::-;26193:15;:60;;26171:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;26308:23;26333:27:::0;26364:50:::1;26392:11;;26364:13;:50::i;:::-;26307:107;;;;26430:9;26425:126;26449:6;:13;26445:1;:17;26425:126;;;26484:55;23635:42;26525:10;26536:1;26525:13;;;;;;;;:::i;:::-;;;;;;;;26491:6;26498:1;26491:9;;;;;;;;:::i;:::-;;;;;;;;26484:30;;;;:55;;;;;:::i;:::-;26464:3;;;;;:::i;:::-;;;;26425:126;;;;26620:131;23635:42;26700:14;26693:32;;;26734:4;26693:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26627:14;26620:35;;;;:131;;;;;:::i;:::-;26784:10;26767:28;;;;;;;;;;;;26160:643;;2389:20:::0;:18;:20::i;:::-;26110:693::o;23591:86::-;23635:42;23591:86;:::o;23520:28::-;;;;:::o;2425:293::-;1827:1;2559:7;;:19;;2551:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1827:1;2692:7;:18;;;;2425:293::o;18551:248::-;18695:96;18715:5;18745:27;;;18774:4;18780:2;18784:5;18722:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18695:19;:96::i;:::-;18551:248;;;;:::o;18332:211::-;18449:86;18469:5;18499:23;;;18524:2;18528:5;18476:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18449:19;:86::i;:::-;18332:211;;;:::o;2726:213::-;1783:1;2909:7;:22;;;;2726:213::o;21399:716::-;21823:23;21849:69;21877:4;21849:69;;;;;;;;;;;;;;;;;21857:5;21849:27;;;;:69;;;;;:::i;:::-;21823:95;;21953:1;21933:10;:17;:21;21929:179;;;22030:10;22019:30;;;;;;;;;;;;:::i;:::-;22011:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21929:179;21469:646;21399:716;;:::o;6936:229::-;7073:12;7105:52;7127:6;7135:4;7141:1;7144:12;7105:21;:52::i;:::-;7098:59;;6936:229;;;;;:::o;8056:455::-;8226:12;8284:5;8259:21;:30;;8251:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8344:12;8358:23;8385:6;:11;;8404:5;8411:4;8385:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8343:73;;;;8434:69;8461:6;8469:7;8478:10;8490:12;8434:26;:69::i;:::-;8427:76;;;;8056:455;;;;;;:::o;10629:644::-;10814:12;10843:7;10839:427;;;10892:1;10871:10;:17;:22;10867:290;;;11089:18;11100:6;11089:10;:18::i;:::-;11081:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10867:290;11178:10;11171:17;;;;10839:427;11221:33;11229:10;11241:12;11221:7;:33::i;:::-;10629:644;;;;;;;:::o;4179:326::-;4239:4;4496:1;4474:7;:19;;;:23;4467:30;;4179:326;;;:::o;11815:552::-;11996:1;11976:10;:17;:21;11972:388;;;12208:10;12202:17;12265:15;12252:10;12248:2;12244:19;12237:44;11972:388;12335:12;12328:20;;;;;;;;;;;:::i;:::-;;;;;;;;88:117:1;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:329::-;2088:6;2137:2;2125:9;2116:7;2112:23;2108:32;2105:119;;;2143:79;;:::i;:::-;2105:119;2263:1;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2234:117;2029:329;;;;:::o;2364:114::-;2431:6;2465:5;2459:12;2449:22;;2364:114;;;:::o;2484:184::-;2583:11;2617:6;2612:3;2605:19;2657:4;2652:3;2648:14;2633:29;;2484:184;;;;:::o;2674:132::-;2741:4;2764:3;2756:11;;2794:4;2789:3;2785:14;2777:22;;2674:132;;;:::o;2812:108::-;2889:24;2907:5;2889:24;:::i;:::-;2884:3;2877:37;2812:108;;:::o;2926:179::-;2995:10;3016:46;3058:3;3050:6;3016:46;:::i;:::-;3094:4;3089:3;3085:14;3071:28;;2926:179;;;;:::o;3111:113::-;3181:4;3213;3208:3;3204:14;3196:22;;3111:113;;;:::o;3260:732::-;3379:3;3408:54;3456:5;3408:54;:::i;:::-;3478:86;3557:6;3552:3;3478:86;:::i;:::-;3471:93;;3588:56;3638:5;3588:56;:::i;:::-;3667:7;3698:1;3683:284;3708:6;3705:1;3702:13;3683:284;;;3784:6;3778:13;3811:63;3870:3;3855:13;3811:63;:::i;:::-;3804:70;;3897:60;3950:6;3897:60;:::i;:::-;3887:70;;3743:224;3730:1;3727;3723:9;3718:14;;3683:284;;;3687:14;3983:3;3976:10;;3384:608;;;3260:732;;;;:::o;3998:114::-;4065:6;4099:5;4093:12;4083:22;;3998:114;;;:::o;4118:184::-;4217:11;4251:6;4246:3;4239:19;4291:4;4286:3;4282:14;4267:29;;4118:184;;;;:::o;4308:132::-;4375:4;4398:3;4390:11;;4428:4;4423:3;4419:14;4411:22;;4308:132;;;:::o;4446:108::-;4523:24;4541:5;4523:24;:::i;:::-;4518:3;4511:37;4446:108;;:::o;4560:179::-;4629:10;4650:46;4692:3;4684:6;4650:46;:::i;:::-;4728:4;4723:3;4719:14;4705:28;;4560:179;;;;:::o;4745:113::-;4815:4;4847;4842:3;4838:14;4830:22;;4745:113;;;:::o;4894:732::-;5013:3;5042:54;5090:5;5042:54;:::i;:::-;5112:86;5191:6;5186:3;5112:86;:::i;:::-;5105:93;;5222:56;5272:5;5222:56;:::i;:::-;5301:7;5332:1;5317:284;5342:6;5339:1;5336:13;5317:284;;;5418:6;5412:13;5445:63;5504:3;5489:13;5445:63;:::i;:::-;5438:70;;5531:60;5584:6;5531:60;:::i;:::-;5521:70;;5377:224;5364:1;5361;5357:9;5352:14;;5317:284;;;5321:14;5617:3;5610:10;;5018:608;;;4894:732;;;;:::o;5632:634::-;5853:4;5891:2;5880:9;5876:18;5868:26;;5940:9;5934:4;5930:20;5926:1;5915:9;5911:17;5904:47;5968:108;6071:4;6062:6;5968:108;:::i;:::-;5960:116;;6123:9;6117:4;6113:20;6108:2;6097:9;6093:18;6086:48;6151:108;6254:4;6245:6;6151:108;:::i;:::-;6143:116;;5632:634;;;;;:::o;6272:373::-;6415:4;6453:2;6442:9;6438:18;6430:26;;6502:9;6496:4;6492:20;6488:1;6477:9;6473:17;6466:47;6530:108;6633:4;6624:6;6530:108;:::i;:::-;6522:116;;6272:373;;;;:::o;6651:118::-;6738:24;6756:5;6738:24;:::i;:::-;6733:3;6726:37;6651:118;;:::o;6775:222::-;6868:4;6906:2;6895:9;6891:18;6883:26;;6919:71;6987:1;6976:9;6972:17;6963:6;6919:71;:::i;:::-;6775:222;;;;:::o;7003:180::-;7051:77;7048:1;7041:88;7148:4;7145:1;7138:15;7172:4;7169:1;7162:15;7189:191;7229:4;7249:20;7267:1;7249:20;:::i;:::-;7244:25;;7283:20;7301:1;7283:20;:::i;:::-;7278:25;;7322:1;7319;7316:8;7313:34;;;7327:18;;:::i;:::-;7313:34;7372:1;7369;7365:9;7357:17;;7189:191;;;;:::o;7386:180::-;7434:77;7431:1;7424:88;7531:4;7528:1;7521:15;7555:4;7552:1;7545:15;7572:233;7611:3;7634:24;7652:5;7634:24;:::i;:::-;7625:33;;7680:66;7673:5;7670:77;7667:103;;;7750:18;;:::i;:::-;7667:103;7797:1;7790:5;7786:13;7779:20;;7572:233;;;:::o;7811:332::-;7932:4;7970:2;7959:9;7955:18;7947:26;;7983:71;8051:1;8040:9;8036:17;8027:6;7983:71;:::i;:::-;8064:72;8132:2;8121:9;8117:18;8108:6;8064:72;:::i;:::-;7811:332;;;;;:::o;8149:180::-;8197:77;8194:1;8187:88;8294:4;8291:1;8284:15;8318:4;8315:1;8308:15;8335:143;8392:5;8423:6;8417:13;8408:22;;8439:33;8466:5;8439:33;:::i;:::-;8335:143;;;;:::o;8484:351::-;8554:6;8603:2;8591:9;8582:7;8578:23;8574:32;8571:119;;;8609:79;;:::i;:::-;8571:119;8729:1;8754:64;8810:7;8801:6;8790:9;8786:22;8754:64;:::i;:::-;8744:74;;8700:128;8484:351;;;;:::o;8841:169::-;8925:11;8959:6;8954:3;8947:19;8999:4;8994:3;8990:14;8975:29;;8841:169;;;;:::o;9016:162::-;9156:14;9152:1;9144:6;9140:14;9133:38;9016:162;:::o;9184:366::-;9326:3;9347:67;9411:2;9406:3;9347:67;:::i;:::-;9340:74;;9423:93;9512:3;9423:93;:::i;:::-;9541:2;9536:3;9532:12;9525:19;;9184:366;;;:::o;9556:419::-;9722:4;9760:2;9749:9;9745:18;9737:26;;9809:9;9803:4;9799:20;9795:1;9784:9;9780:17;9773:47;9837:131;9963:4;9837:131;:::i;:::-;9829:139;;9556:419;;;:::o;9981:348::-;10021:7;10044:20;10062:1;10044:20;:::i;:::-;10039:25;;10078:20;10096:1;10078:20;:::i;:::-;10073:25;;10266:1;10198:66;10194:74;10191:1;10188:81;10183:1;10176:9;10169:17;10165:105;10162:131;;;10273:18;;:::i;:::-;10162:131;10321:1;10318;10314:9;10303:20;;9981:348;;;;:::o;10335:180::-;10383:77;10380:1;10373:88;10480:4;10477:1;10470:15;10504:4;10501:1;10494:15;10521:185;10561:1;10578:20;10596:1;10578:20;:::i;:::-;10573:25;;10612:20;10630:1;10612:20;:::i;:::-;10607:25;;10651:1;10641:35;;10656:18;;:::i;:::-;10641:35;10698:1;10695;10691:9;10686:14;;10521:185;;;;:::o;10712:305::-;10752:3;10771:20;10789:1;10771:20;:::i;:::-;10766:25;;10805:20;10823:1;10805:20;:::i;:::-;10800:25;;10959:1;10891:66;10887:74;10884:1;10881:81;10878:107;;;10965:18;;:::i;:::-;10878:107;11009:1;11006;11002:9;10995:16;;10712:305;;;;:::o;11023:165::-;11163:17;11159:1;11151:6;11147:14;11140:41;11023:165;:::o;11194:366::-;11336:3;11357:67;11421:2;11416:3;11357:67;:::i;:::-;11350:74;;11433:93;11522:3;11433:93;:::i;:::-;11551:2;11546:3;11542:12;11535:19;;11194:366;;;:::o;11566:419::-;11732:4;11770:2;11759:9;11755:18;11747:26;;11819:9;11813:4;11809:20;11805:1;11794:9;11790:17;11783:47;11847:131;11973:4;11847:131;:::i;:::-;11839:139;;11566:419;;;:::o;11991:181::-;12131:33;12127:1;12119:6;12115:14;12108:57;11991:181;:::o;12178:366::-;12320:3;12341:67;12405:2;12400:3;12341:67;:::i;:::-;12334:74;;12417:93;12506:3;12417:93;:::i;:::-;12535:2;12530:3;12526:12;12519:19;;12178:366;;;:::o;12550:419::-;12716:4;12754:2;12743:9;12739:18;12731:26;;12803:9;12797:4;12793:20;12789:1;12778:9;12774:17;12767:47;12831:131;12957:4;12831:131;:::i;:::-;12823:139;;12550:419;;;:::o;12975:442::-;13124:4;13162:2;13151:9;13147:18;13139:26;;13175:71;13243:1;13232:9;13228:17;13219:6;13175:71;:::i;:::-;13256:72;13324:2;13313:9;13309:18;13300:6;13256:72;:::i;:::-;13338;13406:2;13395:9;13391:18;13382:6;13338:72;:::i;:::-;12975:442;;;;;;:::o;13423:332::-;13544:4;13582:2;13571:9;13567:18;13559:26;;13595:71;13663:1;13652:9;13648:17;13639:6;13595:71;:::i;:::-;13676:72;13744:2;13733:9;13729:18;13720:6;13676:72;:::i;:::-;13423:332;;;;;:::o;13761:90::-;13795:7;13838:5;13831:13;13824:21;13813:32;;13761:90;;;:::o;13857:116::-;13927:21;13942:5;13927:21;:::i;:::-;13920:5;13917:32;13907:60;;13963:1;13960;13953:12;13907:60;13857:116;:::o;13979:137::-;14033:5;14064:6;14058:13;14049:22;;14080:30;14104:5;14080:30;:::i;:::-;13979:137;;;;:::o;14122:345::-;14189:6;14238:2;14226:9;14217:7;14213:23;14209:32;14206:119;;;14244:79;;:::i;:::-;14206:119;14364:1;14389:61;14442:7;14433:6;14422:9;14418:22;14389:61;:::i;:::-;14379:71;;14335:125;14122:345;;;;:::o;14473:229::-;14613:34;14609:1;14601:6;14597:14;14590:58;14682:12;14677:2;14669:6;14665:15;14658:37;14473:229;:::o;14708:366::-;14850:3;14871:67;14935:2;14930:3;14871:67;:::i;:::-;14864:74;;14947:93;15036:3;14947:93;:::i;:::-;15065:2;15060:3;15056:12;15049:19;;14708:366;;;:::o;15080:419::-;15246:4;15284:2;15273:9;15269:18;15261:26;;15333:9;15327:4;15323:20;15319:1;15308:9;15304:17;15297:47;15361:131;15487:4;15361:131;:::i;:::-;15353:139;;15080:419;;;:::o;15505:225::-;15645:34;15641:1;15633:6;15629:14;15622:58;15714:8;15709:2;15701:6;15697:15;15690:33;15505:225;:::o;15736:366::-;15878:3;15899:67;15963:2;15958:3;15899:67;:::i;:::-;15892:74;;15975:93;16064:3;15975:93;:::i;:::-;16093:2;16088:3;16084:12;16077:19;;15736:366;;;:::o;16108:419::-;16274:4;16312:2;16301:9;16297:18;16289:26;;16361:9;16355:4;16351:20;16347:1;16336:9;16332:17;16325:47;16389:131;16515:4;16389:131;:::i;:::-;16381:139;;16108:419;;;:::o;16533:98::-;16584:6;16618:5;16612:12;16602:22;;16533:98;;;:::o;16637:147::-;16738:11;16775:3;16760:18;;16637:147;;;;:::o;16790:307::-;16858:1;16868:113;16882:6;16879:1;16876:13;16868:113;;;16967:1;16962:3;16958:11;16952:18;16948:1;16943:3;16939:11;16932:39;16904:2;16901:1;16897:10;16892:15;;16868:113;;;16999:6;16996:1;16993:13;16990:101;;;17079:1;17070:6;17065:3;17061:16;17054:27;16990:101;16839:258;16790:307;;;:::o;17103:373::-;17207:3;17235:38;17267:5;17235:38;:::i;:::-;17289:88;17370:6;17365:3;17289:88;:::i;:::-;17282:95;;17386:52;17431:6;17426:3;17419:4;17412:5;17408:16;17386:52;:::i;:::-;17463:6;17458:3;17454:16;17447:23;;17211:265;17103:373;;;;:::o;17482:271::-;17612:3;17634:93;17723:3;17714:6;17634:93;:::i;:::-;17627:100;;17744:3;17737:10;;17482:271;;;;:::o;17759:179::-;17899:31;17895:1;17887:6;17883:14;17876:55;17759:179;:::o;17944:366::-;18086:3;18107:67;18171:2;18166:3;18107:67;:::i;:::-;18100:74;;18183:93;18272:3;18183:93;:::i;:::-;18301:2;18296:3;18292:12;18285:19;;17944:366;;;:::o;18316:419::-;18482:4;18520:2;18509:9;18505:18;18497:26;;18569:9;18563:4;18559:20;18555:1;18544:9;18540:17;18533:47;18597:131;18723:4;18597:131;:::i;:::-;18589:139;;18316:419;;;:::o;18741:99::-;18793:6;18827:5;18821:12;18811:22;;18741:99;;;:::o;18846:102::-;18887:6;18938:2;18934:7;18929:2;18922:5;18918:14;18914:28;18904:38;;18846:102;;;:::o;18954:364::-;19042:3;19070:39;19103:5;19070:39;:::i;:::-;19125:71;19189:6;19184:3;19125:71;:::i;:::-;19118:78;;19205:52;19250:6;19245:3;19238:4;19231:5;19227:16;19205:52;:::i;:::-;19282:29;19304:6;19282:29;:::i;:::-;19277:3;19273:39;19266:46;;19046:272;18954:364;;;;:::o;19324:313::-;19437:4;19475:2;19464:9;19460:18;19452:26;;19524:9;19518:4;19514:20;19510:1;19499:9;19495:17;19488:47;19552:78;19625:4;19616:6;19552:78;:::i;:::-;19544:86;;19324:313;;;;:::o
Swarm Source
ipfs://f290d34a96529a3634815d7cbbbf4bd3ec2d7e27a4d2be1150b374e066ca16e0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.