More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 77 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 15908412 | 838 days ago | IN | 0 ETH | 0.00030324 | ||||
Transfer Ownersh... | 15908389 | 838 days ago | IN | 0 ETH | 0.00029823 | ||||
Emergency Token ... | 15821394 | 850 days ago | IN | 0 ETH | 0.0012723 | ||||
Unstake Mam | 15819463 | 850 days ago | IN | 0 ETH | 0.13255261 | ||||
Unstake Mutant | 15815669 | 851 days ago | IN | 0 ETH | 0.00254233 | ||||
Unstake Mam | 15815665 | 851 days ago | IN | 0 ETH | 0.00447003 | ||||
Unstake Mam | 15811442 | 851 days ago | IN | 0 ETH | 0.00360587 | ||||
Unstake Mam | 15810019 | 852 days ago | IN | 0 ETH | 0.00418954 | ||||
Unstake Mam | 15809689 | 852 days ago | IN | 0 ETH | 0.00355052 | ||||
Unstake Mutant | 15809671 | 852 days ago | IN | 0 ETH | 0.00215064 | ||||
Unstake Mutant | 15809663 | 852 days ago | IN | 0 ETH | 0.00218436 | ||||
Unstake Mutant | 15809658 | 852 days ago | IN | 0 ETH | 0.00222545 | ||||
Emergency Token ... | 15808223 | 852 days ago | IN | 0 ETH | 0.00118511 | ||||
Unstake Mutant | 15808220 | 852 days ago | IN | 0 ETH | 0.04545707 | ||||
Unstake Mam | 15807965 | 852 days ago | IN | 0 ETH | 0.00594828 | ||||
Unstake Mutant | 15807961 | 852 days ago | IN | 0 ETH | 0.00242871 | ||||
Unstake Mam | 15807880 | 852 days ago | IN | 0 ETH | 0.01229818 | ||||
Mutant Stake | 15807873 | 852 days ago | IN | 0 ETH | 0.00108244 | ||||
Unstake Mutant | 15807872 | 852 days ago | IN | 0 ETH | 0.00037421 | ||||
Unstake Mutant | 15807871 | 852 days ago | IN | 0 ETH | 0.00033938 | ||||
Unstake Mutant | 15807870 | 852 days ago | IN | 0 ETH | 0.00032678 | ||||
Unstake Mutant | 15807870 | 852 days ago | IN | 0 ETH | 0.00032678 | ||||
Unstake Mutant | 15807870 | 852 days ago | IN | 0 ETH | 0.00032678 | ||||
Unstake Mutant | 15807870 | 852 days ago | IN | 0 ETH | 0.00032678 | ||||
Unstake Mutant | 15807870 | 852 days ago | IN | 0 ETH | 0.00032678 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BulkMamStake
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-22 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/BulkMamStake.sol pragma solidity ^0.8.6; 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); } interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } contract BulkMamStake is Ownable, IERC721Receiver, ReentrancyGuard { using SafeMath for uint256; IERC721 public mam; IERC721 public mutant; IERC20 public token; struct MamStaker { uint16[] ids; uint16 numberMamStaked; uint256 tokenStakedAt; address owner; } struct MutantStaker { uint16[] ids; uint16 numberMutantStaked; uint256 tokenStakedAt; address owner; } mapping(address => MamStaker) public mamstaker; mapping(address => MutantStaker) public mutantstaker; uint256 public dayRate = 5; uint256 public period = 45; //number of days uint16 public mamStaked; uint16 public mutantStaked; uint256 public amountPaid; bool public lockingPeriodEnforced; event MamStaked(address indexed, uint256, uint16[]); event MutantStaked(address indexed, uint256, uint16[]); event MamUnstaked(address indexed, uint256); event MutantUnstaked(address indexed, uint256); //mamids //legendary, top10% //mutantids //only legendarys constructor(address _mam, address _mutant, address _token) { mam = IERC721(_mam); mutant = IERC721(_mutant); token = IERC20(_token); } function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { return IERC721Receiver.onERC721Received.selector; } function mamStake(uint16 quantity, uint16[] memory tokenIds) external { mamstaker[msg.sender].tokenStakedAt = block.timestamp; mamstaker[msg.sender].numberMamStaked+= quantity; mamstaker[msg.sender].owner = msg.sender; mamStaked+=quantity; for(uint8 i; i < tokenIds.length; i++) { mamstaker[msg.sender].ids.push(tokenIds[i]); mam.safeTransferFrom(msg.sender, address(this), tokenIds[i]); } emit MamStaked(msg.sender, quantity, tokenIds); } function mutantStake(uint16 quantity, uint16[] memory tokenIds) external { mutantstaker[msg.sender].tokenStakedAt = block.timestamp; mutantstaker[msg.sender].numberMutantStaked+= quantity; mutantstaker[msg.sender].owner = msg.sender; mutantStaked+=quantity; for(uint8 i; i < tokenIds.length; i++) { mutantstaker[msg.sender].ids.push(tokenIds[i]); mutant.safeTransferFrom(msg.sender, address(this), tokenIds[i]); } emit MutantStaked(msg.sender, quantity, tokenIds); } function calculateTime(address _owner, uint8 _type) public view returns (uint256) { uint256 timeElapsed; if(_type == 2) { timeElapsed = block.timestamp - mutantstaker[_owner].tokenStakedAt; } else { timeElapsed = block.timestamp - mamstaker[_owner].tokenStakedAt; } return timeElapsed; } function calculateMamTokens(address _owner) external view returns (uint256) { uint256 payout; uint256 time = calculateTime(_owner, 1); payout = dayRate * time * mamstaker[_owner].numberMamStaked * 10; uint256 totalPayout = payout *10**18; return totalPayout.div(86400); } function calculateMutantTokens(address _owner) external view returns (uint256) { uint256 payout; uint256 time = calculateTime(_owner, 2); payout = dayRate * time * mutantstaker[_owner].numberMutantStaked * 20; uint256 totalPayout = payout *10**18; return totalPayout.div(86400); } function unstakeMam(address _owner) external nonReentrant { require(mamstaker[_owner].owner == msg.sender, "Can't unstake someone else's nfts"); uint256 time = calculateTime(_owner, 1); uint256 payout; if(lockingPeriodEnforced) { require(time >= period*86400, "Staking period has not ended"); } for(uint8 i; i < mamstaker[_owner].ids.length; i++) { mam.transferFrom(address(this), msg.sender, mamstaker[_owner].ids[i]); } payout = dayRate * time * mamstaker[_owner].numberMamStaked * 10; uint256 totalPayout = payout *10**18; uint256 totalPayoutPS = totalPayout.div(86400); token.transfer(msg.sender, totalPayoutPS); mamStaked-=mamstaker[_owner].numberMamStaked; delete mamstaker[_owner]; amountPaid+= totalPayoutPS; emit MamUnstaked(msg.sender, totalPayoutPS); } function unstakeMutant(address _owner) external { require(mutantstaker[_owner].owner == msg.sender, "Can't unstake someone else's nfts"); uint256 time = calculateTime(_owner, 2); uint256 payout; if(lockingPeriodEnforced) { require(time >= period*86400, "Staking period has not ended"); } for(uint8 i; i < mutantstaker[_owner].ids.length; i++) { mutant.transferFrom(address(this), msg.sender, mutantstaker[_owner].ids[i]); } payout = dayRate * time * mutantstaker[_owner].numberMutantStaked * 20; uint256 totalPayout = payout *10**18; uint256 totalPayoutPS = totalPayout.div(86400); token.transfer(msg.sender, totalPayoutPS); mutantStaked-=mutantstaker[_owner].numberMutantStaked; delete mutantstaker[_owner]; amountPaid+= totalPayoutPS; emit MutantUnstaked(msg.sender, totalPayoutPS); } function setNFTAddress(address _newMamToken, address _newMutantToken) external onlyOwner { mam = IERC721(_newMamToken); mutant = IERC721(_newMutantToken); } function setTokenAddress(address _newToken) external onlyOwner { token = IERC20(_newToken); } function setDayRate(uint256 _newRate) external onlyOwner { dayRate = _newRate; } function enforceLockingPeriod(bool _state) external onlyOwner { lockingPeriodEnforced = _state; } function setPeriod(uint256 _time) external onlyOwner { period = _time; } function totalStaked() external view returns (uint16){ return mamStaked + mutantStaked; } function getNumberMamStaked(address _owner) external view returns (uint256){ return mamstaker[_owner].numberMamStaked; } function getNumberMutantStaked(address _owner) external view returns (uint256){ return mutantstaker[_owner].numberMutantStaked; } function getMamIds(address _owner) external view returns (uint16[] memory){ return mamstaker[_owner].ids; } function getMutantIds(address _owner) external view returns (uint16[] memory){ return mutantstaker[_owner].ids; } function emergencyTokenWithdraw() external onlyOwner { uint256 balance = token.balanceOf(address(this)); token.transfer(msg.sender, balance ); } //This is to remove the native currency of the network (e.g. ETH, BNB, MATIC, etc.) function emergencyWithdraw() public onlyOwner nonReentrant { // This will payout the owner the contract balance. // Do not remove this otherwise you will not be able to withdraw the funds. // ============================================================================= (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); // ============================================================================= } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_mam","type":"address"},{"internalType":"address","name":"_mutant","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint16[]","name":"","type":"uint16[]"}],"name":"MamStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"MamUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint16[]","name":"","type":"uint16[]"}],"name":"MutantStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"MutantUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"amountPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"calculateMamTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"calculateMutantTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint8","name":"_type","type":"uint8"}],"name":"calculateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dayRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyTokenWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"enforceLockingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getMamIds","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getMutantIds","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getNumberMamStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getNumberMutantStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockingPeriodEnforced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mam","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"quantity","type":"uint16"},{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"mamStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mamStaked","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mamstaker","outputs":[{"internalType":"uint16","name":"numberMamStaked","type":"uint16"},{"internalType":"uint256","name":"tokenStakedAt","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mutant","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"quantity","type":"uint16"},{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"mutantStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mutantStaked","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mutantstaker","outputs":[{"internalType":"uint16","name":"numberMutantStaked","type":"uint16"},{"internalType":"uint256","name":"tokenStakedAt","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRate","type":"uint256"}],"name":"setDayRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMamToken","type":"address"},{"internalType":"address","name":"_newMutantToken","type":"address"}],"name":"setNFTAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newToken","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"unstakeMam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"unstakeMutant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600755602d6008553480156200001b57600080fd5b5060405162001eed38038062001eed8339810160408190526200003e91620000fd565b620000493362000090565b60018055600280546001600160a01b039485166001600160a01b03199182161790915560038054938516938216939093179092556004805491909316911617905562000147565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000f857600080fd5b919050565b6000806000606084860312156200011357600080fd5b6200011e84620000e0565b92506200012e60208501620000e0565b91506200013e60408501620000e0565b90509250925092565b611d9680620001576000396000f3fe6080604052600436106101fd5760003560e01c8063817b1cd21161010d578063d2a53c3d116100a0578063ef78d4fd1161006f578063ef78d4fd1461069c578063f2fde38b146106b2578063fae6c434146106d2578063fc0c546a146106f2578063fd6e3bfe1461071257600080fd5b8063d2a53c3d1461061d578063db2e21bc1461063d578063dfbf1b1414610652578063e5884b071461067257600080fd5b80638fe2ae0a116100dc5780638fe2ae0a1461055e57806393aefa76146105ab578063a63f098c146105c0578063c21e12f2146105e057600080fd5b8063817b1cd214610495578063875b21bb146104aa5780638da5cb5b146105205780638f8dea971461053e57600080fd5b806326a4e8d2116101905780634d586b421161015f5780634d586b42146103f257806359febd8f146104085780635e5ac627146104285780636c25836d14610465578063715018a61461048057600080fd5b806326a4e8d21461035e57806329f9d4a31461037e57806332cb29f71461039e5780634044956c146103be57600080fd5b806318083a41116101cc57806318083a41146102da5780631e7b41f814610308578063216340c314610328578063261894fa1461033e57600080fd5b80630f3a9f651461020957806311009b421461022b57806313ed43ed14610268578063150b7a021461029557600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506102296102243660046118c1565b610732565b005b34801561023757600080fd5b5060035461024b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b506102886102833660046118f6565b61073f565b60405161025f9190611950565b3480156102a157600080fd5b506102c16102b0366004611963565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161025f565b3480156102e657600080fd5b506102fa6102f53660046118f6565b6107d3565b60405190815260200161025f565b34801561031457600080fd5b506102fa6103233660046119fe565b610858565b34801561033457600080fd5b506102fa600a5481565b34801561034a57600080fd5b506102886103593660046118f6565b6108c3565b34801561036a57600080fd5b506102296103793660046118f6565b610931565b34801561038a57600080fd5b506102fa6103993660046118f6565b61095b565b3480156103aa57600080fd5b5060025461024b906001600160a01b031681565b3480156103ca57600080fd5b506009546103df9062010000900461ffff1681565b60405161ffff909116815260200161025f565b3480156103fe57600080fd5b506102fa60075481565b34801561041457600080fd5b506102296104233660046118f6565b6109b2565b34801561043457600080fd5b506102fa6104433660046118f6565b6001600160a01b031660009081526006602052604090206001015461ffff1690565b34801561047157600080fd5b506009546103df9061ffff1681565b34801561048c57600080fd5b50610229610d95565b3480156104a157600080fd5b506103df610da9565b3480156104b657600080fd5b506104f76104c53660046118f6565b60056020526000908152604090206001810154600282015460039092015461ffff90911691906001600160a01b031683565b6040805161ffff909416845260208401929092526001600160a01b03169082015260600161025f565b34801561052c57600080fd5b506000546001600160a01b031661024b565b34801561054a57600080fd5b506102296105593660046118f6565b610dca565b34801561056a57600080fd5b506104f76105793660046118f6565b60066020526000908152604090206001810154600282015460039092015461ffff90911691906001600160a01b031683565b3480156105b757600080fd5b50610229611154565b3480156105cc57600080fd5b506102296105db366004611a63565b61124d565b3480156105ec57600080fd5b506102fa6105fb3660046118f6565b6001600160a01b031660009081526005602052604090206001015461ffff1690565b34801561062957600080fd5b506102296106383660046118c1565b611442565b34801561064957600080fd5b5061022961144f565b34801561065e57600080fd5b5061022961066d366004611a63565b611515565b34801561067e57600080fd5b50600b5461068c9060ff1681565b604051901515815260200161025f565b3480156106a857600080fd5b506102fa60085481565b3480156106be57600080fd5b506102296106cd3660046118f6565b611708565b3480156106de57600080fd5b506102296106ed366004611b49565b611781565b3480156106fe57600080fd5b5060045461024b906001600160a01b031681565b34801561071e57600080fd5b5061022961072d366004611b66565b61179c565b61073a6117d2565b600855565b6001600160a01b0381166000908152600660209081526040918290208054835181840281018401909452808452606093928301828280156107c757602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161078e5790505b50505050509050919050565b60008060006107e3846001610858565b6001600160a01b03851660009081526005602052604090206001015460075491925061ffff1690610815908390611baf565b61081f9190611baf565b61082a90600a611baf565b9150600061084083670de0b6b3a7640000611baf565b905061084f816201518061182c565b95945050505050565b6000808260ff16600203610893576001600160a01b03841660009081526006602052604090206002015461088c9042611bce565b90506108bc565b6001600160a01b0384166000908152600560205260409020600201546108b99042611bce565b90505b9392505050565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156107c7576000918252602091829020805461ffff16845290820283019290916002910180841161078e575094979650505050505050565b6109396117d2565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061096b846002610858565b6001600160a01b03851660009081526006602052604090206001015460075491925061ffff169061099d908390611baf565b6109a79190611baf565b61082a906014611baf565b600260015403610a095760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556001600160a01b03818116600090815260056020526040902060030154163314610a4a5760405162461bcd60e51b8152600401610a0090611be5565b6000610a57826001610858565b600b5490915060009060ff1615610ac757600854610a789062015180611baf565b821015610ac75760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e6720706572696f6420686173206e6f7420656e646564000000006044820152606401610a00565b60005b6001600160a01b03841660009081526005602052604090205460ff82161015610bb4576002546001600160a01b038581166000908152600560205260409020805491909216916323b872dd913091339160ff8716908110610b2d57610b2d611c26565b90600052602060002090601091828204019190066002029054906101000a900461ffff166040518463ffffffff1660e01b8152600401610b6f93929190611c3c565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b505050508080610bac90611c63565b915050610aca565b506001600160a01b03831660009081526005602052604090206001015460075461ffff90911690610be6908490611baf565b610bf09190611baf565b610bfb90600a611baf565b90506000610c1182670de0b6b3a7640000611baf565b90506000610c22826201518061182c565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9d9190611c82565b506001600160a01b0385166000908152600560205260408120600101546009805461ffff928316939192610cd391859116611c9f565b825461ffff9182166101009390930a9283029190920219909116179055506001600160a01b038516600090815260056020526040812090610d148282611888565b5060018101805461ffff19169055600060028201819055600390910180546001600160a01b0319169055600a8054839290610d50908490611cc2565b909155505060405181815233907f0231626103efbf3311c76e8d4d5df96058921ed6b55664fd86458c1219f83cf59060200160405180910390a2505060018055505050565b610d9d6117d2565b610da76000611838565b565b600954600090610dc59061ffff62010000820481169116611cda565b905090565b6001600160a01b03818116600090815260066020526040902060030154163314610e065760405162461bcd60e51b8152600401610a0090611be5565b6000610e13826002610858565b600b5490915060009060ff1615610e8357600854610e349062015180611baf565b821015610e835760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e6720706572696f6420686173206e6f7420656e646564000000006044820152606401610a00565b60005b6001600160a01b03841660009081526006602052604090205460ff82161015610f70576003546001600160a01b038581166000908152600660205260409020805491909216916323b872dd913091339160ff8716908110610ee957610ee9611c26565b90600052602060002090601091828204019190066002029054906101000a900461ffff166040518463ffffffff1660e01b8152600401610f2b93929190611c3c565b600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b505050508080610f6890611c63565b915050610e86565b506001600160a01b03831660009081526006602052604090206001015460075461ffff90911690610fa2908490611baf565b610fac9190611baf565b610fb7906014611baf565b90506000610fcd82670de0b6b3a7640000611baf565b90506000610fde826201518061182c565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110599190611c82565b506001600160a01b0385166000908152600660205260409020600101546009805461ffff9283169260029161109691859162010000900416611c9f565b825461ffff9182166101009390930a9283029190920219909116179055506001600160a01b0385166000908152600660205260408120906110d78282611888565b5060018101805461ffff19169055600060028201819055600390910180546001600160a01b0319169055600a8054839290611113908490611cc2565b909155505060405181815233907fe817e0d4fbf87747e93b5b9342a2e2d9b73eecf469dd3e6526bf2b92d9bf19bd9060200160405180910390a25050505050565b61115c6117d2565b600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611d00565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112499190611c82565b5050565b336000908152600560205260408120426002820155600101805484929061127990849061ffff16611cda565b82546101009290920a61ffff81810219909316918316021790915533600081815260056020526040812060030180546001600160a01b0319169092179091556009805486945090926112cd91859116611cda565b92506101000a81548161ffff021916908361ffff16021790555060005b81518160ff1610156113fa573360009081526005602052604090208251839060ff841690811061131c5761131c611c26565b60209081029190910181015182546001810184556000938452919092206010820401805461ffff9384166002600f90941684026101000a90810294021916929092179091555482516001600160a01b03909116906342842e0e9033903090869060ff871690811061138f5761138f611c26565b60200260200101516040518463ffffffff1660e01b81526004016113b593929190611c3c565b600060405180830381600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b5050505080806113f290611c63565b9150506112ea565b50336001600160a01b03167fb986c5e5356d9fda841c661500f8c74e1dd2a7a21ee81dc1bb86f46d8e0ef6158383604051611436929190611d19565b60405180910390a25050565b61144a6117d2565b600755565b6114576117d2565b6002600154036114a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a00565b6002600155600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146114fb576040519150601f19603f3d011682016040523d82523d6000602084013e611500565b606091505b505090508061150e57600080fd5b5060018055565b336000908152600660205260408120426002820155600101805484929061154190849061ffff16611cda565b82546101009290920a61ffff81810219909316918316021790915533600081815260066020526040902060030180546001600160a01b031916909117905560098054859350909160029161159d91859162010000900416611cda565b92506101000a81548161ffff021916908361ffff16021790555060005b81518160ff1610156116cc573360009081526006602052604090208251839060ff84169081106115ec576115ec611c26565b602090810291909101810151825460018101845560009384529190922060108204018054600f9092166002026101000a61ffff81810219909316929093169290920217905560035482516001600160a01b03909116906342842e0e9033903090869060ff871690811061166157611661611c26565b60200260200101516040518463ffffffff1660e01b815260040161168793929190611c3c565b600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b5050505080806116c490611c63565b9150506115ba565b50336001600160a01b03167f46b7bf40bfc468fa9e566819118a6c3b8d1b7db791b1b787bcc8916d37a881e98383604051611436929190611d19565b6117106117d2565b6001600160a01b0381166117755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a00565b61177e81611838565b50565b6117896117d2565b600b805460ff1916911515919091179055565b6117a46117d2565b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6000546001600160a01b03163314610da75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a00565b60006108bc8284611d3e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f01601090049060005260206000209081019061177e91905b808211156118bd57600081556001016118a9565b5090565b6000602082840312156118d357600080fd5b5035919050565b80356001600160a01b03811681146118f157600080fd5b919050565b60006020828403121561190857600080fd5b6108bc826118da565b600081518084526020808501945080840160005b8381101561194557815161ffff1687529582019590820190600101611925565b509495945050505050565b6020815260006108bc6020830184611911565b60008060008060006080868803121561197b57600080fd5b611984866118da565b9450611992602087016118da565b935060408601359250606086013567ffffffffffffffff808211156119b657600080fd5b818801915088601f8301126119ca57600080fd5b8135818111156119d957600080fd5b8960208285010111156119eb57600080fd5b9699959850939650602001949392505050565b60008060408385031215611a1157600080fd5b611a1a836118da565b9150602083013560ff81168114611a3057600080fd5b809150509250929050565b803561ffff811681146118f157600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611a7657600080fd5b611a7f83611a3b565b915060208084013567ffffffffffffffff80821115611a9d57600080fd5b818601915086601f830112611ab157600080fd5b813581811115611ac357611ac3611a4d565b8060051b604051601f19603f83011681018181108582111715611ae857611ae8611a4d565b604052918252848201925083810185019189831115611b0657600080fd5b938501935b82851015611b2b57611b1c85611a3b565b84529385019392850192611b0b565b8096505050505050509250929050565b801515811461177e57600080fd5b600060208284031215611b5b57600080fd5b81356108bc81611b3b565b60008060408385031215611b7957600080fd5b611b82836118da565b9150611b90602084016118da565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611bc957611bc9611b99565b500290565b600082821015611be057611be0611b99565b500390565b60208082526021908201527f43616e277420756e7374616b6520736f6d656f6e6520656c73652773206e66746040820152607360f81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b600060ff821660ff8103611c7957611c79611b99565b60010192915050565b600060208284031215611c9457600080fd5b81516108bc81611b3b565b600061ffff83811690831681811015611cba57611cba611b99565b039392505050565b60008219821115611cd557611cd5611b99565b500190565b600061ffff808316818516808303821115611cf757611cf7611b99565b01949350505050565b600060208284031215611d1257600080fd5b5051919050565b61ffff83168152604060208201526000611d366040830184611911565b949350505050565b600082611d5b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122076bfcf4822710df37a39d99de5c1d8dfdc4bc8dcad8269b3444e77bd4e948ce564736f6c634300080d0033000000000000000000000000749cda693c2f29bf894df5b7060034cb675ee6310000000000000000000000004d56a556ddf5010531cd4de79b994d2d1a73c2ef000000000000000000000000956ad9336f47d9a17d422e4839a602c55b676501
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c8063817b1cd21161010d578063d2a53c3d116100a0578063ef78d4fd1161006f578063ef78d4fd1461069c578063f2fde38b146106b2578063fae6c434146106d2578063fc0c546a146106f2578063fd6e3bfe1461071257600080fd5b8063d2a53c3d1461061d578063db2e21bc1461063d578063dfbf1b1414610652578063e5884b071461067257600080fd5b80638fe2ae0a116100dc5780638fe2ae0a1461055e57806393aefa76146105ab578063a63f098c146105c0578063c21e12f2146105e057600080fd5b8063817b1cd214610495578063875b21bb146104aa5780638da5cb5b146105205780638f8dea971461053e57600080fd5b806326a4e8d2116101905780634d586b421161015f5780634d586b42146103f257806359febd8f146104085780635e5ac627146104285780636c25836d14610465578063715018a61461048057600080fd5b806326a4e8d21461035e57806329f9d4a31461037e57806332cb29f71461039e5780634044956c146103be57600080fd5b806318083a41116101cc57806318083a41146102da5780631e7b41f814610308578063216340c314610328578063261894fa1461033e57600080fd5b80630f3a9f651461020957806311009b421461022b57806313ed43ed14610268578063150b7a021461029557600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506102296102243660046118c1565b610732565b005b34801561023757600080fd5b5060035461024b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027457600080fd5b506102886102833660046118f6565b61073f565b60405161025f9190611950565b3480156102a157600080fd5b506102c16102b0366004611963565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161025f565b3480156102e657600080fd5b506102fa6102f53660046118f6565b6107d3565b60405190815260200161025f565b34801561031457600080fd5b506102fa6103233660046119fe565b610858565b34801561033457600080fd5b506102fa600a5481565b34801561034a57600080fd5b506102886103593660046118f6565b6108c3565b34801561036a57600080fd5b506102296103793660046118f6565b610931565b34801561038a57600080fd5b506102fa6103993660046118f6565b61095b565b3480156103aa57600080fd5b5060025461024b906001600160a01b031681565b3480156103ca57600080fd5b506009546103df9062010000900461ffff1681565b60405161ffff909116815260200161025f565b3480156103fe57600080fd5b506102fa60075481565b34801561041457600080fd5b506102296104233660046118f6565b6109b2565b34801561043457600080fd5b506102fa6104433660046118f6565b6001600160a01b031660009081526006602052604090206001015461ffff1690565b34801561047157600080fd5b506009546103df9061ffff1681565b34801561048c57600080fd5b50610229610d95565b3480156104a157600080fd5b506103df610da9565b3480156104b657600080fd5b506104f76104c53660046118f6565b60056020526000908152604090206001810154600282015460039092015461ffff90911691906001600160a01b031683565b6040805161ffff909416845260208401929092526001600160a01b03169082015260600161025f565b34801561052c57600080fd5b506000546001600160a01b031661024b565b34801561054a57600080fd5b506102296105593660046118f6565b610dca565b34801561056a57600080fd5b506104f76105793660046118f6565b60066020526000908152604090206001810154600282015460039092015461ffff90911691906001600160a01b031683565b3480156105b757600080fd5b50610229611154565b3480156105cc57600080fd5b506102296105db366004611a63565b61124d565b3480156105ec57600080fd5b506102fa6105fb3660046118f6565b6001600160a01b031660009081526005602052604090206001015461ffff1690565b34801561062957600080fd5b506102296106383660046118c1565b611442565b34801561064957600080fd5b5061022961144f565b34801561065e57600080fd5b5061022961066d366004611a63565b611515565b34801561067e57600080fd5b50600b5461068c9060ff1681565b604051901515815260200161025f565b3480156106a857600080fd5b506102fa60085481565b3480156106be57600080fd5b506102296106cd3660046118f6565b611708565b3480156106de57600080fd5b506102296106ed366004611b49565b611781565b3480156106fe57600080fd5b5060045461024b906001600160a01b031681565b34801561071e57600080fd5b5061022961072d366004611b66565b61179c565b61073a6117d2565b600855565b6001600160a01b0381166000908152600660209081526040918290208054835181840281018401909452808452606093928301828280156107c757602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff168152602001906002019060208260010104928301926001038202915080841161078e5790505b50505050509050919050565b60008060006107e3846001610858565b6001600160a01b03851660009081526005602052604090206001015460075491925061ffff1690610815908390611baf565b61081f9190611baf565b61082a90600a611baf565b9150600061084083670de0b6b3a7640000611baf565b905061084f816201518061182c565b95945050505050565b6000808260ff16600203610893576001600160a01b03841660009081526006602052604090206002015461088c9042611bce565b90506108bc565b6001600160a01b0384166000908152600560205260409020600201546108b99042611bce565b90505b9392505050565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156107c7576000918252602091829020805461ffff16845290820283019290916002910180841161078e575094979650505050505050565b6109396117d2565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061096b846002610858565b6001600160a01b03851660009081526006602052604090206001015460075491925061ffff169061099d908390611baf565b6109a79190611baf565b61082a906014611baf565b600260015403610a095760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556001600160a01b03818116600090815260056020526040902060030154163314610a4a5760405162461bcd60e51b8152600401610a0090611be5565b6000610a57826001610858565b600b5490915060009060ff1615610ac757600854610a789062015180611baf565b821015610ac75760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e6720706572696f6420686173206e6f7420656e646564000000006044820152606401610a00565b60005b6001600160a01b03841660009081526005602052604090205460ff82161015610bb4576002546001600160a01b038581166000908152600560205260409020805491909216916323b872dd913091339160ff8716908110610b2d57610b2d611c26565b90600052602060002090601091828204019190066002029054906101000a900461ffff166040518463ffffffff1660e01b8152600401610b6f93929190611c3c565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b505050508080610bac90611c63565b915050610aca565b506001600160a01b03831660009081526005602052604090206001015460075461ffff90911690610be6908490611baf565b610bf09190611baf565b610bfb90600a611baf565b90506000610c1182670de0b6b3a7640000611baf565b90506000610c22826201518061182c565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9d9190611c82565b506001600160a01b0385166000908152600560205260408120600101546009805461ffff928316939192610cd391859116611c9f565b825461ffff9182166101009390930a9283029190920219909116179055506001600160a01b038516600090815260056020526040812090610d148282611888565b5060018101805461ffff19169055600060028201819055600390910180546001600160a01b0319169055600a8054839290610d50908490611cc2565b909155505060405181815233907f0231626103efbf3311c76e8d4d5df96058921ed6b55664fd86458c1219f83cf59060200160405180910390a2505060018055505050565b610d9d6117d2565b610da76000611838565b565b600954600090610dc59061ffff62010000820481169116611cda565b905090565b6001600160a01b03818116600090815260066020526040902060030154163314610e065760405162461bcd60e51b8152600401610a0090611be5565b6000610e13826002610858565b600b5490915060009060ff1615610e8357600854610e349062015180611baf565b821015610e835760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e6720706572696f6420686173206e6f7420656e646564000000006044820152606401610a00565b60005b6001600160a01b03841660009081526006602052604090205460ff82161015610f70576003546001600160a01b038581166000908152600660205260409020805491909216916323b872dd913091339160ff8716908110610ee957610ee9611c26565b90600052602060002090601091828204019190066002029054906101000a900461ffff166040518463ffffffff1660e01b8152600401610f2b93929190611c3c565b600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b505050508080610f6890611c63565b915050610e86565b506001600160a01b03831660009081526006602052604090206001015460075461ffff90911690610fa2908490611baf565b610fac9190611baf565b610fb7906014611baf565b90506000610fcd82670de0b6b3a7640000611baf565b90506000610fde826201518061182c565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110599190611c82565b506001600160a01b0385166000908152600660205260409020600101546009805461ffff9283169260029161109691859162010000900416611c9f565b825461ffff9182166101009390930a9283029190920219909116179055506001600160a01b0385166000908152600660205260408120906110d78282611888565b5060018101805461ffff19169055600060028201819055600390910180546001600160a01b0319169055600a8054839290611113908490611cc2565b909155505060405181815233907fe817e0d4fbf87747e93b5b9342a2e2d9b73eecf469dd3e6526bf2b92d9bf19bd9060200160405180910390a25050505050565b61115c6117d2565b600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190611d00565b6004805460405163a9059cbb60e01b81523392810192909252602482018390529192506001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112499190611c82565b5050565b336000908152600560205260408120426002820155600101805484929061127990849061ffff16611cda565b82546101009290920a61ffff81810219909316918316021790915533600081815260056020526040812060030180546001600160a01b0319169092179091556009805486945090926112cd91859116611cda565b92506101000a81548161ffff021916908361ffff16021790555060005b81518160ff1610156113fa573360009081526005602052604090208251839060ff841690811061131c5761131c611c26565b60209081029190910181015182546001810184556000938452919092206010820401805461ffff9384166002600f90941684026101000a90810294021916929092179091555482516001600160a01b03909116906342842e0e9033903090869060ff871690811061138f5761138f611c26565b60200260200101516040518463ffffffff1660e01b81526004016113b593929190611c3c565b600060405180830381600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b5050505080806113f290611c63565b9150506112ea565b50336001600160a01b03167fb986c5e5356d9fda841c661500f8c74e1dd2a7a21ee81dc1bb86f46d8e0ef6158383604051611436929190611d19565b60405180910390a25050565b61144a6117d2565b600755565b6114576117d2565b6002600154036114a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a00565b6002600155600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146114fb576040519150601f19603f3d011682016040523d82523d6000602084013e611500565b606091505b505090508061150e57600080fd5b5060018055565b336000908152600660205260408120426002820155600101805484929061154190849061ffff16611cda565b82546101009290920a61ffff81810219909316918316021790915533600081815260066020526040902060030180546001600160a01b031916909117905560098054859350909160029161159d91859162010000900416611cda565b92506101000a81548161ffff021916908361ffff16021790555060005b81518160ff1610156116cc573360009081526006602052604090208251839060ff84169081106115ec576115ec611c26565b602090810291909101810151825460018101845560009384529190922060108204018054600f9092166002026101000a61ffff81810219909316929093169290920217905560035482516001600160a01b03909116906342842e0e9033903090869060ff871690811061166157611661611c26565b60200260200101516040518463ffffffff1660e01b815260040161168793929190611c3c565b600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b5050505080806116c490611c63565b9150506115ba565b50336001600160a01b03167f46b7bf40bfc468fa9e566819118a6c3b8d1b7db791b1b787bcc8916d37a881e98383604051611436929190611d19565b6117106117d2565b6001600160a01b0381166117755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a00565b61177e81611838565b50565b6117896117d2565b600b805460ff1916911515919091179055565b6117a46117d2565b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6000546001600160a01b03163314610da75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a00565b60006108bc8284611d3e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f01601090049060005260206000209081019061177e91905b808211156118bd57600081556001016118a9565b5090565b6000602082840312156118d357600080fd5b5035919050565b80356001600160a01b03811681146118f157600080fd5b919050565b60006020828403121561190857600080fd5b6108bc826118da565b600081518084526020808501945080840160005b8381101561194557815161ffff1687529582019590820190600101611925565b509495945050505050565b6020815260006108bc6020830184611911565b60008060008060006080868803121561197b57600080fd5b611984866118da565b9450611992602087016118da565b935060408601359250606086013567ffffffffffffffff808211156119b657600080fd5b818801915088601f8301126119ca57600080fd5b8135818111156119d957600080fd5b8960208285010111156119eb57600080fd5b9699959850939650602001949392505050565b60008060408385031215611a1157600080fd5b611a1a836118da565b9150602083013560ff81168114611a3057600080fd5b809150509250929050565b803561ffff811681146118f157600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611a7657600080fd5b611a7f83611a3b565b915060208084013567ffffffffffffffff80821115611a9d57600080fd5b818601915086601f830112611ab157600080fd5b813581811115611ac357611ac3611a4d565b8060051b604051601f19603f83011681018181108582111715611ae857611ae8611a4d565b604052918252848201925083810185019189831115611b0657600080fd5b938501935b82851015611b2b57611b1c85611a3b565b84529385019392850192611b0b565b8096505050505050509250929050565b801515811461177e57600080fd5b600060208284031215611b5b57600080fd5b81356108bc81611b3b565b60008060408385031215611b7957600080fd5b611b82836118da565b9150611b90602084016118da565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611bc957611bc9611b99565b500290565b600082821015611be057611be0611b99565b500390565b60208082526021908201527f43616e277420756e7374616b6520736f6d656f6e6520656c73652773206e66746040820152607360f81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03938416815291909216602082015261ffff909116604082015260600190565b600060ff821660ff8103611c7957611c79611b99565b60010192915050565b600060208284031215611c9457600080fd5b81516108bc81611b3b565b600061ffff83811690831681811015611cba57611cba611b99565b039392505050565b60008219821115611cd557611cd5611b99565b500190565b600061ffff808316818516808303821115611cf757611cf7611b99565b01949350505050565b600060208284031215611d1257600080fd5b5051919050565b61ffff83168152604060208201526000611d366040830184611911565b949350505050565b600082611d5b57634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122076bfcf4822710df37a39d99de5c1d8dfdc4bc8dcad8269b3444e77bd4e948ce564736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000749cda693c2f29bf894df5b7060034cb675ee6310000000000000000000000004d56a556ddf5010531cd4de79b994d2d1a73c2ef000000000000000000000000956ad9336f47d9a17d422e4839a602c55b676501
-----Decoded View---------------
Arg [0] : _mam (address): 0x749CDA693c2F29Bf894dF5b7060034cb675Ee631
Arg [1] : _mutant (address): 0x4D56a556Ddf5010531CD4de79B994d2D1A73C2Ef
Arg [2] : _token (address): 0x956ad9336F47D9a17d422E4839a602c55B676501
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000749cda693c2f29bf894df5b7060034cb675ee631
Arg [1] : 0000000000000000000000004d56a556ddf5010531cd4de79b994d2d1a73c2ef
Arg [2] : 000000000000000000000000956ad9336f47d9a17d422e4839a602c55b676501
Deployed Bytecode Sourcemap
19445:8490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26367:86;;;;;;;;;;-1:-1:-1;26367:86:0;;;;;:::i;:::-;;:::i;:::-;;19581:21;;;;;;;;;;-1:-1:-1;19581:21:0;;;;-1:-1:-1;;;;;19581:21:0;;;;;;-1:-1:-1;;;;;378:32:1;;;360:51;;348:2;333:18;19581:21:0;;;;;;;;26989:123;;;;;;;;;;-1:-1:-1;26989:123:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20894:167::-;;;;;;;;;;-1:-1:-1;20894:167:0;;;;;:::i;:::-;-1:-1:-1;;;20894:167:0;;;;;;;;;;;-1:-1:-1;;;;;;2481:33:1;;;2463:52;;2451:2;2436:18;20894:167:0;2319:202:1;22709:393:0;;;;;;;;;;-1:-1:-1;22709:393:0;;;;;:::i;:::-;;:::i;:::-;;;2672:25:1;;;2660:2;2645:18;22709:393:0;2526:177:1;22317:382:0;;;;;;;;;;-1:-1:-1;22317:382:0;;;;;:::i;:::-;;:::i;20295:25::-;;;;;;;;;;;;;;;;26866:117;;;;;;;;;;-1:-1:-1;26866:117:0;;;;;:::i;:::-;;:::i;26045:103::-;;;;;;;;;;-1:-1:-1;26045:103:0;;;;;:::i;:::-;;:::i;23110:404::-;;;;;;;;;;-1:-1:-1;23110:404:0;;;;;:::i;:::-;;:::i;19556:18::-;;;;;;;;;;-1:-1:-1;19556:18:0;;;;-1:-1:-1;;;;;19556:18:0;;;20262:26;;;;;;;;;;-1:-1:-1;20262:26:0;;;;;;;;;;;;;;3230:6:1;3218:19;;;3200:38;;3188:2;3173:18;20262:26:0;3056:188:1;20133:26:0;;;;;;;;;;;;;;;;23526:1166;;;;;;;;;;-1:-1:-1;23526:1166:0;;;;;:::i;:::-;;:::i;26717:139::-;;;;;;;;;;-1:-1:-1;26717:139:0;;;;;:::i;:::-;-1:-1:-1;;;;;26811:20:0;26787:7;26811:20;;;:12;:20;;;;;:39;;;;;;26717:139;20232:23;;;;;;;;;;-1:-1:-1;20232:23:0;;;;;;;;2757:103;;;;;;;;;;;;;:::i;26461:105::-;;;;;;;;;;;;;:::i;20006:46::-;;;;;;;;;;-1:-1:-1;20006:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20006:46:0;;;;;;;3479:6:1;3467:19;;;3449:38;;3518:2;3503:18;;3496:34;;;;-1:-1:-1;;;;;3566:32:1;3546:18;;;3539:60;3437:2;3422:18;20006:46:0;3249:356:1;2109:87:0;;;;;;;;;;-1:-1:-1;2155:7:0;2182:6;-1:-1:-1;;;;;2182:6:0;2109:87;;24700:1137;;;;;;;;;;-1:-1:-1;24700:1137:0;;;;;:::i;:::-;;:::i;20059:52::-;;;;;;;;;;-1:-1:-1;20059:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20059:52:0;;;27120:167;;;;;;;;;;;;;:::i;21091:587::-;;;;;;;;;;-1:-1:-1;21091:587:0;;;;;:::i;:::-;;:::i;26581:130::-;;;;;;;;;;-1:-1:-1;26581:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;26672:17:0;26648:7;26672:17;;;:9;:17;;;;;:33;;;;;;26581:130;26154:90;;;;;;;;;;-1:-1:-1;26154:90:0;;;;;:::i;:::-;;:::i;27384:495::-;;;;;;;;;;;;;:::i;21698:611::-;;;;;;;;;;-1:-1:-1;21698:611:0;;;;;:::i;:::-;;:::i;20334:33::-;;;;;;;;;;-1:-1:-1;20334:33:0;;;;;;;;;;;5475:14:1;;5468:22;5450:41;;5438:2;5423:18;20334:33:0;5310:187:1;20166:26:0;;;;;;;;;;;;;;;;3015:201;;;;;;;;;;-1:-1:-1;3015:201:0;;;;;:::i;:::-;;:::i;26250:107::-;;;;;;;;;;-1:-1:-1;26250:107:0;;;;;:::i;:::-;;:::i;19611:19::-;;;;;;;;;;-1:-1:-1;19611:19:0;;;;-1:-1:-1;;;;;19611:19:0;;;25866:173;;;;;;;;;;-1:-1:-1;25866:173:0;;;;;:::i;:::-;;:::i;26367:86::-;1995:13;:11;:13::i;:::-;26431:6:::1;:14:::0;26367:86::o;26989:123::-;-1:-1:-1;;;;;27082:20:0;;;;;;:12;:20;;;;;;;;;27075:31;;;;;;;;;;;;;;;;;27050:15;;27075:31;;;27082:20;27075:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26989:123;;;:::o;22709:393::-;22776:7;22796:14;22830:12;22845:24;22859:6;22867:1;22845:13;:24::i;:::-;-1:-1:-1;;;;;22926:17:0;;;;;;:9;:17;;;;;:33;;;22909:7;;22830:39;;-1:-1:-1;22926:33:0;;;22909:14;;22830:39;;22909:14;:::i;:::-;:50;;;;:::i;:::-;:55;;22962:2;22909:55;:::i;:::-;22900:64;-1:-1:-1;22985:19:0;23007:14;22900:64;23015:6;23007:14;:::i;:::-;22985:36;-1:-1:-1;23039:22:0;22985:36;23055:5;23039:15;:22::i;:::-;23032:29;22709:393;-1:-1:-1;;;;;22709:393:0:o;22317:382::-;22390:7;22410:19;22443:5;:10;;22452:1;22443:10;22440:203;;-1:-1:-1;;;;;22502:20:0;;;;;;:12;:20;;;;;:34;;;22484:52;;:15;:52;:::i;:::-;22470:66;;22440:203;;;-1:-1:-1;;;;;22600:17:0;;;;;;:9;:17;;;;;:31;;;22582:49;;:15;:49;:::i;:::-;22568:63;;22440:203;22670:11;22317:382;-1:-1:-1;;;22317:382:0:o;26866:117::-;-1:-1:-1;;;;;26956:17:0;;;;;;:9;:17;;;;;;;;;26949:28;;;;;;;;;;;;;;;;;26924:15;;26949:28;;;26956:17;26949:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26949:28:0;;26866:117;-1:-1:-1;;;;;;;26866:117:0:o;26045:103::-;1995:13;:11;:13::i;:::-;26117:5:::1;:25:::0;;-1:-1:-1;;;;;;26117:25:0::1;-1:-1:-1::0;;;;;26117:25:0;;;::::1;::::0;;;::::1;::::0;;26045:103::o;23110:404::-;23180:7;23201:14;23235:12;23250:24;23264:6;23272:1;23250:13;:24::i;:::-;-1:-1:-1;;;;;23331:20:0;;;;;;:12;:20;;;;;:39;;;23314:7;;23235:39;;-1:-1:-1;23331:39:0;;;23314:14;;23235:39;;23314:14;:::i;:::-;:56;;;;:::i;:::-;:62;;23374:2;23314:62;:::i;23526:1166::-;19151:1;19299:7;;:19;19291:63;;;;-1:-1:-1;;;19291:63:0;;6995:2:1;19291:63:0;;;6977:21:1;7034:2;7014:18;;;7007:30;7073:33;7053:18;;;7046:61;7124:18;;19291:63:0;;;;;;;;;19151:1;19365:7;:18;-1:-1:-1;;;;;23603:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;:23:::1;;::::0;::::1;23630:10;23603:37;23595:83;;;;-1:-1:-1::0;;;23595:83:0::1;;;;;;;:::i;:::-;23699:12;23714:24;23728:6;23736:1;23714:13;:24::i;:::-;23790:21;::::0;23699:39;;-1:-1:-1;23759:14:0::1;::::0;23790:21:::1;;23787:122;;;23848:6;::::0;:12:::1;::::0;23855:5:::1;23848:12;:::i;:::-;23840:4;:20;;23832:61;;;::::0;-1:-1:-1;;;23832:61:0;;7757:2:1;23832:61:0::1;::::0;::::1;7739:21:1::0;7796:2;7776:18;;;7769:30;7835;7815:18;;;7808:58;7883:18;;23832:61:0::1;7555:352:1::0;23832:61:0::1;23947:7;23943:148;-1:-1:-1::0;;;;;23960:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;:28;23956:32:::1;::::0;::::1;;23943:148;;;24010:3;::::0;-1:-1:-1;;;;;24054:17:0;;::::1;24010:3;24054:17:::0;;;:9:::1;:17;::::0;;;;:24;;24010:3;;;::::1;::::0;:16:::1;::::0;24035:4:::1;::::0;24042:10:::1;::::0;24054:24:::1;::::0;::::1;::::0;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;24010:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23990:3;;;;;:::i;:::-;;;;23943:148;;;-1:-1:-1::0;;;;;;24137:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;:33:::1;;::::0;24120:7:::1;::::0;24137:33:::1;::::0;;::::1;::::0;24120:14:::1;::::0;24130:4;;24120:14:::1;:::i;:::-;:50;;;;:::i;:::-;:55;::::0;24173:2:::1;24120:55;:::i;:::-;24111:64:::0;-1:-1:-1;24188:19:0::1;24210:14;24111:64:::0;24218:6:::1;24210:14;:::i;:::-;24188:36:::0;-1:-1:-1;24235:21:0::1;24259:22;24188:36:::0;24275:5:::1;24259:15;:22::i;:::-;24326:5;::::0;;:41:::1;::::0;-1:-1:-1;;;24326:41:0;;24341:10:::1;24326:41:::0;;::::1;8790:51:1::0;;;;8857:18;;;8850:34;;;24235:46:0;;-1:-1:-1;;;;;;24326:5:0;;::::1;::::0;:14:::1;::::0;8763:18:1;;24326:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;24423:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;:33:::1;;::::0;24412:9:::1;:44:::0;;24423:33:::1;::::0;;::::1;::::0;24412:9;;:44:::1;::::0;24423:33;;24412:44:::1;;:::i;:::-;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;-1:-1:-1;;;;;;24492:17:0;::::1;-1:-1:-1::0;24492:17:0;;;:9:::1;:17;::::0;;;;;24485:24:::1;24492:17:::0;-1:-1:-1;24485:24:0::1;:::i;:::-;-1:-1:-1::0;24485:24:0::1;::::0;::::1;::::0;;-1:-1:-1;;24485:24:0::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;24485:24:0::1;::::0;;24553:10:::1;:26:::0;;24566:13;;24485:24;24553:26:::1;::::0;24566:13;;24553:26:::1;:::i;:::-;::::0;;;-1:-1:-1;;24595:38:0::1;::::0;2672:25:1;;;24607:10:0::1;::::0;24595:38:::1;::::0;2660:2:1;2645:18;24595:38:0::1;;;;;;;-1:-1:-1::0;;19107:1:0;19408:22;;-1:-1:-1;;;23526:1166:0:o;2757:103::-;1995:13;:11;:13::i;:::-;2822:30:::1;2849:1;2822:18;:30::i;:::-;2757:103::o:0;26461:105::-;26544:12;;26507:6;;26532:24;;26544:12;;;;;;;26532:9;:24;:::i;:::-;26525:31;;26461:105;:::o;24700:1137::-;-1:-1:-1;;;;;24767:20:0;;;;;;;:12;:20;;;;;:26;;;;24797:10;24767:40;24759:86;;;;-1:-1:-1;;;24759:86:0;;;;;;;:::i;:::-;24866:12;24881:24;24895:6;24903:1;24881:13;:24::i;:::-;24957:21;;24866:39;;-1:-1:-1;24926:14:0;;24957:21;;24954:122;;;25015:6;;:12;;25022:5;25015:12;:::i;:::-;25007:4;:20;;24999:61;;;;-1:-1:-1;;;24999:61:0;;7757:2:1;24999:61:0;;;7739:21:1;7796:2;7776:18;;;7769:30;7835;7815:18;;;7808:58;7883:18;;24999:61:0;7555:352:1;24999:61:0;25116:7;25112:157;-1:-1:-1;;;;;25129:20:0;;;;;;:12;:20;;;;;:31;25125:35;;;;25112:157;;;25182:6;;-1:-1:-1;;;;;25229:20:0;;;25182:6;25229:20;;;:12;:20;;;;;:27;;25182:6;;;;;:19;;25210:4;;25217:10;;25229:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;25182:75;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25162:3;;;;;:::i;:::-;;;;25112:157;;;-1:-1:-1;;;;;;25307:20:0;;;;;;:12;:20;;;;;:39;;;25290:7;;25307:39;;;;;25290:14;;25300:4;;25290:14;:::i;:::-;:56;;;;:::i;:::-;:61;;25349:2;25290:61;:::i;:::-;25281:70;-1:-1:-1;25366:19:0;25388:14;25281:70;25396:6;25388:14;:::i;:::-;25366:36;-1:-1:-1;25413:21:0;25437:22;25366:36;25453:5;25437:15;:22::i;:::-;25482:5;;;:41;;-1:-1:-1;;;25482:41:0;;25497:10;25482:41;;;8790:51:1;;;;8857:18;;;8850:34;;;25413:46:0;;-1:-1:-1;;;;;;25482:5:0;;;;:14;;8763:18:1;;25482:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;25577:20:0;;;;;;:12;:20;;;;;:39;;;25563:12;:53;;25577:39;;;;;25563:12;;:53;;25577:39;;25563:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25648:20:0;;-1:-1:-1;25648:20:0;;;:12;:20;;;;;;25641:27;25648:20;-1:-1:-1;25641:27:0;:::i;:::-;-1:-1:-1;25641:27:0;;;;;-1:-1:-1;;25641:27:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25641:27:0;;;25693:10;:26;;25706:13;;25641:27;25693:26;;25706:13;;25693:26;:::i;:::-;;;;-1:-1:-1;;25737:41:0;;2672:25:1;;;25752:10:0;;25737:41;;2660:2:1;2645:18;25737:41:0;;;;;;;24748:1089;;;;24700:1137;:::o;27120:167::-;1995:13;:11;:13::i;:::-;27202:5:::1;::::0;;:30:::1;::::0;-1:-1:-1;;;27202:30:0;;27226:4:::1;27202:30:::0;;::::1;360:51:1::0;;;;27184:15:0::1;::::0;-1:-1:-1;;;;;27202:5:0;;::::1;::::0;:15:::1;::::0;333:18:1;;27202:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27243:5;::::0;;:36:::1;::::0;-1:-1:-1;;;27243:36:0;;27258:10:::1;27243:36:::0;;::::1;8790:51:1::0;;;;8857:18;;;8850:34;;;27184:48:0;;-1:-1:-1;;;;;;27243:5:0;;::::1;::::0;:14:::1;::::0;8763:18:1;;27243:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27173:114;27120:167::o:0;21091:587::-;21184:10;21174:21;;;;:9;:21;;;;;21212:15;21174:35;;;:53;21238:37;;:48;;21278:8;;21174:21;21238:48;;21278:8;;21238:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;21327:10;-1:-1:-1;21297:21:0;;;:9;:21;;;;;:27;;:40;;-1:-1:-1;;;;;;21297:40:0;;;;;;;21378:9;:19;;21389:8;;-1:-1:-1;21378:9:0;;:19;;21389:8;;21378:19;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21422:7;21418:184;21435:8;:15;21431:1;:19;;;21418:184;;;21482:10;21472:21;;;;:9;:21;;;;;21503:11;;:8;;:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;;21472:43;;;;;;;-1:-1:-1;21472:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21530:3;21578:11;;-1:-1:-1;;;;;21530:3:0;;;;:20;;21551:10;;21571:4;;21578:8;;:11;;;;;;;;;;:::i;:::-;;;;;;;21530:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21452:3;;;;;:::i;:::-;;;;21418:184;;;;21639:10;-1:-1:-1;;;;;21629:41:0;;21651:8;21661;21629:41;;;;;;;:::i;:::-;;;;;;;;21091:587;;:::o;26154:90::-;1995:13;:11;:13::i;:::-;26220:7:::1;:18:::0;26154:90::o;27384:495::-;1995:13;:11;:13::i;:::-;19151:1:::1;19299:7;;:19:::0;19291:63:::1;;;::::0;-1:-1:-1;;;19291:63:0;;6995:2:1;19291:63:0::1;::::0;::::1;6977:21:1::0;7034:2;7014:18;;;7007:30;7073:33;7053:18;;;7046:61;7124:18;;19291:63:0::1;6793:355:1::0;19291:63:0::1;19151:1;19365:7;:18:::0;27691:7:::2;2182:6:::0;;27704:55:::2;::::0;-1:-1:-1;;;;;2182:6:0;;;;27733:21:::2;::::0;27691:7;27704:55;27691:7;27704:55;27733:21;2182:6;27704:55:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27690:69;;;27778:2;27770:11;;;::::0;::::2;;-1:-1:-1::0;19107:1:0::1;19408:22:::0;;27384:495::o;21698:611::-;21794:10;21781:24;;;;:12;:24;;;;;21822:15;21781:38;;;:56;21848:43;;:54;;21894:8;;21781:24;21848:54;;21894:8;;21848:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;21946:10;-1:-1:-1;21913:24:0;;;:12;:24;;;;;:30;;:43;;-1:-1:-1;;;;;;21913:43:0;;;;;;21997:12;:22;;22011:8;;-1:-1:-1;21997:12:0;;;;:22;;22011:8;;21997:22;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22044:7;22040:190;22057:8;:15;22053:1;:19;;;22040:190;;;22107:10;22094:24;;;;:12;:24;;;;;22128:11;;:8;;:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;;22094:46;;;;;;;-1:-1:-1;22094:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22155:6;;22206:11;;-1:-1:-1;;;;;22155:6:0;;;;:23;;22179:10;;22199:4;;22206:11;;;;;;;;;;;;:::i;:::-;;;;;;;22155:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22074:3;;;;;:::i;:::-;;;;22040:190;;;;22270:10;-1:-1:-1;;;;;22257:44:0;;22282:8;22292;22257:44;;;;;;;:::i;3015:201::-;1995:13;:11;:13::i;:::-;-1:-1:-1;;;;;3104:22:0;::::1;3096:73;;;::::0;-1:-1:-1;;;3096:73:0;;10676:2:1;3096:73:0::1;::::0;::::1;10658:21:1::0;10715:2;10695:18;;;10688:30;10754:34;10734:18;;;10727:62;-1:-1:-1;;;10805:18:1;;;10798:36;10851:19;;3096:73:0::1;10474:402:1::0;3096:73:0::1;3180:28;3199:8;3180:18;:28::i;:::-;3015:201:::0;:::o;26250:107::-;1995:13;:11;:13::i;:::-;26321:21:::1;:30:::0;;-1:-1:-1;;26321:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26250:107::o;25866:173::-;1995:13;:11;:13::i;:::-;25964:3:::1;:27:::0;;-1:-1:-1;;;;;25964:27:0;;::::1;-1:-1:-1::0;;;;;;25964:27:0;;::::1;;::::0;;;26000:6:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;25866:173::o;2274:132::-;2155:7;2182:6;-1:-1:-1;;;;;2182:6:0;740:10;2338:23;2330:68;;;;-1:-1:-1;;;2330:68:0;;11083:2:1;2330:68:0;;;11065:21:1;;;11102:18;;;11095:30;11161:34;11141:18;;;11134:62;11213:18;;2330:68:0;10881:356:1;15998:98:0;16056:7;16083:5;16087:1;16083;:5;:::i;3376:191::-;3450:16;3469:6;;-1:-1:-1;;;;;3486:17:0;;;-1:-1:-1;;;;;;3486:17:0;;;;;;3519:40;;3469:6;;;;;;;3519:40;;3450:16;3519:40;3439:128;3376:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;422:173::-;490:20;;-1:-1:-1;;;;;539:31:1;;529:42;;519:70;;585:1;582;575:12;519:70;422:173;;;:::o;600:186::-;659:6;712:2;700:9;691:7;687:23;683:32;680:52;;;728:1;725;718:12;680:52;751:29;770:9;751:29;:::i;791:447::-;843:3;881:5;875:12;908:6;903:3;896:19;934:4;963:2;958:3;954:12;947:19;;1000:2;993:5;989:14;1021:1;1031:182;1045:6;1042:1;1039:13;1031:182;;;1110:13;;1125:6;1106:26;1094:39;;1153:12;;;;1188:15;;;;1067:1;1060:9;1031:182;;;-1:-1:-1;1229:3:1;;791:447;-1:-1:-1;;;;;791:447:1:o;1243:258::-;1420:2;1409:9;1402:21;1383:4;1440:55;1491:2;1480:9;1476:18;1468:6;1440:55;:::i;1506:808::-;1603:6;1611;1619;1627;1635;1688:3;1676:9;1667:7;1663:23;1659:33;1656:53;;;1705:1;1702;1695:12;1656:53;1728:29;1747:9;1728:29;:::i;:::-;1718:39;;1776:38;1810:2;1799:9;1795:18;1776:38;:::i;:::-;1766:48;;1861:2;1850:9;1846:18;1833:32;1823:42;;1916:2;1905:9;1901:18;1888:32;1939:18;1980:2;1972:6;1969:14;1966:34;;;1996:1;1993;1986:12;1966:34;2034:6;2023:9;2019:22;2009:32;;2079:7;2072:4;2068:2;2064:13;2060:27;2050:55;;2101:1;2098;2091:12;2050:55;2141:2;2128:16;2167:2;2159:6;2156:14;2153:34;;;2183:1;2180;2173:12;2153:34;2228:7;2223:2;2214:6;2210:2;2206:15;2202:24;2199:37;2196:57;;;2249:1;2246;2239:12;2196:57;1506:808;;;;-1:-1:-1;1506:808:1;;-1:-1:-1;2280:2:1;2272:11;;2302:6;1506:808;-1:-1:-1;;;1506:808:1:o;2708:343::-;2774:6;2782;2835:2;2823:9;2814:7;2810:23;2806:32;2803:52;;;2851:1;2848;2841:12;2803:52;2874:29;2893:9;2874:29;:::i;:::-;2864:39;;2953:2;2942:9;2938:18;2925:32;2997:4;2990:5;2986:16;2979:5;2976:27;2966:55;;3017:1;3014;3007:12;2966:55;3040:5;3030:15;;;2708:343;;;;;:::o;3818:159::-;3885:20;;3945:6;3934:18;;3924:29;;3914:57;;3967:1;3964;3957:12;3982:127;4043:10;4038:3;4034:20;4031:1;4024:31;4074:4;4071:1;4064:15;4098:4;4095:1;4088:15;4114:1191;4205:6;4213;4266:2;4254:9;4245:7;4241:23;4237:32;4234:52;;;4282:1;4279;4272:12;4234:52;4305:28;4323:9;4305:28;:::i;:::-;4295:38;;4352:2;4405;4394:9;4390:18;4377:32;4428:18;4469:2;4461:6;4458:14;4455:34;;;4485:1;4482;4475:12;4455:34;4523:6;4512:9;4508:22;4498:32;;4568:7;4561:4;4557:2;4553:13;4549:27;4539:55;;4590:1;4587;4580:12;4539:55;4626:2;4613:16;4648:2;4644;4641:10;4638:36;;;4654:18;;:::i;:::-;4700:2;4697:1;4693:10;4732:2;4726:9;4795:2;4791:7;4786:2;4782;4778:11;4774:25;4766:6;4762:38;4850:6;4838:10;4835:22;4830:2;4818:10;4815:18;4812:46;4809:72;;;4861:18;;:::i;:::-;4897:2;4890:22;4947:18;;;4981:15;;;;-1:-1:-1;5023:11:1;;;5019:20;;;5051:19;;;5048:39;;;5083:1;5080;5073:12;5048:39;5107:11;;;;5127:147;5143:6;5138:3;5135:15;5127:147;;;5209:22;5227:3;5209:22;:::i;:::-;5197:35;;5160:12;;;;5252;;;;5127:147;;;5293:6;5283:16;;;;;;;;4114:1191;;;;;:::o;5502:118::-;5588:5;5581:13;5574:21;5567:5;5564:32;5554:60;;5610:1;5607;5600:12;5625:241;5681:6;5734:2;5722:9;5713:7;5709:23;5705:32;5702:52;;;5750:1;5747;5740:12;5702:52;5789:9;5776:23;5808:28;5830:5;5808:28;:::i;6093:260::-;6161:6;6169;6222:2;6210:9;6201:7;6197:23;6193:32;6190:52;;;6238:1;6235;6228:12;6190:52;6261:29;6280:9;6261:29;:::i;:::-;6251:39;;6309:38;6343:2;6332:9;6328:18;6309:38;:::i;:::-;6299:48;;6093:260;;;;;:::o;6358:127::-;6419:10;6414:3;6410:20;6407:1;6400:31;6450:4;6447:1;6440:15;6474:4;6471:1;6464:15;6490:168;6530:7;6596:1;6592;6588:6;6584:14;6581:1;6578:21;6573:1;6566:9;6559:17;6555:45;6552:71;;;6603:18;;:::i;:::-;-1:-1:-1;6643:9:1;;6490:168::o;6663:125::-;6703:4;6731:1;6728;6725:8;6722:34;;;6736:18;;:::i;:::-;-1:-1:-1;6773:9:1;;6663:125::o;7153:397::-;7355:2;7337:21;;;7394:2;7374:18;;;7367:30;7433:34;7428:2;7413:18;;7406:62;-1:-1:-1;;;7499:2:1;7484:18;;7477:31;7540:3;7525:19;;7153:397::o;7912:127::-;7973:10;7968:3;7964:20;7961:1;7954:31;8004:4;8001:1;7994:15;8028:4;8025:1;8018:15;8044:387;-1:-1:-1;;;;;8301:15:1;;;8283:34;;8353:15;;;;8348:2;8333:18;;8326:43;8417:6;8405:19;;;8400:2;8385:18;;8378:47;8233:2;8218:18;;8044:387::o;8436:175::-;8473:3;8517:4;8510:5;8506:16;8546:4;8537:7;8534:17;8531:43;;8554:18;;:::i;:::-;8603:1;8590:15;;8436:175;-1:-1:-1;;8436:175:1:o;8895:245::-;8962:6;9015:2;9003:9;8994:7;8990:23;8986:32;8983:52;;;9031:1;9028;9021:12;8983:52;9063:9;9057:16;9082:28;9104:5;9082:28;:::i;9145:217::-;9184:4;9213:6;9269:10;;;;9239;;9291:12;;;9288:38;;;9306:18;;:::i;:::-;9343:13;;9145:217;-1:-1:-1;;;9145:217:1:o;9367:128::-;9407:3;9438:1;9434:6;9431:1;9428:13;9425:39;;;9444:18;;:::i;:::-;-1:-1:-1;9480:9:1;;9367:128::o;9500:224::-;9539:3;9567:6;9600:2;9597:1;9593:10;9630:2;9627:1;9623:10;9661:3;9657:2;9653:12;9648:3;9645:21;9642:47;;;9669:18;;:::i;:::-;9705:13;;9500:224;-1:-1:-1;;;;9500:224:1:o;9729:184::-;9799:6;9852:2;9840:9;9831:7;9827:23;9823:32;9820:52;;;9868:1;9865;9858:12;9820:52;-1:-1:-1;9891:16:1;;9729:184;-1:-1:-1;9729:184:1:o;9918:341::-;10134:6;10126;10122:19;10111:9;10104:38;10178:2;10173;10162:9;10158:18;10151:30;10085:4;10198:55;10249:2;10238:9;10234:18;10226:6;10198:55;:::i;:::-;10190:63;9918:341;-1:-1:-1;;;;9918:341:1:o;11242:217::-;11282:1;11308;11298:132;;11352:10;11347:3;11343:20;11340:1;11333:31;11387:4;11384:1;11377:15;11415:4;11412:1;11405:15;11298:132;-1:-1:-1;11444:9:1;;11242:217::o
Swarm Source
ipfs://76bfcf4822710df37a39d99de5c1d8dfdc4bc8dcad8269b3444e77bd4e948ce5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.