Source Code
Latest 12 from a total of 12 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Spin | 15289550 | 1315 days ago | IN | 0.00000051 ETH | 0.00206668 | ||||
| Spin | 15289539 | 1315 days ago | IN | 0.00000051 ETH | 0.00170198 | ||||
| Spin | 15289533 | 1315 days ago | IN | 0.0000258 ETH | 0.00168533 | ||||
| Spin | 15287407 | 1316 days ago | IN | 0.00002827 ETH | 0.00126804 | ||||
| Spin | 15287381 | 1316 days ago | IN | 0.00000283 ETH | 0.00107274 | ||||
| Spin | 15287349 | 1316 days ago | IN | 0.00005663 ETH | 0.00116849 | ||||
| Spin | 15287290 | 1316 days ago | IN | 0.00000056 ETH | 0.00151484 | ||||
| Spin | 15287279 | 1316 days ago | IN | 0.00000283 ETH | 0.00135139 | ||||
| Spin | 15286967 | 1316 days ago | IN | 0.0000596 ETH | 0.00107769 | ||||
| Udpatetokens Per... | 15286961 | 1316 days ago | IN | 0 ETH | 0.00020347 | ||||
| Spin | 15286943 | 1316 days ago | IN | 0.00059604 ETH | 0.0014789 | ||||
| Spin | 15286927 | 1316 days ago | IN | 0.0000596 ETH | 0.00149918 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
spinContract
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-06
*/
// SPDX-License-Identifier: MIT
// Hel is a mini game casino built for the true degens of crypto!
// Twitter : https://twitter.com/hel_eth
// Telegram : https://t.me/Hel_Games
// Designed and Deployed by @crypt0xa
// For more info, check out https://xa0.dev
// File: @openzeppelin/contracts/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;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
// Only used in the BondingCalculator.sol
function sqrrt(uint256 a) internal pure returns (uint c) {
if (a > 3) {
c = a;
uint b = add( div( a, 2), 1 );
while (b < c) {
c = b;
b = div( add( div( a, b ), b), 2 );
}
} else if (a != 0) {
c = 1;
}
}
}
// File: @openzeppelin/contracts/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() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
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 {
_setOwner(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"
);
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* 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);
function decimals() external returns (uint8);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
pragma solidity ^0.8.0;
interface VRFCoordinatorV2Interface {
/**
* @notice Get configuration relevant for making requests
* @return minimumRequestConfirmations global min for request confirmations
* @return maxGasLimit global max for request gas limit
* @return s_provingKeyHashes list of registered key hashes
*/
function getRequestConfig()
external
view
returns (
uint16,
uint32,
bytes32[] memory
);
/**
* @notice Request a set of random words.
* @param keyHash - Corresponds to a particular oracle job which uses
* that key for generating the VRF proof. Different keyHash's have different gas price
* ceilings, so you can select a specific one to bound your maximum per request cost.
* @param subId - The ID of the VRF subscription. Must be funded
* with the minimum subscription balance required for the selected keyHash.
* @param minimumRequestConfirmations - How many blocks you'd like the
* oracle to wait before responding to the request. See SECURITY CONSIDERATIONS
* for why you may want to request more. The acceptable range is
* [minimumRequestBlockConfirmations, 200].
* @param callbackGasLimit - How much gas you'd like to receive in your
* fulfillRandomWords callback. Note that gasleft() inside fulfillRandomWords
* may be slightly less than this amount because of gas used calling the function
* (argument decoding etc.), so you may need to request slightly more than you expect
* to have inside fulfillRandomWords. The acceptable range is
* [0, maxGasLimit]
* @param numWords - The number of uint256 random values you'd like to receive
* in your fulfillRandomWords callback. Note these numbers are expanded in a
* secure way by the VRFCoordinator from a single random value supplied by the oracle.
* @return requestId - A unique identifier of the request. Can be used to match
* a request to a response in fulfillRandomWords.
*/
function requestRandomWords(
bytes32 keyHash,
uint64 subId,
uint16 minimumRequestConfirmations,
uint32 callbackGasLimit,
uint32 numWords
) external returns (uint256 requestId);
/**
* @notice Create a VRF subscription.
* @return subId - A unique subscription id.
* @dev You can manage the consumer set dynamically with addConsumer/removeConsumer.
* @dev Note to fund the subscription, use transferAndCall. For example
* @dev LINKTOKEN.transferAndCall(
* @dev address(COORDINATOR),
* @dev amount,
* @dev abi.encode(subId));
*/
function createSubscription() external returns (uint64 subId);
/**
* @notice Get a VRF subscription.
* @param subId - ID of the subscription
* @return balance - LINK balance of the subscription in juels.
* @return reqCount - number of requests for this subscription, determines fee tier.
* @return owner - owner of the subscription.
* @return consumers - list of consumer address which are able to use this subscription.
*/
function getSubscription(uint64 subId)
external
view
returns (
uint96 balance,
uint64 reqCount,
address owner,
address[] memory consumers
);
/**
* @notice Request subscription owner transfer.
* @param subId - ID of the subscription
* @param newOwner - proposed new owner of the subscription
*/
function requestSubscriptionOwnerTransfer(uint64 subId, address newOwner) external;
/**
* @notice Request subscription owner transfer.
* @param subId - ID of the subscription
* @dev will revert if original owner of subId has
* not requested that msg.sender become the new owner.
*/
function acceptSubscriptionOwnerTransfer(uint64 subId) external;
/**
* @notice Add a consumer to a VRF subscription.
* @param subId - ID of the subscription
* @param consumer - New consumer which can use the subscription
*/
function addConsumer(uint64 subId, address consumer) external;
/**
* @notice Remove a consumer from a VRF subscription.
* @param subId - ID of the subscription
* @param consumer - Consumer to remove from the subscription
*/
function removeConsumer(uint64 subId, address consumer) external;
/**
* @notice Cancel a subscription
* @param subId - ID of the subscription
* @param to - Where to send the remaining LINK to
*/
function cancelSubscription(uint64 subId, address to) external;
/*
* @notice Check to see if there exists a request commitment consumers
* for all consumers and keyhashes for a given sub.
* @param subId - ID of the subscription
* @return true if there exists at least one unfulfilled request for the subscription, false
* otherwise.
*/
function pendingRequestExists(uint64 subId) external view returns (bool);
}
pragma solidity ^0.8.4;
/** ****************************************************************************
* @notice Interface for contracts using VRF randomness
* *****************************************************************************
* @dev PURPOSE
*
* @dev Reggie the Random Oracle (not his real job) wants to provide randomness
* @dev to Vera the verifier in such a way that Vera can be sure he's not
* @dev making his output up to suit himself. Reggie provides Vera a public key
* @dev to which he knows the secret key. Each time Vera provides a seed to
* @dev Reggie, he gives back a value which is computed completely
* @dev deterministically from the seed and the secret key.
*
* @dev Reggie provides a proof by which Vera can verify that the output was
* @dev correctly computed once Reggie tells it to her, but without that proof,
* @dev the output is indistinguishable to her from a uniform random sample
* @dev from the output space.
*
* @dev The purpose of this contract is to make it easy for unrelated contracts
* @dev to talk to Vera the verifier about the work Reggie is doing, to provide
* @dev simple access to a verifiable source of randomness. It ensures 2 things:
* @dev 1. The fulfillment came from the VRFCoordinator
* @dev 2. The consumer contract implements fulfillRandomWords.
* *****************************************************************************
* @dev USAGE
*
* @dev Calling contracts must inherit from VRFConsumerBase, and can
* @dev initialize VRFConsumerBase's attributes in their constructor as
* @dev shown:
*
* @dev contract VRFConsumer {
* @dev constructor(<other arguments>, address _vrfCoordinator, address _link)
* @dev VRFConsumerBase(_vrfCoordinator) public {
* @dev <initialization with other arguments goes here>
* @dev }
* @dev }
*
* @dev The oracle will have given you an ID for the VRF keypair they have
* @dev committed to (let's call it keyHash). Create subscription, fund it
* @dev and your consumer contract as a consumer of it (see VRFCoordinatorInterface
* @dev subscription management functions).
* @dev Call requestRandomWords(keyHash, subId, minimumRequestConfirmations,
* @dev callbackGasLimit, numWords),
* @dev see (VRFCoordinatorInterface for a description of the arguments).
*
* @dev Once the VRFCoordinator has received and validated the oracle's response
* @dev to your request, it will call your contract's fulfillRandomWords method.
*
* @dev The randomness argument to fulfillRandomWords is a set of random words
* @dev generated from your requestId and the blockHash of the request.
*
* @dev If your contract could have concurrent requests open, you can use the
* @dev requestId returned from requestRandomWords to track which response is associated
* @dev with which randomness request.
* @dev See "SECURITY CONSIDERATIONS" for principles to keep in mind,
* @dev if your contract could have multiple requests in flight simultaneously.
*
* @dev Colliding `requestId`s are cryptographically impossible as long as seeds
* @dev differ.
*
* *****************************************************************************
* @dev SECURITY CONSIDERATIONS
*
* @dev A method with the ability to call your fulfillRandomness method directly
* @dev could spoof a VRF response with any random value, so it's critical that
* @dev it cannot be directly called by anything other than this base contract
* @dev (specifically, by the VRFConsumerBase.rawFulfillRandomness method).
*
* @dev For your users to trust that your contract's random behavior is free
* @dev from malicious interference, it's best if you can write it so that all
* @dev behaviors implied by a VRF response are executed *during* your
* @dev fulfillRandomness method. If your contract must store the response (or
* @dev anything derived from it) and use it later, you must ensure that any
* @dev user-significant behavior which depends on that stored value cannot be
* @dev manipulated by a subsequent VRF request.
*
* @dev Similarly, both miners and the VRF oracle itself have some influence
* @dev over the order in which VRF responses appear on the blockchain, so if
* @dev your contract could have multiple VRF requests in flight simultaneously,
* @dev you must ensure that the order in which the VRF responses arrive cannot
* @dev be used to manipulate your contract's user-significant behavior.
*
* @dev Since the block hash of the block which contains the requestRandomness
* @dev call is mixed into the input to the VRF *last*, a sufficiently powerful
* @dev miner could, in principle, fork the blockchain to evict the block
* @dev containing the request, forcing the request to be included in a
* @dev different block with a different hash, and therefore a different input
* @dev to the VRF. However, such an attack would incur a substantial economic
* @dev cost. This cost scales with the number of blocks the VRF oracle waits
* @dev until it calls responds to a request. It is for this reason that
* @dev that you can signal to an oracle you'd like them to wait longer before
* @dev responding to the request (however this is not enforced in the contract
* @dev and so remains effective only in the case of unmodified oracle software).
*/
abstract contract VRFConsumerBaseV2 {
error OnlyCoordinatorCanFulfill(address have, address want);
address private immutable vrfCoordinator;
/**
* @param _vrfCoordinator address of VRFCoordinator contract
*/
constructor(address _vrfCoordinator) {
vrfCoordinator = _vrfCoordinator;
}
/**
* @notice fulfillRandomness handles the VRF response. Your contract must
* @notice implement it. See "SECURITY CONSIDERATIONS" above for important
* @notice principles to keep in mind when implementing your fulfillRandomness
* @notice method.
*
* @dev VRFConsumerBaseV2 expects its subcontracts to have a method with this
* @dev signature, and will call it once it has verified the proof
* @dev associated with the randomness. (It is triggered via a call to
* @dev rawFulfillRandomness, below.)
*
* @param requestId The Id initially returned by requestRandomness
* @param randomWords the VRF output expanded to the requested number of words
*/
function fulfillRandomWords(uint256 requestId, uint256[] memory randomWords) internal virtual;
// rawFulfillRandomness is called by VRFCoordinator when it receives a valid VRF
// proof. rawFulfillRandomness then calls fulfillRandomness, after validating
// the origin of the call
function rawFulfillRandomWords(uint256 requestId, uint256[] memory randomWords) external {
if (msg.sender != vrfCoordinator) {
revert OnlyCoordinatorCanFulfill(msg.sender, vrfCoordinator);
}
fulfillRandomWords(requestId, randomWords);
}
}
pragma solidity ^0.8.7;
// pragma solidity >=0.7.0 <0.9.0;
contract spinContract is Ownable, VRFConsumerBaseV2{
using SafeMath for uint256;
address public hel;
IUniswapV2Pair public uniswapV2Pair;
uint256 public tax = 300; // 100 = 1%
uint256 public spinWaitTime = 0; // Time in seconds, 1 hour by default
uint256 public tokensPerSpin = 1000;
uint256[6] public spinBundles = [1, 5, 10, 25, 50, 100];
struct spinInfo{
address from;
uint256 spinType;
}
mapping (address => uint256) public lastSpin;
mapping (address => uint256) public lastWin;
mapping (address => uint256[100]) public lastSpinResults;
mapping (address => uint256) public lastBundleUsed;
mapping(uint256 => spinInfo) private _spinInit;
VRFCoordinatorV2Interface COORDINATOR;
// Your subscription ID.
uint64 s_subscriptionId;
// Rinkeby coordinator. For other networks,
// see https://docs.chain.link/docs/vrf-contracts/#configurations
address vrfCoordinator = 0x271682DEB8C4E0901D1a1550aD2e64D568E69909;
// address vrfCoordinator = 0x6168499c0cFfCaCD319c818142124B7A15E857ab;
// The gas lane to use, which specifies the maximum gas price to bump to.
// For a list of available gas lanes on each network,
// see https://docs.chain.link/docs/vrf-contracts/#configurations
bytes32 keyHash = 0x8af398995b04c28e9951adb9721ef74c74f93e6a478f39e7e0777be13527e7ef;
// bytes32 keyHash = 0xd89b2bf150e3b9e13446986e571fb9cab24b13cea0a43ea20a6049a85cc807cc;
// Depends on the number of requested values that you want sent to the
// fulfillRandomWords() function. Storing each word costs about 20,000 gas,
// so 100,000 is a safe default for this example contract. Test and adjust
// this limit based on the network that you select, the size of the request,
// and the processing of the callback request in the fulfillRandomWords()
// function.
uint32 callbackGasLimit = 500000;
// The default is 3, but you can set this higher.
uint16 requestConfirmations = 3;
// For this example, retrieve 2 random values in one request.
// Cannot exceed VRFCoordinatorV2.MAX_NUM_WORDS.
uint32 numWords = 1;
uint256[] private s_randomWords;
uint256 private s_requestId;
uint256 private counter;
event spinInit(uint256 indexed requestId, address indexed from, uint256 spinType);
event spinFinished(uint256 indexed requestId, address indexed from, uint256[] array);
constructor(uint64 subscriptionId, address _hel, address v2Pair) VRFConsumerBaseV2(vrfCoordinator)
{
uniswapV2Pair = IUniswapV2Pair(v2Pair);
hel = _hel;
COORDINATOR = VRFCoordinatorV2Interface(vrfCoordinator);
s_subscriptionId = subscriptionId;
}
receive() external payable {
}
function updateCallbackGasLimit(uint32 _newLimit) public onlyOwner{
callbackGasLimit = _newLimit;
}
function updateNumWords(uint32 _numWords) public onlyOwner{
numWords = _numWords;
}
function updateChainlinkKeyhash(bytes32 _newKeyhash) public onlyOwner{
keyHash = _newKeyhash;
}
function updateChainlinkSubscription(uint64 subscriptionId) public onlyOwner{
s_subscriptionId = subscriptionId;
}
function updateVrfCoordinator(address _newCoordinator) public onlyOwner{
vrfCoordinator = _newCoordinator;
}
function getReservesHel() public view returns (uint256, uint256){
(uint112 rev0_, uint112 rev1_, uint32 blockTimestampLast) = uniswapV2Pair.getReserves();
uint256 rev0 = uint256(rev0_);
uint256 rev1 = uint256(rev1_);
return (rev0, rev1);
}
function calculateTaxInWei(uint256 _type) public view returns (uint256){
require(_type < 6, "Spin Bundle type not supported!");
uint256 spins = spinBundles[_type];
(uint256 rev0, uint256 rev1) = getReservesHel();
uint256 priceInWeiPerToken = (rev1.mul(1e9).div(rev0));
uint256 spinTax = priceInWeiPerToken.mul(spins).mul(tokensPerSpin).mul(tax).div(10000);
return spinTax;
}
function random(uint256 i, uint256 min, uint256 max, uint256 randomSeed, address from) private pure returns (uint256) {
return min + uint256(keccak256(abi.encodePacked(randomSeed, i, from))) % (max - min + 1);
}
function calculateMultiplier(uint256 randomNumber) private pure returns (uint256 multiplier){
// 100 means 1x
multiplier = 0;
if (20 < randomNumber && randomNumber <=40){
multiplier = 50;
}
if (40 < randomNumber && randomNumber <=89){
multiplier = 100;
}
if (89 < randomNumber && randomNumber <=94){
multiplier = 200;
}
if (94 < randomNumber && randomNumber <=99){
multiplier = 300;
}
if (99 < randomNumber){
multiplier = 1500;
}
}
// Assumes the subscription is funded sufficiently.
function requestRandomWords() external onlyOwner {
// Will revert if subscription is not set and funded.
s_requestId = COORDINATOR.requestRandomWords(
keyHash,
s_subscriptionId,
requestConfirmations,
callbackGasLimit,
numWords
);
}
function fulfillRandomWords(
uint256 requeestId, /* requestId */
uint256[] memory randomWords
) internal override {
_spin(requeestId, randomWords[0]);
}
function manualFulfillRandomWords(
uint256 requestId,
uint256[] memory randomWords
) external onlyOwner {
_spin(requestId, randomWords[0]);
}
function updateSpinBundles(uint256[6] memory _bundles) public onlyOwner{
spinBundles = _bundles;
}
function setHelAddress(address _token) public onlyOwner{
hel = _token;
}
function updateV2Pair(address _pair) public onlyOwner{
uniswapV2Pair = IUniswapV2Pair(_pair);
}
function updateTax(uint256 _tax) public onlyOwner{
tax = _tax;
}
function updateSpinWaitTime(uint256 _time) public onlyOwner{
spinWaitTime = _time;
}
function udpatetokensPerSpin(uint256 _amount) public onlyOwner{
tokensPerSpin = _amount;
}
function spin(uint256 _type) public payable{
require(tx.origin == msg.sender, "Contracts not allowed!");
require(block.timestamp - lastSpin[msg.sender] >= spinWaitTime, "No spins left, please try again later!");
require(_type < 6, "Spin Bundle type not supported!");
uint256 spins = spinBundles[_type];
(uint256 rev0, uint256 rev1) = getReservesHel();
uint256 priceInWeiPerToken = (rev1.mul(1e9).div(rev0));
uint256 fees = priceInWeiPerToken.mul(spins).mul(tokensPerSpin).mul(tax).div(10000);
require(msg.value >= fees, "Not enough fee for spin!");
uint256 exactAmount = spins.mul(tokensPerSpin).mul(1e9);
IERC20(hel).transferFrom(msg.sender, address(this), exactAmount);
// Will revert if subscription is not set and funded.
s_requestId = COORDINATOR.requestRandomWords(
keyHash,
s_subscriptionId,
requestConfirmations,
callbackGasLimit,
numWords
);
_spinInit[s_requestId] = spinInfo(msg.sender, _type);
emit spinInit(s_requestId, msg.sender, _type);
}
function _spin(uint256 requestId, uint256 randomNumberSeed) private{
uint256 totalWin = 0;
uint256 randomNumber;
uint256 multiplier;
uint256 multiplierSum = 0;
uint256 _type = _spinInit[requestId].spinType;
address from = _spinInit[requestId].from;
uint256 spins = spinBundles[_type];
uint256[] memory multipliers = new uint256[](spins);
for(uint i = 0; i<spins; i++){
randomNumber = random((2*i)+1, 0, 100, randomNumberSeed, from);
multiplier = calculateMultiplier(randomNumber);
multipliers[i] = multiplier;
multiplierSum += multiplier;
}
totalWin = tokensPerSpin.mul(multiplierSum).div(100);
IERC20(hel).transfer(from, totalWin.mul(1e9));
lastSpin[from] = block.timestamp;
lastWin[from] = totalWin.mul(1e9);
lastBundleUsed[from] = _type;
emit spinFinished(requestId, from, multipliers);
}
function withdrawEthPool() external onlyOwner {
bool success;
(success,) = address(msg.sender).call{value: address(this).balance}("");
}
function emergenceRescueToken(address token) public onlyOwner{
IERC20(token).transfer(owner(), IERC20(token).balanceOf(address(this)));
}
}
// Designed and Deployed by @crypt0xa
// For more info, check out https://xa0.dev
// DISCLAIMER: I love building stuff. I am not and will not be accountable for anything anyone does with this code.
// Crypto is a high-risk investment by definition. Always DYOR and ape what you can afford to lose.
// XA :)Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint64","name":"subscriptionId","type":"uint64"},{"internalType":"address","name":"_hel","type":"address"},{"internalType":"address","name":"v2Pair","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"have","type":"address"},{"internalType":"address","name":"want","type":"address"}],"name":"OnlyCoordinatorCanFulfill","type":"error"},{"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":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"array","type":"uint256[]"}],"name":"spinFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"spinType","type":"uint256"}],"name":"spinInit","type":"event"},{"inputs":[{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"calculateTaxInWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergenceRescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReservesHel","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBundleUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSpin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastSpinResults","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastWin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"name":"manualFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requestRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setHelAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"spin","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"spinBundles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spinWaitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerSpin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"udpatetokensPerSpin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_newLimit","type":"uint32"}],"name":"updateCallbackGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_newKeyhash","type":"bytes32"}],"name":"updateChainlinkKeyhash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"subscriptionId","type":"uint64"}],"name":"updateChainlinkSubscription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_numWords","type":"uint32"}],"name":"updateNumWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[6]","name":"_bundles","type":"uint256[6]"}],"name":"updateSpinBundles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"updateSpinWaitTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"updateV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCoordinator","type":"address"}],"name":"updateVrfCoordinator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEthPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a060405261012c60035560006004556103e86005556040518060c00160405280600160ff168152602001600560ff168152602001600a60ff168152602001601960ff168152602001603260ff168152602001606460ff1681525060069060066200006c929190620003db565b5073271682deb8c4e0901d1a1550ad2e64d568e69909601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8af398995b04c28e9951adb9721ef74c74f93e6a478f39e7e0777be13527e7ef60001b6013556207a120601460006101000a81548163ffffffff021916908363ffffffff1602179055506003601460046101000a81548161ffff021916908361ffff1602179055506001601460066101000a81548163ffffffff021916908363ffffffff1602179055503480156200015a57600080fd5b5060405162003a6638038062003a668339818101604052810190620001809190620004f3565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620001c3620001b76200030f60201b60201c565b6200031760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050506200054f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b826006810192821562000412579160200282015b8281111562000411578251829060ff16905591602001919060010190620003ef565b5b50905062000421919062000425565b5090565b5b808211156200044057600081600090555060010162000426565b5090565b600080fd5b600067ffffffffffffffff82169050919050565b620004688162000449565b81146200047457600080fd5b50565b60008151905062000488816200045d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004bb826200048e565b9050919050565b620004cd81620004ae565b8114620004d957600080fd5b50565b600081519050620004ed81620004c2565b92915050565b6000806000606084860312156200050f576200050e62000444565b5b60006200051f8682870162000477565b93505060206200053286828701620004dc565b92505060406200054586828701620004dc565b9150509250925092565b6080516134f462000572600039600081816109e20152610a3601526134f46000f3fe6080604052600436106101e75760003560e01c806393a591f111610102578063ded81ba111610095578063ee7a67fc11610064578063ee7a67fc146106b1578063f2fde38b146106da578063f447c1a014610703578063f5d184a61461072c576101ee565b8063ded81ba11461061c578063e0c8628914610648578063e2f3eb001461065f578063e3deade614610688576101ee565b8063b0e8d086116100d1578063b0e8d08614610578578063cca0feb6146105a1578063cd9f62d4146105ca578063de0c3c50146105f3576101ee565b806393a591f1146104c957806399c8d556146104f4578063a5b6ea8f1461051f578063aa2be65c1461053b576101ee565b8063584e31c01161017a5780636f8c487e116101495780636f8c487e14610435578063715018a61461045e57806376cffc9a146104755780638da5cb5b1461049e576101ee565b8063584e31c01461035557806360ed946b146103925780636b42899f146103cf5780636c0b45f0146103f8576101ee565b80631fe543e3116101b65780631fe543e3146102ad578063279bd950146102d65780633b8649fc146102ff57806349bd5a5e1461032a576101ee565b80630425e0db146101f357806308374e8e146102305780630e3d57eb146102595780630e89a2d114610270576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612461565b610757565b604051610227919061249d565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612461565b610852565b005b34801561026557600080fd5b5061026e6108d8565b005b34801561027c57600080fd5b5061029760048036038101906102929190612461565b6109c5565b6040516102a4919061249d565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612611565b6109e0565b005b3480156102e257600080fd5b506102fd60048036038101906102f891906126a3565b610aa0565b005b34801561030b57600080fd5b50610314610b26565b6040516103219190612711565b60405180910390f35b34801561033657600080fd5b5061033f610b4c565b60405161034c919061278b565b60405180910390f35b34801561036157600080fd5b5061037c600480360381019061037791906127d2565b610b72565b604051610389919061249d565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906127d2565b610b8a565b6040516103c6919061249d565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190612461565b610ba2565b005b34801561040457600080fd5b5061041f600480360381019061041a91906127ff565b610c28565b60405161042c919061249d565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061287f565b610c50565b005b34801561046a57600080fd5b50610473610cf8565b005b34801561048157600080fd5b5061049c600480360381019061049791906128e8565b610d80565b005b3480156104aa57600080fd5b506104b3610e20565b6040516104c09190612711565b60405180910390f35b3480156104d557600080fd5b506104de610e49565b6040516104eb919061249d565b60405180910390f35b34801561050057600080fd5b50610509610e4f565b604051610516919061249d565b60405180910390f35b61053960048036038101906105349190612461565b610e55565b005b34801561054757600080fd5b50610562600480360381019061055d91906127d2565b611357565b60405161056f919061249d565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a91906128e8565b61136f565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612461565b61140f565b005b3480156105d657600080fd5b506105f160048036038101906105ec91906127d2565b611495565b005b3480156105ff57600080fd5b5061061a60048036038101906106159190612611565b611555565b005b34801561062857600080fd5b506106316115fa565b60405161063f929190612915565b60405180910390f35b34801561065457600080fd5b5061065d6116e1565b005b34801561066b57600080fd5b50610686600480360381019061068191906127d2565b611866565b005b34801561069457600080fd5b506106af60048036038101906106aa91906127d2565b611a02565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906129ef565b611ac2565b005b3480156106e657600080fd5b5061070160048036038101906106fc91906127d2565b611b53565b005b34801561070f57600080fd5b5061072a600480360381019061072591906127d2565b611c4b565b005b34801561073857600080fd5b50610741611d0b565b60405161074e919061249d565b60405180910390f35b60006006821061079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a79565b60405180910390fd5b6000600683600681106107b2576107b1612a99565b5b015490506000806107c16115fa565b9150915060006107f0836107e2633b9aca0085611d1190919063ffffffff16565b611d8c90919063ffffffff16565b905060006108436127106108356003546108276005546108198b89611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d8c90919063ffffffff16565b90508095505050505050919050565b61085a611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610878610e20565b73ffffffffffffffffffffffffffffffffffffffff16146108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c590612b14565b60405180910390fd5b8060058190555050565b6108e0611dd6565b73ffffffffffffffffffffffffffffffffffffffff166108fe610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b90612b14565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161097a90612b65565b60006040518083038185875af1925050503d80600081146109b7576040519150601f19603f3d011682016040523d82523d6000602084013e6109bc565b606091505b50508091505050565b600681600681106109d557600080fd5b016000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a9257337f00000000000000000000000000000000000000000000000000000000000000006040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401610a89929190612b7a565b60405180910390fd5b610a9c8282611dde565b5050565b610aa8611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610ac6610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390612b14565b60405180910390fd5b8060138190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b600f6020528060005260406000206000915090505481565b610baa611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590612b14565b60405180910390fd5b8060048190555050565b600e6020528160005260406000208160648110610c4457600080fd5b01600091509150505481565b610c58611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610c76610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390612b14565b60405180910390fd5b80601160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b610d00611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610d1e610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90612b14565b60405180910390fd5b610d7e6000611e07565b565b610d88611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610da6610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390612b14565b60405180910390fd5b80601460066101000a81548163ffffffff021916908363ffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60035481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612bef565b60405180910390fd5b600454600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f119190612c3e565b1015610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990612ce4565b60405180910390fd5b60068110610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90612a79565b60405180910390fd5b600060068260068110610fab57610faa612a99565b5b01549050600080610fba6115fa565b915091506000610fe983610fdb633b9aca0085611d1190919063ffffffff16565b611d8c90919063ffffffff16565b9050600061103c61271061102e6003546110206005546110128b89611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d8c90919063ffffffff16565b905080341015611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107890612d50565b60405180910390fd5b60006110ae633b9aca006110a060055489611d1190919063ffffffff16565b611d1190919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161110f93929190612d70565b602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190612ddf565b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30601354601160149054906101000a900467ffffffffffffffff16601460049054906101000a900461ffff16601460009054906101000a900463ffffffff16601460069054906101000a900463ffffffff166040518663ffffffff1660e01b8152600401611211959493929190612e56565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612ebe565b60168190555060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018881525060106000601654815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050503373ffffffffffffffffffffffffffffffffffffffff166016547fa5e733e5b3b570301f63ae5153f339190c0f9dc5dad64bad89acbebf202fc43a89604051611346919061249d565b60405180910390a350505050505050565b600c6020528060005260406000206000915090505481565b611377611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611395610e20565b73ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612b14565b60405180910390fd5b80601460006101000a81548163ffffffff021916908363ffffffff16021790555050565b611417611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611435610e20565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290612b14565b60405180910390fd5b8060038190555050565b61149d611dd6565b73ffffffffffffffffffffffffffffffffffffffff166114bb610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890612b14565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61155d611dd6565b73ffffffffffffffffffffffffffffffffffffffff1661157b610e20565b73ffffffffffffffffffffffffffffffffffffffff16146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890612b14565b60405180910390fd5b6115f682826000815181106115e9576115e8612a99565b5b6020026020010151611ecb565b5050565b6000806000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190612f46565b9250925092506000836dffffffffffffffffffffffffffff1690506000836dffffffffffffffffffffffffffff16905081819650965050505050509091565b6116e9611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611707610e20565b73ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175490612b14565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30601354601160149054906101000a900467ffffffffffffffff16601460049054906101000a900461ffff16601460009054906101000a900463ffffffff16601460069054906101000a900463ffffffff166040518663ffffffff1660e01b815260040161180c959493929190612e56565b602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190612ebe565b601681905550565b61186e611dd6565b73ffffffffffffffffffffffffffffffffffffffff1661188c610e20565b73ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990612b14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611906610e20565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161193f9190612711565b60206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f9190612ebe565b6040518363ffffffff1660e01b81526004016119ac929190612f99565b602060405180830381600087803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe9190612ddf565b5050565b611a0a611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611a28610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590612b14565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611aca611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611ae8610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3590612b14565b60405180910390fd5b806006906006611b4f9291906123ba565b5050565b611b5b611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611b79610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690612b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690613034565b60405180910390fd5b611c4881611e07565b50565b611c53611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611c71610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90612b14565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600080831415611d245760009050611d86565b60008284611d329190613054565b9050828482611d4191906130dd565b14611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613180565b60405180910390fd5b809150505b92915050565b6000611dce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223b565b905092915050565b600033905090565b611e038282600081518110611df657611df5612a99565b5b6020026020010151611ecb565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080806000806010600088815260200190815260200160002060010154905060006010600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060068360068110611f3c57611f3b612a99565b5b0154905060008167ffffffffffffffff811115611f5c57611f5b6124ce565b5b604051908082528060200260200182016040528015611f8a5781602001602082028036833780820191505090505b50905060005b8281101561200d57611fbf6001826002611faa9190613054565b611fb491906131a0565b600060648d886122cf565b9750611fca88612337565b965086828281518110611fe057611fdf612a99565b5b6020026020010181815250508686611ff891906131a0565b95508080612005906131f6565b915050611f90565b50612036606461202887600554611d1190919063ffffffff16565b611d8c90919063ffffffff16565b9750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8461208e633b9aca008c611d1190919063ffffffff16565b6040518363ffffffff1660e01b81526004016120ab929190612f99565b602060405180830381600087803b1580156120c557600080fd5b505af11580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190612ddf565b5042600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612159633b9aca0089611d1190919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168a7f182b4d4fc2e2e02079068b61068016180d73d7ad2c33135b506884c692e6ab1e8360405161222791906132fd565b60405180910390a350505050505050505050565b60008083118290612282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122799190613396565b60405180910390fd5b506000838561229191906130dd565b9050838561229f91906133b8565b81856122ab9190613054565b6122b591906131a0565b85146122c4576122c36133e9565b5b809150509392505050565b6000600185856122df9190612c3e565b6122e991906131a0565b8387846040516020016122fe93929190613481565b6040516020818303038152906040528051906020012060001c61232191906133b8565b8561232c91906131a0565b905095945050505050565b600081601410801561234a575060288211155b1561235457603290505b816028108015612365575060598211155b1561236f57606490505b8160591080156123805750605e8211155b1561238a5760c890505b81605e10801561239b575060638211155b156123a65761012c90505b81606310156123b5576105dc90505b919050565b82600681019282156123e9579160200282015b828111156123e85782518255916020019190600101906123cd565b5b5090506123f691906123fa565b5090565b5b808211156124135760008160009055506001016123fb565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61243e8161242b565b811461244957600080fd5b50565b60008135905061245b81612435565b92915050565b60006020828403121561247757612476612421565b5b60006124858482850161244c565b91505092915050565b6124978161242b565b82525050565b60006020820190506124b2600083018461248e565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612506826124bd565b810181811067ffffffffffffffff82111715612525576125246124ce565b5b80604052505050565b6000612538612417565b905061254482826124fd565b919050565b600067ffffffffffffffff821115612564576125636124ce565b5b602082029050602081019050919050565b600080fd5b600061258d61258884612549565b61252e565b905080838252602082019050602084028301858111156125b0576125af612575565b5b835b818110156125d957806125c5888261244c565b8452602084019350506020810190506125b2565b5050509392505050565b600082601f8301126125f8576125f76124b8565b5b813561260884826020860161257a565b91505092915050565b6000806040838503121561262857612627612421565b5b60006126368582860161244c565b925050602083013567ffffffffffffffff81111561265757612656612426565b5b612663858286016125e3565b9150509250929050565b6000819050919050565b6126808161266d565b811461268b57600080fd5b50565b60008135905061269d81612677565b92915050565b6000602082840312156126b9576126b8612421565b5b60006126c78482850161268e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126fb826126d0565b9050919050565b61270b816126f0565b82525050565b60006020820190506127266000830184612702565b92915050565b6000819050919050565b600061275161274c612747846126d0565b61272c565b6126d0565b9050919050565b600061276382612736565b9050919050565b600061277582612758565b9050919050565b6127858161276a565b82525050565b60006020820190506127a0600083018461277c565b92915050565b6127af816126f0565b81146127ba57600080fd5b50565b6000813590506127cc816127a6565b92915050565b6000602082840312156127e8576127e7612421565b5b60006127f6848285016127bd565b91505092915050565b6000806040838503121561281657612815612421565b5b6000612824858286016127bd565b92505060206128358582860161244c565b9150509250929050565b600067ffffffffffffffff82169050919050565b61285c8161283f565b811461286757600080fd5b50565b60008135905061287981612853565b92915050565b60006020828403121561289557612894612421565b5b60006128a38482850161286a565b91505092915050565b600063ffffffff82169050919050565b6128c5816128ac565b81146128d057600080fd5b50565b6000813590506128e2816128bc565b92915050565b6000602082840312156128fe576128fd612421565b5b600061290c848285016128d3565b91505092915050565b600060408201905061292a600083018561248e565b612937602083018461248e565b9392505050565b600067ffffffffffffffff821115612959576129586124ce565b5b602082029050919050565b60006129776129728461293e565b61252e565b9050806020840283018581111561299157612990612575565b5b835b818110156129ba57806129a6888261244c565b845260208401935050602081019050612993565b5050509392505050565b600082601f8301126129d9576129d86124b8565b5b60066129e6848285612964565b91505092915050565b600060c08284031215612a0557612a04612421565b5b6000612a13848285016129c4565b91505092915050565b600082825260208201905092915050565b7f5370696e2042756e646c652074797065206e6f7420737570706f727465642100600082015250565b6000612a63601f83612a1c565b9150612a6e82612a2d565b602082019050919050565b60006020820190508181036000830152612a9281612a56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612afe602083612a1c565b9150612b0982612ac8565b602082019050919050565b60006020820190508181036000830152612b2d81612af1565b9050919050565b600081905092915050565b50565b6000612b4f600083612b34565b9150612b5a82612b3f565b600082019050919050565b6000612b7082612b42565b9150819050919050565b6000604082019050612b8f6000830185612702565b612b9c6020830184612702565b9392505050565b7f436f6e747261637473206e6f7420616c6c6f7765642100000000000000000000600082015250565b6000612bd9601683612a1c565b9150612be482612ba3565b602082019050919050565b60006020820190508181036000830152612c0881612bcc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c498261242b565b9150612c548361242b565b925082821015612c6757612c66612c0f565b5b828203905092915050565b7f4e6f207370696e73206c6566742c20706c656173652074727920616761696e2060008201527f6c61746572210000000000000000000000000000000000000000000000000000602082015250565b6000612cce602683612a1c565b9150612cd982612c72565b604082019050919050565b60006020820190508181036000830152612cfd81612cc1565b9050919050565b7f4e6f7420656e6f7567682066656520666f72207370696e210000000000000000600082015250565b6000612d3a601883612a1c565b9150612d4582612d04565b602082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b6000606082019050612d856000830186612702565b612d926020830185612702565b612d9f604083018461248e565b949350505050565b60008115159050919050565b612dbc81612da7565b8114612dc757600080fd5b50565b600081519050612dd981612db3565b92915050565b600060208284031215612df557612df4612421565b5b6000612e0384828501612dca565b91505092915050565b612e158161266d565b82525050565b612e248161283f565b82525050565b600061ffff82169050919050565b612e4181612e2a565b82525050565b612e50816128ac565b82525050565b600060a082019050612e6b6000830188612e0c565b612e786020830187612e1b565b612e856040830186612e38565b612e926060830185612e47565b612e9f6080830184612e47565b9695505050505050565b600081519050612eb881612435565b92915050565b600060208284031215612ed457612ed3612421565b5b6000612ee284828501612ea9565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b612f0e81612eeb565b8114612f1957600080fd5b50565b600081519050612f2b81612f05565b92915050565b600081519050612f40816128bc565b92915050565b600080600060608486031215612f5f57612f5e612421565b5b6000612f6d86828701612f1c565b9350506020612f7e86828701612f1c565b9250506040612f8f86828701612f31565b9150509250925092565b6000604082019050612fae6000830185612702565b612fbb602083018461248e565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061301e602683612a1c565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b600061305f8261242b565b915061306a8361242b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130a3576130a2612c0f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e88261242b565b91506130f38361242b565b925082613103576131026130ae565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061316a602183612a1c565b91506131758261310e565b604082019050919050565b600060208201905081810360008301526131998161315d565b9050919050565b60006131ab8261242b565b91506131b68361242b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131eb576131ea612c0f565b5b828201905092915050565b60006132018261242b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561323457613233612c0f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132748161242b565b82525050565b6000613286838361326b565b60208301905092915050565b6000602082019050919050565b60006132aa8261323f565b6132b4818561324a565b93506132bf8361325b565b8060005b838110156132f05781516132d7888261327a565b97506132e283613292565b9250506001810190506132c3565b5085935050505092915050565b60006020820190508181036000830152613317818461329f565b905092915050565b600081519050919050565b60005b8381101561334857808201518184015260208101905061332d565b83811115613357576000848401525b50505050565b60006133688261331f565b6133728185612a1c565b935061338281856020860161332a565b61338b816124bd565b840191505092915050565b600060208201905081810360008301526133b0818461335d565b905092915050565b60006133c38261242b565b91506133ce8361242b565b9250826133de576133dd6130ae565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000819050919050565b61343361342e8261242b565b613418565b82525050565b60008160601b9050919050565b600061345182613439565b9050919050565b600061346382613446565b9050919050565b61347b613476826126f0565b613458565b82525050565b600061348d8286613422565b60208201915061349d8285613422565b6020820191506134ad828461346a565b60148201915081905094935050505056fea26469706673582212209c78cb6f1ca479926326ec0ba53d1fe7527f3e4529f94661566aea8a35c1f8a764736f6c634300080900330000000000000000000000000000000000000000000000000000000000000116000000000000000000000000a8155cf81adaa78f9cec69d698be1859d4f3bf3b0000000000000000000000004846e2ffcc60e33f2bd266aadca59ec33566e92b
Deployed Bytecode
0x6080604052600436106101e75760003560e01c806393a591f111610102578063ded81ba111610095578063ee7a67fc11610064578063ee7a67fc146106b1578063f2fde38b146106da578063f447c1a014610703578063f5d184a61461072c576101ee565b8063ded81ba11461061c578063e0c8628914610648578063e2f3eb001461065f578063e3deade614610688576101ee565b8063b0e8d086116100d1578063b0e8d08614610578578063cca0feb6146105a1578063cd9f62d4146105ca578063de0c3c50146105f3576101ee565b806393a591f1146104c957806399c8d556146104f4578063a5b6ea8f1461051f578063aa2be65c1461053b576101ee565b8063584e31c01161017a5780636f8c487e116101495780636f8c487e14610435578063715018a61461045e57806376cffc9a146104755780638da5cb5b1461049e576101ee565b8063584e31c01461035557806360ed946b146103925780636b42899f146103cf5780636c0b45f0146103f8576101ee565b80631fe543e3116101b65780631fe543e3146102ad578063279bd950146102d65780633b8649fc146102ff57806349bd5a5e1461032a576101ee565b80630425e0db146101f357806308374e8e146102305780630e3d57eb146102595780630e89a2d114610270576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612461565b610757565b604051610227919061249d565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612461565b610852565b005b34801561026557600080fd5b5061026e6108d8565b005b34801561027c57600080fd5b5061029760048036038101906102929190612461565b6109c5565b6040516102a4919061249d565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612611565b6109e0565b005b3480156102e257600080fd5b506102fd60048036038101906102f891906126a3565b610aa0565b005b34801561030b57600080fd5b50610314610b26565b6040516103219190612711565b60405180910390f35b34801561033657600080fd5b5061033f610b4c565b60405161034c919061278b565b60405180910390f35b34801561036157600080fd5b5061037c600480360381019061037791906127d2565b610b72565b604051610389919061249d565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906127d2565b610b8a565b6040516103c6919061249d565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190612461565b610ba2565b005b34801561040457600080fd5b5061041f600480360381019061041a91906127ff565b610c28565b60405161042c919061249d565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061287f565b610c50565b005b34801561046a57600080fd5b50610473610cf8565b005b34801561048157600080fd5b5061049c600480360381019061049791906128e8565b610d80565b005b3480156104aa57600080fd5b506104b3610e20565b6040516104c09190612711565b60405180910390f35b3480156104d557600080fd5b506104de610e49565b6040516104eb919061249d565b60405180910390f35b34801561050057600080fd5b50610509610e4f565b604051610516919061249d565b60405180910390f35b61053960048036038101906105349190612461565b610e55565b005b34801561054757600080fd5b50610562600480360381019061055d91906127d2565b611357565b60405161056f919061249d565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a91906128e8565b61136f565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612461565b61140f565b005b3480156105d657600080fd5b506105f160048036038101906105ec91906127d2565b611495565b005b3480156105ff57600080fd5b5061061a60048036038101906106159190612611565b611555565b005b34801561062857600080fd5b506106316115fa565b60405161063f929190612915565b60405180910390f35b34801561065457600080fd5b5061065d6116e1565b005b34801561066b57600080fd5b50610686600480360381019061068191906127d2565b611866565b005b34801561069457600080fd5b506106af60048036038101906106aa91906127d2565b611a02565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906129ef565b611ac2565b005b3480156106e657600080fd5b5061070160048036038101906106fc91906127d2565b611b53565b005b34801561070f57600080fd5b5061072a600480360381019061072591906127d2565b611c4b565b005b34801561073857600080fd5b50610741611d0b565b60405161074e919061249d565b60405180910390f35b60006006821061079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a79565b60405180910390fd5b6000600683600681106107b2576107b1612a99565b5b015490506000806107c16115fa565b9150915060006107f0836107e2633b9aca0085611d1190919063ffffffff16565b611d8c90919063ffffffff16565b905060006108436127106108356003546108276005546108198b89611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d8c90919063ffffffff16565b90508095505050505050919050565b61085a611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610878610e20565b73ffffffffffffffffffffffffffffffffffffffff16146108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c590612b14565b60405180910390fd5b8060058190555050565b6108e0611dd6565b73ffffffffffffffffffffffffffffffffffffffff166108fe610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094b90612b14565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161097a90612b65565b60006040518083038185875af1925050503d80600081146109b7576040519150601f19603f3d011682016040523d82523d6000602084013e6109bc565b606091505b50508091505050565b600681600681106109d557600080fd5b016000915090505481565b7f000000000000000000000000271682deb8c4e0901d1a1550ad2e64d568e6990973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a9257337f000000000000000000000000271682deb8c4e0901d1a1550ad2e64d568e699096040517f1cf993f4000000000000000000000000000000000000000000000000000000008152600401610a89929190612b7a565b60405180910390fd5b610a9c8282611dde565b5050565b610aa8611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610ac6610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390612b14565b60405180910390fd5b8060138190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915090505481565b600f6020528060005260406000206000915090505481565b610baa611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610bc8610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590612b14565b60405180910390fd5b8060048190555050565b600e6020528160005260406000208160648110610c4457600080fd5b01600091509150505481565b610c58611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610c76610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390612b14565b60405180910390fd5b80601160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b610d00611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610d1e610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90612b14565b60405180910390fd5b610d7e6000611e07565b565b610d88611dd6565b73ffffffffffffffffffffffffffffffffffffffff16610da6610e20565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390612b14565b60405180910390fd5b80601460066101000a81548163ffffffff021916908363ffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60035481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612bef565b60405180910390fd5b600454600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f119190612c3e565b1015610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4990612ce4565b60405180910390fd5b60068110610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90612a79565b60405180910390fd5b600060068260068110610fab57610faa612a99565b5b01549050600080610fba6115fa565b915091506000610fe983610fdb633b9aca0085611d1190919063ffffffff16565b611d8c90919063ffffffff16565b9050600061103c61271061102e6003546110206005546110128b89611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d1190919063ffffffff16565b611d8c90919063ffffffff16565b905080341015611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107890612d50565b60405180910390fd5b60006110ae633b9aca006110a060055489611d1190919063ffffffff16565b611d1190919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161110f93929190612d70565b602060405180830381600087803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190612ddf565b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30601354601160149054906101000a900467ffffffffffffffff16601460049054906101000a900461ffff16601460009054906101000a900463ffffffff16601460069054906101000a900463ffffffff166040518663ffffffff1660e01b8152600401611211959493929190612e56565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612ebe565b60168190555060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018881525060106000601654815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050503373ffffffffffffffffffffffffffffffffffffffff166016547fa5e733e5b3b570301f63ae5153f339190c0f9dc5dad64bad89acbebf202fc43a89604051611346919061249d565b60405180910390a350505050505050565b600c6020528060005260406000206000915090505481565b611377611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611395610e20565b73ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612b14565b60405180910390fd5b80601460006101000a81548163ffffffff021916908363ffffffff16021790555050565b611417611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611435610e20565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290612b14565b60405180910390fd5b8060038190555050565b61149d611dd6565b73ffffffffffffffffffffffffffffffffffffffff166114bb610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890612b14565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61155d611dd6565b73ffffffffffffffffffffffffffffffffffffffff1661157b610e20565b73ffffffffffffffffffffffffffffffffffffffff16146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c890612b14565b60405180910390fd5b6115f682826000815181106115e9576115e8612a99565b5b6020026020010151611ecb565b5050565b6000806000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561166a57600080fd5b505afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190612f46565b9250925092506000836dffffffffffffffffffffffffffff1690506000836dffffffffffffffffffffffffffff16905081819650965050505050509091565b6116e9611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611707610e20565b73ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175490612b14565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d3b1d30601354601160149054906101000a900467ffffffffffffffff16601460049054906101000a900461ffff16601460009054906101000a900463ffffffff16601460069054906101000a900463ffffffff166040518663ffffffff1660e01b815260040161180c959493929190612e56565b602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e9190612ebe565b601681905550565b61186e611dd6565b73ffffffffffffffffffffffffffffffffffffffff1661188c610e20565b73ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990612b14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611906610e20565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161193f9190612711565b60206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f9190612ebe565b6040518363ffffffff1660e01b81526004016119ac929190612f99565b602060405180830381600087803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe9190612ddf565b5050565b611a0a611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611a28610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7590612b14565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611aca611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611ae8610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3590612b14565b60405180910390fd5b806006906006611b4f9291906123ba565b5050565b611b5b611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611b79610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc690612b14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690613034565b60405180910390fd5b611c4881611e07565b50565b611c53611dd6565b73ffffffffffffffffffffffffffffffffffffffff16611c71610e20565b73ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90612b14565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600080831415611d245760009050611d86565b60008284611d329190613054565b9050828482611d4191906130dd565b14611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613180565b60405180910390fd5b809150505b92915050565b6000611dce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223b565b905092915050565b600033905090565b611e038282600081518110611df657611df5612a99565b5b6020026020010151611ecb565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080806000806010600088815260200190815260200160002060010154905060006010600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060068360068110611f3c57611f3b612a99565b5b0154905060008167ffffffffffffffff811115611f5c57611f5b6124ce565b5b604051908082528060200260200182016040528015611f8a5781602001602082028036833780820191505090505b50905060005b8281101561200d57611fbf6001826002611faa9190613054565b611fb491906131a0565b600060648d886122cf565b9750611fca88612337565b965086828281518110611fe057611fdf612a99565b5b6020026020010181815250508686611ff891906131a0565b95508080612005906131f6565b915050611f90565b50612036606461202887600554611d1190919063ffffffff16565b611d8c90919063ffffffff16565b9750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8461208e633b9aca008c611d1190919063ffffffff16565b6040518363ffffffff1660e01b81526004016120ab929190612f99565b602060405180830381600087803b1580156120c557600080fd5b505af11580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190612ddf565b5042600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612159633b9aca0089611d1190919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168a7f182b4d4fc2e2e02079068b61068016180d73d7ad2c33135b506884c692e6ab1e8360405161222791906132fd565b60405180910390a350505050505050505050565b60008083118290612282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122799190613396565b60405180910390fd5b506000838561229191906130dd565b9050838561229f91906133b8565b81856122ab9190613054565b6122b591906131a0565b85146122c4576122c36133e9565b5b809150509392505050565b6000600185856122df9190612c3e565b6122e991906131a0565b8387846040516020016122fe93929190613481565b6040516020818303038152906040528051906020012060001c61232191906133b8565b8561232c91906131a0565b905095945050505050565b600081601410801561234a575060288211155b1561235457603290505b816028108015612365575060598211155b1561236f57606490505b8160591080156123805750605e8211155b1561238a5760c890505b81605e10801561239b575060638211155b156123a65761012c90505b81606310156123b5576105dc90505b919050565b82600681019282156123e9579160200282015b828111156123e85782518255916020019190600101906123cd565b5b5090506123f691906123fa565b5090565b5b808211156124135760008160009055506001016123fb565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61243e8161242b565b811461244957600080fd5b50565b60008135905061245b81612435565b92915050565b60006020828403121561247757612476612421565b5b60006124858482850161244c565b91505092915050565b6124978161242b565b82525050565b60006020820190506124b2600083018461248e565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612506826124bd565b810181811067ffffffffffffffff82111715612525576125246124ce565b5b80604052505050565b6000612538612417565b905061254482826124fd565b919050565b600067ffffffffffffffff821115612564576125636124ce565b5b602082029050602081019050919050565b600080fd5b600061258d61258884612549565b61252e565b905080838252602082019050602084028301858111156125b0576125af612575565b5b835b818110156125d957806125c5888261244c565b8452602084019350506020810190506125b2565b5050509392505050565b600082601f8301126125f8576125f76124b8565b5b813561260884826020860161257a565b91505092915050565b6000806040838503121561262857612627612421565b5b60006126368582860161244c565b925050602083013567ffffffffffffffff81111561265757612656612426565b5b612663858286016125e3565b9150509250929050565b6000819050919050565b6126808161266d565b811461268b57600080fd5b50565b60008135905061269d81612677565b92915050565b6000602082840312156126b9576126b8612421565b5b60006126c78482850161268e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126fb826126d0565b9050919050565b61270b816126f0565b82525050565b60006020820190506127266000830184612702565b92915050565b6000819050919050565b600061275161274c612747846126d0565b61272c565b6126d0565b9050919050565b600061276382612736565b9050919050565b600061277582612758565b9050919050565b6127858161276a565b82525050565b60006020820190506127a0600083018461277c565b92915050565b6127af816126f0565b81146127ba57600080fd5b50565b6000813590506127cc816127a6565b92915050565b6000602082840312156127e8576127e7612421565b5b60006127f6848285016127bd565b91505092915050565b6000806040838503121561281657612815612421565b5b6000612824858286016127bd565b92505060206128358582860161244c565b9150509250929050565b600067ffffffffffffffff82169050919050565b61285c8161283f565b811461286757600080fd5b50565b60008135905061287981612853565b92915050565b60006020828403121561289557612894612421565b5b60006128a38482850161286a565b91505092915050565b600063ffffffff82169050919050565b6128c5816128ac565b81146128d057600080fd5b50565b6000813590506128e2816128bc565b92915050565b6000602082840312156128fe576128fd612421565b5b600061290c848285016128d3565b91505092915050565b600060408201905061292a600083018561248e565b612937602083018461248e565b9392505050565b600067ffffffffffffffff821115612959576129586124ce565b5b602082029050919050565b60006129776129728461293e565b61252e565b9050806020840283018581111561299157612990612575565b5b835b818110156129ba57806129a6888261244c565b845260208401935050602081019050612993565b5050509392505050565b600082601f8301126129d9576129d86124b8565b5b60066129e6848285612964565b91505092915050565b600060c08284031215612a0557612a04612421565b5b6000612a13848285016129c4565b91505092915050565b600082825260208201905092915050565b7f5370696e2042756e646c652074797065206e6f7420737570706f727465642100600082015250565b6000612a63601f83612a1c565b9150612a6e82612a2d565b602082019050919050565b60006020820190508181036000830152612a9281612a56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612afe602083612a1c565b9150612b0982612ac8565b602082019050919050565b60006020820190508181036000830152612b2d81612af1565b9050919050565b600081905092915050565b50565b6000612b4f600083612b34565b9150612b5a82612b3f565b600082019050919050565b6000612b7082612b42565b9150819050919050565b6000604082019050612b8f6000830185612702565b612b9c6020830184612702565b9392505050565b7f436f6e747261637473206e6f7420616c6c6f7765642100000000000000000000600082015250565b6000612bd9601683612a1c565b9150612be482612ba3565b602082019050919050565b60006020820190508181036000830152612c0881612bcc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c498261242b565b9150612c548361242b565b925082821015612c6757612c66612c0f565b5b828203905092915050565b7f4e6f207370696e73206c6566742c20706c656173652074727920616761696e2060008201527f6c61746572210000000000000000000000000000000000000000000000000000602082015250565b6000612cce602683612a1c565b9150612cd982612c72565b604082019050919050565b60006020820190508181036000830152612cfd81612cc1565b9050919050565b7f4e6f7420656e6f7567682066656520666f72207370696e210000000000000000600082015250565b6000612d3a601883612a1c565b9150612d4582612d04565b602082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b6000606082019050612d856000830186612702565b612d926020830185612702565b612d9f604083018461248e565b949350505050565b60008115159050919050565b612dbc81612da7565b8114612dc757600080fd5b50565b600081519050612dd981612db3565b92915050565b600060208284031215612df557612df4612421565b5b6000612e0384828501612dca565b91505092915050565b612e158161266d565b82525050565b612e248161283f565b82525050565b600061ffff82169050919050565b612e4181612e2a565b82525050565b612e50816128ac565b82525050565b600060a082019050612e6b6000830188612e0c565b612e786020830187612e1b565b612e856040830186612e38565b612e926060830185612e47565b612e9f6080830184612e47565b9695505050505050565b600081519050612eb881612435565b92915050565b600060208284031215612ed457612ed3612421565b5b6000612ee284828501612ea9565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b612f0e81612eeb565b8114612f1957600080fd5b50565b600081519050612f2b81612f05565b92915050565b600081519050612f40816128bc565b92915050565b600080600060608486031215612f5f57612f5e612421565b5b6000612f6d86828701612f1c565b9350506020612f7e86828701612f1c565b9250506040612f8f86828701612f31565b9150509250925092565b6000604082019050612fae6000830185612702565b612fbb602083018461248e565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061301e602683612a1c565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b600061305f8261242b565b915061306a8361242b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130a3576130a2612c0f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130e88261242b565b91506130f38361242b565b925082613103576131026130ae565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061316a602183612a1c565b91506131758261310e565b604082019050919050565b600060208201905081810360008301526131998161315d565b9050919050565b60006131ab8261242b565b91506131b68361242b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131eb576131ea612c0f565b5b828201905092915050565b60006132018261242b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561323457613233612c0f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132748161242b565b82525050565b6000613286838361326b565b60208301905092915050565b6000602082019050919050565b60006132aa8261323f565b6132b4818561324a565b93506132bf8361325b565b8060005b838110156132f05781516132d7888261327a565b97506132e283613292565b9250506001810190506132c3565b5085935050505092915050565b60006020820190508181036000830152613317818461329f565b905092915050565b600081519050919050565b60005b8381101561334857808201518184015260208101905061332d565b83811115613357576000848401525b50505050565b60006133688261331f565b6133728185612a1c565b935061338281856020860161332a565b61338b816124bd565b840191505092915050565b600060208201905081810360008301526133b0818461335d565b905092915050565b60006133c38261242b565b91506133ce8361242b565b9250826133de576133dd6130ae565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000819050919050565b61343361342e8261242b565b613418565b82525050565b60008160601b9050919050565b600061345182613439565b9050919050565b600061346382613446565b9050919050565b61347b613476826126f0565b613458565b82525050565b600061348d8286613422565b60208201915061349d8285613422565b6020820191506134ad828461346a565b60148201915081905094935050505056fea26469706673582212209c78cb6f1ca479926326ec0ba53d1fe7527f3e4529f94661566aea8a35c1f8a764736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000116000000000000000000000000a8155cf81adaa78f9cec69d698be1859d4f3bf3b0000000000000000000000004846e2ffcc60e33f2bd266aadca59ec33566e92b
-----Decoded View---------------
Arg [0] : subscriptionId (uint64): 278
Arg [1] : _hel (address): 0xA8155cf81AdAa78f9ceC69d698Be1859D4F3BF3B
Arg [2] : v2Pair (address): 0x4846E2FFCc60E33f2BD266aaDca59EC33566E92B
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000116
Arg [1] : 000000000000000000000000a8155cf81adaa78f9cec69d698be1859d4f3bf3b
Arg [2] : 0000000000000000000000004846e2ffcc60e33f2bd266aadca59ec33566e92b
Deployed Bytecode Sourcemap
22087:8818:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25825:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28358:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30578:159;;;;;;;;;;;;;:::i;:::-;;22406:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21756:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25157:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22178:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22203:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22598:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22711:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28254:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22648:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25272:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4408:94;;;;;;;;;;;;;:::i;:::-;;25052:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3757:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22288:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22245:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28470:1132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22547:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24931:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28170:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28053:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27659:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25535:280;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;27152:302;;;;;;;;;;;;;:::i;:::-;;30745:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27959:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27839:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4657:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25406:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22364:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25825:453;25888:7;25923:1;25915:5;:9;25907:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;25971:13;25987:11;25999:5;25987:18;;;;;;;:::i;:::-;;;;25971:34;;26027:12;26041;26057:16;:14;:16::i;:::-;26026:47;;;;26094:26;26124:23;26142:4;26124:13;26133:3;26124:4;:8;;:13;;;;:::i;:::-;:17;;:23;;;;:::i;:::-;26094:54;;26159:15;26177:68;26239:5;26177:57;26230:3;;26177:48;26211:13;;26177:29;26200:5;26177:18;:22;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;:52;;:57;;;;:::i;:::-;:61;;:68;;;;:::i;:::-;26159:86;;26263:7;26256:14;;;;;;;25825:453;;;:::o;28358:104::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28447:7:::1;28431:13;:23;;;;28358:104:::0;:::o;30578:159::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30635:12:::1;30679:10;30671:24;;30703:21;30671:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30658:71;;;;;30624:113;30578:159::o:0;22406:55::-;;;;;;;;;;;;;;;;;;;;:::o;21756:261::-;21870:14;21856:28;;:10;:28;;;21852:111;;21928:10;21940:14;21902:53;;;;;;;;;;;;:::i;:::-;;;;;;;;21852:111;21969:42;21988:9;21999:11;21969:18;:42::i;:::-;21756:261;;:::o;25157:107::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25245:11:::1;25235:7;:21;;;;25157:107:::0;:::o;22178:18::-;;;;;;;;;;;;;:::o;22203:35::-;;;;;;;;;;;;;:::o;22598:43::-;;;;;;;;;;;;;;;;;:::o;22711:50::-;;;;;;;;;;;;;;;;;:::o;28254:96::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28337:5:::1;28322:12;:20;;;;28254:96:::0;:::o;22648:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25272:126::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25376:14:::1;25357:16;;:33;;;;;;;;;;;;;;;;;;25272:126:::0;:::o;4408:94::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4473:21:::1;4491:1;4473:9;:21::i;:::-;4408:94::o:0;25052:97::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25132:9:::1;25121:8;;:20;;;;;;;;;;;;;;;;;;25052:97:::0;:::o;3757:87::-;3803:7;3830:6;;;;;;;;;;;3823:13;;3757:87;:::o;22288:31::-;;;;:::o;22245:24::-;;;;:::o;28470:1132::-;28545:10;28532:23;;:9;:23;;;28524:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28641:12;;28617:8;:20;28626:10;28617:20;;;;;;;;;;;;;;;;28599:15;:38;;;;:::i;:::-;:54;;28591:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;28721:1;28713:5;:9;28705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;28767:13;28783:11;28795:5;28783:18;;;;;;;:::i;:::-;;;;28767:34;;28813:12;28827;28843:16;:14;:16::i;:::-;28812:47;;;;28874:26;28904:23;28922:4;28904:13;28913:3;28904:4;:8;;:13;;;;:::i;:::-;:17;;:23;;;;:::i;:::-;28874:54;;28937:12;28952:68;29014:5;28952:57;29005:3;;28952:48;28986:13;;28952:29;28975:5;28952:18;:22;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;:52;;:57;;;;:::i;:::-;:61;;:68;;;;:::i;:::-;28937:83;;29052:4;29039:9;:17;;29031:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29102:19;29124:33;29153:3;29124:24;29134:13;;29124:5;:9;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29102:55;;29173:3;;;;;;;;;;;29166:24;;;29191:10;29211:4;29218:11;29166:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29316:11;;;;;;;;;;;:30;;;29357:7;;29375:16;;;;;;;;;;;29402:20;;;;;;;;;;;29433:16;;;;;;;;;;;29460:8;;;;;;;;;;;29316:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29302:11;:175;;;;29513:27;;;;;;;;29522:10;29513:27;;;;;;29534:5;29513:27;;;29488:9;:22;29498:11;;29488:22;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29576:10;29554:40;;29563:11;;29554:40;29588:5;29554:40;;;;;;:::i;:::-;;;;;;;;28513:1089;;;;;;28470:1132;:::o;22547:44::-;;;;;;;;;;;;;;;;;:::o;24931:113::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25027:9:::1;25008:16;;:28;;;;;;;;;;;;;;;;;;24931:113:::0;:::o;28170:76::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28234:4:::1;28228:3;:10;;;;28170:76:::0;:::o;28053:109::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28148:5:::1;28117:13;;:37;;;;;;;;;;;;;;;;;;28053:109:::0;:::o;27659:172::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27791:32:::1;27797:9;27808:11;27820:1;27808:14;;;;;;;;:::i;:::-;;;;;;;;27791:5;:32::i;:::-;27659:172:::0;;:::o;25535:280::-;25582:7;25591;25611:13;25626;25641:25;25670:13;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25610:87;;;;;;25708:12;25731:5;25723:14;;25708:29;;25748:12;25771:5;25763:14;;25748:29;;25796:4;25802;25788:19;;;;;;;;;25535:280;;:::o;27152:302::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27285:11:::1;;;;;;;;;;;:30;;;27326:7;;27344:16;;;;;;;;;;;27371:20;;;;;;;;;;;27402:16;;;;;;;;;;;27429:8;;;;;;;;;;;27285:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27271:11;:175;;;;27152:302::o:0;30745:151::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30824:5:::1;30817:22;;;30840:7;:5;:7::i;:::-;30856:5;30849:23;;;30881:4;30849:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30817:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30745:151:::0;:::o;27959:86::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28031:6:::1;28025:3;;:12;;;;;;;;;;;;;;;;;;27959:86:::0;:::o;27839:112::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27935:8:::1;27921:11;:22;;;;;;;:::i;:::-;;27839:112:::0;:::o;4657:229::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4780:1:::1;4760:22;;:8;:22;;;;4738:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4859:19;4869:8;4859:9;:19::i;:::-;4657:229:::0;:::o;25406:120::-;3988:12;:10;:12::i;:::-;3977:23;;:7;:5;:7::i;:::-;:23;;;3969:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25503:15:::1;25486:14;;:32;;;;;;;;;;;;;;;;;;25406:120:::0;:::o;22364:35::-;;;;:::o;1669:250::-;1727:7;1756:1;1751;:6;1747:47;;;1781:1;1774:8;;;;1747:47;1806:9;1822:1;1818;:5;;;;:::i;:::-;1806:17;;1851:1;1846;1842;:5;;;;:::i;:::-;:10;1834:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:1;1903:8;;;1669:250;;;;;:::o;1927:132::-;1985:7;2012:39;2016:1;2019;2012:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2005:46;;1927:132;;;;:::o;896:98::-;949:7;976:10;969:17;;896:98;:::o;27466:183::-;27608:33;27614:10;27626:11;27638:1;27626:14;;;;;;;;:::i;:::-;;;;;;;;27608:5;:33::i;:::-;27466:183;;:::o;4894:173::-;4950:16;4969:6;;;;;;;;;;;4950:25;;4995:8;4986:6;;:17;;;;;;;;;;;;;;;;;;5050:8;5019:40;;5040:8;5019:40;;;;;;;;;;;;4939:128;4894:173;:::o;29610:958::-;29686:16;29715:20;29744:18;29771:21;29805:13;29821:9;:20;29831:9;29821:20;;;;;;;;;;;:29;;;29805:45;;29859:12;29874:9;:20;29884:9;29874:20;;;;;;;;;;;:25;;;;;;;;;;;;29859:40;;29908:13;29924:11;29936:5;29924:18;;;;;;;:::i;:::-;;;;29908:34;;29953:28;29998:5;29984:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29953:51;;30019:6;30015:245;30033:5;30031:1;:7;30015:245;;;30070:47;30083:1;30080;30078;:3;;;;:::i;:::-;30077:7;;;;:::i;:::-;30086:1;30089:3;30094:16;30112:4;30070:6;:47::i;:::-;30055:62;;30141:33;30161:12;30141:19;:33::i;:::-;30128:46;;30202:10;30185:11;30197:1;30185:14;;;;;;;;:::i;:::-;;;;;;;:27;;;;;30240:10;30223:27;;;;;:::i;:::-;;;30040:3;;;;;:::i;:::-;;;;30015:245;;;;30287:41;30324:3;30287:32;30305:13;30287;;:17;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;30276:52;;30344:3;;;;;;;;;;;30337:20;;;30358:4;30364:17;30377:3;30364:8;:12;;:17;;;;:::i;:::-;30337:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30410:15;30393:8;:14;30402:4;30393:14;;;;;;;;;;;;;;;:32;;;;30450:17;30463:3;30450:8;:12;;:17;;;;:::i;:::-;30434:7;:13;30442:4;30434:13;;;;;;;;;;;;;;;:33;;;;30499:5;30476:14;:20;30491:4;30476:20;;;;;;;;;;;;;;;:28;;;;30542:4;30518:42;;30531:9;30518:42;30548:11;30518:42;;;;;;:::i;:::-;;;;;;;;29677:891;;;;;;;;29610:958;;:::o;2067:275::-;2153:7;2185:1;2181;:5;2188:12;2173:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2212:9;2228:1;2224;:5;;;;:::i;:::-;2212:17;;2264:1;2260;:5;;;;:::i;:::-;2256:1;2252;:5;;;;:::i;:::-;:13;;;;:::i;:::-;2247:1;:18;2240:26;;;;:::i;:::-;;2333:1;2326:8;;;2067:275;;;;;:::o;26289:225::-;26398:7;26504:1;26498:3;26492;:9;;;;:::i;:::-;:13;;;;:::i;:::-;26466:10;26478:1;26481:4;26449:37;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26439:48;;;;;;26431:57;;:75;;;;:::i;:::-;26425:3;:81;;;;:::i;:::-;26418:88;;26289:225;;;;;;;:::o;26522:565::-;26595:18;26678:12;26673:2;:17;:38;;;;;26709:2;26694:12;:17;;26673:38;26669:79;;;26736:2;26723:15;;26669:79;26765:12;26760:2;:17;:38;;;;;26796:2;26781:12;:17;;26760:38;26756:80;;;26823:3;26810:16;;26756:80;26853:12;26848:2;:17;:38;;;;;26884:2;26869:12;:17;;26848:38;26844:80;;;26911:3;26898:16;;26844:80;26941:12;26936:2;:17;:38;;;;;26972:2;26957:12;:17;;26936:38;26932:80;;;26999:3;26986:16;;26932:80;27029:12;27024:2;:17;27020:60;;;27066:4;27053:17;;27020:60;26522:565;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:117::-;1486:1;1483;1476:12;1500:102;1541:6;1592:2;1588:7;1583:2;1576:5;1572:14;1568:28;1558:38;;1500:102;;;:::o;1608:180::-;1656:77;1653:1;1646:88;1753:4;1750:1;1743:15;1777:4;1774:1;1767:15;1794:281;1877:27;1899:4;1877:27;:::i;:::-;1869:6;1865:40;2007:6;1995:10;1992:22;1971:18;1959:10;1956:34;1953:62;1950:88;;;2018:18;;:::i;:::-;1950:88;2058:10;2054:2;2047:22;1837:238;1794:281;;:::o;2081:129::-;2115:6;2142:20;;:::i;:::-;2132:30;;2171:33;2199:4;2191:6;2171:33;:::i;:::-;2081:129;;;:::o;2216:311::-;2293:4;2383:18;2375:6;2372:30;2369:56;;;2405:18;;:::i;:::-;2369:56;2455:4;2447:6;2443:17;2435:25;;2515:4;2509;2505:15;2497:23;;2216:311;;;:::o;2533:117::-;2642:1;2639;2632:12;2673:710;2769:5;2794:81;2810:64;2867:6;2810:64;:::i;:::-;2794:81;:::i;:::-;2785:90;;2895:5;2924:6;2917:5;2910:21;2958:4;2951:5;2947:16;2940:23;;3011:4;3003:6;2999:17;2991:6;2987:30;3040:3;3032:6;3029:15;3026:122;;;3059:79;;:::i;:::-;3026:122;3174:6;3157:220;3191:6;3186:3;3183:15;3157:220;;;3266:3;3295:37;3328:3;3316:10;3295:37;:::i;:::-;3290:3;3283:50;3362:4;3357:3;3353:14;3346:21;;3233:144;3217:4;3212:3;3208:14;3201:21;;3157:220;;;3161:21;2775:608;;2673:710;;;;;:::o;3406:370::-;3477:5;3526:3;3519:4;3511:6;3507:17;3503:27;3493:122;;3534:79;;:::i;:::-;3493:122;3651:6;3638:20;3676:94;3766:3;3758:6;3751:4;3743:6;3739:17;3676:94;:::i;:::-;3667:103;;3483:293;3406:370;;;;:::o;3782:684::-;3875:6;3883;3932:2;3920:9;3911:7;3907:23;3903:32;3900:119;;;3938:79;;:::i;:::-;3900:119;4058:1;4083:53;4128:7;4119:6;4108:9;4104:22;4083:53;:::i;:::-;4073:63;;4029:117;4213:2;4202:9;4198:18;4185:32;4244:18;4236:6;4233:30;4230:117;;;4266:79;;:::i;:::-;4230:117;4371:78;4441:7;4432:6;4421:9;4417:22;4371:78;:::i;:::-;4361:88;;4156:303;3782:684;;;;;:::o;4472:77::-;4509:7;4538:5;4527:16;;4472:77;;;:::o;4555:122::-;4628:24;4646:5;4628:24;:::i;:::-;4621:5;4618:35;4608:63;;4667:1;4664;4657:12;4608:63;4555:122;:::o;4683:139::-;4729:5;4767:6;4754:20;4745:29;;4783:33;4810:5;4783:33;:::i;:::-;4683:139;;;;:::o;4828:329::-;4887:6;4936:2;4924:9;4915:7;4911:23;4907:32;4904:119;;;4942:79;;:::i;:::-;4904:119;5062:1;5087:53;5132:7;5123:6;5112:9;5108:22;5087:53;:::i;:::-;5077:63;;5033:117;4828:329;;;;:::o;5163:126::-;5200:7;5240:42;5233:5;5229:54;5218:65;;5163:126;;;:::o;5295:96::-;5332:7;5361:24;5379:5;5361:24;:::i;:::-;5350:35;;5295:96;;;:::o;5397:118::-;5484:24;5502:5;5484:24;:::i;:::-;5479:3;5472:37;5397:118;;:::o;5521:222::-;5614:4;5652:2;5641:9;5637:18;5629:26;;5665:71;5733:1;5722:9;5718:17;5709:6;5665:71;:::i;:::-;5521:222;;;;:::o;5749:60::-;5777:3;5798:5;5791:12;;5749:60;;;:::o;5815:142::-;5865:9;5898:53;5916:34;5925:24;5943:5;5925:24;:::i;:::-;5916:34;:::i;:::-;5898:53;:::i;:::-;5885:66;;5815:142;;;:::o;5963:126::-;6013:9;6046:37;6077:5;6046:37;:::i;:::-;6033:50;;5963:126;;;:::o;6095:148::-;6167:9;6200:37;6231:5;6200:37;:::i;:::-;6187:50;;6095:148;;;:::o;6249:175::-;6358:59;6411:5;6358:59;:::i;:::-;6353:3;6346:72;6249:175;;:::o;6430:266::-;6545:4;6583:2;6572:9;6568:18;6560:26;;6596:93;6686:1;6675:9;6671:17;6662:6;6596:93;:::i;:::-;6430:266;;;;:::o;6702:122::-;6775:24;6793:5;6775:24;:::i;:::-;6768:5;6765:35;6755:63;;6814:1;6811;6804:12;6755:63;6702:122;:::o;6830:139::-;6876:5;6914:6;6901:20;6892:29;;6930:33;6957:5;6930:33;:::i;:::-;6830:139;;;;:::o;6975:329::-;7034:6;7083:2;7071:9;7062:7;7058:23;7054:32;7051:119;;;7089:79;;:::i;:::-;7051:119;7209:1;7234:53;7279:7;7270:6;7259:9;7255:22;7234:53;:::i;:::-;7224:63;;7180:117;6975:329;;;;:::o;7310:474::-;7378:6;7386;7435:2;7423:9;7414:7;7410:23;7406:32;7403:119;;;7441:79;;:::i;:::-;7403:119;7561:1;7586:53;7631:7;7622:6;7611:9;7607:22;7586:53;:::i;:::-;7576:63;;7532:117;7688:2;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7659:118;7310:474;;;;;:::o;7790:101::-;7826:7;7866:18;7859:5;7855:30;7844:41;;7790:101;;;:::o;7897:120::-;7969:23;7986:5;7969:23;:::i;:::-;7962:5;7959:34;7949:62;;8007:1;8004;7997:12;7949:62;7897:120;:::o;8023:137::-;8068:5;8106:6;8093:20;8084:29;;8122:32;8148:5;8122:32;:::i;:::-;8023:137;;;;:::o;8166:327::-;8224:6;8273:2;8261:9;8252:7;8248:23;8244:32;8241:119;;;8279:79;;:::i;:::-;8241:119;8399:1;8424:52;8468:7;8459:6;8448:9;8444:22;8424:52;:::i;:::-;8414:62;;8370:116;8166:327;;;;:::o;8499:93::-;8535:7;8575:10;8568:5;8564:22;8553:33;;8499:93;;;:::o;8598:120::-;8670:23;8687:5;8670:23;:::i;:::-;8663:5;8660:34;8650:62;;8708:1;8705;8698:12;8650:62;8598:120;:::o;8724:137::-;8769:5;8807:6;8794:20;8785:29;;8823:32;8849:5;8823:32;:::i;:::-;8724:137;;;;:::o;8867:327::-;8925:6;8974:2;8962:9;8953:7;8949:23;8945:32;8942:119;;;8980:79;;:::i;:::-;8942:119;9100:1;9125:52;9169:7;9160:6;9149:9;9145:22;9125:52;:::i;:::-;9115:62;;9071:116;8867:327;;;;:::o;9200:332::-;9321:4;9359:2;9348:9;9344:18;9336:26;;9372:71;9440:1;9429:9;9425:17;9416:6;9372:71;:::i;:::-;9453:72;9521:2;9510:9;9506:18;9497:6;9453:72;:::i;:::-;9200:332;;;;;:::o;9538:249::-;9613:4;9703:18;9695:6;9692:30;9689:56;;;9725:18;;:::i;:::-;9689:56;9775:4;9767:6;9763:17;9755:25;;9538:249;;;:::o;9811:643::-;9905:5;9930:79;9946:62;10001:6;9946:62;:::i;:::-;9930:79;:::i;:::-;9921:88;;10029:5;10082:4;10074:6;10070:17;10062:6;10058:30;10111:3;10103:6;10100:15;10097:122;;;10130:79;;:::i;:::-;10097:122;10245:6;10228:220;10262:6;10257:3;10254:15;10228:220;;;10337:3;10366:37;10399:3;10387:10;10366:37;:::i;:::-;10361:3;10354:50;10433:4;10428:3;10424:14;10417:21;;10304:144;10288:4;10283:3;10279:14;10272:21;;10228:220;;;10232:21;9911:543;;9811:643;;;;;:::o;10478:339::-;10547:5;10596:3;10589:4;10581:6;10577:17;10573:27;10563:122;;10604:79;;:::i;:::-;10563:122;10708:4;10730:81;10807:3;10799:6;10791;10730:81;:::i;:::-;10721:90;;10553:264;10478:339;;;;:::o;10823:376::-;10905:6;10954:3;10942:9;10933:7;10929:23;10925:33;10922:120;;;10961:79;;:::i;:::-;10922:120;11081:1;11106:76;11174:7;11165:6;11154:9;11150:22;11106:76;:::i;:::-;11096:86;;11052:140;10823:376;;;;:::o;11205:169::-;11289:11;11323:6;11318:3;11311:19;11363:4;11358:3;11354:14;11339:29;;11205:169;;;;:::o;11380:181::-;11520:33;11516:1;11508:6;11504:14;11497:57;11380:181;:::o;11567:366::-;11709:3;11730:67;11794:2;11789:3;11730:67;:::i;:::-;11723:74;;11806:93;11895:3;11806:93;:::i;:::-;11924:2;11919:3;11915:12;11908:19;;11567:366;;;:::o;11939:419::-;12105:4;12143:2;12132:9;12128:18;12120:26;;12192:9;12186:4;12182:20;12178:1;12167:9;12163:17;12156:47;12220:131;12346:4;12220:131;:::i;:::-;12212:139;;11939:419;;;:::o;12364:180::-;12412:77;12409:1;12402:88;12509:4;12506:1;12499:15;12533:4;12530:1;12523:15;12550:182;12690:34;12686:1;12678:6;12674:14;12667:58;12550:182;:::o;12738:366::-;12880:3;12901:67;12965:2;12960:3;12901:67;:::i;:::-;12894:74;;12977:93;13066:3;12977:93;:::i;:::-;13095:2;13090:3;13086:12;13079:19;;12738:366;;;:::o;13110:419::-;13276:4;13314:2;13303:9;13299:18;13291:26;;13363:9;13357:4;13353:20;13349:1;13338:9;13334:17;13327:47;13391:131;13517:4;13391:131;:::i;:::-;13383:139;;13110:419;;;:::o;13535:147::-;13636:11;13673:3;13658:18;;13535:147;;;;:::o;13688:114::-;;:::o;13808:398::-;13967:3;13988:83;14069:1;14064:3;13988:83;:::i;:::-;13981:90;;14080:93;14169:3;14080:93;:::i;:::-;14198:1;14193:3;14189:11;14182:18;;13808:398;;;:::o;14212:379::-;14396:3;14418:147;14561:3;14418:147;:::i;:::-;14411:154;;14582:3;14575:10;;14212:379;;;:::o;14597:332::-;14718:4;14756:2;14745:9;14741:18;14733:26;;14769:71;14837:1;14826:9;14822:17;14813:6;14769:71;:::i;:::-;14850:72;14918:2;14907:9;14903:18;14894:6;14850:72;:::i;:::-;14597:332;;;;;:::o;14935:172::-;15075:24;15071:1;15063:6;15059:14;15052:48;14935:172;:::o;15113:366::-;15255:3;15276:67;15340:2;15335:3;15276:67;:::i;:::-;15269:74;;15352:93;15441:3;15352:93;:::i;:::-;15470:2;15465:3;15461:12;15454:19;;15113:366;;;:::o;15485:419::-;15651:4;15689:2;15678:9;15674:18;15666:26;;15738:9;15732:4;15728:20;15724:1;15713:9;15709:17;15702:47;15766:131;15892:4;15766:131;:::i;:::-;15758:139;;15485:419;;;:::o;15910:180::-;15958:77;15955:1;15948:88;16055:4;16052:1;16045:15;16079:4;16076:1;16069:15;16096:191;16136:4;16156:20;16174:1;16156:20;:::i;:::-;16151:25;;16190:20;16208:1;16190:20;:::i;:::-;16185:25;;16229:1;16226;16223:8;16220:34;;;16234:18;;:::i;:::-;16220:34;16279:1;16276;16272:9;16264:17;;16096:191;;;;:::o;16293:225::-;16433:34;16429:1;16421:6;16417:14;16410:58;16502:8;16497:2;16489:6;16485:15;16478:33;16293:225;:::o;16524:366::-;16666:3;16687:67;16751:2;16746:3;16687:67;:::i;:::-;16680:74;;16763:93;16852:3;16763:93;:::i;:::-;16881:2;16876:3;16872:12;16865:19;;16524:366;;;:::o;16896:419::-;17062:4;17100:2;17089:9;17085:18;17077:26;;17149:9;17143:4;17139:20;17135:1;17124:9;17120:17;17113:47;17177:131;17303:4;17177:131;:::i;:::-;17169:139;;16896:419;;;:::o;17321:174::-;17461:26;17457:1;17449:6;17445:14;17438:50;17321:174;:::o;17501:366::-;17643:3;17664:67;17728:2;17723:3;17664:67;:::i;:::-;17657:74;;17740:93;17829:3;17740:93;:::i;:::-;17858:2;17853:3;17849:12;17842:19;;17501:366;;;:::o;17873:419::-;18039:4;18077:2;18066:9;18062:18;18054:26;;18126:9;18120:4;18116:20;18112:1;18101:9;18097:17;18090:47;18154:131;18280:4;18154:131;:::i;:::-;18146:139;;17873:419;;;:::o;18298:442::-;18447:4;18485:2;18474:9;18470:18;18462:26;;18498:71;18566:1;18555:9;18551:17;18542:6;18498:71;:::i;:::-;18579:72;18647:2;18636:9;18632:18;18623:6;18579:72;:::i;:::-;18661;18729:2;18718:9;18714:18;18705:6;18661:72;:::i;:::-;18298:442;;;;;;:::o;18746:90::-;18780:7;18823:5;18816:13;18809:21;18798:32;;18746:90;;;:::o;18842:116::-;18912:21;18927:5;18912:21;:::i;:::-;18905:5;18902:32;18892:60;;18948:1;18945;18938:12;18892:60;18842:116;:::o;18964:137::-;19018:5;19049:6;19043:13;19034:22;;19065:30;19089:5;19065:30;:::i;:::-;18964:137;;;;:::o;19107:345::-;19174:6;19223:2;19211:9;19202:7;19198:23;19194:32;19191:119;;;19229:79;;:::i;:::-;19191:119;19349:1;19374:61;19427:7;19418:6;19407:9;19403:22;19374:61;:::i;:::-;19364:71;;19320:125;19107:345;;;;:::o;19458:118::-;19545:24;19563:5;19545:24;:::i;:::-;19540:3;19533:37;19458:118;;:::o;19582:115::-;19667:23;19684:5;19667:23;:::i;:::-;19662:3;19655:36;19582:115;;:::o;19703:89::-;19739:7;19779:6;19772:5;19768:18;19757:29;;19703:89;;;:::o;19798:115::-;19883:23;19900:5;19883:23;:::i;:::-;19878:3;19871:36;19798:115;;:::o;19919:::-;20004:23;20021:5;20004:23;:::i;:::-;19999:3;19992:36;19919:115;;:::o;20040:648::-;20237:4;20275:3;20264:9;20260:19;20252:27;;20289:71;20357:1;20346:9;20342:17;20333:6;20289:71;:::i;:::-;20370:70;20436:2;20425:9;20421:18;20412:6;20370:70;:::i;:::-;20450;20516:2;20505:9;20501:18;20492:6;20450:70;:::i;:::-;20530;20596:2;20585:9;20581:18;20572:6;20530:70;:::i;:::-;20610:71;20676:3;20665:9;20661:19;20652:6;20610:71;:::i;:::-;20040:648;;;;;;;;:::o;20694:143::-;20751:5;20782:6;20776:13;20767:22;;20798:33;20825:5;20798:33;:::i;:::-;20694:143;;;;:::o;20843:351::-;20913:6;20962:2;20950:9;20941:7;20937:23;20933:32;20930:119;;;20968:79;;:::i;:::-;20930:119;21088:1;21113:64;21169:7;21160:6;21149:9;21145:22;21113:64;:::i;:::-;21103:74;;21059:128;20843:351;;;;:::o;21200:114::-;21237:7;21277:30;21270:5;21266:42;21255:53;;21200:114;;;:::o;21320:122::-;21393:24;21411:5;21393:24;:::i;:::-;21386:5;21383:35;21373:63;;21432:1;21429;21422:12;21373:63;21320:122;:::o;21448:143::-;21505:5;21536:6;21530:13;21521:22;;21552:33;21579:5;21552:33;:::i;:::-;21448:143;;;;:::o;21597:141::-;21653:5;21684:6;21678:13;21669:22;;21700:32;21726:5;21700:32;:::i;:::-;21597:141;;;;:::o;21744:661::-;21831:6;21839;21847;21896:2;21884:9;21875:7;21871:23;21867:32;21864:119;;;21902:79;;:::i;:::-;21864:119;22022:1;22047:64;22103:7;22094:6;22083:9;22079:22;22047:64;:::i;:::-;22037:74;;21993:128;22160:2;22186:64;22242:7;22233:6;22222:9;22218:22;22186:64;:::i;:::-;22176:74;;22131:129;22299:2;22325:63;22380:7;22371:6;22360:9;22356:22;22325:63;:::i;:::-;22315:73;;22270:128;21744:661;;;;;:::o;22411:332::-;22532:4;22570:2;22559:9;22555:18;22547:26;;22583:71;22651:1;22640:9;22636:17;22627:6;22583:71;:::i;:::-;22664:72;22732:2;22721:9;22717:18;22708:6;22664:72;:::i;:::-;22411:332;;;;;:::o;22749:225::-;22889:34;22885:1;22877:6;22873:14;22866:58;22958:8;22953:2;22945:6;22941:15;22934:33;22749:225;:::o;22980:366::-;23122:3;23143:67;23207:2;23202:3;23143:67;:::i;:::-;23136:74;;23219:93;23308:3;23219:93;:::i;:::-;23337:2;23332:3;23328:12;23321:19;;22980:366;;;:::o;23352:419::-;23518:4;23556:2;23545:9;23541:18;23533:26;;23605:9;23599:4;23595:20;23591:1;23580:9;23576:17;23569:47;23633:131;23759:4;23633:131;:::i;:::-;23625:139;;23352:419;;;:::o;23777:348::-;23817:7;23840:20;23858:1;23840:20;:::i;:::-;23835:25;;23874:20;23892:1;23874:20;:::i;:::-;23869:25;;24062:1;23994:66;23990:74;23987:1;23984:81;23979:1;23972:9;23965:17;23961:105;23958:131;;;24069:18;;:::i;:::-;23958:131;24117:1;24114;24110:9;24099:20;;23777:348;;;;:::o;24131:180::-;24179:77;24176:1;24169:88;24276:4;24273:1;24266:15;24300:4;24297:1;24290:15;24317:185;24357:1;24374:20;24392:1;24374:20;:::i;:::-;24369:25;;24408:20;24426:1;24408:20;:::i;:::-;24403:25;;24447:1;24437:35;;24452:18;;:::i;:::-;24437:35;24494:1;24491;24487:9;24482:14;;24317:185;;;;:::o;24508:220::-;24648:34;24644:1;24636:6;24632:14;24625:58;24717:3;24712:2;24704:6;24700:15;24693:28;24508:220;:::o;24734:366::-;24876:3;24897:67;24961:2;24956:3;24897:67;:::i;:::-;24890:74;;24973:93;25062:3;24973:93;:::i;:::-;25091:2;25086:3;25082:12;25075:19;;24734:366;;;:::o;25106:419::-;25272:4;25310:2;25299:9;25295:18;25287:26;;25359:9;25353:4;25349:20;25345:1;25334:9;25330:17;25323:47;25387:131;25513:4;25387:131;:::i;:::-;25379:139;;25106:419;;;:::o;25531:305::-;25571:3;25590:20;25608:1;25590:20;:::i;:::-;25585:25;;25624:20;25642:1;25624:20;:::i;:::-;25619:25;;25778:1;25710:66;25706:74;25703:1;25700:81;25697:107;;;25784:18;;:::i;:::-;25697:107;25828:1;25825;25821:9;25814:16;;25531:305;;;;:::o;25842:233::-;25881:3;25904:24;25922:5;25904:24;:::i;:::-;25895:33;;25950:66;25943:5;25940:77;25937:103;;;26020:18;;:::i;:::-;25937:103;26067:1;26060:5;26056:13;26049:20;;25842:233;;;:::o;26081:114::-;26148:6;26182:5;26176:12;26166:22;;26081:114;;;:::o;26201:184::-;26300:11;26334:6;26329:3;26322:19;26374:4;26369:3;26365:14;26350:29;;26201:184;;;;:::o;26391:132::-;26458:4;26481:3;26473:11;;26511:4;26506:3;26502:14;26494:22;;26391:132;;;:::o;26529:108::-;26606:24;26624:5;26606:24;:::i;:::-;26601:3;26594:37;26529:108;;:::o;26643:179::-;26712:10;26733:46;26775:3;26767:6;26733:46;:::i;:::-;26811:4;26806:3;26802:14;26788:28;;26643:179;;;;:::o;26828:113::-;26898:4;26930;26925:3;26921:14;26913:22;;26828:113;;;:::o;26977:732::-;27096:3;27125:54;27173:5;27125:54;:::i;:::-;27195:86;27274:6;27269:3;27195:86;:::i;:::-;27188:93;;27305:56;27355:5;27305:56;:::i;:::-;27384:7;27415:1;27400:284;27425:6;27422:1;27419:13;27400:284;;;27501:6;27495:13;27528:63;27587:3;27572:13;27528:63;:::i;:::-;27521:70;;27614:60;27667:6;27614:60;:::i;:::-;27604:70;;27460:224;27447:1;27444;27440:9;27435:14;;27400:284;;;27404:14;27700:3;27693:10;;27101:608;;;26977:732;;;;:::o;27715:373::-;27858:4;27896:2;27885:9;27881:18;27873:26;;27945:9;27939:4;27935:20;27931:1;27920:9;27916:17;27909:47;27973:108;28076:4;28067:6;27973:108;:::i;:::-;27965:116;;27715:373;;;;:::o;28094:99::-;28146:6;28180:5;28174:12;28164:22;;28094:99;;;:::o;28199:307::-;28267:1;28277:113;28291:6;28288:1;28285:13;28277:113;;;28376:1;28371:3;28367:11;28361:18;28357:1;28352:3;28348:11;28341:39;28313:2;28310:1;28306:10;28301:15;;28277:113;;;28408:6;28405:1;28402:13;28399:101;;;28488:1;28479:6;28474:3;28470:16;28463:27;28399:101;28248:258;28199:307;;;:::o;28512:364::-;28600:3;28628:39;28661:5;28628:39;:::i;:::-;28683:71;28747:6;28742:3;28683:71;:::i;:::-;28676:78;;28763:52;28808:6;28803:3;28796:4;28789:5;28785:16;28763:52;:::i;:::-;28840:29;28862:6;28840:29;:::i;:::-;28835:3;28831:39;28824:46;;28604:272;28512:364;;;;:::o;28882:313::-;28995:4;29033:2;29022:9;29018:18;29010:26;;29082:9;29076:4;29072:20;29068:1;29057:9;29053:17;29046:47;29110:78;29183:4;29174:6;29110:78;:::i;:::-;29102:86;;28882:313;;;;:::o;29201:176::-;29233:1;29250:20;29268:1;29250:20;:::i;:::-;29245:25;;29284:20;29302:1;29284:20;:::i;:::-;29279:25;;29323:1;29313:35;;29328:18;;:::i;:::-;29313:35;29369:1;29366;29362:9;29357:14;;29201:176;;;;:::o;29383:180::-;29431:77;29428:1;29421:88;29528:4;29525:1;29518:15;29552:4;29549:1;29542:15;29569:79;29608:7;29637:5;29626:16;;29569:79;;;:::o;29654:157::-;29759:45;29779:24;29797:5;29779:24;:::i;:::-;29759:45;:::i;:::-;29754:3;29747:58;29654:157;;:::o;29817:94::-;29850:8;29898:5;29894:2;29890:14;29869:35;;29817:94;;;:::o;29917:::-;29956:7;29985:20;29999:5;29985:20;:::i;:::-;29974:31;;29917:94;;;:::o;30017:100::-;30056:7;30085:26;30105:5;30085:26;:::i;:::-;30074:37;;30017:100;;;:::o;30123:157::-;30228:45;30248:24;30266:5;30248:24;:::i;:::-;30228:45;:::i;:::-;30223:3;30216:58;30123:157;;:::o;30286:538::-;30454:3;30469:75;30540:3;30531:6;30469:75;:::i;:::-;30569:2;30564:3;30560:12;30553:19;;30582:75;30653:3;30644:6;30582:75;:::i;:::-;30682:2;30677:3;30673:12;30666:19;;30695:75;30766:3;30757:6;30695:75;:::i;:::-;30795:2;30790:3;30786:12;30779:19;;30815:3;30808:10;;30286:538;;;;;;:::o
Swarm Source
ipfs://9c78cb6f1ca479926326ec0ba53d1fe7527f3e4529f94661566aea8a35c1f8a7
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1.73
Net Worth in ETH
0.000833
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,079.55 | 0.00083324 | $1.73 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.