More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 35 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Bet With Token | 5899081 | 7 days ago | IN | 0 ETH | 0.00000827 | ||||
Bet With Token | 5895254 | 7 days ago | IN | 0 ETH | 0.00000807 | ||||
Bet With Token | 5704572 | 9 days ago | IN | 0 ETH | 0.0000074 | ||||
Bet With Token | 5661529 | 10 days ago | IN | 0 ETH | 0.00000631 | ||||
Bet With Token | 5661491 | 10 days ago | IN | 0 ETH | 0.00000828 | ||||
Bet With Token | 5656832 | 10 days ago | IN | 0 ETH | 0.00000641 | ||||
Bet With Token | 5656789 | 10 days ago | IN | 0 ETH | 0.00000641 | ||||
Bet With Token | 5656737 | 10 days ago | IN | 0 ETH | 0.0000064 | ||||
Bet With Token | 5656679 | 10 days ago | IN | 0 ETH | 0.00000784 | ||||
Bet With Token | 5656187 | 10 days ago | IN | 0 ETH | 0.00000657 | ||||
Bet With Token | 5656130 | 10 days ago | IN | 0 ETH | 0.00000656 | ||||
Bet With Token | 5656077 | 10 days ago | IN | 0 ETH | 0.00000656 | ||||
Bet With Token | 5656039 | 10 days ago | IN | 0 ETH | 0.00000655 | ||||
Bet With Token | 5655995 | 10 days ago | IN | 0 ETH | 0.00000655 | ||||
Bet With Token | 5655734 | 10 days ago | IN | 0 ETH | 0.00000655 | ||||
Bet With Token | 5655695 | 10 days ago | IN | 0 ETH | 0.00000654 | ||||
Bet With Token | 5655657 | 10 days ago | IN | 0 ETH | 0.00000654 | ||||
Bet With Token | 5655613 | 10 days ago | IN | 0 ETH | 0.00000653 | ||||
Bet With Token | 5655575 | 10 days ago | IN | 0 ETH | 0.00000653 | ||||
Bet With Token | 5655528 | 10 days ago | IN | 0 ETH | 0.00000652 | ||||
Bet With Token | 5655310 | 10 days ago | IN | 0 ETH | 0.00000652 | ||||
Bet With Token | 5655233 | 10 days ago | IN | 0 ETH | 0.00000853 | ||||
Bet With Token | 5655112 | 10 days ago | IN | 0 ETH | 0.00000696 | ||||
Bet With Token | 5655057 | 10 days ago | IN | 0 ETH | 0.00000704 | ||||
Bet With Token | 5654695 | 10 days ago | IN | 0 ETH | 0.00000695 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5573788 | 11 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
CoinFlip
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.11
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* _ _ _ _ ___ _ _ | || |___ ___ __| |___ __| | | _ \ |_ __ _ _ _| |_ ___ _ __ ___ | __ / _ \/ _ \/ _` / -_) _` | | _/ ' \/ _` | ' \ _/ _ \ ' \(_-< |_||_\___/\___/\__,_\___\__,_| |_| |_||_\__,_|_||_\__\___/_|_|_/__/ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "./gelato/GelatoVRFConsumerBase.sol"; /** * @title CoinFlip * @dev A coin flip game contract that allows users to bet with ETH or ERC20 tokens. * Users have a 45% chance of winning (2x payout) and 55% chance of losing. * When users lose, 10% goes to a fee recipient and 90% stays in the contract. * Random numbers are provided by Gelato's VRF system. */ contract CoinFlip is Ownable, ReentrancyGuard, GelatoVRFConsumerBase { //Gelato VRF address private immutable _operatorAddr; // Constants address public constant FEE_RECIPIENT = 0x4a1F4EE64066ADC42eEFB174907E5714F9E995b3; uint256 public constant WIN_PERCENTAGE = 45; // 45% chance to win uint256 public constant FEE_PERCENTAGE = 10; // 10% fee on losses // Enums and structs enum Choice { HEADS, TAILS } enum BetType { ETH, TOKEN } struct Bet { address player; uint256 amount; Choice choice; BetType betType; address tokenAddress; bool isSettled; bool isWon; } // State variables mapping(uint256 => Bet) public bets; mapping(address => bool) public supportedTokens; // Hidden wisdom for gamblers string private constant GAMBLING_WISDOM = "If you keep flipping coins, eventually Lady Luck will flip you!"; // Events event BetPlaced(uint256 indexed requestId, address indexed player, uint256 amount, Choice choice, BetType betType, address tokenAddress); event BetSettled(uint256 indexed requestId, address indexed player, uint256 amount, Choice choice, bool isWon, uint256 payout); event TokenAdded(address indexed tokenAddress); event TokenRemoved(address indexed tokenAddress); /** * @dev Constructor to initialize the CoinFlip contract * @param operator Address of the operator */ constructor(address operator) Ownable(msg.sender) { require(operator != address(0), "operator address cannot be zero"); _operatorAddr = operator; } /** * @dev get operator address * @return operator ID of the VRF request */ function _operator() internal view override returns (address) { return _operatorAddr; } /** * @dev Place a bet with ETH * @param _choice The user's choice (HEADS or TAILS) * @return requestId The ID of the VRF request */ function betWithEth(Choice _choice) external payable nonReentrant returns (uint256) { require(msg.value > 0, "Bet amount must be greater than 0"); uint256 requestId = _requestRandomness(abi.encode(msg.sender)); bets[requestId] = Bet({ player: msg.sender, amount: msg.value, choice: _choice, betType: BetType.ETH, tokenAddress: address(0), isSettled: false, isWon: false }); emit BetPlaced(requestId, msg.sender, msg.value, _choice, BetType.ETH, address(0)); return requestId; } /** * @dev Place a bet with an ERC20 token * @param _tokenAddress The address of the ERC20 token * @param _amount The amount of tokens to bet * @param _choice The user's choice (HEADS or TAILS) * @return requestId The ID of the VRF request */ function betWithToken(address _tokenAddress, uint256 _amount, Choice _choice) external nonReentrant returns (uint256) { require(_amount > 0, "Bet amount must be greater than 0"); require(supportedTokens[_tokenAddress], "Token not supported"); IERC20 token = IERC20(_tokenAddress); require(token.transferFrom(msg.sender, address(this), _amount), "Token transfer failed"); //uint256 requestId = IVRFSystem(VRF_ADDRESS).requestRandomNumberWithTraceId(0); uint256 requestId = _requestRandomness(abi.encode(msg.sender)); bets[requestId] = Bet({ player: msg.sender, amount: _amount, choice: _choice, betType: BetType.TOKEN, tokenAddress: _tokenAddress, isSettled: false, isWon: false }); emit BetPlaced(requestId, msg.sender, _amount, _choice, BetType.TOKEN, _tokenAddress); return requestId; } /** * @dev Callback function called by the VRF contract with the random number * @param randomness The random number provided by the VRF * @param requestId The ID of the VRF request * @param data The ID of the VRF request */ function _fulfillRandomness( uint256 randomness, uint256 requestId, bytes memory data ) internal override { require(!bets[requestId].isSettled, "Bet already settled"); Bet storage bet = bets[requestId]; require(bet.player != address(0), "Bet does not exist"); // Use the random number to determine the result with 45% win chance // To avoid modulo bias, we use a large number (let's say 1000) and compare with WIN_PERCENTAGE * 10 bool isHeads = (randomness % 1000) < (WIN_PERCENTAGE * 10); bool playerWon = (bet.choice == Choice.HEADS && isHeads) || (bet.choice == Choice.TAILS && !isHeads); bet.isSettled = true; bet.isWon = playerWon; uint256 payout = 0; if (playerWon) { // Player wins 2x their bet payout = bet.amount * 2; if (bet.betType == BetType.ETH) { (bool success, ) = bet.player.call{value: payout}(""); require(success, "ETH transfer failed"); } else { IERC20 token = IERC20(bet.tokenAddress); require(token.transfer(bet.player, payout), "Token transfer failed"); } } else { // Player loses, distribute fees (10% to fee recipient, 90% stays in contract) uint256 feeAmount = (bet.amount * FEE_PERCENTAGE) / 100; if (bet.betType == BetType.ETH) { (bool success, ) = FEE_RECIPIENT.call{value: feeAmount}(""); require(success, "Fee transfer failed"); } else { IERC20 token = IERC20(bet.tokenAddress); require(token.transfer(FEE_RECIPIENT, feeAmount), "Fee transfer failed"); } // The rest (90%) stays in the contract for future payouts } emit BetSettled(requestId, bet.player, bet.amount, bet.choice, playerWon, payout); } /** * @dev Add a token to the list of supported tokens * @param _tokenAddress The address of the token to add */ function addSupportedToken(address _tokenAddress) external onlyOwner { require(_tokenAddress != address(0), "Token address cannot be zero"); supportedTokens[_tokenAddress] = true; emit TokenAdded(_tokenAddress); } /** * @dev Remove a token from the list of supported tokens * @param _tokenAddress The address of the token to remove */ function removeSupportedToken(address _tokenAddress) external onlyOwner { supportedTokens[_tokenAddress] = false; emit TokenRemoved(_tokenAddress); } /** * @dev Withdraw ETH from the contract * @param _amount The amount of ETH to withdraw */ function withdraw(uint256 _amount) external onlyOwner { require(_amount <= address(this).balance, "Insufficient balance"); (bool success, ) = owner().call{value: _amount}(""); require(success, "Withdrawal failed"); } /** * @dev Withdraw tokens from the contract * @param _tokenAddress The address of the token to withdraw * @param _amount The amount of tokens to withdraw */ function withdrawToken(address _tokenAddress, uint256 _amount) external onlyOwner { IERC20 token = IERC20(_tokenAddress); require(token.transfer(owner(), _amount), "Token transfer failed"); } /** * @dev Get information about a bet * @param _requestId The ID of the bet * @return player The address of the player * @return amount The amount of the bet * @return choice The player's choice * @return betType The type of bet (ETH or TOKEN) * @return tokenAddress The address of the token (if applicable) * @return isSettled Whether the bet has been settled * @return isWon Whether the bet was won */ function getBetInfo(uint256 _requestId) external view returns ( address player, uint256 amount, Choice choice, BetType betType, address tokenAddress, bool isSettled, bool isWon ) { Bet storage bet = bets[_requestId]; return ( bet.player, bet.amount, bet.choice, bet.betType, bet.tokenAddress, bet.isSettled, bet.isWon ); } /** * @dev Get the ETH balance of the contract * @return The ETH balance of the contract */ function getContractBalance() external view returns (uint256) { return address(this).balance; } /** * @dev Get the token balance of the contract * @param _tokenAddress The address of the token * @return The token balance of the contract */ function getTokenBalance(address _tokenAddress) external view returns (uint256) { return IERC20(_tokenAddress).balanceOf(address(this)); } /** * @dev Check if a token is supported by the contract * @param _tokenAddress The address of the token * @return Whether the token is supported */ function isTokenSupported(address _tokenAddress) external view returns (bool) { return supportedTokens[_tokenAddress]; } // Fallback and receive functions to accept ETH receive() external payable {} fallback() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import {IGelatoVRFConsumer} from "./IGelatoVRFConsumer.sol"; /// @title GelatoVRFConsumerBase /// @dev This contract can be inherit by upgradeable smart contracts as well. /// @dev This contract handles domain separation between consecutive randomness requests /// The contract has to be implemented by contracts willing to use the gelato VRF system. /// This base contract enhances the GelatoVRFConsumer by introducing request IDs and /// ensuring unique random values. /// for different request IDs by hashing them with the random number provided by drand. /// For security considerations, refer to the Gelato documentation. abstract contract GelatoVRFConsumerBase is IGelatoVRFConsumer { uint256 private constant _PERIOD = 3; uint256 private constant _GENESIS = 1692803367; bool[] public requestPending; mapping(uint256 => bytes32) public requestedHash; /// @notice Returns the address of the dedicated msg.sender. /// @dev The operator can be found on the Gelato dashboard after a VRF is deployed. /// @return Address of the operator. function _operator() internal view virtual returns (address); /// @notice User logic to handle the random value received. /// @param randomness The random number generated by Gelato VRF. /// @param requestId The ID for the randomness request. /// @param extraData Additional data from the randomness request. function _fulfillRandomness( uint256 randomness, uint256 requestId, bytes memory extraData ) internal virtual; /// @notice Requests randomness from the Gelato VRF. /// @dev The extraData parameter allows for additional data to be passed to /// the VRF, which is then forwarded to the callback. This is useful for /// request tracking purposes if requestId is not enough. /// @param extraData Additional data for the randomness request. /// @return requestId The ID for the randomness request. function _requestRandomness( bytes memory extraData ) internal returns (uint256 requestId) { requestId = uint256(requestPending.length); requestPending.push(); requestPending[requestId] = true; bytes memory data = abi.encode(requestId, extraData); uint256 round = _round(); bytes memory dataWithRound = abi.encode(round, data); bytes32 requestHash = keccak256(dataWithRound); requestedHash[requestId] = requestHash; emit RequestedRandomness(round, data); } /// @notice Callback function used by Gelato VRF to return the random number. /// The randomness is derived by hashing the provided randomness with the request ID. /// @param randomness The random number generated by Gelato VRF. /// @param dataWithRound Additional data provided by Gelato VRF containing request details. function fulfillRandomness( uint256 randomness, bytes calldata dataWithRound ) external { require(msg.sender == _operator(), "only operator"); (, bytes memory data) = abi.decode(dataWithRound, (uint256, bytes)); (uint256 requestId, bytes memory extraData) = abi.decode( data, (uint256, bytes) ); bytes32 requestHash = keccak256(dataWithRound); bool isValidRequestHash = requestHash == requestedHash[requestId]; require(requestPending[requestId], "request fulfilled or missing"); if (isValidRequestHash) { randomness = uint( keccak256( abi.encode( randomness, address(this), block.chainid, requestId ) ) ); _fulfillRandomness(randomness, requestId, extraData); requestPending[requestId] = false; delete requestedHash[requestId]; } } /// @notice Computes and returns the round number of drand to request randomness from. function _round() private view returns (uint256 round) { // solhint-disable-next-line not-rely-on-time uint256 elapsedFromGenesis = block.timestamp - _GENESIS; uint256 currentRound = (elapsedFromGenesis / _PERIOD) + 1; round = block.chainid == 1 ? currentRound + 4 : currentRound + 1; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ 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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @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 EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * 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; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); 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 if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // 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; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @title IGelatoVRFConsumer /// @dev Interface for consuming random number provided by Drand. /// @notice This interface allows contracts to receive a random number provided by Gelato VRF. interface IGelatoVRFConsumer { /// @notice Event emitted when a randomness request is made. /// @param data The round of randomness to request. /// @param data Additional data associated with the request. event RequestedRandomness(uint256 round, bytes data); /// @notice Callback function used by Gelato to return the random number. /// @dev The random number is fetched from one among many drand endpoints /// and passed back to this function like in a Gelato Web3 Function. /// @param randomness The random number generated by drand. /// @param data Additional data provided by Gelato VRF or the user, typically unused. function fulfillRandomness( uint256 randomness, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum CoinFlip.Choice","name":"choice","type":"uint8"},{"indexed":false,"internalType":"enum CoinFlip.BetType","name":"betType","type":"uint8"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"BetPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum CoinFlip.Choice","name":"choice","type":"uint8"},{"indexed":false,"internalType":"bool","name":"isWon","type":"bool"},{"indexed":false,"internalType":"uint256","name":"payout","type":"uint256"}],"name":"BetSettled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"RequestedRandomness","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"TokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"TokenRemoved","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_RECIPIENT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WIN_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum CoinFlip.Choice","name":"_choice","type":"uint8"}],"name":"betWithEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"enum CoinFlip.Choice","name":"_choice","type":"uint8"}],"name":"betWithToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bets","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum CoinFlip.Choice","name":"choice","type":"uint8"},{"internalType":"enum CoinFlip.BetType","name":"betType","type":"uint8"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"isSettled","type":"bool"},{"internalType":"bool","name":"isWon","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"randomness","type":"uint256"},{"internalType":"bytes","name":"dataWithRound","type":"bytes"}],"name":"fulfillRandomness","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"}],"name":"getBetInfo","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum CoinFlip.Choice","name":"choice","type":"uint8"},{"internalType":"enum CoinFlip.BetType","name":"betType","type":"uint8"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"isSettled","type":"bool"},{"internalType":"bool","name":"isWon","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"getTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"isTokenSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestPending","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestedHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supportedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010002cb30729b3090964d4e0645bc5ac887eaecc62bad6d2b55a92ff768c5dd000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004207f914b195238712abab084c2979ce80f93a29
Deployed Bytecode
0x0002000000000002000c00000000000200010000000103550000006003100270000002600030019d00000260033001970000000100200190000001310000c13d0000008002000039000000400020043f000000040030008c000004240000413d000000000201043b000000e0022002700000026d0020009c000001560000a13d0000026e0020009c000001a90000a13d0000026f0020009c000001ec0000213d000002730020009c000002e20000613d000002740020009c000003500000613d000002750020009c000004240000c13d000000440030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000002402100370000000000202043b000b00000002001d0000028d0020009c000001540000213d0000000b020000290000002302200039000000000032004b000001540000813d0000000b02000029000900040020003d0000000901100360000000000101043b000a00000001001d0000028d0010009c000001540000213d0000000b010000290000002402100039000700000002001d0008000a0020002d000000080030006b000001540000213d0000028e0100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000002600010009c0000026001008041000000c0011002100000028f011001c70000800502000039097d09780000040f0000000100200190000006530000613d000000000101043b00000263011001970000000002000411000000000012004b000004ba0000c13d0000000a01000029000000400010008c000001540000413d000000090100002900000040021000390000000101000367000000000221034f000000000202043b0000028d0020009c000001540000213d0000000b032000290000004302300039000000080020006c000001540000813d0000002406300039000000000261034f000000000502043b0000028d0050009c000003f70000213d0000001f04500039000002c1044001970000003f04400039000002c107400197000000400400043d0000000007740019000000000047004b000000000800003900000001080040390000028d0070009c000003f70000213d0000000100800190000003f70000c13d0000004408300039000000400070043f00000000035404360000000007850019000000080070006c000001540000213d0000002006600039000000000761034f000002c1085001980000001f0950018f00000000068300190000007a0000613d000000000a07034f000000000b03001900000000ac0a043c000000000bcb043600000000006b004b000000760000c13d000000000009004b000000870000613d000000000787034f0000000308900210000000000906043300000000098901cf000000000989022f000000000707043b0000010008800089000000000787022f00000000078701cf000000000797019f0000000000760435000000000553001900000000000504350000000005040433000002910050009c000001540000213d000000400050008c000001540000413d000000400640003900000000060604330000028d0060009c000001540000213d000000000535001900000000064600190000003f04600039000000000054004b0000000007000019000002920700804100000292044001970000029208500197000000000984013f000000000084004b00000000040000190000029204004041000002920090009c000000000407c019000000000004004b000001540000c13d000000200460003900000000040404330000028d0040009c000003f70000213d0000001f07400039000002c1077001970000003f07700039000002c108700197000000400700043d0000000008870019000000000078004b000000000900003900000001090040390000028d0080009c000003f70000213d0000000100900190000003f70000c13d0000000003030433000b00000003001d000000400080043f000000000347043600000040066000390000000007640019000000000057004b000001540000213d000000000004004b000000c50000613d000000000500001900000000073500190000000008650019000000000808043300000000008704350000002005500039000000000045004b000000be0000413d000000000343001900000000000304350000000a030000290000001f03300039000002c1033001970000003f03300039000002c104300197000000400300043d0000000004430019000000000034004b000000000500003900000001050040390000028d0040009c000003f70000213d0000000100500190000003f70000c13d000000400040043f0000000a0400002900000000044304360000000806000029000000000060007c000001540000213d00000007051003600000000a01000029000002c1021001980000001f0610018f0000000001240019000000e70000613d000000000705034f0000000008040019000000007907043c0000000008980436000000000018004b000000e30000c13d000000000006004b000000f40000613d000000000225034f0000000305600210000000000601043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f00000000002104350000000a014000290000000000010435000002600040009c000002600400804100000040014002100000000002030433000002600020009c00000260020080410000006002200210000000000112019f0000000002000414000002600020009c0000026002008041000000c002200210000000000112019f00000265011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000a00000001001d0000000b01000029000000000010043f0000000301000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b0000000202000039000000000202041a0000000b0020006c000007bd0000a13d000000000101041a0000000202000039000000000020043f0000000b030000290000000302300210000000f80220018f000000ff0420020f0000000502300270000002940220009a000900000002001d000000000202041a000800000004001d0000000000420170000005ec0000c13d000000400100043d0000004402100039000002a803000041000000000032043500000024021000390000001c03000039000004c00000013d0000000002000416000000000002004b000001540000c13d0000001f023000390000026102200197000000a002200039000000400020043f0000001f0430018f0000026205300198000000a002500039000001420000613d000000a006000039000000000701034f000000007807043c0000000006860436000000000026004b0000013e0000c13d000000000004004b0000014f0000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000001540000413d000000a00300043d000002630030009c0000019c0000a13d00000000010000190000097f000104300000027c0020009c000001d50000213d000002830020009c000002490000a13d000002840020009c000001b10000613d000002850020009c0000030f0000613d000002860020009c000004240000c13d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000201043b000002630020009c000001540000213d000002b401000041000000800010043f0000000001000410000000840010043f0000000001000414000002600010009c0000026001008041000000c0011002100000028a011001c7097d09780000040f00000060031002700000026003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000001820000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000017e0000c13d000000000006004b0000018f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000003be0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000001540000413d000000800200043d00000000002104350000004001100210000002ab011001c70000097e0001042e000000400200043d0000000006000411000000000006004b000002070000c13d0000026b01000041000000000012043500000004012000390000000000010435000002600020009c000002600200804100000040012002100000026c011001c70000097f00010430000002760020009c0000022f0000a13d000002770020009c0000029c0000613d000002780020009c000002b90000613d000002790020009c000004240000c13d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b000000000010043f0000000401000039000000200010043f00000040020000390000000001000019097d09400000040f0000000102100039000000000302041a0000000202100039000000000802041a000000000101041a00000263021001970000000801800270000000ff0510018f00000010018002700000026306100197000000b001800270000000ff0710018f000000ff0480018f000000b801800270000000ff0810018f0000008001000039097d08140000040f000000800110008a000002600010009c00000260010080410000006001100210000002b8011001c70000097e0001042e0000027d0020009c000002890000a13d0000027e0020009c000002330000613d0000027f0020009c000003340000613d000002800020009c000004240000c13d0000000001000416000000000001004b000001540000c13d0000000001000410000c00000001001d0000800a01000039000000240300003900000000040004150000000c0440008a0000000504400210000002ac02000041097d09550000040f000000800010043f0000028c010000410000097e0001042e000002700020009c000002ea0000613d000002710020009c000003970000613d000002720020009c000004240000c13d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000601043b000002630060009c000001540000213d000000000100041a00000263021001970000000005000411000000000052004b000003b90000c13d000000000006004b000003e00000c13d0000026b01000041000000800010043f000000840000043f0000028a010000410000097f00010430000a00000002001d000000000100041a0000026402100197000000000262019f000000000020041b00000000020004140000026305100197000002600020009c0000026002008041000000c00120021000000265011001c70000800d02000039000b00000003001d00000003030000390000026604000041097d09730000040f0000000b030000290000000100200190000001540000613d00000263003001980000000101000039000000000011041b000003ac0000c13d0000000a0300002900000044013000390000026802000041000000000021043500000024013000390000001f02000039000000000021043500000269010000410000000000130435000000040130003900000020020000390000000000210435000002600030009c000002600300804100000040013002100000026a011001c70000097f000104300000027a0020009c000002fb0000613d0000027b0020009c000004240000c13d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b000002630010009c000001540000213d000000000010043f0000000501000039000000200010043f00000040020000390000000001000019097d09400000040f000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f0000028c010000410000097e0001042e000002870020009c0000039e0000613d000002880020009c000004240000c13d000000640030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000402100370000000000202043b000b00000002001d000002630020009c000001540000213d0000002402100370000000000202043b000a00000002001d0000004401100370000000000101043b000900000001001d000000010010008c000001540000213d0000000102000039000000000102041a000000020010008c000002980000613d0000000201000039000000000012041b0000000a0000006b000003cf0000613d0000000b01000029000000000010043f0000000501000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000400500043d000000440250003900000024035000390000000404500039000000000101043b000000000101041a000000ff00100190000004cb0000c13d000002690100004100000000001504350000002001000039000000000014043500000013010000390000000000130435000002bb010000410000000000120435000002600050009c000002600500804100000040015002100000026a011001c70000097f00010430000002810020009c000003a50000613d000002820020009c000004240000c13d000000240030008c000001540000413d0000000401100370000000000101043b000b00000001001d000000010010008c000001540000213d0000000102000039000000000102041a000000020010008c000003ca0000c13d000002bf01000041000000800010043f000002c0010000410000097f00010430000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b0000000202000039000000000202041a000000000021004b000001540000813d097d08350000040f0000000302200210000000000101041a000000000121022f000000ff001001900000000001000039000000010100c039000001000020008c00000000020000390000000102004039000000000112016f000000400200043d0000000000120435000002600020009c00000260020080410000004001200210000002ab011001c70000097e0001042e000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b000b00000001001d000002630010009c000001540000213d000000000100041a00000263021001970000000001000411000000000012004b000003b40000c13d0000000b01000029000000000010043f0000000501000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000000000201041a000002c202200197000000000021041b0000000001000414000002600010009c0000026001008041000000c00110021000000265011001c70000800d020000390000000203000039000002aa04000041000004200000013d0000000001000416000000000001004b000001540000c13d000000000100041a0000026301100197000000800010043f0000028c010000410000097e0001042e000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b000000000010043f0000000301000039000000200010043f00000040020000390000000001000019097d09400000040f000000000101041a000000800010043f0000028c010000410000097e0001042e0000000001000416000000000001004b000001540000c13d000000000100041a00000263021001970000000005000411000000000052004b000003b90000c13d0000026401100197000000000010041b0000000001000414000002600010009c0000026001008041000000c00110021000000265011001c70000800d02000039000000030300003900000266040000410000000006000019000004210000013d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000301043b000000000100041a00000263021001970000000001000411000000000012004b000003b40000c13d000b00000003001d000002ac010000410000000000100443000000000100041000000004001004430000000001000414000002600010009c0000026001008041000000c001100210000002b5011001c70000800a02000039097d09780000040f0000000100200190000006530000613d000000000101043b0000000b03000029000000000013004b000003fd0000a13d000000400100043d0000004402100039000002b703000041000000000032043500000024021000390000001403000039000004c00000013d000000240030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000401100370000000000101043b000b00000001001d000002630010009c000001540000213d000000000100041a00000263021001970000000001000411000000000012004b000003b40000c13d0000000b01000029000000000001004b000004070000c13d0000026901000041000000800010043f0000002001000039000000840010043f0000001c01000039000000a40010043f000002ae01000041000000c40010043f000002af010000410000097f00010430000000440030008c000001540000413d0000000002000416000000000002004b000001540000c13d0000000402100370000000000202043b000002630020009c000001540000213d000000000300041a00000263043001970000000003000411000000000034004b000003db0000c13d0000029d04000041000000800040043f0000002401100370000000000101043b000000840030043f000000a40010043f0000000001000414000002600010009c0000026001008041000000c001100210000002a9011001c7097d09730000040f000000800a00003900000060031002700000026003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000003790000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000003750000c13d000000000006004b000003860000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000004260000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000001540000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000001540000c13d097d08440000040f00000000010000190000097e0001042e0000000001000416000000000001004b000001540000c13d0000028b01000041000000800010043f0000028c010000410000097e0001042e0000000001000416000000000001004b000001540000c13d0000000a01000039000000800010043f0000028c010000410000097e0001042e0000000001000416000000000001004b000001540000c13d0000002d01000039000000800010043f0000028c010000410000097e0001042e000000800030043f0000014000000443000001600030044300000020020000390000010000200443000001200010044300000267010000410000097e0001042e0000028902000041000000800020043f000000840010043f0000028a010000410000097f000104300000028901000041000000800010043f000000840050043f0000028a010000410000097f000104300000001f0530018f0000026206300198000000400200043d0000000004620019000004310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000003c50000c13d000004310000013d0000000201000039000000000012041b0000000001000416000000000001004b000003ec0000c13d0000026901000041000000800010043f0000002001000039000000840010043f0000002101000039000000a40010043f000002bc01000041000000c40010043f000002bd01000041000000e40010043f000002be010000410000097f000104300000028901000041000000800010043f000000840030043f0000028a010000410000097f000104300000026401100197000000000161019f000000000010041b0000000001000414000002600010009c0000026001008041000000c00110021000000265011001c70000800d0200003900000003030000390000026604000041000004210000013d0000000001000411000000a00010043f0000002001000039000000800010043f000000c001000039000000400010043f0000008001000039097d08580000040f000000400400043d000002b00040009c000004440000a13d000002a201000041000000000010043f0000004101000039000000040010043f0000026c010000410000097f00010430000000000100041a00000263041001970000000001000414000002600010009c0000026001008041000000c001100210000000000003004b000004840000c13d0000000002040019000004870000013d000000000010043f0000000501000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000000000201041a000002c20220019700000001022001bf000000000021041b0000000001000414000002600010009c0000026001008041000000c00110021000000265011001c70000800d020000390000000203000039000002ad040000410000000b05000029097d09730000040f0000000100200190000001540000613d00000000010000190000097e0001042e0000001f0530018f0000026206300198000000400200043d0000000004620019000004310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000042d0000c13d000000000005004b0000043e0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000002600020009c00000260020080410000004002200210000000000112019f0000097f00010430000000e002400039000000400020043f00000040034000390000000b02000029000a00000003001d000000000023043500000020034000390000000002000416000800000003001d000000000023043500000000020004110000000000240435000000c002400039000500000002001d0000000000020435000000a002400039000400000002001d00000000000204350000008002400039000300000002001d0000000000020435000900000004001d0000006002400039000700000002001d0000000000020435000600000001001d000000000010043f0000000401000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000090200002900000000020204330000026302200197000000000101043b000000000301041a0000026403300197000000000223019f000000000021041b000000080200002900000000020204330000000103100039000000000023041b0000000a020000290000000002020433000000010020008c0000047e0000213d00000007030000290000000003030433000000010030008c0000051a0000a13d000002a201000041000000000010043f0000002101000039000000040010043f0000026c010000410000097f0001043000000265011001c700008009020000390000000005000019097d09730000040f00000060031002700000026003300198000004940000c13d0000000100200190000004240000c13d000000400100043d0000004402100039000002b603000041000000000032043500000024021000390000001103000039000004c00000013d0000001f0430003900000261044001970000003f04400039000002a004400197000000400500043d0000000004450019000000000054004b000000000600003900000001060040390000028d0040009c000003f70000213d0000000100600190000003f70000c13d000000400040043f0000001f0430018f000000000635043600000262053001980000000003560019000004ac0000613d000000000701034f000000007807043c0000000006860436000000000036004b000004a80000c13d000000000004004b0000048b0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000048b0000013d000000400100043d00000044021000390000029003000041000000000032043500000024021000390000000d03000039000000000032043500000269020000410000000000210435000000040210003900000020030000390000000000320435000002600010009c000002600100804100000040011002100000026a011001c70000097f00010430000002b901000041000000000015043500000000010004110000000000140435000000000100041000000000001304350000000a010000290000000000120435000002600050009c0000026001000041000000000105401900000040011002100000000002000414000002600020009c0000026002008041000000c002200210000000000112019f0000026a011001c70000000b02000029000800000005001d097d09730000040f00000060031002700000026003300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000080b0000290000000805700029000004f00000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000004ec0000c13d000000000006004b000004fd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000005590000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000028d0010009c000003f70000213d0000000100200190000003f70000c13d000000400010043f000000200030008c000001540000413d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b000001540000c13d000000000002004b000005650000c13d0000004402100039000002a303000041000000000032043500000024021000390000001503000039000004c00000013d0000029a0220019700000008033002100000ff000330018f000000000223019f0000000201100039000000000301041a000002b103300197000000000232019f000000030300002900000000030304330000001003300210000002b203300197000000000232019f00000004030000290000000003030433000000000003004b0000029c030000410000000003006019000000000232019f00000005030000290000000003030433000000000003004b0000029b030000410000000003006019000000000232019f000000000021041b000000400100043d00000020021000390000000b030000290000000000320435000000000200041600000000002104350000006002100039000000000002043500000040021000390000000000020435000002600010009c000002600100804100000040011002100000000002000414000002600020009c0000026002008041000000c002200210000000000112019f000002a5011001c70000800d020000390000000303000039000002b30400004100000006050000290000000006000411097d09730000040f0000000100200190000001540000613d0000000101000039000000000011041b000000400100043d00000006020000290000000000210435000002600010009c00000260010080410000004001100210000002ab011001c70000097e0001042e0000001f0530018f0000026206300198000000400200043d0000000004620019000004310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000005600000c13d000004310000013d00000020021000390000000003000411000000000032043500000020020000390000000000210435000002ba0010009c000003f70000213d0000004002100039000000400020043f097d08580000040f000700000001001d000000400100043d000800000001001d000002b00010009c000003f70000213d0000000803000029000000e001300039000000400010043f00000080023000390000000b01000029000300000002001d000000000012043500000060023000390000000101000039000400000002001d000000000012043500000040023000390000000901000029000600000002001d000000000012043500000020023000390000000a01000029000500000002001d000000000012043500000000010004110000000000130435000000c001300039000200000001001d0000000000010435000000a001300039000100000001001d00000000000104350000000701000029000000000010043f0000000401000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000080200002900000000020204330000026302200197000000000101043b000000000301041a0000026403300197000000000223019f000000000021041b000000050200002900000000020204330000000103100039000000000023041b00000006020000290000000002020433000000020020008c0000047e0000813d00000004030000290000000003030433000000010030008c0000047e0000213d0000029a0220019700000008033002100000ff000330018f000000000223019f0000000201100039000000000301041a000002b103300197000000000232019f000000030300002900000000030304330000001003300210000002b203300197000000000232019f00000001030000290000000003030433000000000003004b0000029c030000410000000003006019000000000232019f00000002030000290000000003030433000000000003004b0000029b030000410000000003006019000000000232019f000000000021041b000000400100043d00000060021000390000000b0300002900000000003204350000004002100039000000010300003900000000003204350000002002100039000000090300002900000000003204350000000a020000290000000000210435000002600010009c000002600100804100000040011002100000000002000414000002600020009c0000026002008041000000c002200210000000000112019f000002a5011001c70000800d020000390000000303000039000002b30400004100000007050000290000000006000411097d09730000040f0000000100200190000001540000613d0000000101000039000000000011041b000000400100043d0000000702000029000005530000013d0000000a0010006b000004240000c13d00000004010000390000000101100367000000000101043b000000400400043d000000400240003900000000030004100000000000320435000a00000004001d0000002002400039000700000002001d0000000000120435000002950100004100000000001004430000000001000414000002600010009c0000026001008041000000c00110021000000296011001c70000800b02000039097d09780000040f0000000100200190000006530000613d000000000101043b0000000a0400002900000080024000390000000b0300002900000000003204350000006002400039000000000012043500000080010000390000000000140435000002970040009c000003f70000213d0000000a02000029000000a001200039000600000001001d000000400010043f0000000701000029000002600010009c000002600100804100000040011002100000000002020433000002600020009c00000260020080410000006002200210000000000112019f0000000002000414000002600020009c0000026002008041000000c002200210000000000112019f00000265011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000700000001001d0000000b01000029000000000010043f0000000401000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b0000000201100039000000000101041a0000029800100198000006540000c13d0000000b01000029000000000010043f0000000401000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000a00000001001d000000000101041a0000026304100198000006660000c13d000000400100043d0000004402100039000002a703000041000000000032043500000024021000390000001203000039000004c00000013d000000000001042f0000026901000041000000060400002900000000001404350000000a03000029000000e40130003900000299020000410000000000210435000000c40130003900000013020000390000000000210435000000a40130003900000020020000390000000000210435000002600040009c000002600400804100000040014002100000026a011001c70000097f000104300000000a010000290000000201100039000600000001001d000000000201041a000000ff0520018f000000010050008c0000047e0000213d0000000701000029000003e83010011a0000029a01200197000000000005004b0000000a05000029000700010050003d0000067a0000c13d000001c20030008c000006980000813d000002a1011001c70000000603000029000000000013041b000006820000013d000001c20030008c0000029b030000410000000003004019000000000131019f0000029c011001c70000000603000029000000000013041b0000069b0000413d0000000701000029000000000101041a0005000100100218000000000001004b0000068a0000613d00000005011000f9000000020010008c000006b20000c13d0000000801200270000000ff0110018f000000010010008c0000047e0000213d000000000001004b000006b80000c13d0000000001000414000002600010009c0000026001008041000000c001100210000000050000006b000007500000c13d0000000002040019000007540000013d0000029c011001c70000000603000029000000000013041b0000000701000029000000000101041a0000000a041000c9000000000001004b000006a30000613d00000000011400d90000000a0010008c000006b20000c13d0000000801200270000000ff0110018f000000010010008c0000047e0000213d000000640340011a000000000001004b000007030000c13d0000000001000414000002600010009c0000026001008041000000c001100210000000630040008c000007c30000213d0000028b02000041000007c70000013d000002a201000041000000000010043f0000001101000039000000040010043f0000026c010000410000097f00010430000000400500043d000400000005001d0000002401500039000000050300002900000000003104350000029d01000041000000000015043500000004015000390000000000410435000002600050009c0000026001000041000000000105401900000040011002100000000003000414000002600030009c0000026003008041000000c003300210000000000113019f0000029e011001c700000010022002700000026302200197097d09730000040f00000060031002700000026003300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000040b0000290000000405700029000006de0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000006da0000c13d000000000006004b000006eb0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000007f60000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000028d0010009c000003f70000213d0000000100200190000003f70000c13d000000400010043f000000200030008c000001540000413d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b000001540000c13d000000000002004b000005140000613d000007800000013d000000400400043d000500000004001d000000240140003900000000003104350000029d01000041000000000014043500000004014000390000028b030000410000000000310435000002600040009c0000026001000041000000000104401900000040011002100000000003000414000002600030009c0000026003008041000000c003300210000000000131019f0000029e011001c700000010022002700000026302200197097d09730000040f00000060031002700000026003300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000050b0000290000000505700029000007290000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000007250000c13d000000000006004b000007360000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000008020000613d0000001f01400039000000600210018f0000000001b20019000000000021004b000000000200003900000001020040390000028d0010009c000003f70000213d0000000100200190000003f70000c13d000000400010043f000000200030008c000001540000413d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b000001540000c13d000000000002004b000007f30000613d0000000002000019000500000000001d000007810000013d00000265011001c7000080090200003900000005030000290000000005000019097d09730000040f000000600310027000000260033001980000077d0000613d0000001f0430003900000261044001970000003f04400039000002a004400197000000400500043d0000000004450019000000000054004b000000000600003900000001060040390000028d0040009c000003f70000213d0000000100600190000003f70000c13d000000400040043f0000001f0430018f000000000635043600000262053001980000000003560019000007700000613d000000000701034f000000007807043c0000000006860436000000000036004b0000076c0000c13d000000000004004b0000077d0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400100043d00000001002001900000080e0000613d00000001020000390000000a03000029000000000303041a0000000604000029000000000504041a0000000704000029000000000404041a0000000004410436000000ff0550018f000000010050008c0000047e0000213d000000600610003900000005070000290000000000760435000000400610003900000000002604350000000000540435000002600010009c000002600100804100000040011002100000000002000414000002600020009c0000026002008041000000c002200210000000000112019f000002a5011001c700000263063001970000800d020000390000000303000039000002a6040000410000000b05000029097d09730000040f0000000100200190000001540000613d0000000201000039000000000101041a0000000b0010006c000007bd0000a13d000000010100008a000000080110014f0000000903000029000000000203041a000000000112016f000000000013041b0000000b01000029000000000010043f0000000301000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000001540000613d000000000101043b000000000001041b00000000010000190000097e0001042e000002a201000041000000000010043f0000003201000039000000040010043f0000026c010000410000097f0001043000000265011001c700008009020000390000028b040000410000000005000019097d09730000040f00000060031002700000026003300198000007f00000613d0000001f0430003900000261044001970000003f04400039000002a004400197000000400500043d0000000004450019000000000054004b000000000600003900000001060040390000028d0040009c000003f70000213d0000000100600190000003f70000c13d000000400040043f0000001f0430018f000000000635043600000262053001980000000003560019000007e30000613d000000000701034f000000007807043c0000000006860436000000000036004b000007df0000c13d000000000004004b000007f00000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400100043d00000001002001900000074d0000c13d00000044021000390000029f03000041000008100000013d0000001f0530018f0000026206300198000000400200043d0000000004620019000004310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007fd0000c13d000004310000013d0000001f0530018f0000026206300198000000400200043d0000000004620019000004310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000008090000c13d000004310000013d0000004402100039000002a403000041000000000032043500000024021000390000001303000039000004c00000013d0000002009100039000000000039043500000263022001970000000000210435000000020040008c0000082f0000813d00000040021000390000000000420435000000010050008c0000082f0000213d000000000008004b0000000002000039000000010200c039000000c0031000390000000000230435000000000007004b0000000002000039000000010200c039000000a003100039000000000023043500000263026001970000008003100039000000000023043500000060021000390000000000520435000000e001100039000000000001042d000002a201000041000000000010043f0000002101000039000000040010043f0000026c010000410000097f000104300000000202000039000000000302041a000000000013004b0000083e0000a13d000000000020043f0000001f0210018f0000000501100270000002940110009a000000000001042d000002a201000041000000000010043f0000003201000039000000040010043f0000026c010000410000097f00010430000000000001004b000008470000613d000000000001042d000000400100043d0000004402100039000002a303000041000000000032043500000024021000390000001503000039000000000032043500000269020000410000000000210435000000040210003900000020030000390000000000320435000002600010009c000002600100804100000040011002100000026a011001c70000097f0001043000050000000000020000000202000039000000000302041a000500000003001d000002c30030009c000009300000813d00000005060000290000000103600039000000000032041b000000000020043f0000000302600210000000f80220018f000000ff0320020f000002c8033001670000000504600270000002940440009a000000000504041a000000000335016f000000010220020f000000000223019f000000000024041b0000004003000039000000400800043d00000040028000390000000000320435000000200780003900000000006704350000006003800039000000002101043400000000001304350000008003800039000000000001004b000008810000613d000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b0000087a0000413d000400000007001d000000000231001900000000000204350000001f01100039000002c101100197000000600210003900000000002804350000009f01100039000002c102100197000300000008001d0000000001820019000000000021004b000000000200003900000001020040390000028d0010009c000009300000213d0000000100200190000009300000c13d000000400010043f000002c40100004100000000001004430000000001000414000002600010009c0000026001008041000000c00110021000000296011001c70000800b02000039097d09780000040f0000000100200190000009380000613d000000000101043b000202c6001000a4000009390000413d000002950100004100000000001004430000000001000414000002600010009c0000026001008041000000c00110021000000296011001c70000800b02000039097d09780000040f0000000100200190000009380000613d000000000201043b000000400100043d000000400310003900000040040000390000000000430435000000010020008c000000020200003900000005020060390000000203000029000000030330011a00000000032300190000002002100039000200000003001d000000000032043500000003030000290000000003030433000000600410003900000000003404350000008004100039000000000003004b0000000408000029000008cb0000613d000000000500001900000000064500190000000007850019000000000707043300000000007604350000002005500039000000000035004b000008c40000413d000000000443001900000000000404350000001f03300039000002c103300197000000600430003900000000004104350000009f03300039000002c1043001970000000003140019000000000043004b000000000400003900000001040040390000028d0030009c000009300000213d0000000100400190000009300000c13d000000400030043f000002600020009c000002600200804100000040022002100000000001010433000002600010009c00000260010080410000006001100210000000000121019f0000000002000414000002600020009c0000026002008041000000c002200210000000000112019f00000265011001c70000801002000039097d09780000040f0000000100200190000009360000613d000000000101043b000100000001001d0000000501000029000000000010043f0000000301000039000000200010043f0000000001000414000002600010009c0000026001008041000000c00110021000000293011001c70000801002000039097d09780000040f0000000100200190000009360000613d000000000101043b0000000102000029000000000021041b000000400100043d0000002002100039000000400300003900000000003204350000000202000029000000000021043500000003020000290000000002020433000000400310003900000000002304350000006003100039000000000002004b0000000407000029000009160000613d000000000400001900000000053400190000000006740019000000000606043300000000006504350000002004400039000000000024004b0000090f0000413d0000001f04200039000002c104400197000000000232001900000000000204350000006002400039000002600020009c00000260020080410000006002200210000002600010009c00000260010080410000004001100210000000000112019f0000000002000414000002600020009c0000026002008041000000c002200210000000000112019f00000265011001c70000800d020000390000000103000039000002c704000041097d09730000040f0000000100200190000009360000613d0000000501000029000000000001042d000002a201000041000000000010043f0000004101000039000000040010043f0000026c010000410000097f0001043000000000010000190000097f00010430000000000001042f000002a201000041000000000010043f0000001101000039000000040010043f0000026c010000410000097f00010430000000000001042f000002600010009c00000260010080410000004001100210000002600020009c00000260020080410000006002200210000000000112019f0000000002000414000002600020009c0000026002008041000000c002200210000000000112019f00000265011001c70000801002000039097d09780000040f0000000100200190000009530000613d000000000101043b000000000001042d00000000010000190000097f0001043000000000050100190000000000200443000000050030008c000009630000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b0000095b0000413d000002600030009c000002600300804100000060013002100000000002000414000002600020009c0000026002008041000000c002200210000000000112019f000002c9011001c70000000002050019097d09780000040f0000000100200190000009720000613d000000000101043b000000000001042d000000000001042f00000976002104210000000102000039000000000001042d0000000002000019000000000001042d0000097b002104230000000102000039000000000001042d0000000002000019000000000001042d0000097d000004320000097e0001042e0000097f0001043000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000002000000000000000000000000000000800000010000000000000000006f70657261746f7220616464726573732063616e6e6f74206265207a65726f0008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000001e4fbdf700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000715018a5000000000000000000000000000000000000000000000000000000008da5cb5a00000000000000000000000000000000000000000000000000000000c4f8f27a00000000000000000000000000000000000000000000000000000000c4f8f27b00000000000000000000000000000000000000000000000000000000ebd0905400000000000000000000000000000000000000000000000000000000f2fde38b000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000009e281a9800000000000000000000000000000000000000000000000000000000b3f6b99a0000000000000000000000000000000000000000000000000000000075ce7ffe0000000000000000000000000000000000000000000000000000000075ce7fff00000000000000000000000000000000000000000000000000000000763191900000000000000000000000000000000000000000000000000000000079141f8000000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000075151b63000000000000000000000000000000000000000000000000000000004ae332740000000000000000000000000000000000000000000000000000000068c4ac250000000000000000000000000000000000000000000000000000000068c4ac26000000000000000000000000000000000000000000000000000000006d69fcaf000000000000000000000000000000000000000000000000000000006f9fb98a000000000000000000000000000000000000000000000000000000004ae3327500000000000000000000000000000000000000000000000000000000558cc7200000000000000000000000000000000000000000000000000000000022af00f90000000000000000000000000000000000000000000000000000000022af00fa000000000000000000000000000000000000000000000000000000002e1a7d4d000000000000000000000000000000000000000000000000000000003aecd0e300000000000000000000000000000000000000000000000000000000000b46f8000000000000000000000000000000000000000000000000000000001ccc5e05118cdaa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000000000000000000000000004a1f4ee64066adc42eefb174907e5714f9e995b30000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000006f6e6c79206f70657261746f72000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000bfa87805ed57dc1f0d489ce33be4c4577d74ccde357eeeee058a32c55c44a5329a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000ff0000000000000000000000000000000000000000000042657420616c726561647920736574746c656400000000000000000000000000ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff00000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000466565207472616e73666572206661696c65640000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffe000000000000000000101000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000546f6b656e207472616e73666572206661696c65640000000000000000000000455448207472616e73666572206661696c6564000000000000000000000000000200000000000000000000000000000000000080000000000000000000000000cebabe5bd31a8f893260a4b35a44c95f3517b2ab1320d162c9e75ca5fbc5ca2842657420646f6573206e6f742065786973740000000000000000000000000000726571756573742066756c66696c6c6564206f72206d697373696e670000000000000000000000000000000000000000000000440000008000000000000000004c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd300000000000000000000000000000000000000200000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f39784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a4546f6b656e20616464726573732063616e6e6f74206265207a65726f000000000000000000000000000000000000000000000064000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff1fffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000052564df7d71977465a8a3d536a2b009307957a3de804da1f80469cf03650cd4670a082310000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000240000000000000000000000005769746864726177616c206661696c6564000000000000000000000000000000496e73756666696369656e742062616c616e6365000000000000000000000000000000000000000000000000000000000000000000000080000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf546f6b656e206e6f7420737570706f727465640000000000000000000000000042657420616d6f756e74206d7573742062652067726561746572207468616e20300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000003ee5aeb5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000010000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320000000000000000000000000000000000000000000000000000000064e621260000000000000000000000000000000000000000000000000000000064e62127d91fc3685b930310b008ec37d2334870cab88a023ed8cc628a2e2ccd4e55d202ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02000002000000000000000000000000000000000000000000000000000000004132e432df290108168f91b7806ff60937229a376781befd165a73e9ffed3498
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004207f914b195238712abab084c2979ce80f93a29
-----Decoded View---------------
Arg [0] : operator (address): 0x4207F914B195238712abaB084C2979cE80f93a29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004207f914b195238712abab084c2979ce80f93a29
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.