Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
iAIPoolDI
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 iAIPoolDI is IPool { mapping(uint256 => bool) public DiIds; constructor(address iAITokenAddress, address nftTokenAddress) IPool(iAITokenAddress, nftTokenAddress) { poolType = 'Pool Destination Inheritance'; apr = 1200; nftThreshold = 1; tokenThreshold = 300000 ether; minPoolPeriod = 365 days; } function setDiIds(uint256[] memory keys, bool[] memory values) external onlyOwner { require(keys.length == values.length, 'Arrays length mismatch'); for (uint256 i = 0; i < keys.length; i++) { DiIds[keys[i]] = values[i]; } } function determineDI(address _address) public view returns (bool) { uint256 totalTokens = nft9022.balanceOf(_address); uint256 tokenId; for (uint256 i = 0; i < totalTokens; i++) { tokenId = nft9022.tokenOfOwnerByIndex(_address, i); if (DiIds[tokenId]) { return true; } } return false; } function pool(uint256 _amount) external payable { require(poolActive, 'Pool is not currently active'); require(determineDI(msg.sender), 'Wallet does not own any Destination Inheritance 9022 NFTs'); require(iAI.balanceOf(msg.sender) >= _amount, 'Insufficient $iAI balance'); require(_amount >= tokenThreshold, '$iAI 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 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":"uint256","name":"","type":"uint256"}],"name":"DiIds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"determineDI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256[]","name":"keys","type":"uint256[]"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"name":"setDiIds","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
608060405260196009556001600a60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b5060405162004ae838038062004ae88339818101604052810190620000579190620002b9565b8181600160008190555062000081620000756200018160201b60201c565b6200018960201b60201c565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506040518060400160405280601c81526020017f506f6f6c2044657374696e6174696f6e20496e6865726974616e636500000000815250600490816200014b91906200057a565b506104b06005819055506001600681905550693f870857a3e0e38000006007819055506301e13380600881905550505062000661565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002818262000254565b9050919050565b620002938162000274565b81146200029f57600080fd5b50565b600081519050620002b38162000288565b92915050565b60008060408385031215620002d357620002d26200024f565b5b6000620002e385828601620002a2565b9250506020620002f685828601620002a2565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038257607f821691505b6020821081036200039857620003976200033a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c3565b6200040e8683620003c3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200045b620004556200044f8462000426565b62000430565b62000426565b9050919050565b6000819050919050565b62000477836200043a565b6200048f620004868262000462565b848454620003d0565b825550505050565b600090565b620004a662000497565b620004b38184846200046c565b505050565b5b81811015620004db57620004cf6000826200049c565b600181019050620004b9565b5050565b601f8211156200052a57620004f4816200039e565b620004ff84620003b3565b810160208510156200050f578190505b620005276200051e85620003b3565b830182620004b8565b50505b505050565b600082821c905092915050565b60006200054f600019846008026200052f565b1980831691505092915050565b60006200056a83836200053c565b9150826002028217905092915050565b620005858262000300565b67ffffffffffffffff811115620005a157620005a06200030b565b5b620005ad825462000369565b620005ba828285620004df565b600060209050601f831160018114620005f25760008415620005dd578287015190505b620005e985826200055c565b86555062000659565b601f19841662000602866200039e565b60005b828110156200062c5784890151825560018201915060208501945060208101905062000605565b868310156200064c578489015162000648601f8916826200053c565b8355505b6001600288020188555050505b505050505050565b61447780620006716000396000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c7601677116100a0578063de15af2e1161006f578063de15af2e14610729578063ed7b526c14610752578063f2fde38b1461078f578063fbf3e49b146107b8578063fe313112146107f55761023d565b8063c760167714610683578063d207e244146106ae578063dc4a81af146106d7578063dcb40c9f146107005761023d565b8063b2189330116100dc578063b2189330146105db578063b6187b2b14610604578063b7f06c8114610641578063b88a802f1461066c5761023d565b80638da5cb5b1461052f578063a9f74b241461055a578063b0e6bc0014610585578063b1dd61b6146105b05761023d565b8063525c12ea1161019057806361e88fe01161015f57806361e88fe01461047257806366692ff01461049b578063715018a6146104c657806387bde549146104dd5780638b8959af146105065761023d565b8063525c12ea146103b857806356d2b1d1146103e157806357ded9c91461040a57806361e87005146104355761023d565b80633f69da75116101cc5780633f69da75146102ec578063460cd97814610329578063519dc8d21461035257806351cff8d91461038f5761023d565b8063041e0a3e146102425780630ebd8f521461027f5780631a1ce2fc146102965780632b3f6f66146102c15761023d565b3661023d577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610233929190612cd4565b60405180910390a1005b600080fd5b34801561024e57600080fd5b5061026960048036038101906102649190612d3d565b610811565b6040516102769190612d85565b60405180910390f35b34801561028b57600080fd5b506102946109b4565b005b3480156102a257600080fd5b506102ab6109e8565b6040516102b89190612da0565b60405180910390f35b3480156102cd57600080fd5b506102d66109ee565b6040516102e39190612e1a565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190612d3d565b610a14565b6040516103209190612ff9565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b9190613047565b610b62565b005b34801561035e57600080fd5b5061037960048036038101906103749190612d3d565b61121f565b6040516103869190613123565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190612d3d565b6113f4565b005b3480156103c457600080fd5b506103df60048036038101906103da9190613047565b61148f565b005b3480156103ed57600080fd5b5061040860048036038101906104039190612d3d565b611b49565b005b34801561041657600080fd5b5061041f611b95565b60405161042c9190612da0565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613145565b611b9b565b60405161046991906131e8565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190613441565b611cc5565b005b3480156104a757600080fd5b506104b0611d94565b6040516104bd9190612da0565b60405180910390f35b3480156104d257600080fd5b506104db611d9a565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190613047565b611dae565b005b34801561051257600080fd5b5061052d60048036038101906105289190613047565b611e03565b005b34801561053b57600080fd5b50610544611e58565b60405161055191906134b9565b60405180910390f35b34801561056657600080fd5b5061056f611e82565b60405161057c9190612da0565b60405180910390f35b34801561059157600080fd5b5061059a611e88565b6040516105a79190612da0565b60405180910390f35b3480156105bc57600080fd5b506105c5611e8e565b6040516105d2919061351e565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613047565b611f1c565b005b34801561061057600080fd5b5061062b60048036038101906106269190613047565b611f71565b6040516106389190612d85565b60405180910390f35b34801561064d57600080fd5b50610656611f91565b6040516106639190612d85565b60405180910390f35b34801561067857600080fd5b50610681611fa4565b005b34801561068f57600080fd5b50610698612323565b6040516106a59190613561565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612d3d565b612349565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190613145565b612395565b005b34801561070c57600080fd5b5061072760048036038101906107229190613047565b612442565b005b34801561073557600080fd5b50610750600480360381019061074b9190613047565b612497565b005b34801561075e57600080fd5b5061077960048036038101906107749190612d3d565b6124ec565b6040516107869190612da0565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190612d3d565b612535565b005b3480156107c457600080fd5b506107df60048036038101906107da9190612d3d565b6125b8565b6040516107ec9190612da0565b60405180910390f35b61080f600480360381019061080a9190613047565b612601565b005b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161086f91906134b9565b602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190613591565b9050600080600090505b828110156109a757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b815260040161091f929190612cd4565b602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109609190613591565b9150600e600083815260200190815260200160002060009054906101000a900460ff161561099457600193505050506109af565b808061099f906135ed565b9150506108ba565b506000925050505b919050565b6109bc612a50565b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b575783829060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610ac690613664565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290613664565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b50505050508152505081526020019060010190610a75565b505050509050919050565b610b6a612ace565b600a60009054906101000a900460ff16610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c359061374d565b60405180910390fd5b600181610c4b919061376d565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906137ed565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d2757610d2661380d565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610d6e90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90613664565b8015610de75780601f10610dbc57610100808354040283529160200191610de7565b820191906000526020600020905b815481529060010190602001808311610dca57829003601f168201915b50505050508152505090506000816040015142610e04919061383c565b9050600854811015610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e42906138e2565b60405180910390fd5b600082600001519050600061271060055483610e679190613902565b610e719190613973565b905060008183610e81919061376d565b905060008790505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610ed8919061383c565b811015610ff257600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610f2b919061376d565b81548110610f3c57610f3b61380d565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610f9b57610f9a61380d565b5b906000526020600020906004020160008201548160000155600182015481600101556002820154816002015560038201816003019081610fdb9190613b5c565b509050508080610fea906135ed565b915050610e89565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061104257611041613c44565b5b60019003818190600052602060002090600402016000808201600090556001820160009055600282016000905560038201600061107f9190612bf5565b5050905582600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110d2919061383c565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161117a929190612cd4565b6020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167fc2b6ce907a80e663575d7e56ca2f7fb6f9089365ca93e155c85d64dce06102bc8286604051611206929190613cb5565b60405180910390a250505050505061121c612b1d565b50565b60606000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161127e91906134b9565b602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf9190613591565b905060008167ffffffffffffffff8111156112dd576112dc61320f565b5b60405190808252806020026020018201604052801561130b5781602001602082028036833780820191505090505b50905060005b828110156113e957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b8152600401611376929190612cd4565b602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190613591565b8282815181106113ca576113c961380d565b5b60200260200101818152505080806113e1906135ed565b915050611311565b508092505050919050565b6113fc612a50565b600047905060008111611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613d2a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561148a573d6000803e3d6000fd5b505050565b611497612ace565b600a60009054906101000a900460ff166114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501161156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115629061374d565b60405180910390fd5b600181611578919061376d565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905010156115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906137ed565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116545761165361380d565b5b906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461169b90613664565b80601f01602080910402602001604051908101604052809291908181526020018280546116c790613664565b80156117145780601f106116e957610100808354040283529160200191611714565b820191906000526020600020905b8154815290600101906020018083116116f757829003601f168201915b50505050508152505090506000816040015142611731919061383c565b9050600082600001519050600854821115611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613dbc565b60405180910390fd5b60006064600954836117939190613902565b61179d9190613973565b905060008690505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506117f4919061383c565b81101561190e57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182611847919061376d565b815481106118585761185761380d565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106118b7576118b661380d565b5b9060005260206000209060040201600082015481600001556001820154816001015560028201548160020155600382018160030190816118f79190613b5c565b509050508080611906906135ed565b9150506117a5565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061195e5761195d613c44565b5b60019003818190600052602060002090600402016000808201600090556001820160009055600282016000905560038201600061199b9190612bf5565b5050905581600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ee919061383c565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008183611a47919061383c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611aa6929190612cd4565b6020604051808303816000875af1158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167f322e5021ddf51920f7602154a6c845b34ef1b32704a1fa2c66927b56be28076282604051611b309190612da0565b60405180910390a2505050505050611b46612b1d565b50565b611b51612a50565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b611ba3612c35565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611bf457611bf361380d565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054611c3b90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6790613664565b8015611cb45780601f10611c8957610100808354040283529160200191611cb4565b820191906000526020600020905b815481529060010190602001808311611c9757829003601f168201915b505050505081525050905092915050565b611ccd612a50565b8051825114611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890613e28565b60405180910390fd5b60005b8251811015611d8f57818181518110611d3057611d2f61380d565b5b6020026020010151600e6000858481518110611d4f57611d4e61380d565b5b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d87906135ed565b915050611d14565b505050565b60075481565b611da2612a50565b611dac6000612b27565b565b611db6612a50565b60008111611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613e94565b60405180910390fd5b8060078190555050565b611e0b612a50565b60008111611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613e94565b60405180910390fd5b8060068190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60065481565b60048054611e9b90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054611ec790613664565b8015611f145780601f10611ee957610100808354040283529160200191611f14565b820191906000526020600020905b815481529060010190602001808311611ef757829003601f168201915b505050505081565b611f24612a50565b60008111611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90613f00565b60405180910390fd5b8060098190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b611fac612ace565b600a60009054906101000a900460ff16611ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff2906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120779061374d565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008142612116919061383c565b90506000811161215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613f6c565b60405180910390fd5b60006064620151808361216e9190613973565b61016d60055461217e9190613973565b866121899190613902565b6121939190613902565b61219d9190613973565b9050600081116121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990613fd8565b60405180910390fd5b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612283929190612cd4565b6020604051808303816000875af11580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c69190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161230d9190612da0565b60405180910390a250505050612321612b1d565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612351612a50565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61239d612a50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123fa929190612cd4565b6020604051808303816000875af1158015612419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243d9190613c88565b505050565b61244a612a50565b6000811161248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490614044565b60405180910390fd5b8060058190555050565b61249f612a50565b600081116124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d990613f00565b60405180910390fd5b8060088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61253d612a50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a3906140d6565b60405180910390fd5b6125b581612b27565b50565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff16612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612647906136e1565b60405180910390fd5b61265933610811565b612698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268f90614168565b60405180910390fd5b80600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016126f491906134b9565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190613591565b1015612776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276d906141d4565b60405180910390fd5b6007548110156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290614240565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161281a93929190614260565b6020604051808303816000875af1158015612839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285d9190613c88565b5080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128ad919061376d565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040528083815260200160055481526020014281526020016004805461291f90613664565b80601f016020809104026020016040519081016040528092919081815260200182805461294b90613664565b80156129985780601f1061296d57610100808354040283529160200191612998565b820191906000526020600020905b81548152906001019060200180831161297b57829003601f168201915b5050505050815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030190816129fc9190614297565b5050503373ffffffffffffffffffffffffffffffffffffffff167f423eb3fc7f00914fa251f391851045c36a87052e7afb63e89ad6991b56a6c61782604051612a459190612da0565b60405180910390a250565b612a58612bed565b73ffffffffffffffffffffffffffffffffffffffff16612a76611e58565b73ffffffffffffffffffffffffffffffffffffffff1614612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac3906143b5565b60405180910390fd5b565b600260005403612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a90614421565b60405180910390fd5b6002600081905550565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b508054612c0190613664565b6000825580601f10612c135750612c32565b601f016020900490600052602060002090810190612c319190612c5d565b5b50565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b5b80821115612c76576000816000905550600101612c5e565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca582612c7a565b9050919050565b612cb581612c9a565b82525050565b6000819050919050565b612cce81612cbb565b82525050565b6000604082019050612ce96000830185612cac565b612cf66020830184612cc5565b9392505050565b6000604051905090565b600080fd5b600080fd5b612d1a81612c9a565b8114612d2557600080fd5b50565b600081359050612d3781612d11565b92915050565b600060208284031215612d5357612d52612d07565b5b6000612d6184828501612d28565b91505092915050565b60008115159050919050565b612d7f81612d6a565b82525050565b6000602082019050612d9a6000830184612d76565b92915050565b6000602082019050612db56000830184612cc5565b92915050565b6000819050919050565b6000612de0612ddb612dd684612c7a565b612dbb565b612c7a565b9050919050565b6000612df282612dc5565b9050919050565b6000612e0482612de7565b9050919050565b612e1481612df9565b82525050565b6000602082019050612e2f6000830184612e0b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e6a81612cbb565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612eaa578082015181840152602081019050612e8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ed282612e70565b612edc8185612e7b565b9350612eec818560208601612e8c565b612ef581612eb6565b840191505092915050565b6000608083016000830151612f186000860182612e61565b506020830151612f2b6020860182612e61565b506040830151612f3e6040860182612e61565b5060608301518482036060860152612f568282612ec7565b9150508091505092915050565b6000612f6f8383612f00565b905092915050565b6000602082019050919050565b6000612f8f82612e35565b612f998185612e40565b935083602082028501612fab85612e51565b8060005b85811015612fe75784840389528151612fc88582612f63565b9450612fd383612f77565b925060208a01995050600181019050612faf565b50829750879550505050505092915050565b600060208201905081810360008301526130138184612f84565b905092915050565b61302481612cbb565b811461302f57600080fd5b50565b6000813590506130418161301b565b92915050565b60006020828403121561305d5761305c612d07565b5b600061306b84828501613032565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006130ac8383612e61565b60208301905092915050565b6000602082019050919050565b60006130d082613074565b6130da818561307f565b93506130e583613090565b8060005b838110156131165781516130fd88826130a0565b9750613108836130b8565b9250506001810190506130e9565b5085935050505092915050565b6000602082019050818103600083015261313d81846130c5565b905092915050565b6000806040838503121561315c5761315b612d07565b5b600061316a85828601612d28565b925050602061317b85828601613032565b9150509250929050565b600060808301600083015161319d6000860182612e61565b5060208301516131b06020860182612e61565b5060408301516131c36040860182612e61565b50606083015184820360608601526131db8282612ec7565b9150508091505092915050565b600060208201905081810360008301526132028184613185565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61324782612eb6565b810181811067ffffffffffffffff821117156132665761326561320f565b5b80604052505050565b6000613279612cfd565b9050613285828261323e565b919050565b600067ffffffffffffffff8211156132a5576132a461320f565b5b602082029050602081019050919050565b600080fd5b60006132ce6132c98461328a565b61326f565b905080838252602082019050602084028301858111156132f1576132f06132b6565b5b835b8181101561331a57806133068882613032565b8452602084019350506020810190506132f3565b5050509392505050565b600082601f8301126133395761333861320a565b5b81356133498482602086016132bb565b91505092915050565b600067ffffffffffffffff82111561336d5761336c61320f565b5b602082029050602081019050919050565b61338781612d6a565b811461339257600080fd5b50565b6000813590506133a48161337e565b92915050565b60006133bd6133b884613352565b61326f565b905080838252602082019050602084028301858111156133e0576133df6132b6565b5b835b8181101561340957806133f58882613395565b8452602084019350506020810190506133e2565b5050509392505050565b600082601f8301126134285761342761320a565b5b81356134388482602086016133aa565b91505092915050565b6000806040838503121561345857613457612d07565b5b600083013567ffffffffffffffff81111561347657613475612d0c565b5b61348285828601613324565b925050602083013567ffffffffffffffff8111156134a3576134a2612d0c565b5b6134af85828601613413565b9150509250929050565b60006020820190506134ce6000830184612cac565b92915050565b600082825260208201905092915050565b60006134f082612e70565b6134fa81856134d4565b935061350a818560208601612e8c565b61351381612eb6565b840191505092915050565b6000602082019050818103600083015261353881846134e5565b905092915050565b600061354b82612de7565b9050919050565b61355b81613540565b82525050565b60006020820190506135766000830184613552565b92915050565b60008151905061358b8161301b565b92915050565b6000602082840312156135a7576135a6612d07565b5b60006135b58482850161357c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135f882612cbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362a576136296135be565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061367c57607f821691505b60208210810361368f5761368e613635565b5b50919050565b7f506f6f6c206973206e6f742063757272656e746c792061637469766500000000600082015250565b60006136cb601c836134d4565b91506136d682613695565b602082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f4e6f207374616b657320666f756e6420666f7220746865206164647265737300600082015250565b6000613737601f836134d4565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b600061377882612cbb565b915061378383612cbb565b925082820190508082111561379b5761379a6135be565b5b92915050565b7f5374616b6520646f6573206e6f74206578697374000000000000000000000000600082015250565b60006137d76014836134d4565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061384782612cbb565b915061385283612cbb565b925082820390508181111561386a576138696135be565b5b92915050565b7f4d696e696d756d20706f6f6c696e6720706572696f64206e6f7420726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006138cc6022836134d4565b91506138d782613870565b604082019050919050565b600060208201905081810360008301526138fb816138bf565b9050919050565b600061390d82612cbb565b915061391883612cbb565b925082820261392681612cbb565b9150828204841483151761393d5761393c6135be565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061397e82612cbb565b915061398983612cbb565b92508261399957613998613944565b5b828204905092915050565b6000815490506139b381613664565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613a1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826139df565b613a2686836139df565b95508019841693508086168417925050509392505050565b6000613a59613a54613a4f84612cbb565b612dbb565b612cbb565b9050919050565b6000819050919050565b613a7383613a3e565b613a87613a7f82613a60565b8484546139ec565b825550505050565b600090565b613a9c613a8f565b613aa7818484613a6a565b505050565b5b81811015613acb57613ac0600082613a94565b600181019050613aad565b5050565b601f821115613b1057613ae1816139ba565b613aea846139cf565b81016020851015613af9578190505b613b0d613b05856139cf565b830182613aac565b50505b505050565b600082821c905092915050565b6000613b3360001984600802613b15565b1980831691505092915050565b6000613b4c8383613b22565b9150826002028217905092915050565b818103613b6a575050613c42565b613b73826139a4565b67ffffffffffffffff811115613b8c57613b8b61320f565b5b613b968254613664565b613ba1828285613acf565b6000601f831160018114613bd05760008415613bbe578287015490505b613bc88582613b40565b865550613c3b565b601f198416613bde876139ba565b9650613be9866139ba565b60005b82811015613c1157848901548255600182019150600185019450602081019050613bec565b86831015613c2e5784890154613c2a601f891682613b22565b8355505b6001600288020188555050505b5050505050505b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050613c828161337e565b92915050565b600060208284031215613c9e57613c9d612d07565b5b6000613cac84828501613c73565b91505092915050565b6000604082019050613cca6000830185612cc5565b613cd76020830184612cc5565b9392505050565b7f416d6f756e7420697320746f6f20686967680000000000000000000000000000600082015250565b6000613d146012836134d4565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b7f576974686472617720776974682070656e616c74792074696d6520657863656560008201527f6420796f752063616e206e6f7720756e7374616b6520746f6b656e2000000000602082015250565b6000613da6603c836134d4565b9150613db182613d4a565b604082019050919050565b60006020820190508181036000830152613dd581613d99565b9050919050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613e126016836134d4565b9150613e1d82613ddc565b602082019050919050565b60006020820190508181036000830152613e4181613e05565b9050919050565b7f416d6f756e742063616e206e6f74206265203000000000000000000000000000600082015250565b6000613e7e6013836134d4565b9150613e8982613e48565b602082019050919050565b60006020820190508181036000830152613ead81613e71565b9050919050565b7f416d6f756e742063616e6e2774206265207a65726f0000000000000000000000600082015250565b6000613eea6015836134d4565b9150613ef582613eb4565b602082019050919050565b60006020820190508181036000830152613f1981613edd565b9050919050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b6000613f566013836134d4565b9150613f6182613f20565b602082019050919050565b60006020820190508181036000830152613f8581613f49565b9050919050565b7f4e6f7420456c696769626c6520666f7220726577617264000000000000000000600082015250565b6000613fc26017836134d4565b9150613fcd82613f8c565b602082019050919050565b60006020820190508181036000830152613ff181613fb5565b9050919050565b7f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000600082015250565b600061402e6016836134d4565b915061403982613ff8565b602082019050919050565b6000602082019050818103600083015261405d81614021565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140c06026836134d4565b91506140cb82614064565b604082019050919050565b600060208201905081810360008301526140ef816140b3565b9050919050565b7f57616c6c657420646f6573206e6f74206f776e20616e792044657374696e617460008201527f696f6e20496e6865726974616e63652039303232204e46547300000000000000602082015250565b60006141526039836134d4565b915061415d826140f6565b604082019050919050565b6000602082019050818103600083015261418181614145565b9050919050565b7f496e73756666696369656e7420246941492062616c616e636500000000000000600082015250565b60006141be6019836134d4565b91506141c982614188565b602082019050919050565b600060208201905081810360008301526141ed816141b1565b9050919050565b7f24694149207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b600061422a6016836134d4565b9150614235826141f4565b602082019050919050565b600060208201905081810360008301526142598161421d565b9050919050565b60006060820190506142756000830186612cac565b6142826020830185612cac565b61428f6040830184612cc5565b949350505050565b6142a082612e70565b67ffffffffffffffff8111156142b9576142b861320f565b5b6142c38254613664565b6142ce828285613acf565b600060209050601f83116001811461430157600084156142ef578287015190505b6142f98582613b40565b865550614361565b601f19841661430f866139ba565b60005b8281101561433757848901518255600182019150602085019450602081019050614312565b868310156143545784890151614350601f891682613b22565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061439f6020836134d4565b91506143aa82614369565b602082019050919050565b600060208201905081810360008301526143ce81614392565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061440b601f836134d4565b9150614416826143d5565b602082019050919050565b6000602082019050818103600083015261443a816143fe565b905091905056fea26469706673582212204e1f64ea846eb90169d6faecf06bdd4443e485072fad83b068e1bb77d9abd99564736f6c634300081100330000000000000000000000006dde4ffd6db302bc9a46850f61399e082f6c2122000000000000000000000000853806fca5ee8a6ac99dc84a8e3596a4f6541796
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063c7601677116100a0578063de15af2e1161006f578063de15af2e14610729578063ed7b526c14610752578063f2fde38b1461078f578063fbf3e49b146107b8578063fe313112146107f55761023d565b8063c760167714610683578063d207e244146106ae578063dc4a81af146106d7578063dcb40c9f146107005761023d565b8063b2189330116100dc578063b2189330146105db578063b6187b2b14610604578063b7f06c8114610641578063b88a802f1461066c5761023d565b80638da5cb5b1461052f578063a9f74b241461055a578063b0e6bc0014610585578063b1dd61b6146105b05761023d565b8063525c12ea1161019057806361e88fe01161015f57806361e88fe01461047257806366692ff01461049b578063715018a6146104c657806387bde549146104dd5780638b8959af146105065761023d565b8063525c12ea146103b857806356d2b1d1146103e157806357ded9c91461040a57806361e87005146104355761023d565b80633f69da75116101cc5780633f69da75146102ec578063460cd97814610329578063519dc8d21461035257806351cff8d91461038f5761023d565b8063041e0a3e146102425780630ebd8f521461027f5780631a1ce2fc146102965780632b3f6f66146102c15761023d565b3661023d577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610233929190612cd4565b60405180910390a1005b600080fd5b34801561024e57600080fd5b5061026960048036038101906102649190612d3d565b610811565b6040516102769190612d85565b60405180910390f35b34801561028b57600080fd5b506102946109b4565b005b3480156102a257600080fd5b506102ab6109e8565b6040516102b89190612da0565b60405180910390f35b3480156102cd57600080fd5b506102d66109ee565b6040516102e39190612e1a565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190612d3d565b610a14565b6040516103209190612ff9565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b9190613047565b610b62565b005b34801561035e57600080fd5b5061037960048036038101906103749190612d3d565b61121f565b6040516103869190613123565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190612d3d565b6113f4565b005b3480156103c457600080fd5b506103df60048036038101906103da9190613047565b61148f565b005b3480156103ed57600080fd5b5061040860048036038101906104039190612d3d565b611b49565b005b34801561041657600080fd5b5061041f611b95565b60405161042c9190612da0565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613145565b611b9b565b60405161046991906131e8565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190613441565b611cc5565b005b3480156104a757600080fd5b506104b0611d94565b6040516104bd9190612da0565b60405180910390f35b3480156104d257600080fd5b506104db611d9a565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190613047565b611dae565b005b34801561051257600080fd5b5061052d60048036038101906105289190613047565b611e03565b005b34801561053b57600080fd5b50610544611e58565b60405161055191906134b9565b60405180910390f35b34801561056657600080fd5b5061056f611e82565b60405161057c9190612da0565b60405180910390f35b34801561059157600080fd5b5061059a611e88565b6040516105a79190612da0565b60405180910390f35b3480156105bc57600080fd5b506105c5611e8e565b6040516105d2919061351e565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613047565b611f1c565b005b34801561061057600080fd5b5061062b60048036038101906106269190613047565b611f71565b6040516106389190612d85565b60405180910390f35b34801561064d57600080fd5b50610656611f91565b6040516106639190612d85565b60405180910390f35b34801561067857600080fd5b50610681611fa4565b005b34801561068f57600080fd5b50610698612323565b6040516106a59190613561565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612d3d565b612349565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190613145565b612395565b005b34801561070c57600080fd5b5061072760048036038101906107229190613047565b612442565b005b34801561073557600080fd5b50610750600480360381019061074b9190613047565b612497565b005b34801561075e57600080fd5b5061077960048036038101906107749190612d3d565b6124ec565b6040516107869190612da0565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190612d3d565b612535565b005b3480156107c457600080fd5b506107df60048036038101906107da9190612d3d565b6125b8565b6040516107ec9190612da0565b60405180910390f35b61080f600480360381019061080a9190613047565b612601565b005b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161086f91906134b9565b602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190613591565b9050600080600090505b828110156109a757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b815260040161091f929190612cd4565b602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109609190613591565b9150600e600083815260200190815260200160002060009054906101000a900460ff161561099457600193505050506109af565b808061099f906135ed565b9150506108ba565b506000925050505b919050565b6109bc612a50565b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b575783829060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610ac690613664565b80601f0160208091040260200160405190810160405280929190818152602001828054610af290613664565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b50505050508152505081526020019060010190610a75565b505050509050919050565b610b6a612ace565b600a60009054906101000a900460ff16610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c359061374d565b60405180910390fd5b600181610c4b919061376d565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501015610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906137ed565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610d2757610d2661380d565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054610d6e90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90613664565b8015610de75780601f10610dbc57610100808354040283529160200191610de7565b820191906000526020600020905b815481529060010190602001808311610dca57829003601f168201915b50505050508152505090506000816040015142610e04919061383c565b9050600854811015610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e42906138e2565b60405180910390fd5b600082600001519050600061271060055483610e679190613902565b610e719190613973565b905060008183610e81919061376d565b905060008790505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610ed8919061383c565b811015610ff257600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182610f2b919061376d565b81548110610f3c57610f3b61380d565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610f9b57610f9a61380d565b5b906000526020600020906004020160008201548160000155600182015481600101556002820154816002015560038201816003019081610fdb9190613b5c565b509050508080610fea906135ed565b915050610e89565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061104257611041613c44565b5b60019003818190600052602060002090600402016000808201600090556001820160009055600282016000905560038201600061107f9190612bf5565b5050905582600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110d2919061383c565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161117a929190612cd4565b6020604051808303816000875af1158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167fc2b6ce907a80e663575d7e56ca2f7fb6f9089365ca93e155c85d64dce06102bc8286604051611206929190613cb5565b60405180910390a250505050505061121c612b1d565b50565b60606000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161127e91906134b9565b602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf9190613591565b905060008167ffffffffffffffff8111156112dd576112dc61320f565b5b60405190808252806020026020018201604052801561130b5781602001602082028036833780820191505090505b50905060005b828110156113e957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c5986836040518363ffffffff1660e01b8152600401611376929190612cd4565b602060405180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190613591565b8282815181106113ca576113c961380d565b5b60200260200101818152505080806113e1906135ed565b915050611311565b508092505050919050565b6113fc612a50565b600047905060008111611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613d2a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561148a573d6000803e3d6000fd5b505050565b611497612ace565b600a60009054906101000a900460ff166114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501161156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115629061374d565b60405180910390fd5b600181611578919061376d565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905010156115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906137ed565b60405180910390fd5b60008190506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116545761165361380d565b5b906000526020600020906004020160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201805461169b90613664565b80601f01602080910402602001604051908101604052809291908181526020018280546116c790613664565b80156117145780601f106116e957610100808354040283529160200191611714565b820191906000526020600020905b8154815290600101906020018083116116f757829003601f168201915b50505050508152505090506000816040015142611731919061383c565b9050600082600001519050600854821115611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890613dbc565b60405180910390fd5b60006064600954836117939190613902565b61179d9190613973565b905060008690505b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506117f4919061383c565b81101561190e57600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600182611847919061376d565b815481106118585761185761380d565b5b9060005260206000209060040201600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106118b7576118b661380d565b5b9060005260206000209060040201600082015481600001556001820154816001015560028201548160020155600382018160030190816118f79190613b5c565b509050508080611906906135ed565b9150506117a5565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061195e5761195d613c44565b5b60019003818190600052602060002090600402016000808201600090556001820160009055600282016000905560038201600061199b9190612bf5565b5050905581600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ee919061383c565b9250508190555042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008183611a47919061383c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611aa6929190612cd4565b6020604051808303816000875af1158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167f322e5021ddf51920f7602154a6c845b34ef1b32704a1fa2c66927b56be28076282604051611b309190612da0565b60405180910390a2505050505050611b46612b1d565b50565b611b51612a50565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b611ba3612c35565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611bf457611bf361380d565b5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054611c3b90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6790613664565b8015611cb45780601f10611c8957610100808354040283529160200191611cb4565b820191906000526020600020905b815481529060010190602001808311611c9757829003601f168201915b505050505081525050905092915050565b611ccd612a50565b8051825114611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890613e28565b60405180910390fd5b60005b8251811015611d8f57818181518110611d3057611d2f61380d565b5b6020026020010151600e6000858481518110611d4f57611d4e61380d565b5b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d87906135ed565b915050611d14565b505050565b60075481565b611da2612a50565b611dac6000612b27565b565b611db6612a50565b60008111611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613e94565b60405180910390fd5b8060078190555050565b611e0b612a50565b60008111611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613e94565b60405180910390fd5b8060068190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60065481565b60048054611e9b90613664565b80601f0160208091040260200160405190810160405280929190818152602001828054611ec790613664565b8015611f145780601f10611ee957610100808354040283529160200191611f14565b820191906000526020600020905b815481529060010190602001808311611ef757829003601f168201915b505050505081565b611f24612a50565b60008111611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90613f00565b60405180910390fd5b8060098190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b611fac612ace565b600a60009054906101000a900460ff16611ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff2906136e1565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120779061374d565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008142612116919061383c565b90506000811161215b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215290613f6c565b60405180910390fd5b60006064620151808361216e9190613973565b61016d60055461217e9190613973565b866121899190613902565b6121939190613902565b61219d9190613973565b9050600081116121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990613fd8565b60405180910390fd5b42600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612283929190612cd4565b6020604051808303816000875af11580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c69190613c88565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161230d9190612da0565b60405180910390a250505050612321612b1d565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612351612a50565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61239d612a50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123fa929190612cd4565b6020604051808303816000875af1158015612419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243d9190613c88565b505050565b61244a612a50565b6000811161248d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248490614044565b60405180910390fd5b8060058190555050565b61249f612a50565b600081116124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d990613f00565b60405180910390fd5b8060088190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61253d612a50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a3906140d6565b60405180910390fd5b6125b581612b27565b50565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900460ff16612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612647906136e1565b60405180910390fd5b61265933610811565b612698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268f90614168565b60405180910390fd5b80600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016126f491906134b9565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190613591565b1015612776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276d906141d4565b60405180910390fd5b6007548110156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290614240565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161281a93929190614260565b6020604051808303816000875af1158015612839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285d9190613c88565b5080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128ad919061376d565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040528083815260200160055481526020014281526020016004805461291f90613664565b80601f016020809104026020016040519081016040528092919081815260200182805461294b90613664565b80156129985780601f1061296d57610100808354040283529160200191612998565b820191906000526020600020905b81548152906001019060200180831161297b57829003601f168201915b5050505050815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030190816129fc9190614297565b5050503373ffffffffffffffffffffffffffffffffffffffff167f423eb3fc7f00914fa251f391851045c36a87052e7afb63e89ad6991b56a6c61782604051612a459190612da0565b60405180910390a250565b612a58612bed565b73ffffffffffffffffffffffffffffffffffffffff16612a76611e58565b73ffffffffffffffffffffffffffffffffffffffff1614612acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac3906143b5565b60405180910390fd5b565b600260005403612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a90614421565b60405180910390fd5b6002600081905550565b6001600081905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b508054612c0190613664565b6000825580601f10612c135750612c32565b601f016020900490600052602060002090810190612c319190612c5d565b5b50565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b5b80821115612c76576000816000905550600101612c5e565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca582612c7a565b9050919050565b612cb581612c9a565b82525050565b6000819050919050565b612cce81612cbb565b82525050565b6000604082019050612ce96000830185612cac565b612cf66020830184612cc5565b9392505050565b6000604051905090565b600080fd5b600080fd5b612d1a81612c9a565b8114612d2557600080fd5b50565b600081359050612d3781612d11565b92915050565b600060208284031215612d5357612d52612d07565b5b6000612d6184828501612d28565b91505092915050565b60008115159050919050565b612d7f81612d6a565b82525050565b6000602082019050612d9a6000830184612d76565b92915050565b6000602082019050612db56000830184612cc5565b92915050565b6000819050919050565b6000612de0612ddb612dd684612c7a565b612dbb565b612c7a565b9050919050565b6000612df282612dc5565b9050919050565b6000612e0482612de7565b9050919050565b612e1481612df9565b82525050565b6000602082019050612e2f6000830184612e0b565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e6a81612cbb565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612eaa578082015181840152602081019050612e8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ed282612e70565b612edc8185612e7b565b9350612eec818560208601612e8c565b612ef581612eb6565b840191505092915050565b6000608083016000830151612f186000860182612e61565b506020830151612f2b6020860182612e61565b506040830151612f3e6040860182612e61565b5060608301518482036060860152612f568282612ec7565b9150508091505092915050565b6000612f6f8383612f00565b905092915050565b6000602082019050919050565b6000612f8f82612e35565b612f998185612e40565b935083602082028501612fab85612e51565b8060005b85811015612fe75784840389528151612fc88582612f63565b9450612fd383612f77565b925060208a01995050600181019050612faf565b50829750879550505050505092915050565b600060208201905081810360008301526130138184612f84565b905092915050565b61302481612cbb565b811461302f57600080fd5b50565b6000813590506130418161301b565b92915050565b60006020828403121561305d5761305c612d07565b5b600061306b84828501613032565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006130ac8383612e61565b60208301905092915050565b6000602082019050919050565b60006130d082613074565b6130da818561307f565b93506130e583613090565b8060005b838110156131165781516130fd88826130a0565b9750613108836130b8565b9250506001810190506130e9565b5085935050505092915050565b6000602082019050818103600083015261313d81846130c5565b905092915050565b6000806040838503121561315c5761315b612d07565b5b600061316a85828601612d28565b925050602061317b85828601613032565b9150509250929050565b600060808301600083015161319d6000860182612e61565b5060208301516131b06020860182612e61565b5060408301516131c36040860182612e61565b50606083015184820360608601526131db8282612ec7565b9150508091505092915050565b600060208201905081810360008301526132028184613185565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61324782612eb6565b810181811067ffffffffffffffff821117156132665761326561320f565b5b80604052505050565b6000613279612cfd565b9050613285828261323e565b919050565b600067ffffffffffffffff8211156132a5576132a461320f565b5b602082029050602081019050919050565b600080fd5b60006132ce6132c98461328a565b61326f565b905080838252602082019050602084028301858111156132f1576132f06132b6565b5b835b8181101561331a57806133068882613032565b8452602084019350506020810190506132f3565b5050509392505050565b600082601f8301126133395761333861320a565b5b81356133498482602086016132bb565b91505092915050565b600067ffffffffffffffff82111561336d5761336c61320f565b5b602082029050602081019050919050565b61338781612d6a565b811461339257600080fd5b50565b6000813590506133a48161337e565b92915050565b60006133bd6133b884613352565b61326f565b905080838252602082019050602084028301858111156133e0576133df6132b6565b5b835b8181101561340957806133f58882613395565b8452602084019350506020810190506133e2565b5050509392505050565b600082601f8301126134285761342761320a565b5b81356134388482602086016133aa565b91505092915050565b6000806040838503121561345857613457612d07565b5b600083013567ffffffffffffffff81111561347657613475612d0c565b5b61348285828601613324565b925050602083013567ffffffffffffffff8111156134a3576134a2612d0c565b5b6134af85828601613413565b9150509250929050565b60006020820190506134ce6000830184612cac565b92915050565b600082825260208201905092915050565b60006134f082612e70565b6134fa81856134d4565b935061350a818560208601612e8c565b61351381612eb6565b840191505092915050565b6000602082019050818103600083015261353881846134e5565b905092915050565b600061354b82612de7565b9050919050565b61355b81613540565b82525050565b60006020820190506135766000830184613552565b92915050565b60008151905061358b8161301b565b92915050565b6000602082840312156135a7576135a6612d07565b5b60006135b58482850161357c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135f882612cbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362a576136296135be565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061367c57607f821691505b60208210810361368f5761368e613635565b5b50919050565b7f506f6f6c206973206e6f742063757272656e746c792061637469766500000000600082015250565b60006136cb601c836134d4565b91506136d682613695565b602082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f4e6f207374616b657320666f756e6420666f7220746865206164647265737300600082015250565b6000613737601f836134d4565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b600061377882612cbb565b915061378383612cbb565b925082820190508082111561379b5761379a6135be565b5b92915050565b7f5374616b6520646f6573206e6f74206578697374000000000000000000000000600082015250565b60006137d76014836134d4565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061384782612cbb565b915061385283612cbb565b925082820390508181111561386a576138696135be565b5b92915050565b7f4d696e696d756d20706f6f6c696e6720706572696f64206e6f7420726561636860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006138cc6022836134d4565b91506138d782613870565b604082019050919050565b600060208201905081810360008301526138fb816138bf565b9050919050565b600061390d82612cbb565b915061391883612cbb565b925082820261392681612cbb565b9150828204841483151761393d5761393c6135be565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061397e82612cbb565b915061398983612cbb565b92508261399957613998613944565b5b828204905092915050565b6000815490506139b381613664565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613a1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826139df565b613a2686836139df565b95508019841693508086168417925050509392505050565b6000613a59613a54613a4f84612cbb565b612dbb565b612cbb565b9050919050565b6000819050919050565b613a7383613a3e565b613a87613a7f82613a60565b8484546139ec565b825550505050565b600090565b613a9c613a8f565b613aa7818484613a6a565b505050565b5b81811015613acb57613ac0600082613a94565b600181019050613aad565b5050565b601f821115613b1057613ae1816139ba565b613aea846139cf565b81016020851015613af9578190505b613b0d613b05856139cf565b830182613aac565b50505b505050565b600082821c905092915050565b6000613b3360001984600802613b15565b1980831691505092915050565b6000613b4c8383613b22565b9150826002028217905092915050565b818103613b6a575050613c42565b613b73826139a4565b67ffffffffffffffff811115613b8c57613b8b61320f565b5b613b968254613664565b613ba1828285613acf565b6000601f831160018114613bd05760008415613bbe578287015490505b613bc88582613b40565b865550613c3b565b601f198416613bde876139ba565b9650613be9866139ba565b60005b82811015613c1157848901548255600182019150600185019450602081019050613bec565b86831015613c2e5784890154613c2a601f891682613b22565b8355505b6001600288020188555050505b5050505050505b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050613c828161337e565b92915050565b600060208284031215613c9e57613c9d612d07565b5b6000613cac84828501613c73565b91505092915050565b6000604082019050613cca6000830185612cc5565b613cd76020830184612cc5565b9392505050565b7f416d6f756e7420697320746f6f20686967680000000000000000000000000000600082015250565b6000613d146012836134d4565b9150613d1f82613cde565b602082019050919050565b60006020820190508181036000830152613d4381613d07565b9050919050565b7f576974686472617720776974682070656e616c74792074696d6520657863656560008201527f6420796f752063616e206e6f7720756e7374616b6520746f6b656e2000000000602082015250565b6000613da6603c836134d4565b9150613db182613d4a565b604082019050919050565b60006020820190508181036000830152613dd581613d99565b9050919050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613e126016836134d4565b9150613e1d82613ddc565b602082019050919050565b60006020820190508181036000830152613e4181613e05565b9050919050565b7f416d6f756e742063616e206e6f74206265203000000000000000000000000000600082015250565b6000613e7e6013836134d4565b9150613e8982613e48565b602082019050919050565b60006020820190508181036000830152613ead81613e71565b9050919050565b7f416d6f756e742063616e6e2774206265207a65726f0000000000000000000000600082015250565b6000613eea6015836134d4565b9150613ef582613eb4565b602082019050919050565b60006020820190508181036000830152613f1981613edd565b9050919050565b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b6000613f566013836134d4565b9150613f6182613f20565b602082019050919050565b60006020820190508181036000830152613f8581613f49565b9050919050565b7f4e6f7420456c696769626c6520666f7220726577617264000000000000000000600082015250565b6000613fc26017836134d4565b9150613fcd82613f8c565b602082019050919050565b60006020820190508181036000830152613ff181613fb5565b9050919050565b7f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000600082015250565b600061402e6016836134d4565b915061403982613ff8565b602082019050919050565b6000602082019050818103600083015261405d81614021565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140c06026836134d4565b91506140cb82614064565b604082019050919050565b600060208201905081810360008301526140ef816140b3565b9050919050565b7f57616c6c657420646f6573206e6f74206f776e20616e792044657374696e617460008201527f696f6e20496e6865726974616e63652039303232204e46547300000000000000602082015250565b60006141526039836134d4565b915061415d826140f6565b604082019050919050565b6000602082019050818103600083015261418181614145565b9050919050565b7f496e73756666696369656e7420246941492062616c616e636500000000000000600082015250565b60006141be6019836134d4565b91506141c982614188565b602082019050919050565b600060208201905081810360008301526141ed816141b1565b9050919050565b7f24694149207468726573686f6c64206e6f74206d657400000000000000000000600082015250565b600061422a6016836134d4565b9150614235826141f4565b602082019050919050565b600060208201905081810360008301526142598161421d565b9050919050565b60006060820190506142756000830186612cac565b6142826020830185612cac565b61428f6040830184612cc5565b949350505050565b6142a082612e70565b67ffffffffffffffff8111156142b9576142b861320f565b5b6142c38254613664565b6142ce828285613acf565b600060209050601f83116001811461430157600084156142ef578287015190505b6142f98582613b40565b865550614361565b601f19841661430f866139ba565b60005b8281101561433757848901518255600182019150602085019450602081019050614312565b868310156143545784890151614350601f891682613b22565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061439f6020836134d4565b91506143aa82614369565b602082019050919050565b600060208201905081810360008301526143ce81614392565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061440b601f836134d4565b9150614416826143d5565b602082019050919050565b6000602082019050818103600083015261443a816143fe565b905091905056fea26469706673582212204e1f64ea846eb90169d6faecf06bdd4443e485072fad83b068e1bb77d9abd99564736f6c63430008110033
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 | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.992732 | 1,283,517 | $1,274,188.4 |
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.