More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 306 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim All | 20405549 | 30 hrs ago | IN | 0 ETH | 0.00054031 | ||||
Claim All | 20404767 | 33 hrs ago | IN | 0 ETH | 0.00025792 | ||||
Claim All | 20399173 | 2 days ago | IN | 0 ETH | 0.00090522 | ||||
Claim All | 20398895 | 2 days ago | IN | 0 ETH | 0.00094867 | ||||
Claim All | 20376967 | 5 days ago | IN | 0 ETH | 0.00161435 | ||||
Claim All | 20376941 | 5 days ago | IN | 0 ETH | 0.00153946 | ||||
Claim All | 20358685 | 7 days ago | IN | 0 ETH | 0.00109289 | ||||
Claim All | 20349978 | 9 days ago | IN | 0 ETH | 0.00050044 | ||||
Claim All | 20347451 | 9 days ago | IN | 0 ETH | 0.00051679 | ||||
Claim All | 20346578 | 9 days ago | IN | 0 ETH | 0.00080391 | ||||
Claim All | 20345616 | 9 days ago | IN | 0 ETH | 0.0004059 | ||||
Claim All | 20343663 | 9 days ago | IN | 0 ETH | 0.00069045 | ||||
Claim All | 20326423 | 12 days ago | IN | 0 ETH | 0.00130046 | ||||
Claim All | 20325205 | 12 days ago | IN | 0 ETH | 0.00148128 | ||||
Claim All | 20304712 | 15 days ago | IN | 0 ETH | 0.0005418 | ||||
Claim All | 20294226 | 16 days ago | IN | 0 ETH | 0.0009039 | ||||
Claim All | 20279639 | 18 days ago | IN | 0 ETH | 0.00043382 | ||||
Claim All | 20261545 | 21 days ago | IN | 0 ETH | 0.00043677 | ||||
Claim All | 20260298 | 21 days ago | IN | 0 ETH | 0.00030753 | ||||
Claim All | 20260292 | 21 days ago | IN | 0 ETH | 0.00031663 | ||||
Claim All | 20255741 | 22 days ago | IN | 0 ETH | 0.00050816 | ||||
Claim All | 20255736 | 22 days ago | IN | 0 ETH | 0.00054901 | ||||
Claim All | 20255730 | 22 days ago | IN | 0 ETH | 0.00052834 | ||||
Claim All | 20255724 | 22 days ago | IN | 0 ETH | 0.00045571 | ||||
Claim All | 20255718 | 22 days ago | IN | 0 ETH | 0.00051464 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
VestingControlV2
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-30 */ // Sources flattened with hardhat v2.19.3 https://hardhat.org // SPDX-License-Identifier: MIT AND UNLICENSED // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/security/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File @openzeppelin/contracts/token/ERC20/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File contracts/VestingControlV2.sol // Original license: SPDX_License_Identifier: UNLICENSED pragma solidity =0.8.19; contract VestingControlV2 is Ownable, ReentrancyGuard { event Transfer(address indexed to, uint256 token); string magic = "HA0UdnhY29wIxKPZ"; address public tokenAddr; // erc20 token address, decimals 1e18 int8 public roundLatest = -1; // round is start at 0 struct RoundOpt { uint256 startTime; // round start at uint256 endTime; // round end at uint256 totalSupply; // total erc20 token supply for this round uint256 raiseCap; // total raise cap, 0 means nolimit uint256 perUnit; // token amount = perUnit * 1ETH, 0 means we should wait for the round to end uint256 minBuy; // minimun amount per wallet uint256 maxBuy; // maximum amount per wallet, 0 means nolimit address signerAddress; // signer for whitelist, empty means nolimit // vesting period uint256 vestingStartTime; // vestingStartTime > tokenReleaseAt uint256 vestingEndTime; // uint256 tgeStartTime; uint256 tgePerc; // 0~100 } struct RoundStat { uint256 totalRaised; // eth uint256 totalToken; // token uint256 totalClaim; // token } struct Wallet { uint256 totalDeposited; // eth uint256 totalToken; // token uint256 totalClaim; // token } struct Vesting { uint256 amount; address beneficary; } mapping(int8 => RoundOpt) public roundOpts; mapping(int8 => RoundStat) public roundStat; mapping(int8 => mapping(address => Wallet)) public wallets; constructor(address _tokenAddr) { tokenAddr = _tokenAddr; } // ============= State Function ============= function currentRound() public view returns (int8) { int8 _currentRound = -1; for (int8 roundNum = 0; roundNum <= roundLatest; roundNum++) { RoundOpt storage opt = roundOpts[roundNum]; if (opt.startTime <= block.timestamp) { _currentRound = roundNum; } } return _currentRound; } // ============= Exchange Function ============= // ============= Claim Fuciton =============== // User claim function totalToken(address addr) external view returns (uint256 deposited, uint256 amount, uint256 claimable, uint256 claimed) { int8 _currentRound = currentRound(); for (int8 roundNum = 0; roundNum <= _currentRound; roundNum++) { RoundOpt storage opt = roundOpts[roundNum]; RoundStat storage stat = roundStat[roundNum]; Wallet storage wallet = wallets[roundNum][addr]; amount += _getBoughtToken(wallet, opt, stat); claimable += _claimableToken(wallet, opt, stat); claimed += wallet.totalClaim; deposited += wallet.totalDeposited; } return (deposited, amount, claimable, claimed); } function _getBoughtToken( Wallet storage wallet, RoundOpt storage opt, RoundStat storage stat ) private view returns (uint256) { if (opt.perUnit == 0) { if (opt.endTime > block.timestamp) { return 0; } else { return opt.totalSupply / stat.totalRaised * wallet.totalDeposited; } } else { return wallet.totalToken; } } function _claimableToken( Wallet storage wallet, RoundOpt storage opt, RoundStat storage stat ) private view returns (uint256) { uint256 _totalToken = _getBoughtToken(wallet, opt, stat); uint256 vested = getVestedAmount(_totalToken, opt); require(vested <= _totalToken, "AssertionFailed: vested <= _totalToken"); require(vested >= wallet.totalClaim, "AssertionFailed: vested >= wallet.totalClaim"); return vested - wallet.totalClaim; } function getVestedAmount(uint256 boughtAmount, RoundOpt storage opt) private view returns (uint256) { if (opt.tgeStartTime > block.timestamp) { return 0; } uint256 initVestedAmount = boughtAmount / 100 * opt.tgePerc; if (block.timestamp < opt.vestingStartTime) { return initVestedAmount; } uint256 vestingAmount = boughtAmount - initVestedAmount; uint256 vestedAmount = 0; if (opt.vestingEndTime < block.timestamp) { vestedAmount = vestingAmount; } else { vestedAmount = vestingAmount / (opt.vestingEndTime - opt.vestingStartTime) * (block.timestamp - opt.vestingStartTime); } return vestedAmount + initVestedAmount; } // claimAll claimable token function claimAll(address addr) external nonReentrant { int8 _currentRound = currentRound(); for (int8 roundNum = 0; roundNum <= _currentRound; roundNum++) { _claim(addr, roundNum); } } function _claim(address addr, int8 roundNum) private { RoundStat storage stat = roundStat[roundNum]; Wallet storage wallet = wallets[roundNum][addr]; uint256 claimable = _claimableToken(wallet, roundOpts[roundNum], stat); if (claimable == 0) { return; } wallet.totalClaim += claimable; stat.totalClaim += claimable; IERC20(tokenAddr).transfer(addr, claimable); emit Transfer(addr, claimable); } // =========== Admin Fuction (onlyOwner)============ // setup round function setupRound( int8 roundNum, RoundOpt calldata opt ) external onlyOwner { require(roundNum >= 0 && roundNum <= roundLatest + 1, "Presale: invalid roundNum"); require( opt.startTime > 0 && opt.endTime > opt.startTime, "Presale: invalid startTime or endTime" ); require(opt.minBuy > 0, "Presale: invalid minBuy"); require( opt.raiseCap >= 0 && opt.totalSupply > 0, "Presale: invalid raiseCap or totalSupply" ); if (opt.raiseCap > 0 && opt.totalSupply > 0) { require(opt.perUnit > 0, "Presale: invalid perUnit"); } if (roundNum > roundLatest) { roundLatest = roundNum; } roundOpts[roundNum] = opt; } function upsertVestings(int8 roundNum, Vesting[] calldata beneficaries) external onlyOwner() { for (uint256 index = 0; index < beneficaries.length; index++) { Vesting calldata beneficary = beneficaries[index]; Wallet storage wallet = wallets[roundNum][beneficary.beneficary]; wallet.totalToken = beneficary.amount; } } function updateVestingBeneficary(int8 roundNum, address from, address to) external onlyOwner() { // copy wallet Wallet memory wallet = wallets[roundNum][from]; wallets[roundNum][to] = wallet; // remove amount wallets[roundNum][from].totalToken = 0; } // withdraw function withdraw() external onlyOwner { uint256 count = address(this).balance; (payable(msg.sender)).transfer(count); } function withdrawToken(address addr) external onlyOwner { uint256 count = IERC20(tokenAddr).balanceOf(address(this)); IERC20(tokenAddr).transfer(addr, count); } // internal helper }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentRound","outputs":[{"internalType":"int8","name":"","type":"int8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roundLatest","outputs":[{"internalType":"int8","name":"","type":"int8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int8","name":"","type":"int8"}],"name":"roundOpts","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"raiseCap","type":"uint256"},{"internalType":"uint256","name":"perUnit","type":"uint256"},{"internalType":"uint256","name":"minBuy","type":"uint256"},{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"address","name":"signerAddress","type":"address"},{"internalType":"uint256","name":"vestingStartTime","type":"uint256"},{"internalType":"uint256","name":"vestingEndTime","type":"uint256"},{"internalType":"uint256","name":"tgeStartTime","type":"uint256"},{"internalType":"uint256","name":"tgePerc","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int8","name":"","type":"int8"}],"name":"roundStat","outputs":[{"internalType":"uint256","name":"totalRaised","type":"uint256"},{"internalType":"uint256","name":"totalToken","type":"uint256"},{"internalType":"uint256","name":"totalClaim","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int8","name":"roundNum","type":"int8"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"raiseCap","type":"uint256"},{"internalType":"uint256","name":"perUnit","type":"uint256"},{"internalType":"uint256","name":"minBuy","type":"uint256"},{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"address","name":"signerAddress","type":"address"},{"internalType":"uint256","name":"vestingStartTime","type":"uint256"},{"internalType":"uint256","name":"vestingEndTime","type":"uint256"},{"internalType":"uint256","name":"tgeStartTime","type":"uint256"},{"internalType":"uint256","name":"tgePerc","type":"uint256"}],"internalType":"struct VestingControlV2.RoundOpt","name":"opt","type":"tuple"}],"name":"setupRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"totalToken","outputs":[{"internalType":"uint256","name":"deposited","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"claimable","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int8","name":"roundNum","type":"int8"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"updateVestingBeneficary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int8","name":"roundNum","type":"int8"},{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"beneficary","type":"address"}],"internalType":"struct VestingControlV2.Vesting[]","name":"beneficaries","type":"tuple[]"}],"name":"upsertVestings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int8","name":"","type":"int8"},{"internalType":"address","name":"","type":"address"}],"name":"wallets","outputs":[{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalToken","type":"uint256"},{"internalType":"uint256","name":"totalClaim","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280601081526020017f48413055646e685932397749784b505a00000000000000000000000000000000815250600290816200004a919062000471565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360146101000a81548160ff021916908360000b60ff1602179055503480156200009657600080fd5b506040516200283b3803806200283b8339818101604052810190620000bc9190620005c2565b620000dc620000d06200012b60201b60201c565b6200013360201b60201c565b6001808190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620005f4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200027957607f821691505b6020821081036200028f576200028e62000231565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ba565b620003058683620002ba565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003526200034c62000346846200031d565b62000327565b6200031d565b9050919050565b6000819050919050565b6200036e8362000331565b620003866200037d8262000359565b848454620002c7565b825550505050565b600090565b6200039d6200038e565b620003aa81848462000363565b505050565b5b81811015620003d257620003c660008262000393565b600181019050620003b0565b5050565b601f8211156200042157620003eb8162000295565b620003f684620002aa565b8101602085101562000406578190505b6200041e6200041585620002aa565b830182620003af565b50505b505050565b600082821c905092915050565b6000620004466000198460080262000426565b1980831691505092915050565b600062000461838362000433565b9150826002028217905092915050565b6200047c82620001f7565b67ffffffffffffffff81111562000498576200049762000202565b5b620004a4825462000260565b620004b1828285620003d6565b600060209050601f831160018114620004e95760008415620004d4578287015190505b620004e0858262000453565b86555062000550565b601f198416620004f98662000295565b60005b828110156200052357848901518255600182019150602085019450602081019050620004fc565b868310156200054357848901516200053f601f89168262000433565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200058a826200055d565b9050919050565b6200059c816200057d565b8114620005a857600080fd5b50565b600081519050620005bc8162000591565b92915050565b600060208284031215620005db57620005da62000558565b5b6000620005eb84828501620005ab565b91505092915050565b61223780620006046000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638947606911610097578063b300696611610066578063b300696614610266578063b849352b14610298578063e4cdcbee146102b4578063f2fde38b146102ef57610100565b806389476069146101f05780638a19c8bc1461020c5780638da5cb5b1461022a57806391f3839a1461024857610100565b80635fbe4d1d116100d35780635fbe4d1d1461017a57806361ab4dad14610198578063715018a6146101ca57806377329f35146101d457610100565b8063135338231461010557806327a6520d146101215780633ccfd60b1461013d5780635cf3b15f14610147575b600080fd5b61011f600480360381019061011a91906112ec565b61030b565b005b61013b60048036038101906101369190611364565b610473565b005b6101456106b6565b005b610161600480360381019061015c91906113a5565b61070d565b60405161017194939291906113eb565b60405180910390f35b610182610836565b60405161018f919061143f565b60405180910390f35b6101b260048036038101906101ad919061145a565b61085c565b6040516101c19392919061149a565b60405180910390f35b6101d2610893565b005b6101ee60048036038101906101e991906113a5565b6108a7565b005b61020a600480360381019061020591906113a5565b610939565b005b610214610a86565b60405161022191906114e0565b60405180910390f35b610232610b13565b60405161023f919061143f565b60405180910390f35b610250610b3c565b60405161025d91906114e0565b60405180910390f35b610280600480360381019061027b91906114fb565b610b4f565b60405161028f9392919061149a565b60405180910390f35b6102b260048036038101906102ad919061158d565b610b79565b005b6102ce60048036038101906102c991906114fb565b610c3f565b6040516102e69c9b9a999897969594939291906115ed565b60405180910390f35b610309600480360381019061030491906113a5565b610cbf565b005b610313610d42565b6000600660008560000b60000b815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600660008660000b60000b815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506000600660008660000b60000b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050505050565b61047b610d42565b60008260000b121580156104b057506001600360149054906101000a900460000b6104a691906116d6565b60000b8260000b13155b6104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e69061178c565b60405180910390fd5b6000816000013511801561050a575080600001358160200135115b610549576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105409061181e565b60405180910390fd5b60008160a0013511610590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105879061188a565b60405180910390fd5b60008160600135101580156105a9575060008160400135115b6105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df9061191c565b60405180910390fd5b60008160600135118015610600575060008160400135115b1561064d57600081608001351161064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611988565b60405180910390fd5b5b600360149054906101000a900460000b60000b8260000b13156106895781600360146101000a81548160ff021916908360000b60ff1602179055505b80600460008460000b60000b815260200190815260200160002081816106af9190611cd0565b9050505050565b6106be610d42565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610709573d6000803e3d6000fd5b5050565b600080600080600061071d610a86565b905060005b8160000b8160000b1361082d576000600460008360000b60000b815260200190815260200160002090506000600560008460000b60000b815260200190815260200160002090506000600660008560000b60000b815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506107ce818484610dc0565b886107d99190611cde565b97506107e6818484610e1b565b876107f19190611cde565b96508060020154866108039190611cde565b95508060000154896108159190611cde565b9850505050808061082590611d12565b915050610722565b50509193509193565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b61089b610d42565b6108a56000610ede565b565b6002600154036108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611d87565b60405180910390fd5b600260018190555060006108fe610a86565b905060005b8160000b8160000b1361092d5761091a8382610fa2565b808061092590611d12565b915050610903565b50506001808190555050565b610941610d42565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099e919061143f565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611dbc565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610a3e929190611de9565b6020604051808303816000875af1158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190611e4a565b505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b600360149054906101000a900460000b60000b8160000b13610b0b576000600460008360000b60000b8152602001908152602001600020905042816000015411610af7578192505b508080610b0390611d12565b915050610aaf565b508091505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360149054906101000a900460000b81565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b610b81610d42565b60005b82829050811015610c395736838383818110610ba357610ba2611e77565b5b90506040020190506000600660008760000b60000b81526020019081526020016000206000836020016020810190610bdb91906113a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508160000135816001018190555050508080610c3190611ea6565b915050610b84565b50505050565b60046020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600801549080600901549080600a01549080600b015490508c565b610cc7610d42565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90611f60565b60405180910390fd5b610d3f81610ede565b50565b610d4a61117d565b73ffffffffffffffffffffffffffffffffffffffff16610d68610b13565b73ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611fcc565b60405180910390fd5b565b600080836004015403610e0c574283600101541115610de25760009050610e14565b836000015482600001548460020154610dfb919061201b565b610e05919061204c565b9050610e14565b836001015490505b9392505050565b600080610e29858585610dc0565b90506000610e378286611185565b905081811115610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612100565b60405180910390fd5b8560020154811015610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612192565b60405180910390fd5b856002015481610ed391906121b2565b925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560008360000b60000b815260200190815260200160002090506000600660008460000b60000b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061103e82600460008760000b60000b815260200190815260200160002085610e1b565b90506000810361105057505050611179565b808260020160008282546110649190611cde565b925050819055508083600201600082825461107f9190611cde565b92505081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b81526004016110e3929190611de9565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611e4a565b508473ffffffffffffffffffffffffffffffffffffffff167f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de28260405161116d91906121e6565b60405180910390a25050505b5050565b600033905090565b60004282600a0154111561119c5760009050611245565b600082600b01546064856111b0919061201b565b6111ba919061204c565b905082600801544210156111d15780915050611245565b600081856111df91906121b2565b9050600042856009015410156111f757819050611233565b84600801544261120791906121b2565b8560080154866009015461121b91906121b2565b83611226919061201b565b611230919061204c565b90505b828161123f9190611cde565b93505050505b92915050565b600080fd5b600080fd5b60008160000b9050919050565b61126b81611255565b811461127657600080fd5b50565b60008135905061128881611262565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112b98261128e565b9050919050565b6112c9816112ae565b81146112d457600080fd5b50565b6000813590506112e6816112c0565b92915050565b6000806000606084860312156113055761130461124b565b5b600061131386828701611279565b9350506020611324868287016112d7565b9250506040611335868287016112d7565b9150509250925092565b600080fd5b6000610180828403121561135b5761135a61133f565b5b81905092915050565b6000806101a0838503121561137c5761137b61124b565b5b600061138a85828601611279565b925050602061139b85828601611344565b9150509250929050565b6000602082840312156113bb576113ba61124b565b5b60006113c9848285016112d7565b91505092915050565b6000819050919050565b6113e5816113d2565b82525050565b600060808201905061140060008301876113dc565b61140d60208301866113dc565b61141a60408301856113dc565b61142760608301846113dc565b95945050505050565b611439816112ae565b82525050565b60006020820190506114546000830184611430565b92915050565b600080604083850312156114715761147061124b565b5b600061147f85828601611279565b9250506020611490858286016112d7565b9150509250929050565b60006060820190506114af60008301866113dc565b6114bc60208301856113dc565b6114c960408301846113dc565b949350505050565b6114da81611255565b82525050565b60006020820190506114f560008301846114d1565b92915050565b6000602082840312156115115761151061124b565b5b600061151f84828501611279565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261154d5761154c611528565b5b8235905067ffffffffffffffff81111561156a5761156961152d565b5b60208301915083604082028301111561158657611585611532565b5b9250929050565b6000806000604084860312156115a6576115a561124b565b5b60006115b486828701611279565b935050602084013567ffffffffffffffff8111156115d5576115d4611250565b5b6115e186828701611537565b92509250509250925092565b600061018082019050611603600083018f6113dc565b611610602083018e6113dc565b61161d604083018d6113dc565b61162a606083018c6113dc565b611637608083018b6113dc565b61164460a083018a6113dc565b61165160c08301896113dc565b61165e60e0830188611430565b61166c6101008301876113dc565b61167a6101208301866113dc565b6116886101408301856113dc565b6116966101608301846113dc565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116e182611255565b91506116ec83611255565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808112607f82131715611729576117286116a7565b5b92915050565b600082825260208201905092915050565b7f50726573616c653a20696e76616c696420726f756e644e756d00000000000000600082015250565b600061177660198361172f565b915061178182611740565b602082019050919050565b600060208201905081810360008301526117a581611769565b9050919050565b7f50726573616c653a20696e76616c696420737461727454696d65206f7220656e60008201527f6454696d65000000000000000000000000000000000000000000000000000000602082015250565b600061180860258361172f565b9150611813826117ac565b604082019050919050565b60006020820190508181036000830152611837816117fb565b9050919050565b7f50726573616c653a20696e76616c6964206d696e427579000000000000000000600082015250565b600061187460178361172f565b915061187f8261183e565b602082019050919050565b600060208201905081810360008301526118a381611867565b9050919050565b7f50726573616c653a20696e76616c6964207261697365436170206f7220746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b600061190660288361172f565b9150611911826118aa565b604082019050919050565b60006020820190508181036000830152611935816118f9565b9050919050565b7f50726573616c653a20696e76616c696420706572556e69740000000000000000600082015250565b600061197260188361172f565b915061197d8261193c565b602082019050919050565b600060208201905081810360008301526119a181611965565b9050919050565b6119b1816113d2565b81146119bc57600080fd5b50565b600081356119cc816119a8565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a0e846119d5565b9350801983169250808416831791505092915050565b6000819050919050565b6000611a49611a44611a3f846113d2565b611a24565b6113d2565b9050919050565b6000819050919050565b611a6382611a2e565b611a76611a6f82611a50565b83546119e2565b8255505050565b60008135611a8a816112c0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff611ab3846119d5565b9350801983169250808416831791505092915050565b6000611ae4611adf611ada8461128e565b611a24565b61128e565b9050919050565b6000611af682611ac9565b9050919050565b6000611b0882611aeb565b9050919050565b6000819050919050565b611b2282611afd565b611b35611b2e82611b0f565b8354611a93565b8255505050565b600081016000830180611b4e816119bf565b9050611b5a8184611a5a565b505050600181016020830180611b6f816119bf565b9050611b7b8184611a5a565b505050600281016040830180611b90816119bf565b9050611b9c8184611a5a565b505050600381016060830180611bb1816119bf565b9050611bbd8184611a5a565b505050600481016080830180611bd2816119bf565b9050611bde8184611a5a565b5050506005810160a0830180611bf3816119bf565b9050611bff8184611a5a565b5050506006810160c0830180611c14816119bf565b9050611c208184611a5a565b5050506007810160e0830180611c3581611a7d565b9050611c418184611b19565b50505060088101610100830180611c57816119bf565b9050611c638184611a5a565b50505060098101610120830180611c79816119bf565b9050611c858184611a5a565b505050600a8101610140830180611c9b816119bf565b9050611ca78184611a5a565b505050600b8101610160830180611cbd816119bf565b9050611cc98184611a5a565b5050505050565b611cda8282611b3c565b5050565b6000611ce9826113d2565b9150611cf4836113d2565b9250828201905080821115611d0c57611d0b6116a7565b5b92915050565b6000611d1d82611255565b9150607f8203611d3057611d2f6116a7565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611d71601f8361172f565b9150611d7c82611d3b565b602082019050919050565b60006020820190508181036000830152611da081611d64565b9050919050565b600081519050611db6816119a8565b92915050565b600060208284031215611dd257611dd161124b565b5b6000611de084828501611da7565b91505092915050565b6000604082019050611dfe6000830185611430565b611e0b60208301846113dc565b9392505050565b60008115159050919050565b611e2781611e12565b8114611e3257600080fd5b50565b600081519050611e4481611e1e565b92915050565b600060208284031215611e6057611e5f61124b565b5b6000611e6e84828501611e35565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611eb1826113d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ee357611ee26116a7565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611f4a60268361172f565b9150611f5582611eee565b604082019050919050565b60006020820190508181036000830152611f7981611f3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fb660208361172f565b9150611fc182611f80565b602082019050919050565b60006020820190508181036000830152611fe581611fa9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612026826113d2565b9150612031836113d2565b92508261204157612040611fec565b5b828204905092915050565b6000612057826113d2565b9150612062836113d2565b9250828202612070816113d2565b91508282048414831517612087576120866116a7565b5b5092915050565b7f417373657274696f6e4661696c65643a20766573746564203c3d205f746f746160008201527f6c546f6b656e0000000000000000000000000000000000000000000000000000602082015250565b60006120ea60268361172f565b91506120f58261208e565b604082019050919050565b60006020820190508181036000830152612119816120dd565b9050919050565b7f417373657274696f6e4661696c65643a20766573746564203e3d2077616c6c6560008201527f742e746f74616c436c61696d0000000000000000000000000000000000000000602082015250565b600061217c602c8361172f565b915061218782612120565b604082019050919050565b600060208201905081810360008301526121ab8161216f565b9050919050565b60006121bd826113d2565b91506121c8836113d2565b92508282039050818111156121e0576121df6116a7565b5b92915050565b60006020820190506121fb60008301846113dc565b9291505056fea2646970667358221220221af4ee6213f51555a99933d16be0ace74d6cda1af03650eda6f11b2d4ccebf64736f6c63430008130033000000000000000000000000b30240d48c05a4b950c470e2d6aefc9117a50624
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638947606911610097578063b300696611610066578063b300696614610266578063b849352b14610298578063e4cdcbee146102b4578063f2fde38b146102ef57610100565b806389476069146101f05780638a19c8bc1461020c5780638da5cb5b1461022a57806391f3839a1461024857610100565b80635fbe4d1d116100d35780635fbe4d1d1461017a57806361ab4dad14610198578063715018a6146101ca57806377329f35146101d457610100565b8063135338231461010557806327a6520d146101215780633ccfd60b1461013d5780635cf3b15f14610147575b600080fd5b61011f600480360381019061011a91906112ec565b61030b565b005b61013b60048036038101906101369190611364565b610473565b005b6101456106b6565b005b610161600480360381019061015c91906113a5565b61070d565b60405161017194939291906113eb565b60405180910390f35b610182610836565b60405161018f919061143f565b60405180910390f35b6101b260048036038101906101ad919061145a565b61085c565b6040516101c19392919061149a565b60405180910390f35b6101d2610893565b005b6101ee60048036038101906101e991906113a5565b6108a7565b005b61020a600480360381019061020591906113a5565b610939565b005b610214610a86565b60405161022191906114e0565b60405180910390f35b610232610b13565b60405161023f919061143f565b60405180910390f35b610250610b3c565b60405161025d91906114e0565b60405180910390f35b610280600480360381019061027b91906114fb565b610b4f565b60405161028f9392919061149a565b60405180910390f35b6102b260048036038101906102ad919061158d565b610b79565b005b6102ce60048036038101906102c991906114fb565b610c3f565b6040516102e69c9b9a999897969594939291906115ed565b60405180910390f35b610309600480360381019061030491906113a5565b610cbf565b005b610313610d42565b6000600660008560000b60000b815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600660008660000b60000b815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506000600660008660000b60000b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555050505050565b61047b610d42565b60008260000b121580156104b057506001600360149054906101000a900460000b6104a691906116d6565b60000b8260000b13155b6104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e69061178c565b60405180910390fd5b6000816000013511801561050a575080600001358160200135115b610549576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105409061181e565b60405180910390fd5b60008160a0013511610590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105879061188a565b60405180910390fd5b60008160600135101580156105a9575060008160400135115b6105e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105df9061191c565b60405180910390fd5b60008160600135118015610600575060008160400135115b1561064d57600081608001351161064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611988565b60405180910390fd5b5b600360149054906101000a900460000b60000b8260000b13156106895781600360146101000a81548160ff021916908360000b60ff1602179055505b80600460008460000b60000b815260200190815260200160002081816106af9190611cd0565b9050505050565b6106be610d42565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610709573d6000803e3d6000fd5b5050565b600080600080600061071d610a86565b905060005b8160000b8160000b1361082d576000600460008360000b60000b815260200190815260200160002090506000600560008460000b60000b815260200190815260200160002090506000600660008560000b60000b815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506107ce818484610dc0565b886107d99190611cde565b97506107e6818484610e1b565b876107f19190611cde565b96508060020154866108039190611cde565b95508060000154896108159190611cde565b9850505050808061082590611d12565b915050610722565b50509193509193565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b61089b610d42565b6108a56000610ede565b565b6002600154036108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611d87565b60405180910390fd5b600260018190555060006108fe610a86565b905060005b8160000b8160000b1361092d5761091a8382610fa2565b808061092590611d12565b915050610903565b50506001808190555050565b610941610d42565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099e919061143f565b602060405180830381865afa1580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611dbc565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610a3e929190611de9565b6020604051808303816000875af1158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190611e4a565b505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060005b600360149054906101000a900460000b60000b8160000b13610b0b576000600460008360000b60000b8152602001908152602001600020905042816000015411610af7578192505b508080610b0390611d12565b915050610aaf565b508091505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360149054906101000a900460000b81565b60056020528060005260406000206000915090508060000154908060010154908060020154905083565b610b81610d42565b60005b82829050811015610c395736838383818110610ba357610ba2611e77565b5b90506040020190506000600660008760000b60000b81526020019081526020016000206000836020016020810190610bdb91906113a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508160000135816001018190555050508080610c3190611ea6565b915050610b84565b50505050565b60046020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600801549080600901549080600a01549080600b015490508c565b610cc7610d42565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90611f60565b60405180910390fd5b610d3f81610ede565b50565b610d4a61117d565b73ffffffffffffffffffffffffffffffffffffffff16610d68610b13565b73ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590611fcc565b60405180910390fd5b565b600080836004015403610e0c574283600101541115610de25760009050610e14565b836000015482600001548460020154610dfb919061201b565b610e05919061204c565b9050610e14565b836001015490505b9392505050565b600080610e29858585610dc0565b90506000610e378286611185565b905081811115610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390612100565b60405180910390fd5b8560020154811015610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612192565b60405180910390fd5b856002015481610ed391906121b2565b925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560008360000b60000b815260200190815260200160002090506000600660008460000b60000b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061103e82600460008760000b60000b815260200190815260200160002085610e1b565b90506000810361105057505050611179565b808260020160008282546110649190611cde565b925050819055508083600201600082825461107f9190611cde565b92505081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b81526004016110e3929190611de9565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611e4a565b508473ffffffffffffffffffffffffffffffffffffffff167f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de28260405161116d91906121e6565b60405180910390a25050505b5050565b600033905090565b60004282600a0154111561119c5760009050611245565b600082600b01546064856111b0919061201b565b6111ba919061204c565b905082600801544210156111d15780915050611245565b600081856111df91906121b2565b9050600042856009015410156111f757819050611233565b84600801544261120791906121b2565b8560080154866009015461121b91906121b2565b83611226919061201b565b611230919061204c565b90505b828161123f9190611cde565b93505050505b92915050565b600080fd5b600080fd5b60008160000b9050919050565b61126b81611255565b811461127657600080fd5b50565b60008135905061128881611262565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112b98261128e565b9050919050565b6112c9816112ae565b81146112d457600080fd5b50565b6000813590506112e6816112c0565b92915050565b6000806000606084860312156113055761130461124b565b5b600061131386828701611279565b9350506020611324868287016112d7565b9250506040611335868287016112d7565b9150509250925092565b600080fd5b6000610180828403121561135b5761135a61133f565b5b81905092915050565b6000806101a0838503121561137c5761137b61124b565b5b600061138a85828601611279565b925050602061139b85828601611344565b9150509250929050565b6000602082840312156113bb576113ba61124b565b5b60006113c9848285016112d7565b91505092915050565b6000819050919050565b6113e5816113d2565b82525050565b600060808201905061140060008301876113dc565b61140d60208301866113dc565b61141a60408301856113dc565b61142760608301846113dc565b95945050505050565b611439816112ae565b82525050565b60006020820190506114546000830184611430565b92915050565b600080604083850312156114715761147061124b565b5b600061147f85828601611279565b9250506020611490858286016112d7565b9150509250929050565b60006060820190506114af60008301866113dc565b6114bc60208301856113dc565b6114c960408301846113dc565b949350505050565b6114da81611255565b82525050565b60006020820190506114f560008301846114d1565b92915050565b6000602082840312156115115761151061124b565b5b600061151f84828501611279565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261154d5761154c611528565b5b8235905067ffffffffffffffff81111561156a5761156961152d565b5b60208301915083604082028301111561158657611585611532565b5b9250929050565b6000806000604084860312156115a6576115a561124b565b5b60006115b486828701611279565b935050602084013567ffffffffffffffff8111156115d5576115d4611250565b5b6115e186828701611537565b92509250509250925092565b600061018082019050611603600083018f6113dc565b611610602083018e6113dc565b61161d604083018d6113dc565b61162a606083018c6113dc565b611637608083018b6113dc565b61164460a083018a6113dc565b61165160c08301896113dc565b61165e60e0830188611430565b61166c6101008301876113dc565b61167a6101208301866113dc565b6116886101408301856113dc565b6116966101608301846113dc565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116e182611255565b91506116ec83611255565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808112607f82131715611729576117286116a7565b5b92915050565b600082825260208201905092915050565b7f50726573616c653a20696e76616c696420726f756e644e756d00000000000000600082015250565b600061177660198361172f565b915061178182611740565b602082019050919050565b600060208201905081810360008301526117a581611769565b9050919050565b7f50726573616c653a20696e76616c696420737461727454696d65206f7220656e60008201527f6454696d65000000000000000000000000000000000000000000000000000000602082015250565b600061180860258361172f565b9150611813826117ac565b604082019050919050565b60006020820190508181036000830152611837816117fb565b9050919050565b7f50726573616c653a20696e76616c6964206d696e427579000000000000000000600082015250565b600061187460178361172f565b915061187f8261183e565b602082019050919050565b600060208201905081810360008301526118a381611867565b9050919050565b7f50726573616c653a20696e76616c6964207261697365436170206f7220746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b600061190660288361172f565b9150611911826118aa565b604082019050919050565b60006020820190508181036000830152611935816118f9565b9050919050565b7f50726573616c653a20696e76616c696420706572556e69740000000000000000600082015250565b600061197260188361172f565b915061197d8261193c565b602082019050919050565b600060208201905081810360008301526119a181611965565b9050919050565b6119b1816113d2565b81146119bc57600080fd5b50565b600081356119cc816119a8565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611a0e846119d5565b9350801983169250808416831791505092915050565b6000819050919050565b6000611a49611a44611a3f846113d2565b611a24565b6113d2565b9050919050565b6000819050919050565b611a6382611a2e565b611a76611a6f82611a50565b83546119e2565b8255505050565b60008135611a8a816112c0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff611ab3846119d5565b9350801983169250808416831791505092915050565b6000611ae4611adf611ada8461128e565b611a24565b61128e565b9050919050565b6000611af682611ac9565b9050919050565b6000611b0882611aeb565b9050919050565b6000819050919050565b611b2282611afd565b611b35611b2e82611b0f565b8354611a93565b8255505050565b600081016000830180611b4e816119bf565b9050611b5a8184611a5a565b505050600181016020830180611b6f816119bf565b9050611b7b8184611a5a565b505050600281016040830180611b90816119bf565b9050611b9c8184611a5a565b505050600381016060830180611bb1816119bf565b9050611bbd8184611a5a565b505050600481016080830180611bd2816119bf565b9050611bde8184611a5a565b5050506005810160a0830180611bf3816119bf565b9050611bff8184611a5a565b5050506006810160c0830180611c14816119bf565b9050611c208184611a5a565b5050506007810160e0830180611c3581611a7d565b9050611c418184611b19565b50505060088101610100830180611c57816119bf565b9050611c638184611a5a565b50505060098101610120830180611c79816119bf565b9050611c858184611a5a565b505050600a8101610140830180611c9b816119bf565b9050611ca78184611a5a565b505050600b8101610160830180611cbd816119bf565b9050611cc98184611a5a565b5050505050565b611cda8282611b3c565b5050565b6000611ce9826113d2565b9150611cf4836113d2565b9250828201905080821115611d0c57611d0b6116a7565b5b92915050565b6000611d1d82611255565b9150607f8203611d3057611d2f6116a7565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611d71601f8361172f565b9150611d7c82611d3b565b602082019050919050565b60006020820190508181036000830152611da081611d64565b9050919050565b600081519050611db6816119a8565b92915050565b600060208284031215611dd257611dd161124b565b5b6000611de084828501611da7565b91505092915050565b6000604082019050611dfe6000830185611430565b611e0b60208301846113dc565b9392505050565b60008115159050919050565b611e2781611e12565b8114611e3257600080fd5b50565b600081519050611e4481611e1e565b92915050565b600060208284031215611e6057611e5f61124b565b5b6000611e6e84828501611e35565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611eb1826113d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ee357611ee26116a7565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611f4a60268361172f565b9150611f5582611eee565b604082019050919050565b60006020820190508181036000830152611f7981611f3d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fb660208361172f565b9150611fc182611f80565b602082019050919050565b60006020820190508181036000830152611fe581611fa9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612026826113d2565b9150612031836113d2565b92508261204157612040611fec565b5b828204905092915050565b6000612057826113d2565b9150612062836113d2565b9250828202612070816113d2565b91508282048414831517612087576120866116a7565b5b5092915050565b7f417373657274696f6e4661696c65643a20766573746564203c3d205f746f746160008201527f6c546f6b656e0000000000000000000000000000000000000000000000000000602082015250565b60006120ea60268361172f565b91506120f58261208e565b604082019050919050565b60006020820190508181036000830152612119816120dd565b9050919050565b7f417373657274696f6e4661696c65643a20766573746564203e3d2077616c6c6560008201527f742e746f74616c436c61696d0000000000000000000000000000000000000000602082015250565b600061217c602c8361172f565b915061218782612120565b604082019050919050565b600060208201905081810360008301526121ab8161216f565b9050919050565b60006121bd826113d2565b91506121c8836113d2565b92508282039050818111156121e0576121df6116a7565b5b92915050565b60006020820190506121fb60008301846113dc565b9291505056fea2646970667358221220221af4ee6213f51555a99933d16be0ace74d6cda1af03650eda6f11b2d4ccebf64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b30240d48c05a4b950c470e2d6aefc9117a50624
-----Decoded View---------------
Arg [0] : _tokenAddr (address): 0xB30240d48C05A4B950C470e2D6aeFC9117A50624
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b30240d48c05a4b950c470e2d6aefc9117a50624
Deployed Bytecode Sourcemap
9704:7550:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16565:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15354:814;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16891:143;;;:::i;:::-;;11956:721;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9865:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11236:58;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3001:103;;;:::i;:::-;;14519:232;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17042:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11442:376;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2353:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9934:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11186:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16176:381;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11137:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3259:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16565:301;2239:13;:11;:13::i;:::-;16695:20:::1;16718:7;:17;16726:8;16718:17;;;;;;;;;;;;;;;:23;16736:4;16718:23;;;;;;;;;;;;;;;16695:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;16777:6;16753:7;:17;16761:8;16753:17;;;;;;;;;;;;;;;:21;16771:2;16753:21;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;16857:1;16820:7;:17;16828:8;16820:17;;;;;;;;;;;;;;;:23;16838:4;16820:23;;;;;;;;;;;;;;;:34;;:38;;;;16660:206;16565:301:::0;;;:::o;15354:814::-;2239:13;:11;:13::i;:::-;15487:1:::1;15475:8;:13;;;;:44;;;;;15518:1;15504:11;;;;;;;;;;;:15;;;;:::i;:::-;15492:27;;:8;:27;;;;15475:44;15467:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;15598:1;15582:3;:13;;;:17;:48;;;;;15617:3;:13;;;15603:3;:11;;;:27;15582:48;15560:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;15727:1;15714:3;:10;;;:14;15706:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15805:1;15789:3;:12;;;:17;;:40;;;;;15828:1;15810:3;:15;;;:19;15789:40;15767:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;15929:1;15914:3;:12;;;:16;:39;;;;;15952:1;15934:3;:15;;;:19;15914:39;15910:124;;;15992:1;15978:3;:11;;;:15;15970:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15910:124;16061:11;;;;;;;;;;;16050:22;;:8;:22;;;16046:77;;;16103:8;16089:11;;:22;;;;;;;;;;;;;;;;;;;;16046:77;16157:3;16135:9;:19;16145:8;16135:19;;;;;;;;;;;;;;;:25;;;;;;:::i;:::-;;;;15354:814:::0;;:::o;16891:143::-;2239:13;:11;:13::i;:::-;16941::::1;16957:21;16941:37;;16998:10;16989:30;;:37;17020:5;16989:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16930:104;16891:143::o:0;11956:721::-;12013:17;12032:14;12048:17;12067:15;12095:18;12116:14;:12;:14::i;:::-;12095:35;;12148:13;12143:468;12179:13;12167:25;;:8;:25;;;12143:468;;12221:20;12244:9;:19;12254:8;12244:19;;;;;;;;;;;;;;;12221:42;;12278:22;12303:9;:19;12313:8;12303:19;;;;;;;;;;;;;;;12278:44;;12337:21;12361:7;:17;12369:8;12361:17;;;;;;;;;;;;;;;:23;12379:4;12361:23;;;;;;;;;;;;;;;12337:47;;12411:34;12427:6;12435:3;12440:4;12411:15;:34::i;:::-;12401:44;;;;;:::i;:::-;;;12473:34;12489:6;12497:3;12502:4;12473:15;:34::i;:::-;12460:47;;;;;:::i;:::-;;;12533:6;:17;;;12522:28;;;;;:::i;:::-;;;12578:6;:21;;;12565:34;;;;;:::i;:::-;;;12206:405;;;12194:10;;;;;:::i;:::-;;;;12143:468;;;;12623:46;11956:721;;;;;:::o;9865:24::-;;;;;;;;;;;;;:::o;11236:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3001:103::-;2239:13;:11;:13::i;:::-;3066:30:::1;3093:1;3066:18;:30::i;:::-;3001:103::o:0;14519:232::-;5687:1;6285:7;;:19;6277:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5687:1;6418:7;:18;;;;14584::::1;14605:14;:12;:14::i;:::-;14584:35;;14637:13;14632:112;14668:13;14656:25;;:8;:25;;;14632:112;;14710:22;14717:4;14723:8;14710:6;:22::i;:::-;14683:10;;;;;:::i;:::-;;;;14632:112;;;;14573:178;5643:1:::0;6597:7;:22;;;;14519:232;:::o;17042:183::-;2239:13;:11;:13::i;:::-;17109::::1;17132:9;;;;;;;;;;;17125:27;;;17161:4;17125:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17109:58;;17185:9;;;;;;;;;;;17178:26;;;17205:4;17211:5;17178:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17098:127;17042:183:::0;:::o;11442:376::-;11487:4;11504:18;11525:2;11504:23;;11543:13;11538:241;11574:11;;;;;;;;;;;11562:23;;:8;:23;;;11538:241;;11614:20;11637:9;:19;11647:8;11637:19;;;;;;;;;;;;;;;11614:42;;11692:15;11675:3;:13;;;:32;11671:97;;11744:8;11728:24;;11671:97;11599:180;11587:10;;;;;:::i;:::-;;;;11538:241;;;;11797:13;11790:20;;;11442:376;:::o;2353:87::-;2399:7;2426:6;;;;;;;;;;;2419:13;;2353:87;:::o;9934:28::-;;;;;;;;;;;;;:::o;11186:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16176:381::-;2239:13;:11;:13::i;:::-;16285::::1;16280:270;16312:12;;:19;;16304:5;:27;16280:270;;;16357:27;16387:12;;16400:5;16387:19;;;;;;;:::i;:::-;;;;;;;16357:49;;16421:21;16445:7;:17;16453:8;16445:17;;;;;;;;;;;;;;;:40;16463:10;:21;;;;;;;;;;:::i;:::-;16445:40;;;;;;;;;;;;;;;16421:64;;16521:10;:17;;;16501:6;:17;;:37;;;;16342:208;;16333:7;;;;;:::i;:::-;;;;16280:270;;;;16176:381:::0;;;:::o;11137:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3259:201::-;2239:13;:11;:13::i;:::-;3368:1:::1;3348:22;;:8;:22;;::::0;3340:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3424:28;3443:8;3424:18;:28::i;:::-;3259:201:::0;:::o;2518:132::-;2593:12;:10;:12::i;:::-;2582:23;;:7;:5;:7::i;:::-;:23;;;2574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2518:132::o;12687:466::-;12837:7;12876:1;12861:3;:11;;;:16;12857:289;;12912:15;12898:3;:11;;;:29;12894:184;;;12955:1;12948:8;;;;12894:184;13041:6;:21;;;13022:4;:16;;;13004:3;:15;;;:34;;;;:::i;:::-;:58;;;;:::i;:::-;12997:65;;;;12857:289;13117:6;:17;;;13110:24;;12687:466;;;;;;:::o;13161:523::-;13311:7;13331:19;13353:34;13369:6;13377:3;13382:4;13353:15;:34::i;:::-;13331:56;;13400:14;13417:33;13433:11;13446:3;13417:15;:33::i;:::-;13400:50;;13481:11;13471:6;:21;;13463:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13564:6;:17;;;13554:6;:27;;13546:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;13659:6;:17;;;13650:6;:26;;;;:::i;:::-;13643:33;;;;13161:523;;;;;:::o;3620:191::-;3694:16;3713:6;;;;;;;;;;;3694:25;;3739:8;3730:6;;:17;;;;;;;;;;;;;;;;;;3794:8;3763:40;;3784:8;3763:40;;;;;;;;;;;;3683:128;3620:191;:::o;14763:503::-;14827:22;14852:9;:19;14862:8;14852:19;;;;;;;;;;;;;;;14827:44;;14882:21;14906:7;:17;14914:8;14906:17;;;;;;;;;;;;;;;:23;14924:4;14906:23;;;;;;;;;;;;;;;14882:47;;14942:17;14962:50;14978:6;14986:9;:19;14996:8;14986:19;;;;;;;;;;;;;;;15007:4;14962:15;:50::i;:::-;14942:70;;15040:1;15027:9;:14;15023:53;;15058:7;;;;;15023:53;15109:9;15088:6;:17;;;:30;;;;;;;:::i;:::-;;;;;;;;15148:9;15129:4;:15;;;:28;;;;;;;:::i;:::-;;;;;;;;15181:9;;;;;;;;;;;15174:26;;;15201:4;15207:9;15174:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15242:4;15233:25;;;15248:9;15233:25;;;;;;:::i;:::-;;;;;;;;14816:450;;;14763:503;;;:::o;849:98::-;902:7;929:10;922:17;;849:98;:::o;13692:786::-;13783:7;13826:15;13807:3;:16;;;:34;13803:75;;;13865:1;13858:8;;;;13803:75;13890:24;13938:3;:11;;;13932:3;13917:12;:18;;;;:::i;:::-;:32;;;;:::i;:::-;13890:59;;13984:3;:20;;;13966:15;:38;13962:94;;;14028:16;14021:23;;;;;13962:94;14070:21;14109:16;14094:12;:31;;;;:::i;:::-;14070:55;;14138:20;14198:15;14177:3;:18;;;:36;14173:247;;;14245:13;14230:28;;14173:247;;;14387:3;:20;;;14369:15;:38;;;;:::i;:::-;14344:3;:20;;;14323:3;:18;;;:41;;;;:::i;:::-;14306:13;:59;;;;:::i;:::-;:102;;;;:::i;:::-;14291:117;;14173:247;14454:16;14439:12;:31;;;;:::i;:::-;14432:38;;;;;13692:786;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:89;368:7;411:5;408:1;397:20;386:31;;334:89;;;:::o;429:116::-;499:21;514:5;499:21;:::i;:::-;492:5;489:32;479:60;;535:1;532;525:12;479:60;429:116;:::o;551:133::-;594:5;632:6;619:20;610:29;;648:30;672:5;648:30;:::i;:::-;551:133;;;;:::o;690:126::-;727:7;767:42;760:5;756:54;745:65;;690:126;;;:::o;822:96::-;859:7;888:24;906:5;888:24;:::i;:::-;877:35;;822:96;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:613::-;1271:6;1279;1287;1336:2;1324:9;1315:7;1311:23;1307:32;1304:119;;;1342:79;;:::i;:::-;1304:119;1462:1;1487:50;1529:7;1520:6;1509:9;1505:22;1487:50;:::i;:::-;1477:60;;1433:114;1586:2;1612:53;1657:7;1648:6;1637:9;1633:22;1612:53;:::i;:::-;1602:63;;1557:118;1714:2;1740:53;1785:7;1776:6;1765:9;1761:22;1740:53;:::i;:::-;1730:63;;1685:118;1197:613;;;;;:::o;1816:117::-;1925:1;1922;1915:12;1979:232;2052:5;2093:3;2084:6;2079:3;2075:16;2071:26;2068:113;;;2100:79;;:::i;:::-;2068:113;2199:6;2190:15;;1979:232;;;;:::o;2217:523::-;2309:6;2317;2366:3;2354:9;2345:7;2341:23;2337:33;2334:120;;;2373:79;;:::i;:::-;2334:120;2493:1;2518:50;2560:7;2551:6;2540:9;2536:22;2518:50;:::i;:::-;2508:60;;2464:114;2617:2;2643:80;2715:7;2706:6;2695:9;2691:22;2643:80;:::i;:::-;2633:90;;2588:145;2217:523;;;;;:::o;2746:329::-;2805:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:119;;;2860:79;;:::i;:::-;2822:119;2980:1;3005:53;3050:7;3041:6;3030:9;3026:22;3005:53;:::i;:::-;2995:63;;2951:117;2746:329;;;;:::o;3081:77::-;3118:7;3147:5;3136:16;;3081:77;;;:::o;3164:118::-;3251:24;3269:5;3251:24;:::i;:::-;3246:3;3239:37;3164:118;;:::o;3288:553::-;3465:4;3503:3;3492:9;3488:19;3480:27;;3517:71;3585:1;3574:9;3570:17;3561:6;3517:71;:::i;:::-;3598:72;3666:2;3655:9;3651:18;3642:6;3598:72;:::i;:::-;3680;3748:2;3737:9;3733:18;3724:6;3680:72;:::i;:::-;3762;3830:2;3819:9;3815:18;3806:6;3762:72;:::i;:::-;3288:553;;;;;;;:::o;3847:118::-;3934:24;3952:5;3934:24;:::i;:::-;3929:3;3922:37;3847:118;;:::o;3971:222::-;4064:4;4102:2;4091:9;4087:18;4079:26;;4115:71;4183:1;4172:9;4168:17;4159:6;4115:71;:::i;:::-;3971:222;;;;:::o;4199:468::-;4264:6;4272;4321:2;4309:9;4300:7;4296:23;4292:32;4289:119;;;4327:79;;:::i;:::-;4289:119;4447:1;4472:50;4514:7;4505:6;4494:9;4490:22;4472:50;:::i;:::-;4462:60;;4418:114;4571:2;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4542:118;4199:468;;;;;:::o;4673:442::-;4822:4;4860:2;4849:9;4845:18;4837:26;;4873:71;4941:1;4930:9;4926:17;4917:6;4873:71;:::i;:::-;4954:72;5022:2;5011:9;5007:18;4998:6;4954:72;:::i;:::-;5036;5104:2;5093:9;5089:18;5080:6;5036:72;:::i;:::-;4673:442;;;;;;:::o;5121:109::-;5202:21;5217:5;5202:21;:::i;:::-;5197:3;5190:34;5121:109;;:::o;5236:210::-;5323:4;5361:2;5350:9;5346:18;5338:26;;5374:65;5436:1;5425:9;5421:17;5412:6;5374:65;:::i;:::-;5236:210;;;;:::o;5452:323::-;5508:6;5557:2;5545:9;5536:7;5532:23;5528:32;5525:119;;;5563:79;;:::i;:::-;5525:119;5683:1;5708:50;5750:7;5741:6;5730:9;5726:22;5708:50;:::i;:::-;5698:60;;5654:114;5452:323;;;;:::o;5781:117::-;5890:1;5887;5880:12;5904:117;6013:1;6010;6003:12;6027:117;6136:1;6133;6126:12;6191:594;6290:8;6300:6;6350:3;6343:4;6335:6;6331:17;6327:27;6317:122;;6358:79;;:::i;:::-;6317:122;6471:6;6458:20;6448:30;;6501:18;6493:6;6490:30;6487:117;;;6523:79;;:::i;:::-;6487:117;6637:4;6629:6;6625:17;6613:29;;6691:3;6683:4;6675:6;6671:17;6661:8;6657:32;6654:41;6651:128;;;6698:79;;:::i;:::-;6651:128;6191:594;;;;;:::o;6791:750::-;6909:6;6917;6925;6974:2;6962:9;6953:7;6949:23;6945:32;6942:119;;;6980:79;;:::i;:::-;6942:119;7100:1;7125:50;7167:7;7158:6;7147:9;7143:22;7125:50;:::i;:::-;7115:60;;7071:114;7252:2;7241:9;7237:18;7224:32;7283:18;7275:6;7272:30;7269:117;;;7305:79;;:::i;:::-;7269:117;7418:106;7516:7;7507:6;7496:9;7492:22;7418:106;:::i;:::-;7400:124;;;;7195:339;6791:750;;;;;:::o;7547:1445::-;7950:4;7988:3;7977:9;7973:19;7965:27;;8002:71;8070:1;8059:9;8055:17;8046:6;8002:71;:::i;:::-;8083:72;8151:2;8140:9;8136:18;8127:6;8083:72;:::i;:::-;8165;8233:2;8222:9;8218:18;8209:6;8165:72;:::i;:::-;8247;8315:2;8304:9;8300:18;8291:6;8247:72;:::i;:::-;8329:73;8397:3;8386:9;8382:19;8373:6;8329:73;:::i;:::-;8412;8480:3;8469:9;8465:19;8456:6;8412:73;:::i;:::-;8495;8563:3;8552:9;8548:19;8539:6;8495:73;:::i;:::-;8578;8646:3;8635:9;8631:19;8622:6;8578:73;:::i;:::-;8661;8729:3;8718:9;8714:19;8705:6;8661:73;:::i;:::-;8744;8812:3;8801:9;8797:19;8788:6;8744:73;:::i;:::-;8827:74;8896:3;8885:9;8881:19;8871:7;8827:74;:::i;:::-;8911;8980:3;8969:9;8965:19;8955:7;8911:74;:::i;:::-;7547:1445;;;;;;;;;;;;;;;:::o;8998:180::-;9046:77;9043:1;9036:88;9143:4;9140:1;9133:15;9167:4;9164:1;9157:15;9184:302;9221:3;9240:17;9255:1;9240:17;:::i;:::-;9235:22;;9271:17;9286:1;9271:17;:::i;:::-;9266:22;;9311:1;9308;9304:9;9297:16;;9379:66;9374:3;9370:76;9351:4;9346:3;9342:14;9326:130;9323:156;;;9459:18;;:::i;:::-;9323:156;9184:302;;;;:::o;9492:169::-;9576:11;9610:6;9605:3;9598:19;9650:4;9645:3;9641:14;9626:29;;9492:169;;;;:::o;9667:175::-;9807:27;9803:1;9795:6;9791:14;9784:51;9667:175;:::o;9848:366::-;9990:3;10011:67;10075:2;10070:3;10011:67;:::i;:::-;10004:74;;10087:93;10176:3;10087:93;:::i;:::-;10205:2;10200:3;10196:12;10189:19;;9848:366;;;:::o;10220:419::-;10386:4;10424:2;10413:9;10409:18;10401:26;;10473:9;10467:4;10463:20;10459:1;10448:9;10444:17;10437:47;10501:131;10627:4;10501:131;:::i;:::-;10493:139;;10220:419;;;:::o;10645:224::-;10785:34;10781:1;10773:6;10769:14;10762:58;10854:7;10849:2;10841:6;10837:15;10830:32;10645:224;:::o;10875:366::-;11017:3;11038:67;11102:2;11097:3;11038:67;:::i;:::-;11031:74;;11114:93;11203:3;11114:93;:::i;:::-;11232:2;11227:3;11223:12;11216:19;;10875:366;;;:::o;11247:419::-;11413:4;11451:2;11440:9;11436:18;11428:26;;11500:9;11494:4;11490:20;11486:1;11475:9;11471:17;11464:47;11528:131;11654:4;11528:131;:::i;:::-;11520:139;;11247:419;;;:::o;11672:173::-;11812:25;11808:1;11800:6;11796:14;11789:49;11672:173;:::o;11851:366::-;11993:3;12014:67;12078:2;12073:3;12014:67;:::i;:::-;12007:74;;12090:93;12179:3;12090:93;:::i;:::-;12208:2;12203:3;12199:12;12192:19;;11851:366;;;:::o;12223:419::-;12389:4;12427:2;12416:9;12412:18;12404:26;;12476:9;12470:4;12466:20;12462:1;12451:9;12447:17;12440:47;12504:131;12630:4;12504:131;:::i;:::-;12496:139;;12223:419;;;:::o;12648:227::-;12788:34;12784:1;12776:6;12772:14;12765:58;12857:10;12852:2;12844:6;12840:15;12833:35;12648:227;:::o;12881:366::-;13023:3;13044:67;13108:2;13103:3;13044:67;:::i;:::-;13037:74;;13120:93;13209:3;13120:93;:::i;:::-;13238:2;13233:3;13229:12;13222:19;;12881:366;;;:::o;13253:419::-;13419:4;13457:2;13446:9;13442:18;13434:26;;13506:9;13500:4;13496:20;13492:1;13481:9;13477:17;13470:47;13534:131;13660:4;13534:131;:::i;:::-;13526:139;;13253:419;;;:::o;13678:174::-;13818:26;13814:1;13806:6;13802:14;13795:50;13678:174;:::o;13858:366::-;14000:3;14021:67;14085:2;14080:3;14021:67;:::i;:::-;14014:74;;14097:93;14186:3;14097:93;:::i;:::-;14215:2;14210:3;14206:12;14199:19;;13858:366;;;:::o;14230:419::-;14396:4;14434:2;14423:9;14419:18;14411:26;;14483:9;14477:4;14473:20;14469:1;14458:9;14454:17;14447:47;14511:131;14637:4;14511:131;:::i;:::-;14503:139;;14230:419;;;:::o;14841:122::-;14914:24;14932:5;14914:24;:::i;:::-;14907:5;14904:35;14894:63;;14953:1;14950;14943:12;14894:63;14841:122;:::o;14969:186::-;15014:11;15063:3;15050:17;15076:33;15103:5;15076:33;:::i;:::-;15143:5;15119:29;;15026:129;14969:186;;;:::o;15161:92::-;15193:8;15240:5;15237:1;15233:13;15212:34;;15161:92;;;:::o;15259:290::-;15317:6;15346:66;15433:22;15446:8;15433:22;:::i;:::-;15421:34;;15488:4;15484:9;15477:5;15473:21;15464:30;;15537:4;15527:8;15523:19;15516:5;15513:30;15503:40;;15324:225;15259:290;;;;:::o;15555:60::-;15583:3;15604:5;15597:12;;15555:60;;;:::o;15621:142::-;15671:9;15704:53;15722:34;15731:24;15749:5;15731:24;:::i;:::-;15722:34;:::i;:::-;15704:53;:::i;:::-;15691:66;;15621:142;;;:::o;15769:75::-;15812:3;15833:5;15826:12;;15769:75;;;:::o;15850:262::-;15960:39;15991:7;15960:39;:::i;:::-;16021:84;16063:41;16087:16;16063:41;:::i;:::-;16056:4;16050:11;16021:84;:::i;:::-;16015:4;16008:98;15926:186;15850:262;;:::o;16118:186::-;16163:11;16212:3;16199:17;16225:33;16252:5;16225:33;:::i;:::-;16292:5;16268:29;;16175:129;16118:186;;;:::o;16310:266::-;16368:6;16397:42;16460:22;16473:8;16460:22;:::i;:::-;16448:34;;16515:4;16511:9;16504:5;16500:21;16491:30;;16564:4;16554:8;16550:19;16543:5;16540:30;16530:40;;16375:201;16310:266;;;;:::o;16582:142::-;16632:9;16665:53;16683:34;16692:24;16710:5;16692:24;:::i;:::-;16683:34;:::i;:::-;16665:53;:::i;:::-;16652:66;;16582:142;;;:::o;16730:126::-;16780:9;16813:37;16844:5;16813:37;:::i;:::-;16800:50;;16730:126;;;:::o;16862:::-;16912:9;16945:37;16976:5;16945:37;:::i;:::-;16932:50;;16862:126;;;:::o;16994:75::-;17037:3;17058:5;17051:12;;16994:75;;;:::o;17075:262::-;17185:39;17216:7;17185:39;:::i;:::-;17246:84;17288:41;17312:16;17288:41;:::i;:::-;17281:4;17275:11;17246:84;:::i;:::-;17240:4;17233:98;17151:186;17075:262;;:::o;17343:4195::-;17519:1;17513:4;17509:12;17565:1;17558:5;17554:13;17615:12;17658:42;17686:13;17658:42;:::i;:::-;17641:59;;17714:78;17778:13;17766:10;17714:78;:::i;:::-;17476:327;;;17856:1;17850:4;17846:12;17902:2;17895:5;17891:14;17953:12;17996:42;18024:13;17996:42;:::i;:::-;17979:59;;18052:78;18116:13;18104:10;18052:78;:::i;:::-;17813:328;;;18194:1;18188:4;18184:12;18240:2;18233:5;18229:14;18291:12;18334:42;18362:13;18334:42;:::i;:::-;18317:59;;18390:78;18454:13;18442:10;18390:78;:::i;:::-;18151:328;;;18532:1;18526:4;18522:12;18578:2;18571:5;18567:14;18629:12;18672:42;18700:13;18672:42;:::i;:::-;18655:59;;18728:78;18792:13;18780:10;18728:78;:::i;:::-;18489:328;;;18870:1;18864:4;18860:12;18916:3;18909:5;18905:15;18968:12;19011:42;19039:13;19011:42;:::i;:::-;18994:59;;19067:78;19131:13;19119:10;19067:78;:::i;:::-;18827:329;;;19209:1;19203:4;19199:12;19255:3;19248:5;19244:15;19307:12;19350:42;19378:13;19350:42;:::i;:::-;19333:59;;19406:78;19470:13;19458:10;19406:78;:::i;:::-;19166:329;;;19548:1;19542:4;19538:12;19594:3;19587:5;19583:15;19646:12;19689:42;19717:13;19689:42;:::i;:::-;19672:59;;19745:78;19809:13;19797:10;19745:78;:::i;:::-;19505:329;;;19887:1;19881:4;19877:12;19933:3;19926:5;19922:15;19985:12;20028:42;20056:13;20028:42;:::i;:::-;20011:59;;20084:78;20148:13;20136:10;20084:78;:::i;:::-;19844:329;;;20226:1;20220:4;20216:12;20272:3;20265:5;20261:15;20324:12;20367:42;20395:13;20367:42;:::i;:::-;20350:59;;20423:78;20487:13;20475:10;20423:78;:::i;:::-;20183:329;;;20565:1;20559:4;20555:12;20611:3;20604:5;20600:15;20663:12;20706:42;20734:13;20706:42;:::i;:::-;20689:59;;20762:78;20826:13;20814:10;20762:78;:::i;:::-;20522:329;;;20904:2;20898:4;20894:13;20951:3;20944:5;20940:15;21003:12;21046:42;21074:13;21046:42;:::i;:::-;21029:59;;21102:78;21166:13;21154:10;21102:78;:::i;:::-;20861:330;;;21244:2;21238:4;21234:13;21291:3;21284:5;21280:15;21343:12;21386:42;21414:13;21386:42;:::i;:::-;21369:59;;21442:78;21506:13;21494:10;21442:78;:::i;:::-;21201:330;;;17343:4195;;:::o;21544:256::-;21680:114;21786:7;21780:4;21680:114;:::i;:::-;21544:256;;:::o;21806:191::-;21846:3;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;21899:20;21917:1;21899:20;:::i;:::-;21894:25;;21942:1;21939;21935:9;21928:16;;21963:3;21960:1;21957:10;21954:36;;;21970:18;;:::i;:::-;21954:36;21806:191;;;;:::o;22003:165::-;22039:3;22062:21;22077:5;22062:21;:::i;:::-;22053:30;;22105:4;22098:5;22095:15;22092:41;;22113:18;;:::i;:::-;22092:41;22160:1;22153:5;22149:13;22142:20;;22003:165;;;:::o;22174:181::-;22314:33;22310:1;22302:6;22298:14;22291:57;22174:181;:::o;22361:366::-;22503:3;22524:67;22588:2;22583:3;22524:67;:::i;:::-;22517:74;;22600:93;22689:3;22600:93;:::i;:::-;22718:2;22713:3;22709:12;22702:19;;22361:366;;;:::o;22733:419::-;22899:4;22937:2;22926:9;22922:18;22914:26;;22986:9;22980:4;22976:20;22972:1;22961:9;22957:17;22950:47;23014:131;23140:4;23014:131;:::i;:::-;23006:139;;22733:419;;;:::o;23158:143::-;23215:5;23246:6;23240:13;23231:22;;23262:33;23289:5;23262:33;:::i;:::-;23158:143;;;;:::o;23307:351::-;23377:6;23426:2;23414:9;23405:7;23401:23;23397:32;23394:119;;;23432:79;;:::i;:::-;23394:119;23552:1;23577:64;23633:7;23624:6;23613:9;23609:22;23577:64;:::i;:::-;23567:74;;23523:128;23307:351;;;;:::o;23664:332::-;23785:4;23823:2;23812:9;23808:18;23800:26;;23836:71;23904:1;23893:9;23889:17;23880:6;23836:71;:::i;:::-;23917:72;23985:2;23974:9;23970:18;23961:6;23917:72;:::i;:::-;23664:332;;;;;:::o;24002:90::-;24036:7;24079:5;24072:13;24065:21;24054:32;;24002:90;;;:::o;24098:116::-;24168:21;24183:5;24168:21;:::i;:::-;24161:5;24158:32;24148:60;;24204:1;24201;24194:12;24148:60;24098:116;:::o;24220:137::-;24274:5;24305:6;24299:13;24290:22;;24321:30;24345:5;24321:30;:::i;:::-;24220:137;;;;:::o;24363:345::-;24430:6;24479:2;24467:9;24458:7;24454:23;24450:32;24447:119;;;24485:79;;:::i;:::-;24447:119;24605:1;24630:61;24683:7;24674:6;24663:9;24659:22;24630:61;:::i;:::-;24620:71;;24576:125;24363:345;;;;:::o;24714:180::-;24762:77;24759:1;24752:88;24859:4;24856:1;24849:15;24883:4;24880:1;24873:15;24900:233;24939:3;24962:24;24980:5;24962:24;:::i;:::-;24953:33;;25008:66;25001:5;24998:77;24995:103;;25078:18;;:::i;:::-;24995:103;25125:1;25118:5;25114:13;25107:20;;24900:233;;;:::o;25139:225::-;25279:34;25275:1;25267:6;25263:14;25256:58;25348:8;25343:2;25335:6;25331:15;25324:33;25139:225;:::o;25370:366::-;25512:3;25533:67;25597:2;25592:3;25533:67;:::i;:::-;25526:74;;25609:93;25698:3;25609:93;:::i;:::-;25727:2;25722:3;25718:12;25711:19;;25370:366;;;:::o;25742:419::-;25908:4;25946:2;25935:9;25931:18;25923:26;;25995:9;25989:4;25985:20;25981:1;25970:9;25966:17;25959:47;26023:131;26149:4;26023:131;:::i;:::-;26015:139;;25742:419;;;:::o;26167:182::-;26307:34;26303:1;26295:6;26291:14;26284:58;26167:182;:::o;26355:366::-;26497:3;26518:67;26582:2;26577:3;26518:67;:::i;:::-;26511:74;;26594:93;26683:3;26594:93;:::i;:::-;26712:2;26707:3;26703:12;26696:19;;26355:366;;;:::o;26727:419::-;26893:4;26931:2;26920:9;26916:18;26908:26;;26980:9;26974:4;26970:20;26966:1;26955:9;26951:17;26944:47;27008:131;27134:4;27008:131;:::i;:::-;27000:139;;26727:419;;;:::o;27152:180::-;27200:77;27197:1;27190:88;27297:4;27294:1;27287:15;27321:4;27318:1;27311:15;27338:185;27378:1;27395:20;27413:1;27395:20;:::i;:::-;27390:25;;27429:20;27447:1;27429:20;:::i;:::-;27424:25;;27468:1;27458:35;;27473:18;;:::i;:::-;27458:35;27515:1;27512;27508:9;27503:14;;27338:185;;;;:::o;27529:410::-;27569:7;27592:20;27610:1;27592:20;:::i;:::-;27587:25;;27626:20;27644:1;27626:20;:::i;:::-;27621:25;;27681:1;27678;27674:9;27703:30;27721:11;27703:30;:::i;:::-;27692:41;;27882:1;27873:7;27869:15;27866:1;27863:22;27843:1;27836:9;27816:83;27793:139;;27912:18;;:::i;:::-;27793:139;27577:362;27529:410;;;;:::o;27945:225::-;28085:34;28081:1;28073:6;28069:14;28062:58;28154:8;28149:2;28141:6;28137:15;28130:33;27945:225;:::o;28176:366::-;28318:3;28339:67;28403:2;28398:3;28339:67;:::i;:::-;28332:74;;28415:93;28504:3;28415:93;:::i;:::-;28533:2;28528:3;28524:12;28517:19;;28176:366;;;:::o;28548:419::-;28714:4;28752:2;28741:9;28737:18;28729:26;;28801:9;28795:4;28791:20;28787:1;28776:9;28772:17;28765:47;28829:131;28955:4;28829:131;:::i;:::-;28821:139;;28548:419;;;:::o;28973:231::-;29113:34;29109:1;29101:6;29097:14;29090:58;29182:14;29177:2;29169:6;29165:15;29158:39;28973:231;:::o;29210:366::-;29352:3;29373:67;29437:2;29432:3;29373:67;:::i;:::-;29366:74;;29449:93;29538:3;29449:93;:::i;:::-;29567:2;29562:3;29558:12;29551:19;;29210:366;;;:::o;29582:419::-;29748:4;29786:2;29775:9;29771:18;29763:26;;29835:9;29829:4;29825:20;29821:1;29810:9;29806:17;29799:47;29863:131;29989:4;29863:131;:::i;:::-;29855:139;;29582:419;;;:::o;30007:194::-;30047:4;30067:20;30085:1;30067:20;:::i;:::-;30062:25;;30101:20;30119:1;30101:20;:::i;:::-;30096:25;;30145:1;30142;30138:9;30130:17;;30169:1;30163:4;30160:11;30157:37;;;30174:18;;:::i;:::-;30157:37;30007:194;;;;:::o;30207:222::-;30300:4;30338:2;30327:9;30323:18;30315:26;;30351:71;30419:1;30408:9;30404:17;30395:6;30351:71;:::i;:::-;30207:222;;;;:::o
Swarm Source
ipfs://221af4ee6213f51555a99933d16be0ace74d6cda1af03650eda6f11b2d4ccebf
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.