Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Widthdraw IAI | 21129472 | 85 days ago | IN | 0 ETH | 0.00096365 | ||||
Un Pool | 19446928 | 321 days ago | IN | 0 ETH | 0.00281531 | ||||
Un Pool | 19256794 | 347 days ago | IN | 0 ETH | 0.00322645 | ||||
Un Pool | 19140153 | 364 days ago | IN | 0 ETH | 0.00176773 | ||||
Pool | 17902748 | 537 days ago | IN | 0 ETH | 0.00214636 | ||||
Pool | 17865003 | 542 days ago | IN | 0 ETH | 0.00606697 | ||||
Pool | 17832776 | 547 days ago | IN | 0 ETH | 0.00045769 | ||||
Pool | 17832768 | 547 days ago | IN | 0 ETH | 0.00041571 | ||||
Pool | 17832765 | 547 days ago | IN | 0 ETH | 0.00254682 | ||||
Pool | 17831760 | 547 days ago | IN | 0 ETH | 0.00365701 | ||||
Set Nft Threshol... | 17831706 | 547 days ago | IN | 0 ETH | 0.00043973 | ||||
Set Token Thresh... | 17787545 | 553 days ago | IN | 0 ETH | 0.00096858 | ||||
Set Nft Threshol... | 17787357 | 553 days ago | IN | 0 ETH | 0.0007491 | ||||
Set Token Thresh... | 17787303 | 553 days ago | IN | 0 ETH | 0.00075786 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
iAIPool1
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import './IPool.sol'; contract iAIPool1 is IPool { constructor(address iAITokenAddress, address nftTokenAddress) IPool(iAITokenAddress, nftTokenAddress) { poolType = 'Pool 1'; apr = 200; nftThreshold = 1; tokenThreshold = 10000 ether; minPoolPeriod = 182 days; } function pool(uint256 _amount) external payable { require(poolActive, 'Pool is not currently active'); require(iAI.balanceOf(msg.sender) >= _amount, 'Insufficient $iAI balance'); require(_amount >= tokenThreshold, '$iAI threshold not met'); require(nft9022.balanceOf(msg.sender) >= nftThreshold, '9022 threshold not met'); iAI.transferFrom(msg.sender, address(this), _amount); poolBalance[msg.sender] += _amount; poolData[msg.sender].push(Pool(_amount, apr, block.timestamp, poolType)); emit Pooled(msg.sender, _amount); } function unPool(uint256 _index) external nonReentrant { require(poolActive, 'Pool is not currently active'); require(poolData[msg.sender].length > 0, 'No stakes found for the address'); require(poolData[msg.sender].length >= _index + 1, 'Stake does not exist'); // uint256 totalStaked = poolingBalance[msg.sender]; uint256 lastStakeIndex = _index; Pool memory lastStake = poolData[msg.sender][lastStakeIndex]; uint256 timeStaked = block.timestamp - lastStake.timestamp; require(timeStaked >= minPoolPeriod, 'Minimum pooling period not reached'); uint256 latestStake = lastStake.amount; uint256 reward = (latestStake * apr) / 10000; uint256 payout = latestStake + reward; // Remove the stake at the given index for (uint256 i = _index; i < poolData[msg.sender].length - 1; i++) { poolData[msg.sender][i] = poolData[msg.sender][i + 1]; } poolData[msg.sender].pop(); poolBalance[msg.sender] -= latestStake; lastClaimTime[msg.sender] = block.timestamp; iAI.transfer(msg.sender, payout); emit Unpooled(msg.sender, payout, timeStaked); } function withdrawPosition(uint256 _index) external nonReentrant { require(poolActive, 'Pool is not currently active'); require(poolData[msg.sender].length > 0, 'No stakes found for the address'); require(poolData[msg.sender].length >= _index + 1, 'Stake does not exist'); uint256 lastStakeIndex = _index; Pool memory lastStake = poolData[msg.sender][lastStakeIndex]; uint256 timeStaked = block.timestamp - lastStake.timestamp; uint256 latestStake = lastStake.amount; require(timeStaked <= minPoolPeriod, 'Withdraw with penalty time exceed you can now unstake token '); uint256 penalty = (latestStake * withdrawPenalty) / 100; // Remove the stake at the given index for (uint256 i = _index; i < poolData[msg.sender].length - 1; i++) { poolData[msg.sender][i] = poolData[msg.sender][i + 1]; } poolData[msg.sender].pop(); poolBalance[msg.sender] -= latestStake; lastClaimTime[msg.sender] = block.timestamp; uint256 payout = latestStake - penalty; iAI.transfer(msg.sender, payout); emit Penalty(msg.sender, payout); } function claimReward() external nonReentrant { require(poolActive, 'Pool is not currently active'); require(poolData[msg.sender].length > 0, 'No stakes found for the address'); uint256 totalStaked = poolBalance[msg.sender]; uint256 lastClaim = lastClaimTime[msg.sender]; uint256 timeElapsed = block.timestamp - lastClaim; require(timeElapsed > 0, 'No rewards to claim'); // Calculate the reward uint256 reward = (totalStaked * (apr / 365) * (timeElapsed / 1 days)) / 100; require(reward > 0, 'Not Eligible for reward'); lastClaimTime[msg.sender] = block.timestamp; iAI.transfer(msg.sender, reward); emit RewardClaimed(msg.sender, reward); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import '@openzeppelin/contracts/security/ReentrancyGuard.sol'; import '@openzeppelin/contracts/access/Ownable.sol'; interface IiAI { function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); } interface I9022 { function balanceOf(address account) external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); } contract IPool is ReentrancyGuard, Ownable { IiAI public iAI; I9022 public nft9022; struct Pool { uint256 amount; uint256 apr; uint256 timestamp; string poolType; } string public poolType; uint256 public apr; uint256 public nftThreshold; uint256 public tokenThreshold; uint256 public minPoolPeriod; uint256 public withdrawPenalty = 25; bool public poolActive = true; mapping(address => Pool[]) internal poolData; mapping(address => uint256) internal poolBalance; mapping(address => uint256) internal lastClaimTime; event Pooled(address indexed from, uint256 amount); event Unpooled(address indexed to, uint256 amount, uint256 poolPeriod); event Penalty(address indexed to, uint256 amount); event RewardClaimed(address indexed to, uint256 amount); event Received(address, uint); constructor(address iAITokenAddress, address nftTokenAddress) Ownable() { iAI = IiAI(iAITokenAddress); nft9022 = I9022(nftTokenAddress); } receive() external payable { emit Received(msg.sender, msg.value); } function setPoolState() external onlyOwner { poolActive = !poolActive; } function setIAIToken(address _tokenAddress) external onlyOwner { iAI = IiAI(_tokenAddress); } function setNftToken(address _tokenAddress) external onlyOwner { nft9022 = I9022(_tokenAddress); } function setTokenThreshold(uint256 _amount) external onlyOwner { require(_amount > 0, 'Amount can not be 0'); tokenThreshold = _amount; } function setNftThreshold(uint256 _amount) external onlyOwner { require(_amount > 0, 'Amount can not be 0'); nftThreshold = _amount; } function setARP(uint256 _arp) external onlyOwner { require(_arp > 0, 'Amount can not be zero'); apr = _arp; } function setMinPoolingPeriod(uint256 _minstakingPeriod) external onlyOwner { require(_minstakingPeriod > 0, "Amount cann't be zero"); minPoolPeriod = _minstakingPeriod; } function setWithdrawPenalty(uint256 _withdrawPenalty) external onlyOwner { require(_withdrawPenalty > 0, "Amount cann't be zero"); withdrawPenalty = _withdrawPenalty; } function poolPostions(address _staker) public view returns (uint256) { return poolBalance[_staker]; } function poolPostionDetails(address _staker, uint256 _index) public view returns (Pool memory) { return poolData[_staker][_index]; } function lastclaimtime(address _staker) public view returns (uint256) { return lastClaimTime[_staker]; } function allPooled(address _staker) public view returns (Pool[] memory) { return poolData[_staker]; } function widthdrawIAI(address _address, uint256 _amount) external onlyOwner { iAI.transfer(_address, _amount); } function withdraw(address _address) external onlyOwner { uint256 balance = address(this).balance; require(balance > 0, 'Amount is too high'); payable(_address).transfer(balance); } function getUserTokens(address _address) public view returns (uint256[] memory) { uint256 totalTokens = nft9022.balanceOf(_address); uint256[] memory tokenIds = new uint256[](totalTokens); for (uint256 i = 0; i < totalTokens; i++) { tokenIds[i] = nft9022.tokenOfOwnerByIndex(_address, i); } return tokenIds; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"iAITokenAddress","type":"address"},{"internalType":"address","name":"nftTokenAddress","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":"amount","type":"uint256"}],"name":"Penalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Pooled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolPeriod","type":"uint256"}],"name":"Unpooled","type":"event"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"allPooled","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"string","name":"poolType","type":"string"}],"internalType":"struct IPool.Pool[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getUserTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"iAI","outputs":[{"internalType":"contract IiAI","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"lastclaimtime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPoolPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft9022","outputs":[{"internalType":"contract I9022","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"pool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"poolActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolPostionDetails","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"string","name":"poolType","type":"string"}],"internalType":"struct IPool.Pool","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"poolPostions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolType","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_arp","type":"uint256"}],"name":"setARP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setIAIToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minstakingPeriod","type":"uint256"}],"name":"setMinPoolingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setNftThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setNftToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPoolState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawPenalty","type":"uint256"}],"name":"setWithdrawPenalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenThreshold","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":"_index","type":"uint256"}],"name":"unPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"widthdrawIAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawPenalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"withdrawPosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260196009556001600a60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b506040516200451e3803806200451e8339818101604052810190620000579190620002b7565b8181600160008190555062000081620000756200017f60201b60201c565b6200018760201b60201c565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506040518060400160405280600681526020017f506f6f6c20310000000000000000000000000000000000000000000000000000815250600490816200014b919062000578565b5060c8600581905550600160068190555069021e19e0c9bab240000060078190555062eff10060088190555050506200065f565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200027f8262000252565b9050919050565b620002918162000272565b81146200029d57600080fd5b50565b600081519050620002b18162000286565b92915050565b60008060408385031215620002d157620002d06200024d565b5b6000620002e185828601620002a0565b9250506020620002f485828601620002a0565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038057607f821691505b60208210810362000396576200039562000338565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c1565b6200040c8683620003c1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000459620004536200044d8462000424565b6200042e565b62000424565b9050919050565b6000819050919050565b620004758362000438565b6200048d620004848262000460565b848454620003ce565b825550505050565b600090565b620004a462000495565b620004b18184846200046a565b505050565b5b81811015620004d957620004cd6000826200049a565b600181019050620004b7565b5050565b601f8211156200052857620004f2816200039c565b620004fd84620003b1565b810160208510156200050d578190505b620005256200051c85620003b1565b830182620004b6565b50505b505050565b600082821c905092915050565b60006200054d600019846008026200052d565b1980831691505092915050565b60006200056883836200053a565b9150826002028217905092915050565b6200058382620002fe565b67ffffffffffffffff8111156200059f576200059e62000309565b5b620005ab825462000367565b620005b8828285620004dd565b600060209050601f831160018114620005f05760008415620005db578287015190505b620005e785826200055a565b86555062000657565b601f19841662000600866200039c565b60005b828110156200062a5784890151825560018201915060208501945060208101905062000603565b868310156200064a578489015162000646601f8916826200053a565b8355505b6001600288020188555050505b505050505050565b613eaf806200066f6000396000f3fe6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063d207e24411610095578063ed7b526c11610064578063ed7b526c1461068e578063f2fde38b146106cb578063fbf3e49b146106f4578063fe313112146107315761021c565b8063d207e244146105ea578063dc4a81af14610613578063dcb40c9f1461063c578063de15af2e146106655761021c565b8063b2189330116100d1578063b218933014610554578063b7f06c811461057d578063b88a802f146105a8578063c7601677146105bf5761021c565b80638da5cb5b146104a8578063a9f74b24146104d3578063b0e6bc00146104fe578063b1dd61b6146105295761021c565b8063525c12ea1161017a57806366692ff01161014957806366692ff014610414578063715018a61461043f57806387bde549146104565780638b8959af1461047f5761021c565b8063525c12ea1461035a57806356d2b1d11461038357806357ded9c9146103ac57806361e87005146103d75761021c565b80633f69da75116101b65780633f69da751461028e578063460cd978146102cb578063519dc8d2146102f457806351cff8d9146103315761021c565b80630ebd8f52146102215780631a1ce2fc146102385780632b3f6f66146102635761021c565b3661021c577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610212929190612a16565b60405180910390a1005b600080fd5b34801561022d57600080fd5b5061023661074d565b005b34801561024457600080fd5b5061024d610781565b60405161025a9190612a3f565b60405180910390f35b34801561026f57600080fd5b50610278610787565b6040516102859190612ab9565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b09190612b05565b6107ad565b6040516102c29190612cf6565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190612d44565b6108fb565b005b34801561030057600080fd5b5061031b60048036038101906103169190612b05565b610fb8565b6040516103289190612e20565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612b05565b61118d565b005b34801561036657600080fd5b50610381600480360381019061037c9190612d44565b611228565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612b05565b6118e2565b005b3480156103b857600080fd5b506103c161192e565b6040516103ce9190612a3f565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612e42565b611934565b60405161040b9190612ee5565b60405180910390f35b34801561042057600080fd5b50610429611a5e565b6040516104369190612a3f565b60405180910390f35b34801561044b57600080fd5b50610454611a64565b005b34801561046257600080fd5b5061047d60048036038101906104789190612d44565b611a78565b005b34801561048b57600080fd5b506104a660048036038101906104a19190612d44565b611acd565b005b3480156104b457600080fd5b506104bd611b22565b6040516104ca9190612f07565b60405180910390f35b3480156104df57600080fd5b506104e8611b4c565b6040516104f59190612a3f565b60405180910390f35b34801561050a57600080fd5b50610513611b52565b6040516105209190612a3f565b60405180910390f35b34801561053557600080fd5b5061053e611b58565b60405161054b9190612f6c565b60405180910390f35b34801561056057600080fd5b5061057b60048036038101906105769190612d44565b611be6565b005b34801561058957600080fd5b50610592611c3b565b60405161059f9190612fa9565b60405180910390f35b3480156105b457600080fd5b506105bd611c4e565b005b3480156105cb57600080fd5b506105d4611fcd565b6040516105e19190612fe5565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190612b05565b611ff3565b005b34801561061f57600080fd5b5061063a60048036038101906106359190612e42565b61203f565b005b34801561064857600080fd5b50610663600480360381019061065e9190612d44565b6120ec565b005b34801561067157600080fd5b5061068c60048036038101906106879190612d44565b612141565b005b34801561069a57600080fd5b506106b560048036038101906106b09190612b05565b612196565b6040516106c29190612a3f565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed9190612b05565b6121df565b005b34801561070057600080fd5b5061071b60048036038101906107169190612b05565b612262565b6040516107289190612a3f565b60405180910390f35b61074b60048036038101906107469190612d44565b6122ab565b005b610755612792565b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156108f0578382906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461085f9061302f565b80601f016020809104026020016040519081016040528092919081815260200182805461088b9061302f565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050815250508152602001906001019061080e565b505050509050919050565b610903612810565b600a60009054906101000a900460ff16610952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610949906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90613118565b60405180910390fd5b6001816109e49190613167565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906131e7565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610ac057610abf613207565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610b079061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b339061302f565b8015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b50505050508152505090506000816040015142610b9d9190613236565b9050600854811015610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906132dc565b60405180910390fd5b600082600001519050600061271060055483610c0091906132fc565b610c0a919061336d565b905060008183610c1a9190613167565b905060008790505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610c719190613236565b811015610d8b57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610cc49190613167565b81548110610cd557610cd4613207565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d3457610d33613207565b5b906000526020600020906004020160008201548160000155600182015481600101556002820154816002015560038201816003019081610d749190613585565b509050508080610d839061366d565b915050610c22565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610ddb57610dda6136b5565b5b600190038181906000526020600020906004020160008082016000905560018201600090556002820160009055600382016000610e189190612937565b5050905582600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6b9190613236565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f13929190612a16565b6020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613710565b503373ffffffffffffffffffffffffffffffffffffffff167fc2b6ce907a80e663575d7e56ca2f7fb6f9089365ca93e155c85d64dce06102bc8286604051610f9f92919061373d565b60405180910390a2505050505050610fb561285f565b50565b60606000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016110179190612f07565b602060405180830381865afa158015611034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611058919061377b565b905060008167ffffffffffffffff811115611076576110756133b4565b5b6040519080825280602002602001820160405280156110a45781602001602082028036833780820191505090505b50905060005b8281101561118257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b815260040161110f929190612a16565b602060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611150919061377b565b82828151811061116357611162613207565b5b602002602001018181525050808061117a9061366d565b9150506110aa565b508092505050919050565b611195612792565b6000479050600081116111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906137f4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611223573d6000803e3d6000fd5b505050565b611230612810565b600a60009054906101000a900460ff1661127f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611276906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90613118565b60405180910390fd5b6001816113119190613167565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c906131e7565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106113ed576113ec613207565b5b90600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820180546114349061302f565b80601f01602080910402602001604051908101604052809291908181526020018280546114609061302f565b80156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b505050505081525050905060008160400151426114ca9190613236565b905060008260000151905060085482111561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613886565b60405180910390fd5b600060646009548361152c91906132fc565b611536919061336d565b905060008690505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061158d9190613236565b8110156116a757600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001826115e09190613167565b815481106115f1576115f0613207565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116505761164f613207565b5b9060005260206000209060040201600082015481600001556001820154816001015560028201548160020155600382018160030190816116909190613585565b50905050808061169f9061366d565b91505061153e565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806116f7576116f66136b5565b5b6001900381819060005260206000209060040201600080820160009055600182016000905560028201600090556003820160006117349190612937565b5050905581600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117879190613236565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081836117e09190613236565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161183f929190612a16565b6020604051808303816000875af115801561185e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118829190613710565b503373ffffffffffffffffffffffffffffffffffffffff167f322e5021ddf51920f7602154a6c845b34ef1b32704a1fa2c66927b56be280762826040516118c99190612a3f565b60405180910390a25050505050506118df61285f565b50565b6118ea612792565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b61193c612977565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061198d5761198c613207565b5b90600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820180546119d49061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054611a009061302f565b8015611a4d5780601f10611a2257610100808354040283529160200191611a4d565b820191906000526020600020905b815481529060010190602001808311611a3057829003601f168201915b505050505081525050905092915050565b60075481565b611a6c612792565b611a766000612869565b565b611a80612792565b60008111611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba906138f2565b60405180910390fd5b8060078190555050565b611ad5612792565b60008111611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f906138f2565b60405180910390fd5b8060068190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60065481565b60048054611b659061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b919061302f565b8015611bde5780601f10611bb357610100808354040283529160200191611bde565b820191906000526020600020905b815481529060010190602001808311611bc157829003601f168201915b505050505081565b611bee612792565b60008111611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c289061395e565b60405180910390fd5b8060098190555050565b600a60009054906101000a900460ff1681565b611c56612810565b600a60009054906101000a900460ff16611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190613118565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008142611dc09190613236565b905060008111611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc906139ca565b60405180910390fd5b600060646201518083611e18919061336d565b61016d600554611e28919061336d565b86611e3391906132fc565b611e3d91906132fc565b611e47919061336d565b905060008111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613a36565b60405180910390fd5b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f2d929190612a16565b6020604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190613710565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611fb79190612a3f565b60405180910390a250505050611fcb61285f565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ffb612792565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612047612792565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016120a4929190612a16565b6020604051808303816000875af11580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190613710565b505050565b6120f4612792565b60008111612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613aa2565b60405180910390fd5b8060058190555050565b612149612792565b6000811161218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839061395e565b60405180910390fd5b8060088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121e7612792565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224d90613b34565b60405180910390fd5b61225f81612869565b50565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff166122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906130ac565b60405180910390fd5b80600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016123569190612f07565b602060405180830381865afa158015612373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612397919061377b565b10156123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613ba0565b60405180910390fd5b60075481101561241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241490613c0c565b60405180910390fd5b600654600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161247b9190612f07565b602060405180830381865afa158015612498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bc919061377b565b10156124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490613c78565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161255c93929190613c98565b6020604051808303816000875af115801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190613710565b5080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125ef9190613167565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052808381526020016005548152602001428152602001600480546126619061302f565b80601f016020809104026020016040519081016040528092919081815260200182805461268d9061302f565b80156126da5780601f106126af576101008083540402835291602001916126da565b820191906000526020600020905b8154815290600101906020018083116126bd57829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301908161273e9190613ccf565b5050503373ffffffffffffffffffffffffffffffffffffffff167f423eb3fc7f00914fa251f391851045c36a87052e7afb63e89ad6991b56a6c617826040516127879190612a3f565b60405180910390a250565b61279a61292f565b73ffffffffffffffffffffffffffffffffffffffff166127b8611b22565b73ffffffffffffffffffffffffffffffffffffffff161461280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280590613ded565b60405180910390fd5b565b600260005403612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90613e59565b60405180910390fd5b6002600081905550565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b5080546129439061302f565b6000825580601f106129555750612974565b601f016020900490600052602060002090810190612973919061299f565b5b50565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b5b808211156129b85760008160009055506001016129a0565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129e7826129bc565b9050919050565b6129f7816129dc565b82525050565b6000819050919050565b612a10816129fd565b82525050565b6000604082019050612a2b60008301856129ee565b612a386020830184612a07565b9392505050565b6000602082019050612a546000830184612a07565b92915050565b6000819050919050565b6000612a7f612a7a612a75846129bc565b612a5a565b6129bc565b9050919050565b6000612a9182612a64565b9050919050565b6000612aa382612a86565b9050919050565b612ab381612a98565b82525050565b6000602082019050612ace6000830184612aaa565b92915050565b600080fd5b612ae2816129dc565b8114612aed57600080fd5b50565b600081359050612aff81612ad9565b92915050565b600060208284031215612b1b57612b1a612ad4565b5b6000612b2984828501612af0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b67816129fd565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ba7578082015181840152602081019050612b8c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bcf82612b6d565b612bd98185612b78565b9350612be9818560208601612b89565b612bf281612bb3565b840191505092915050565b6000608083016000830151612c156000860182612b5e565b506020830151612c286020860182612b5e565b506040830151612c3b6040860182612b5e565b5060608301518482036060860152612c538282612bc4565b9150508091505092915050565b6000612c6c8383612bfd565b905092915050565b6000602082019050919050565b6000612c8c82612b32565b612c968185612b3d565b935083602082028501612ca885612b4e565b8060005b85811015612ce45784840389528151612cc58582612c60565b9450612cd083612c74565b925060208a01995050600181019050612cac565b50829750879550505050505092915050565b60006020820190508181036000830152612d108184612c81565b905092915050565b612d21816129fd565b8114612d2c57600080fd5b50565b600081359050612d3e81612d18565b92915050565b600060208284031215612d5a57612d59612ad4565b5b6000612d6884828501612d2f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612da98383612b5e565b60208301905092915050565b6000602082019050919050565b6000612dcd82612d71565b612dd78185612d7c565b9350612de283612d8d565b8060005b83811015612e13578151612dfa8882612d9d565b9750612e0583612db5565b925050600181019050612de6565b5085935050505092915050565b60006020820190508181036000830152612e3a8184612dc2565b905092915050565b60008060408385031215612e5957612e58612ad4565b5b6000612e6785828601612af0565b9250506020612e7885828601612d2f565b9150509250929050565b6000608083016000830151612e9a6000860182612b5e565b506020830151612ead6020860182612b5e565b506040830151612ec06040860182612b5e565b5060608301518482036060860152612ed88282612bc4565b9150508091505092915050565b60006020820190508181036000830152612eff8184612e82565b905092915050565b6000602082019050612f1c60008301846129ee565b92915050565b600082825260208201905092915050565b6000612f3e82612b6d565b612f488185612f22565b9350612f58818560208601612b89565b612f6181612bb3565b840191505092915050565b60006020820190508181036000830152612f868184612f33565b905092915050565b60008115159050919050565b612fa381612f8e565b82525050565b6000602082019050612fbe6000830184612f9a565b92915050565b6000612fcf82612a86565b9050919050565b612fdf81612fc4565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061304757607f821691505b60208210810361305a57613059613000565b5b50919050565b7f506f6f6c206973206e6f742063757272656e746c792061637469766500000000600082015250565b6000613096601c83612f22565b91506130a182613060565b602082019050919050565b600060208201905081810360008301526130c581613089565b9050919050565b7f4e6f207374616b657320666f756e6420666f7220746865206164647265737300600082015250565b6000613102601f83612f22565b915061310d826130cc565b602082019050919050565b60006020820190508181036000830152613131816130f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613172826129fd565b915061317d836129fd565b925082820190508082111561319557613194613138565b5b92915050565b7f5374616b6520646f6573206e6f74206578697374000000000000000000000000600082015250565b60006131d1601483612f22565b91506131dc8261319b565b602082019050919050565b60006020820190508181036000830152613200816131c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613241826129fd565b915061324c836129fd565b925082820390508181111561326457613263613138565b5b92915050565b7f4d696e696d756d20706f6f6c696e6720706572696f64206e6f7420726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c6602283612f22565b91506132d18261326a565b604082019050919050565b600060208201905081810360008301526132f5816132b9565b9050919050565b6000613307826129fd565b9150613312836129fd565b9250828202613320816129fd565b9150828204841483151761333757613336613138565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613378826129fd565b9150613383836129fd565b9250826133935761339261333e565b5b828204905092915050565b6000815490506133ad8161302f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026134457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613408565b61344f8683613408565b95508019841693508086168417925050509392505050565b600061348261347d613478846129fd565b612a5a565b6129fd565b9050919050565b6000819050919050565b61349c83613467565b6134b06134a882613489565b848454613415565b825550505050565b600090565b6134c56134b8565b6134d0818484613493565b505050565b5b818110156134f4576134e96000826134bd565b6001810190506134d6565b5050565b601f8211156135395761350a816133e3565b613513846133f8565b81016020851015613522578190505b61353661352e856133f8565b8301826134d5565b50505b505050565b600082821c905092915050565b600061355c6000198460080261353e565b1980831691505092915050565b6000613575838361354b565b9150826002028217905092915050565b81810361359357505061366b565b61359c8261339e565b67ffffffffffffffff8111156135b5576135b46133b4565b5b6135bf825461302f565b6135ca8282856134f8565b6000601f8311600181146135f957600084156135e7578287015490505b6135f18582613569565b865550613664565b601f198416613607876133e3565b9650613612866133e3565b60005b8281101561363a57848901548255600182019150600185019450602081019050613615565b868310156136575784890154613653601f89168261354b565b8355505b6001600288020188555050505b5050505050505b565b6000613678826129fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136aa576136a9613138565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6136ed81612f8e565b81146136f857600080fd5b50565b60008151905061370a816136e4565b92915050565b60006020828403121561372657613725612ad4565b5b6000613734848285016136fb565b91505092915050565b60006040820190506137526000830185612a07565b61375f6020830184612a07565b9392505050565b60008151905061377581612d18565b92915050565b60006020828403121561379157613790612ad4565b5b600061379f84828501613766565b91505092915050565b7f416d6f756e7420697320746f6f20686967680000000000000000000000000000600082015250565b60006137de601283612f22565b91506137e9826137a8565b602082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f576974686472617720776974682070656e616c74792074696d6520657863656560008201527f6420796f752063616e206e6f7720756e7374616b6520746f6b656e2000000000602082015250565b6000613870603c83612f22565b915061387b82613814565b604082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f416d6f756e742063616e206e6f74206265203000000000000000000000000000600082015250565b60006138dc601383612f22565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b9050919050565b7f416d6f756e742063616e6e2774206265207a65726f0000000000000000000000600082015250565b6000613948601583612f22565b915061395382613912565b602082019050919050565b600060208201905081810360008301526139778161393b565b9050919050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b60006139b4601383612f22565b91506139bf8261397e565b602082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b7f4e6f7420456c696769626c6520666f7220726577617264000000000000000000600082015250565b6000613a20601783612f22565b9150613a2b826139ea565b602082019050919050565b60006020820190508181036000830152613a4f81613a13565b9050919050565b7f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000600082015250565b6000613a8c601683612f22565b9150613a9782613a56565b602082019050919050565b60006020820190508181036000830152613abb81613a7f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b1e602683612f22565b9150613b2982613ac2565b604082019050919050565b60006020820190508181036000830152613b4d81613b11565b9050919050565b7f496e73756666696369656e7420246941492062616c616e636500000000000000600082015250565b6000613b8a601983612f22565b9150613b9582613b54565b602082019050919050565b60006020820190508181036000830152613bb981613b7d565b9050919050565b7f24694149207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b6000613bf6601683612f22565b9150613c0182613bc0565b602082019050919050565b60006020820190508181036000830152613c2581613be9565b9050919050565b7f39303232207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b6000613c62601683612f22565b9150613c6d82613c2c565b602082019050919050565b60006020820190508181036000830152613c9181613c55565b9050919050565b6000606082019050613cad60008301866129ee565b613cba60208301856129ee565b613cc76040830184612a07565b949350505050565b613cd882612b6d565b67ffffffffffffffff811115613cf157613cf06133b4565b5b613cfb825461302f565b613d068282856134f8565b600060209050601f831160018114613d395760008415613d27578287015190505b613d318582613569565b865550613d99565b601f198416613d47866133e3565b60005b82811015613d6f57848901518255600182019150602085019450602081019050613d4a565b86831015613d8c5784890151613d88601f89168261354b565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dd7602083612f22565b9150613de282613da1565b602082019050919050565b60006020820190508181036000830152613e0681613dca565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613e43601f83612f22565b9150613e4e82613e0d565b602082019050919050565b60006020820190508181036000830152613e7281613e36565b905091905056fea26469706673582212200bceb28f4ea27cb1e4874106a21166103b94a38df019f4606f6d441b4bb0d5b364736f6c634300081100330000000000000000000000006dde4ffd6db302bc9a46850f61399e082f6c2122000000000000000000000000853806fca5ee8a6ac99dc84a8e3596a4f6541796
Deployed Bytecode
0x6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063d207e24411610095578063ed7b526c11610064578063ed7b526c1461068e578063f2fde38b146106cb578063fbf3e49b146106f4578063fe313112146107315761021c565b8063d207e244146105ea578063dc4a81af14610613578063dcb40c9f1461063c578063de15af2e146106655761021c565b8063b2189330116100d1578063b218933014610554578063b7f06c811461057d578063b88a802f146105a8578063c7601677146105bf5761021c565b80638da5cb5b146104a8578063a9f74b24146104d3578063b0e6bc00146104fe578063b1dd61b6146105295761021c565b8063525c12ea1161017a57806366692ff01161014957806366692ff014610414578063715018a61461043f57806387bde549146104565780638b8959af1461047f5761021c565b8063525c12ea1461035a57806356d2b1d11461038357806357ded9c9146103ac57806361e87005146103d75761021c565b80633f69da75116101b65780633f69da751461028e578063460cd978146102cb578063519dc8d2146102f457806351cff8d9146103315761021c565b80630ebd8f52146102215780631a1ce2fc146102385780632b3f6f66146102635761021c565b3661021c577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610212929190612a16565b60405180910390a1005b600080fd5b34801561022d57600080fd5b5061023661074d565b005b34801561024457600080fd5b5061024d610781565b60405161025a9190612a3f565b60405180910390f35b34801561026f57600080fd5b50610278610787565b6040516102859190612ab9565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b09190612b05565b6107ad565b6040516102c29190612cf6565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190612d44565b6108fb565b005b34801561030057600080fd5b5061031b60048036038101906103169190612b05565b610fb8565b6040516103289190612e20565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612b05565b61118d565b005b34801561036657600080fd5b50610381600480360381019061037c9190612d44565b611228565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612b05565b6118e2565b005b3480156103b857600080fd5b506103c161192e565b6040516103ce9190612a3f565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612e42565b611934565b60405161040b9190612ee5565b60405180910390f35b34801561042057600080fd5b50610429611a5e565b6040516104369190612a3f565b60405180910390f35b34801561044b57600080fd5b50610454611a64565b005b34801561046257600080fd5b5061047d60048036038101906104789190612d44565b611a78565b005b34801561048b57600080fd5b506104a660048036038101906104a19190612d44565b611acd565b005b3480156104b457600080fd5b506104bd611b22565b6040516104ca9190612f07565b60405180910390f35b3480156104df57600080fd5b506104e8611b4c565b6040516104f59190612a3f565b60405180910390f35b34801561050a57600080fd5b50610513611b52565b6040516105209190612a3f565b60405180910390f35b34801561053557600080fd5b5061053e611b58565b60405161054b9190612f6c565b60405180910390f35b34801561056057600080fd5b5061057b60048036038101906105769190612d44565b611be6565b005b34801561058957600080fd5b50610592611c3b565b60405161059f9190612fa9565b60405180910390f35b3480156105b457600080fd5b506105bd611c4e565b005b3480156105cb57600080fd5b506105d4611fcd565b6040516105e19190612fe5565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190612b05565b611ff3565b005b34801561061f57600080fd5b5061063a60048036038101906106359190612e42565b61203f565b005b34801561064857600080fd5b50610663600480360381019061065e9190612d44565b6120ec565b005b34801561067157600080fd5b5061068c60048036038101906106879190612d44565b612141565b005b34801561069a57600080fd5b506106b560048036038101906106b09190612b05565b612196565b6040516106c29190612a3f565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed9190612b05565b6121df565b005b34801561070057600080fd5b5061071b60048036038101906107169190612b05565b612262565b6040516107289190612a3f565b60405180910390f35b61074b60048036038101906107469190612d44565b6122ab565b005b610755612792565b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156108f0578382906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461085f9061302f565b80601f016020809104026020016040519081016040528092919081815260200182805461088b9061302f565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050815250508152602001906001019061080e565b505050509050919050565b610903612810565b600a60009054906101000a900460ff16610952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610949906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90613118565b60405180910390fd5b6001816109e49190613167565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906131e7565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610ac057610abf613207565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610b079061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b339061302f565b8015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b50505050508152505090506000816040015142610b9d9190613236565b9050600854811015610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906132dc565b60405180910390fd5b600082600001519050600061271060055483610c0091906132fc565b610c0a919061336d565b905060008183610c1a9190613167565b905060008790505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610c719190613236565b811015610d8b57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610cc49190613167565b81548110610cd557610cd4613207565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d3457610d33613207565b5b906000526020600020906004020160008201548160000155600182015481600101556002820154816002015560038201816003019081610d749190613585565b509050508080610d839061366d565b915050610c22565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480610ddb57610dda6136b5565b5b600190038181906000526020600020906004020160008082016000905560018201600090556002820160009055600382016000610e189190612937565b5050905582600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6b9190613236565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f13929190612a16565b6020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613710565b503373ffffffffffffffffffffffffffffffffffffffff167fc2b6ce907a80e663575d7e56ca2f7fb6f9089365ca93e155c85d64dce06102bc8286604051610f9f92919061373d565b60405180910390a2505050505050610fb561285f565b50565b60606000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016110179190612f07565b602060405180830381865afa158015611034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611058919061377b565b905060008167ffffffffffffffff811115611076576110756133b4565b5b6040519080825280602002602001820160405280156110a45781602001602082028036833780820191505090505b50905060005b8281101561118257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b815260040161110f929190612a16565b602060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611150919061377b565b82828151811061116357611162613207565b5b602002602001018181525050808061117a9061366d565b9150506110aa565b508092505050919050565b611195612792565b6000479050600081116111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906137f4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611223573d6000803e3d6000fd5b505050565b611230612810565b600a60009054906101000a900460ff1661127f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611276906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90613118565b60405180910390fd5b6001816113119190613167565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c906131e7565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106113ed576113ec613207565b5b90600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820180546114349061302f565b80601f01602080910402602001604051908101604052809291908181526020018280546114609061302f565b80156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b505050505081525050905060008160400151426114ca9190613236565b905060008260000151905060085482111561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613886565b60405180910390fd5b600060646009548361152c91906132fc565b611536919061336d565b905060008690505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061158d9190613236565b8110156116a757600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001826115e09190613167565b815481106115f1576115f0613207565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116505761164f613207565b5b9060005260206000209060040201600082015481600001556001820154816001015560028201548160020155600382018160030190816116909190613585565b50905050808061169f9061366d565b91505061153e565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806116f7576116f66136b5565b5b6001900381819060005260206000209060040201600080820160009055600182016000905560028201600090556003820160006117349190612937565b5050905581600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117879190613236565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081836117e09190613236565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161183f929190612a16565b6020604051808303816000875af115801561185e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118829190613710565b503373ffffffffffffffffffffffffffffffffffffffff167f322e5021ddf51920f7602154a6c845b34ef1b32704a1fa2c66927b56be280762826040516118c99190612a3f565b60405180910390a25050505050506118df61285f565b50565b6118ea612792565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b61193c612977565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061198d5761198c613207565b5b90600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820180546119d49061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054611a009061302f565b8015611a4d5780601f10611a2257610100808354040283529160200191611a4d565b820191906000526020600020905b815481529060010190602001808311611a3057829003601f168201915b505050505081525050905092915050565b60075481565b611a6c612792565b611a766000612869565b565b611a80612792565b60008111611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba906138f2565b60405180910390fd5b8060078190555050565b611ad5612792565b60008111611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f906138f2565b60405180910390fd5b8060068190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60065481565b60048054611b659061302f565b80601f0160208091040260200160405190810160405280929190818152602001828054611b919061302f565b8015611bde5780601f10611bb357610100808354040283529160200191611bde565b820191906000526020600020905b815481529060010190602001808311611bc157829003601f168201915b505050505081565b611bee612792565b60008111611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c289061395e565b60405180910390fd5b8060098190555050565b600a60009054906101000a900460ff1681565b611c56612810565b600a60009054906101000a900460ff16611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906130ac565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190613118565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008142611dc09190613236565b905060008111611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc906139ca565b60405180910390fd5b600060646201518083611e18919061336d565b61016d600554611e28919061336d565b86611e3391906132fc565b611e3d91906132fc565b611e47919061336d565b905060008111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613a36565b60405180910390fd5b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f2d929190612a16565b6020604051808303816000875af1158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190613710565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611fb79190612a3f565b60405180910390a250505050611fcb61285f565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ffb612792565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612047612792565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016120a4929190612a16565b6020604051808303816000875af11580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190613710565b505050565b6120f4612792565b60008111612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613aa2565b60405180910390fd5b8060058190555050565b612149612792565b6000811161218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839061395e565b60405180910390fd5b8060088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121e7612792565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224d90613b34565b60405180910390fd5b61225f81612869565b50565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff166122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906130ac565b60405180910390fd5b80600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016123569190612f07565b602060405180830381865afa158015612373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612397919061377b565b10156123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613ba0565b60405180910390fd5b60075481101561241d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241490613c0c565b60405180910390fd5b600654600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161247b9190612f07565b602060405180830381865afa158015612498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bc919061377b565b10156124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490613c78565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161255c93929190613c98565b6020604051808303816000875af115801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190613710565b5080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125ef9190613167565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052808381526020016005548152602001428152602001600480546126619061302f565b80601f016020809104026020016040519081016040528092919081815260200182805461268d9061302f565b80156126da5780601f106126af576101008083540402835291602001916126da565b820191906000526020600020905b8154815290600101906020018083116126bd57829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301908161273e9190613ccf565b5050503373ffffffffffffffffffffffffffffffffffffffff167f423eb3fc7f00914fa251f391851045c36a87052e7afb63e89ad6991b56a6c617826040516127879190612a3f565b60405180910390a250565b61279a61292f565b73ffffffffffffffffffffffffffffffffffffffff166127b8611b22565b73ffffffffffffffffffffffffffffffffffffffff161461280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280590613ded565b60405180910390fd5b565b600260005403612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284c90613e59565b60405180910390fd5b6002600081905550565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b5080546129439061302f565b6000825580601f106129555750612974565b601f016020900490600052602060002090810190612973919061299f565b5b50565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b5b808211156129b85760008160009055506001016129a0565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129e7826129bc565b9050919050565b6129f7816129dc565b82525050565b6000819050919050565b612a10816129fd565b82525050565b6000604082019050612a2b60008301856129ee565b612a386020830184612a07565b9392505050565b6000602082019050612a546000830184612a07565b92915050565b6000819050919050565b6000612a7f612a7a612a75846129bc565b612a5a565b6129bc565b9050919050565b6000612a9182612a64565b9050919050565b6000612aa382612a86565b9050919050565b612ab381612a98565b82525050565b6000602082019050612ace6000830184612aaa565b92915050565b600080fd5b612ae2816129dc565b8114612aed57600080fd5b50565b600081359050612aff81612ad9565b92915050565b600060208284031215612b1b57612b1a612ad4565b5b6000612b2984828501612af0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b67816129fd565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ba7578082015181840152602081019050612b8c565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bcf82612b6d565b612bd98185612b78565b9350612be9818560208601612b89565b612bf281612bb3565b840191505092915050565b6000608083016000830151612c156000860182612b5e565b506020830151612c286020860182612b5e565b506040830151612c3b6040860182612b5e565b5060608301518482036060860152612c538282612bc4565b9150508091505092915050565b6000612c6c8383612bfd565b905092915050565b6000602082019050919050565b6000612c8c82612b32565b612c968185612b3d565b935083602082028501612ca885612b4e565b8060005b85811015612ce45784840389528151612cc58582612c60565b9450612cd083612c74565b925060208a01995050600181019050612cac565b50829750879550505050505092915050565b60006020820190508181036000830152612d108184612c81565b905092915050565b612d21816129fd565b8114612d2c57600080fd5b50565b600081359050612d3e81612d18565b92915050565b600060208284031215612d5a57612d59612ad4565b5b6000612d6884828501612d2f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000612da98383612b5e565b60208301905092915050565b6000602082019050919050565b6000612dcd82612d71565b612dd78185612d7c565b9350612de283612d8d565b8060005b83811015612e13578151612dfa8882612d9d565b9750612e0583612db5565b925050600181019050612de6565b5085935050505092915050565b60006020820190508181036000830152612e3a8184612dc2565b905092915050565b60008060408385031215612e5957612e58612ad4565b5b6000612e6785828601612af0565b9250506020612e7885828601612d2f565b9150509250929050565b6000608083016000830151612e9a6000860182612b5e565b506020830151612ead6020860182612b5e565b506040830151612ec06040860182612b5e565b5060608301518482036060860152612ed88282612bc4565b9150508091505092915050565b60006020820190508181036000830152612eff8184612e82565b905092915050565b6000602082019050612f1c60008301846129ee565b92915050565b600082825260208201905092915050565b6000612f3e82612b6d565b612f488185612f22565b9350612f58818560208601612b89565b612f6181612bb3565b840191505092915050565b60006020820190508181036000830152612f868184612f33565b905092915050565b60008115159050919050565b612fa381612f8e565b82525050565b6000602082019050612fbe6000830184612f9a565b92915050565b6000612fcf82612a86565b9050919050565b612fdf81612fc4565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061304757607f821691505b60208210810361305a57613059613000565b5b50919050565b7f506f6f6c206973206e6f742063757272656e746c792061637469766500000000600082015250565b6000613096601c83612f22565b91506130a182613060565b602082019050919050565b600060208201905081810360008301526130c581613089565b9050919050565b7f4e6f207374616b657320666f756e6420666f7220746865206164647265737300600082015250565b6000613102601f83612f22565b915061310d826130cc565b602082019050919050565b60006020820190508181036000830152613131816130f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613172826129fd565b915061317d836129fd565b925082820190508082111561319557613194613138565b5b92915050565b7f5374616b6520646f6573206e6f74206578697374000000000000000000000000600082015250565b60006131d1601483612f22565b91506131dc8261319b565b602082019050919050565b60006020820190508181036000830152613200816131c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613241826129fd565b915061324c836129fd565b925082820390508181111561326457613263613138565b5b92915050565b7f4d696e696d756d20706f6f6c696e6720706572696f64206e6f7420726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c6602283612f22565b91506132d18261326a565b604082019050919050565b600060208201905081810360008301526132f5816132b9565b9050919050565b6000613307826129fd565b9150613312836129fd565b9250828202613320816129fd565b9150828204841483151761333757613336613138565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613378826129fd565b9150613383836129fd565b9250826133935761339261333e565b5b828204905092915050565b6000815490506133ad8161302f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026134457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613408565b61344f8683613408565b95508019841693508086168417925050509392505050565b600061348261347d613478846129fd565b612a5a565b6129fd565b9050919050565b6000819050919050565b61349c83613467565b6134b06134a882613489565b848454613415565b825550505050565b600090565b6134c56134b8565b6134d0818484613493565b505050565b5b818110156134f4576134e96000826134bd565b6001810190506134d6565b5050565b601f8211156135395761350a816133e3565b613513846133f8565b81016020851015613522578190505b61353661352e856133f8565b8301826134d5565b50505b505050565b600082821c905092915050565b600061355c6000198460080261353e565b1980831691505092915050565b6000613575838361354b565b9150826002028217905092915050565b81810361359357505061366b565b61359c8261339e565b67ffffffffffffffff8111156135b5576135b46133b4565b5b6135bf825461302f565b6135ca8282856134f8565b6000601f8311600181146135f957600084156135e7578287015490505b6135f18582613569565b865550613664565b601f198416613607876133e3565b9650613612866133e3565b60005b8281101561363a57848901548255600182019150600185019450602081019050613615565b868310156136575784890154613653601f89168261354b565b8355505b6001600288020188555050505b5050505050505b565b6000613678826129fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136aa576136a9613138565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6136ed81612f8e565b81146136f857600080fd5b50565b60008151905061370a816136e4565b92915050565b60006020828403121561372657613725612ad4565b5b6000613734848285016136fb565b91505092915050565b60006040820190506137526000830185612a07565b61375f6020830184612a07565b9392505050565b60008151905061377581612d18565b92915050565b60006020828403121561379157613790612ad4565b5b600061379f84828501613766565b91505092915050565b7f416d6f756e7420697320746f6f20686967680000000000000000000000000000600082015250565b60006137de601283612f22565b91506137e9826137a8565b602082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f576974686472617720776974682070656e616c74792074696d6520657863656560008201527f6420796f752063616e206e6f7720756e7374616b6520746f6b656e2000000000602082015250565b6000613870603c83612f22565b915061387b82613814565b604082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f416d6f756e742063616e206e6f74206265203000000000000000000000000000600082015250565b60006138dc601383612f22565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b9050919050565b7f416d6f756e742063616e6e2774206265207a65726f0000000000000000000000600082015250565b6000613948601583612f22565b915061395382613912565b602082019050919050565b600060208201905081810360008301526139778161393b565b9050919050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b60006139b4601383612f22565b91506139bf8261397e565b602082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b7f4e6f7420456c696769626c6520666f7220726577617264000000000000000000600082015250565b6000613a20601783612f22565b9150613a2b826139ea565b602082019050919050565b60006020820190508181036000830152613a4f81613a13565b9050919050565b7f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000600082015250565b6000613a8c601683612f22565b9150613a9782613a56565b602082019050919050565b60006020820190508181036000830152613abb81613a7f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b1e602683612f22565b9150613b2982613ac2565b604082019050919050565b60006020820190508181036000830152613b4d81613b11565b9050919050565b7f496e73756666696369656e7420246941492062616c616e636500000000000000600082015250565b6000613b8a601983612f22565b9150613b9582613b54565b602082019050919050565b60006020820190508181036000830152613bb981613b7d565b9050919050565b7f24694149207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b6000613bf6601683612f22565b9150613c0182613bc0565b602082019050919050565b60006020820190508181036000830152613c2581613be9565b9050919050565b7f39303232207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b6000613c62601683612f22565b9150613c6d82613c2c565b602082019050919050565b60006020820190508181036000830152613c9181613c55565b9050919050565b6000606082019050613cad60008301866129ee565b613cba60208301856129ee565b613cc76040830184612a07565b949350505050565b613cd882612b6d565b67ffffffffffffffff811115613cf157613cf06133b4565b5b613cfb825461302f565b613d068282856134f8565b600060209050601f831160018114613d395760008415613d27578287015190505b613d318582613569565b865550613d99565b601f198416613d47866133e3565b60005b82811015613d6f57848901518255600182019150602085019450602081019050613d4a565b86831015613d8c5784890151613d88601f89168261354b565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613dd7602083612f22565b9150613de282613da1565b602082019050919050565b60006020820190508181036000830152613e0681613dca565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613e43601f83612f22565b9150613e4e82613e0d565b602082019050919050565b60006020820190508181036000830152613e7281613e36565b905091905056fea26469706673582212200bceb28f4ea27cb1e4874106a21166103b94a38df019f4606f6d441b4bb0d5b364736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006dde4ffd6db302bc9a46850f61399e082f6c2122000000000000000000000000853806fca5ee8a6ac99dc84a8e3596a4f6541796
-----Decoded View---------------
Arg [0] : iAITokenAddress (address): 0x6dDe4fFD6dB302Bc9a46850f61399e082f6c2122
Arg [1] : nftTokenAddress (address): 0x853806fCa5Ee8a6Ac99Dc84a8e3596A4F6541796
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006dde4ffd6db302bc9a46850f61399e082f6c2122
Arg [1] : 000000000000000000000000853806fca5ee8a6ac99dc84a8e3596a4f6541796
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.