More Info
Private Name Tags
ContractCreator
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 18170705 | 351 days ago | IN | 0 ETH | 0.00106459 | ||||
Start Distributi... | 18170703 | 351 days ago | IN | 0 ETH | 0.00158486 | ||||
Deposit | 18170701 | 351 days ago | IN | 0 ETH | 0.00223562 | ||||
Open Staking | 18170699 | 351 days ago | IN | 0 ETH | 0.00067889 | ||||
Set Amount ETH T... | 18170698 | 351 days ago | IN | 0 ETH | 0.00046999 | ||||
Set Token | 18170694 | 351 days ago | IN | 0 ETH | 0.00043842 | ||||
Set Token | 18135447 | 356 days ago | IN | 0 ETH | 0.00097909 | ||||
0x60806040 | 18135163 | 356 days ago | IN | 0 ETH | 0.07231434 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20272171 | 56 days ago | 0.01644345 ETH | ||||
18513489 | 303 days ago | 0.01644345 ETH | ||||
18380538 | 321 days ago | 0.01644345 ETH | ||||
18380457 | 321 days ago | 0.01644345 ETH | ||||
18230176 | 342 days ago | 0.01644345 ETH | ||||
18219928 | 344 days ago | 0.01644345 ETH | ||||
18198047 | 347 days ago | 0.01644345 ETH | ||||
18190608 | 348 days ago | 0.01644345 ETH | ||||
18170793 | 351 days ago | 0.0162162 ETH | ||||
18170705 | 351 days ago | 29.01971207 ETH | ||||
18170538 | 351 days ago | 0.01892187 ETH | ||||
18170344 | 351 days ago | 0.01992886 ETH | ||||
18170298 | 351 days ago | 0.02161006 ETH | ||||
18170228 | 351 days ago | 0.01868582 ETH | ||||
18170216 | 351 days ago | 0.02147003 ETH | ||||
18170215 | 351 days ago | 0.02191528 ETH | ||||
18170212 | 351 days ago | 0.0245523 ETH | ||||
18170163 | 351 days ago | 0.02471378 ETH | ||||
18170159 | 351 days ago | 0.0250387 ETH | ||||
18170145 | 351 days ago | 0.03173214 ETH | ||||
18170090 | 351 days ago | 0.0722299 ETH | ||||
18169807 | 351 days ago | 0.07545369 ETH | ||||
18169042 | 351 days ago | 0.0653022 ETH | ||||
18167142 | 351 days ago | 0.0653145 ETH | ||||
18166386 | 351 days ago | 0.06743859 ETH |
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-14 */ // Gauro.io // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/security/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.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; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File @openzeppelin/contracts/token/ERC20/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File contracts/Staking.sol // Original license: SPDX_License_Identifier: MIT pragma solidity ^0.8.21; interface IUniswapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Staking is Ownable, ReentrancyGuard { IERC20 public token; uint256 public lockDuration = 1 days; uint256 public totalETHDistributed; uint256 public amountETHToRelease = 5 ether; uint256 public releaseInterval = 1 days; uint256 public lastRelease; uint256 public totalStaked; bool public stakingOpen; bool public distributedOpened; uint256 public magnifiedPerShare; uint256 internal constant magnitude = 2 ** 128; mapping(address => uint256) public staked; mapping(address => uint256) public claimed; mapping(address => uint256) public lastActive; mapping(address => uint256) public magnifiedCorrections; event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event Claimed(address indexed user, uint256 amount); event Distributed(uint256 amount); event RealeaseIntervalChanged(uint256 amount); event AmountETHToRealeaseChanged(uint256 amount); event StakingOpened(); event Compound( address indexed user, uint256 amountETH, uint256 amountToken ); function setToken(address _token) external onlyOwner { token = IERC20(_token); } function setRealeaseInterval(uint256 _realeaseInterval) external onlyOwner { releaseInterval = _realeaseInterval; emit RealeaseIntervalChanged(_realeaseInterval); } function openStaking() external onlyOwner { require(!stakingOpen, "staking already open"); stakingOpen = true; } function setAmountETHToRealease( uint256 _amountETHToRealease ) external onlyOwner { amountETHToRelease = _amountETHToRealease; emit AmountETHToRealeaseChanged(_amountETHToRealease); } function claimableOf(address _owner) public view returns (uint256) { return accumulativeOf(_owner) - claimed[_owner]; } function deposit(uint256 _amount) external { require(_amount > 0, "Cannot stake 0"); require(stakingOpen, "staking not open"); token.transferFrom(msg.sender, address(this), _amount); this.claim(msg.sender); unchecked { staked[msg.sender] += _amount; totalStaked += _amount; magnifiedCorrections[msg.sender] -= (magnifiedPerShare * _amount); } emit Staked(msg.sender, _amount); } function withdraw() external { require(staked[msg.sender] > 0, "Cannot withdraw 0"); require( lastActive[msg.sender] + lockDuration <= block.timestamp, "Cannot withdraw before lock duration" ); this.claim(msg.sender); unchecked { staked[msg.sender] = 0; totalStaked -= staked[msg.sender]; magnifiedCorrections[msg.sender] += (magnifiedPerShare * staked[msg.sender]); } token.transfer(msg.sender, staked[msg.sender]); emit Withdrawn(msg.sender, staked[msg.sender]); } function compound() external nonReentrant { uint256 claimable = claimableOf(msg.sender); IUniswapRouter router = IUniswapRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); require(claimable > 0, "Nothing to compound"); claimed[msg.sender] += claimable; address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(token); uint256 balanceBefore = token.balanceOf(address(this)); router.swapExactETHForTokens{value: claimable}( 0, path, address(this), block.timestamp + 360 ); uint256 amountToken = token.balanceOf(address(this)) - balanceBefore; unchecked { staked[msg.sender] += amountToken; totalStaked += amountToken; magnifiedCorrections[msg.sender] -= (magnifiedPerShare * amountToken); } emit Compound(msg.sender, claimable, amountToken); } function claim(address _user) external nonReentrant { require( msg.sender == _user || msg.sender == address(this), "not allowed" ); uint256 claimable = claimableOf(_user); lastActive[_user] = block.timestamp; if (claimable > 0) { claimed[_user] += claimable; payable(_user).transfer(claimable); } emit Claimed(_user, claimable); } function accumulativeOf(address _owner) public view returns (uint256) { unchecked { return ((magnifiedPerShare * staked[_owner]) + magnifiedCorrections[_owner]) / magnitude; } } function startDistribution() external onlyOwner { require(!distributedOpened, "distribution already started"); require(stakingOpen, "staking not open"); require(address(this).balance >= amountETHToRelease, "not enough eth"); require(totalStaked > 0, "no stakers"); distributedOpened = true; lastRelease = block.timestamp; unchecked { totalETHDistributed += amountETHToRelease; magnifiedPerShare = magnifiedPerShare + ((amountETHToRelease * magnitude) / totalStaked); } } receive() external payable { uint256 balance = address(this).balance; if ( balance - totalETHDistributed >= amountETHToRelease && lastRelease + releaseInterval <= block.timestamp && totalStaked > 0 && distributedOpened ) { unchecked { totalETHDistributed += amountETHToRelease; magnifiedPerShare = magnifiedPerShare + ((amountETHToRelease * magnitude) / totalStaked); } lastRelease = block.timestamp; emit Distributed(amountETHToRelease); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AmountETHToRealeaseChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Distributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RealeaseIntervalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[],"name":"StakingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"accumulativeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountETHToRelease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"claimableOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributedOpened","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastActive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRelease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"magnifiedCorrections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"magnifiedPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountETHToRealease","type":"uint256"}],"name":"setAmountETHToRealease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_realeaseInterval","type":"uint256"}],"name":"setRealeaseInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"staked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETHDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405262015180600355674563918244f40000600555620151806006553480156200002a575f80fd5b506200004b6200003f6200005860201b60201c565b6200005f60201b60201c565b6001808190555062000120565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6128a3806200012e5f395ff3fe6080604052600436106101ba575f3560e01c8063817b1cd2116100eb578063ca1557e411610089578063ef15f81111610063578063ef15f81114610695578063f2fde38b146106d1578063f69e2046146106f9578063fc0c546a1461070f576102a1565b8063ca1557e41461062b578063d83623dd14610655578063ea3a0e3e1461066b576102a1565b806398807d84116100c557806398807d841461054f578063b6b55f251461058b578063c2ec28d6146105b3578063c884ef83146105ef576102a1565b8063817b1cd2146104bf5780638903ab9d146104e95780638da5cb5b14610525576102a1565b80633ccfd60b116101585780636258173311610132578063625817331461042f5780636b541a1614610445578063700060d81461046d578063715018a6146104a9576102a1565b80633ccfd60b146103c75780635bf3648c146103dd5780636115078c14610405576102a1565b8063180b260711610194578063180b2607146103215780631e83409a1461034b5780631f8db26814610373578063387602981461039d576102a1565b806304554443146102a557806309ae1e58146102cf578063144fa6d7146102f9576102a1565b366102a1575f479050600554600454826101d49190611c00565b101580156101f15750426006546007546101ee9190611c33565b11155b80156101fe57505f600854115b80156102165750600960019054906101000a900460ff165b1561029f5760055460045f8282540192505081905550600854700100000000000000000000000000000000600554028161025357610252611c66565b5b04600a5401600a81905550426007819055507fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e56005546040516102969190611ca2565b60405180910390a15b005b5f80fd5b3480156102b0575f80fd5b506102b9610739565b6040516102c69190611ca2565b60405180910390f35b3480156102da575f80fd5b506102e361073f565b6040516102f09190611ca2565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190611d26565b610745565b005b34801561032c575f80fd5b50610335610790565b6040516103429190611ca2565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190611d26565b610796565b005b34801561037e575f80fd5b5061038761098a565b6040516103949190611ca2565b60405180910390f35b3480156103a8575f80fd5b506103b1610990565b6040516103be9190611d6b565b60405180910390f35b3480156103d2575f80fd5b506103db6109a2565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190611dae565b610d94565b005b348015610410575f80fd5b50610419610ddd565b6040516104269190611ca2565b60405180910390f35b34801561043a575f80fd5b50610443610de3565b005b348015610450575f80fd5b5061046b60048036038101906104669190611dae565b610e56565b005b348015610478575f80fd5b50610493600480360381019061048e9190611d26565b610e9f565b6040516104a09190611ca2565b60405180910390f35b3480156104b4575f80fd5b506104bd610eb4565b005b3480156104ca575f80fd5b506104d3610ec7565b6040516104e09190611ca2565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611d26565b610ecd565b60405161051c9190611ca2565b60405180910390f35b348015610530575f80fd5b50610539610f26565b6040516105469190611de8565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190611d26565b610f4d565b6040516105829190611ca2565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190611dae565b610f62565b005b3480156105be575f80fd5b506105d960048036038101906105d49190611d26565b6111ef565b6040516105e69190611ca2565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190611d26565b611204565b6040516106229190611ca2565b60405180910390f35b348015610636575f80fd5b5061063f611219565b60405161064c9190611d6b565b60405180910390f35b348015610660575f80fd5b5061066961122c565b005b348015610676575f80fd5b5061067f6113c2565b60405161068c9190611ca2565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190611d26565b6113c8565b6040516106c89190611ca2565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190611d26565b611472565b005b348015610704575f80fd5b5061070d6114f4565b005b34801561071a575f80fd5b50610723611a07565b6040516107309190611e5c565b60405180910390f35b60035481565b60055481565b61074d611a2c565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b61079e611aaa565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080357503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990611ecf565b60405180910390fd5b5f61084c82610ecd565b905042600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156109305780600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108e49190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561092e573d5f803e3d5ffd5b505b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516109769190611ca2565b60405180910390a250610987611af9565b50565b60065481565b60095f9054906101000a900460ff1681565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890611f37565b60405180910390fd5b42600354600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611c33565b1115610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611fc5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401610ae79190611de8565b5f604051808303815f87803b158015610afe575f80fd5b505af1158015610b10573d5f803e3d5ffd5b505050505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460085f8282540392505081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401610cc6929190611fe3565b6020604051808303815f875af1158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190612034565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d8a9190611ca2565b60405180910390a2565b610d9c611a2c565b806006819055507ffff5a3f0f865b51ab29ba8b2a7a8a842aba29850a0aac105769fc4002bf1659481604051610dd29190611ca2565b60405180910390a150565b600a5481565b610deb611a2c565b60095f9054906101000a900460ff1615610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e31906120a9565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550565b610e5e611a2c565b806005819055507fe50e018c701765b9b32105984ecbc9625d67efa07e401054de647ad901369f4281604051610e949190611ca2565b60405180910390a150565b600e602052805f5260405f205f915090505481565b610ebc611a2c565b610ec55f611b02565b565b60085481565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f15836113c8565b610f1f9190611c00565b9050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b602052805f5260405f205f915090505481565b5f8111610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612111565b60405180910390fd5b60095f9054906101000a900460ff16610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612179565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161105093929190612197565b6020604051808303815f875af115801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190612034565b503073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b81526004016110ca9190611de8565b5f604051808303815f87803b1580156110e1575f80fd5b505af11580156110f3573d5f803e3d5ffd5b5050505080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516111e49190611ca2565b60405180910390a250565b600d602052805f5260405f205f915090505481565b600c602052805f5260405f205f915090505481565b600960019054906101000a900460ff1681565b611234611a2c565b600960019054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612216565b60405180910390fd5b60095f9054906101000a900460ff166112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612179565b60405180910390fd5b600554471015611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e9061227e565b60405180910390fd5b5f6008541161135b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611352906122e6565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055504260078190555060055460045f828254019250508190555060085470010000000000000000000000000000000060055402816113b5576113b4611c66565b5b04600a5401600a81905550565b60045481565b5f700100000000000000000000000000000000600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402018161146a57611469611c66565b5b049050919050565b61147a611a2c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612374565b60405180910390fd5b6114f181611b02565b50565b6114fc611aaa565b5f61150633610ecd565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8211611562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611559906123dc565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115ae9190611c33565b925050819055505f600267ffffffffffffffff8111156115d1576115d06123fa565b5b6040519080825280602002602001820160405280156115ff5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061243b565b815f8151811061168257611681612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116f2576116f1612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117879190611de8565b602060405180830381865afa1580156117a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c691906124a7565b90508273ffffffffffffffffffffffffffffffffffffffff16637ff36ab5855f8530610168426117f69190611c33565b6040518663ffffffff1660e01b815260040161181594939291906125c2565b5f6040518083038185885af1158015611830573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f82011682018060405250810190611859919061272f565b505f8160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118b69190611de8565b602060405180830381865afa1580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124a7565b6118ff9190611c00565b905080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0e311a2c6dbfb0153ec3a8a5bdca09070b3e5f60768fdc10a20453f38d18687386836040516119f0929190612776565b60405180910390a25050505050611a05611af9565b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a34611bc3565b73ffffffffffffffffffffffffffffffffffffffff16611a52610f26565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f906127e7565b60405180910390fd5b565b600260015403611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae69061284f565b60405180910390fd5b6002600181905550565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c0a82611bca565b9150611c1583611bca565b9250828203905081811115611c2d57611c2c611bd3565b5b92915050565b5f611c3d82611bca565b9150611c4883611bca565b9250828201905080821115611c6057611c5f611bd3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611c9c81611bca565b82525050565b5f602082019050611cb55f830184611c93565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf582611ccc565b9050919050565b611d0581611ceb565b8114611d0f575f80fd5b50565b5f81359050611d2081611cfc565b92915050565b5f60208284031215611d3b57611d3a611cc4565b5b5f611d4884828501611d12565b91505092915050565b5f8115159050919050565b611d6581611d51565b82525050565b5f602082019050611d7e5f830184611d5c565b92915050565b611d8d81611bca565b8114611d97575f80fd5b50565b5f81359050611da881611d84565b92915050565b5f60208284031215611dc357611dc2611cc4565b5b5f611dd084828501611d9a565b91505092915050565b611de281611ceb565b82525050565b5f602082019050611dfb5f830184611dd9565b92915050565b5f819050919050565b5f611e24611e1f611e1a84611ccc565b611e01565b611ccc565b9050919050565b5f611e3582611e0a565b9050919050565b5f611e4682611e2b565b9050919050565b611e5681611e3c565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f82825260208201905092915050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f611eb9600b83611e75565b9150611ec482611e85565b602082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b7f43616e6e6f7420776974686472617720300000000000000000000000000000005f82015250565b5f611f21601183611e75565b9150611f2c82611eed565b602082019050919050565b5f6020820190508181035f830152611f4e81611f15565b9050919050565b7f43616e6e6f74207769746864726177206265666f7265206c6f636b20647572615f8201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f611faf602483611e75565b9150611fba82611f55565b604082019050919050565b5f6020820190508181035f830152611fdc81611fa3565b9050919050565b5f604082019050611ff65f830185611dd9565b6120036020830184611c93565b9392505050565b61201381611d51565b811461201d575f80fd5b50565b5f8151905061202e8161200a565b92915050565b5f6020828403121561204957612048611cc4565b5b5f61205684828501612020565b91505092915050565b7f7374616b696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612093601483611e75565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f6120fb600e83611e75565b9150612106826120c7565b602082019050919050565b5f6020820190508181035f830152612128816120ef565b9050919050565b7f7374616b696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612163601083611e75565b915061216e8261212f565b602082019050919050565b5f6020820190508181035f83015261219081612157565b9050919050565b5f6060820190506121aa5f830186611dd9565b6121b76020830185611dd9565b6121c46040830184611c93565b949350505050565b7f646973747269627574696f6e20616c72656164792073746172746564000000005f82015250565b5f612200601c83611e75565b915061220b826121cc565b602082019050919050565b5f6020820190508181035f83015261222d816121f4565b9050919050565b7f6e6f7420656e6f756768206574680000000000000000000000000000000000005f82015250565b5f612268600e83611e75565b915061227382612234565b602082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f6e6f207374616b657273000000000000000000000000000000000000000000005f82015250565b5f6122d0600a83611e75565b91506122db8261229c565b602082019050919050565b5f6020820190508181035f8301526122fd816122c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61235e602683611e75565b915061236982612304565b604082019050919050565b5f6020820190508181035f83015261238b81612352565b9050919050565b7f4e6f7468696e6720746f20636f6d706f756e64000000000000000000000000005f82015250565b5f6123c6601383611e75565b91506123d182612392565b602082019050919050565b5f6020820190508181035f8301526123f3816123ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061243581611cfc565b92915050565b5f602082840312156124505761244f611cc4565b5b5f61245d84828501612427565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506124a181611d84565b92915050565b5f602082840312156124bc576124bb611cc4565b5b5f6124c984828501612493565b91505092915050565b5f819050919050565b5f6124f56124f06124eb846124d2565b611e01565b611bca565b9050919050565b612505816124db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61253d81611ceb565b82525050565b5f61254e8383612534565b60208301905092915050565b5f602082019050919050565b5f6125708261250b565b61257a8185612515565b935061258583612525565b805f5b838110156125b557815161259c8882612543565b97506125a78361255a565b925050600181019050612588565b5085935050505092915050565b5f6080820190506125d55f8301876124fc565b81810360208301526125e78186612566565b90506125f66040830185611dd9565b6126036060830184611c93565b95945050505050565b5f80fd5b5f601f19601f8301169050919050565b61262982612610565b810181811067ffffffffffffffff82111715612648576126476123fa565b5b80604052505050565b5f61265a611cbb565b90506126668282612620565b919050565b5f67ffffffffffffffff821115612685576126846123fa565b5b602082029050602081019050919050565b5f80fd5b5f6126ac6126a78461266b565b612651565b905080838252602082019050602084028301858111156126cf576126ce612696565b5b835b818110156126f857806126e48882612493565b8452602084019350506020810190506126d1565b5050509392505050565b5f82601f8301126127165761271561260c565b5b815161272684826020860161269a565b91505092915050565b5f6020828403121561274457612743611cc4565b5b5f82015167ffffffffffffffff81111561276157612760611cc8565b5b61276d84828501612702565b91505092915050565b5f6040820190506127895f830185611c93565b6127966020830184611c93565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127d1602083611e75565b91506127dc8261279d565b602082019050919050565b5f6020820190508181035f8301526127fe816127c5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612839601f83611e75565b915061284482612805565b602082019050919050565b5f6020820190508181035f8301526128668161282d565b905091905056fea2646970667358221220c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a64736f6c63430008150033
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c8063817b1cd2116100eb578063ca1557e411610089578063ef15f81111610063578063ef15f81114610695578063f2fde38b146106d1578063f69e2046146106f9578063fc0c546a1461070f576102a1565b8063ca1557e41461062b578063d83623dd14610655578063ea3a0e3e1461066b576102a1565b806398807d84116100c557806398807d841461054f578063b6b55f251461058b578063c2ec28d6146105b3578063c884ef83146105ef576102a1565b8063817b1cd2146104bf5780638903ab9d146104e95780638da5cb5b14610525576102a1565b80633ccfd60b116101585780636258173311610132578063625817331461042f5780636b541a1614610445578063700060d81461046d578063715018a6146104a9576102a1565b80633ccfd60b146103c75780635bf3648c146103dd5780636115078c14610405576102a1565b8063180b260711610194578063180b2607146103215780631e83409a1461034b5780631f8db26814610373578063387602981461039d576102a1565b806304554443146102a557806309ae1e58146102cf578063144fa6d7146102f9576102a1565b366102a1575f479050600554600454826101d49190611c00565b101580156101f15750426006546007546101ee9190611c33565b11155b80156101fe57505f600854115b80156102165750600960019054906101000a900460ff165b1561029f5760055460045f8282540192505081905550600854700100000000000000000000000000000000600554028161025357610252611c66565b5b04600a5401600a81905550426007819055507fddc9c30275a04c48091f24199f9c405765de34d979d6847f5b9798a57232d2e56005546040516102969190611ca2565b60405180910390a15b005b5f80fd5b3480156102b0575f80fd5b506102b9610739565b6040516102c69190611ca2565b60405180910390f35b3480156102da575f80fd5b506102e361073f565b6040516102f09190611ca2565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190611d26565b610745565b005b34801561032c575f80fd5b50610335610790565b6040516103429190611ca2565b60405180910390f35b348015610356575f80fd5b50610371600480360381019061036c9190611d26565b610796565b005b34801561037e575f80fd5b5061038761098a565b6040516103949190611ca2565b60405180910390f35b3480156103a8575f80fd5b506103b1610990565b6040516103be9190611d6b565b60405180910390f35b3480156103d2575f80fd5b506103db6109a2565b005b3480156103e8575f80fd5b5061040360048036038101906103fe9190611dae565b610d94565b005b348015610410575f80fd5b50610419610ddd565b6040516104269190611ca2565b60405180910390f35b34801561043a575f80fd5b50610443610de3565b005b348015610450575f80fd5b5061046b60048036038101906104669190611dae565b610e56565b005b348015610478575f80fd5b50610493600480360381019061048e9190611d26565b610e9f565b6040516104a09190611ca2565b60405180910390f35b3480156104b4575f80fd5b506104bd610eb4565b005b3480156104ca575f80fd5b506104d3610ec7565b6040516104e09190611ca2565b60405180910390f35b3480156104f4575f80fd5b5061050f600480360381019061050a9190611d26565b610ecd565b60405161051c9190611ca2565b60405180910390f35b348015610530575f80fd5b50610539610f26565b6040516105469190611de8565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190611d26565b610f4d565b6040516105829190611ca2565b60405180910390f35b348015610596575f80fd5b506105b160048036038101906105ac9190611dae565b610f62565b005b3480156105be575f80fd5b506105d960048036038101906105d49190611d26565b6111ef565b6040516105e69190611ca2565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190611d26565b611204565b6040516106229190611ca2565b60405180910390f35b348015610636575f80fd5b5061063f611219565b60405161064c9190611d6b565b60405180910390f35b348015610660575f80fd5b5061066961122c565b005b348015610676575f80fd5b5061067f6113c2565b60405161068c9190611ca2565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190611d26565b6113c8565b6040516106c89190611ca2565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190611d26565b611472565b005b348015610704575f80fd5b5061070d6114f4565b005b34801561071a575f80fd5b50610723611a07565b6040516107309190611e5c565b60405180910390f35b60035481565b60055481565b61074d611a2c565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b61079e611aaa565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080357503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990611ecf565b60405180910390fd5b5f61084c82610ecd565b905042600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8111156109305780600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108e49190611c33565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561092e573d5f803e3d5ffd5b505b8173ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a826040516109769190611ca2565b60405180910390a250610987611af9565b50565b60065481565b60095f9054906101000a900460ff1681565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890611f37565b60405180910390fd5b42600354600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611c33565b1115610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590611fc5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401610ae79190611de8565b5f604051808303815f87803b158015610afe575f80fd5b505af1158015610b10573d5f803e3d5ffd5b505050505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460085f8282540392505081905550600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040518363ffffffff1660e01b8152600401610cc6929190611fe3565b6020604051808303815f875af1158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190612034565b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d8a9190611ca2565b60405180910390a2565b610d9c611a2c565b806006819055507ffff5a3f0f865b51ab29ba8b2a7a8a842aba29850a0aac105769fc4002bf1659481604051610dd29190611ca2565b60405180910390a150565b600a5481565b610deb611a2c565b60095f9054906101000a900460ff1615610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e31906120a9565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550565b610e5e611a2c565b806005819055507fe50e018c701765b9b32105984ecbc9625d67efa07e401054de647ad901369f4281604051610e949190611ca2565b60405180910390a150565b600e602052805f5260405f205f915090505481565b610ebc611a2c565b610ec55f611b02565b565b60085481565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f15836113c8565b610f1f9190611c00565b9050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b602052805f5260405f205f915090505481565b5f8111610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612111565b60405180910390fd5b60095f9054906101000a900460ff16610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612179565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161105093929190612197565b6020604051808303815f875af115801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190612034565b503073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b81526004016110ca9190611de8565b5f604051808303815f87803b1580156110e1575f80fd5b505af11580156110f3573d5f803e3d5ffd5b5050505080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516111e49190611ca2565b60405180910390a250565b600d602052805f5260405f205f915090505481565b600c602052805f5260405f205f915090505481565b600960019054906101000a900460ff1681565b611234611a2c565b600960019054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612216565b60405180910390fd5b60095f9054906101000a900460ff166112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c990612179565b60405180910390fd5b600554471015611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e9061227e565b60405180910390fd5b5f6008541161135b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611352906122e6565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055504260078190555060055460045f828254019250508190555060085470010000000000000000000000000000000060055402816113b5576113b4611c66565b5b04600a5401600a81905550565b60045481565b5f700100000000000000000000000000000000600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5402018161146a57611469611c66565b5b049050919050565b61147a611a2c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612374565b60405180910390fd5b6114f181611b02565b50565b6114fc611aaa565b5f61150633610ecd565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8211611562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611559906123dc565b60405180910390fd5b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115ae9190611c33565b925050819055505f600267ffffffffffffffff8111156115d1576115d06123fa565b5b6040519080825280602002602001820160405280156115ff5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f919061243b565b815f8151811061168257611681612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106116f2576116f1612466565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117879190611de8565b602060405180830381865afa1580156117a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c691906124a7565b90508273ffffffffffffffffffffffffffffffffffffffff16637ff36ab5855f8530610168426117f69190611c33565b6040518663ffffffff1660e01b815260040161181594939291906125c2565b5f6040518083038185885af1158015611830573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f82011682018060405250810190611859919061272f565b505f8160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118b69190611de8565b602060405180830381865afa1580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124a7565b6118ff9190611c00565b905080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060085f828254019250508190555080600a5402600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f0e311a2c6dbfb0153ec3a8a5bdca09070b3e5f60768fdc10a20453f38d18687386836040516119f0929190612776565b60405180910390a25050505050611a05611af9565b565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a34611bc3565b73ffffffffffffffffffffffffffffffffffffffff16611a52610f26565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f906127e7565b60405180910390fd5b565b600260015403611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae69061284f565b60405180910390fd5b6002600181905550565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c0a82611bca565b9150611c1583611bca565b9250828203905081811115611c2d57611c2c611bd3565b5b92915050565b5f611c3d82611bca565b9150611c4883611bca565b9250828201905080821115611c6057611c5f611bd3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b611c9c81611bca565b82525050565b5f602082019050611cb55f830184611c93565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf582611ccc565b9050919050565b611d0581611ceb565b8114611d0f575f80fd5b50565b5f81359050611d2081611cfc565b92915050565b5f60208284031215611d3b57611d3a611cc4565b5b5f611d4884828501611d12565b91505092915050565b5f8115159050919050565b611d6581611d51565b82525050565b5f602082019050611d7e5f830184611d5c565b92915050565b611d8d81611bca565b8114611d97575f80fd5b50565b5f81359050611da881611d84565b92915050565b5f60208284031215611dc357611dc2611cc4565b5b5f611dd084828501611d9a565b91505092915050565b611de281611ceb565b82525050565b5f602082019050611dfb5f830184611dd9565b92915050565b5f819050919050565b5f611e24611e1f611e1a84611ccc565b611e01565b611ccc565b9050919050565b5f611e3582611e0a565b9050919050565b5f611e4682611e2b565b9050919050565b611e5681611e3c565b82525050565b5f602082019050611e6f5f830184611e4d565b92915050565b5f82825260208201905092915050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f611eb9600b83611e75565b9150611ec482611e85565b602082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b7f43616e6e6f7420776974686472617720300000000000000000000000000000005f82015250565b5f611f21601183611e75565b9150611f2c82611eed565b602082019050919050565b5f6020820190508181035f830152611f4e81611f15565b9050919050565b7f43616e6e6f74207769746864726177206265666f7265206c6f636b20647572615f8201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f611faf602483611e75565b9150611fba82611f55565b604082019050919050565b5f6020820190508181035f830152611fdc81611fa3565b9050919050565b5f604082019050611ff65f830185611dd9565b6120036020830184611c93565b9392505050565b61201381611d51565b811461201d575f80fd5b50565b5f8151905061202e8161200a565b92915050565b5f6020828403121561204957612048611cc4565b5b5f61205684828501612020565b91505092915050565b7f7374616b696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612093601483611e75565b915061209e8261205f565b602082019050919050565b5f6020820190508181035f8301526120c081612087565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f6120fb600e83611e75565b9150612106826120c7565b602082019050919050565b5f6020820190508181035f830152612128816120ef565b9050919050565b7f7374616b696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612163601083611e75565b915061216e8261212f565b602082019050919050565b5f6020820190508181035f83015261219081612157565b9050919050565b5f6060820190506121aa5f830186611dd9565b6121b76020830185611dd9565b6121c46040830184611c93565b949350505050565b7f646973747269627574696f6e20616c72656164792073746172746564000000005f82015250565b5f612200601c83611e75565b915061220b826121cc565b602082019050919050565b5f6020820190508181035f83015261222d816121f4565b9050919050565b7f6e6f7420656e6f756768206574680000000000000000000000000000000000005f82015250565b5f612268600e83611e75565b915061227382612234565b602082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f6e6f207374616b657273000000000000000000000000000000000000000000005f82015250565b5f6122d0600a83611e75565b91506122db8261229c565b602082019050919050565b5f6020820190508181035f8301526122fd816122c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61235e602683611e75565b915061236982612304565b604082019050919050565b5f6020820190508181035f83015261238b81612352565b9050919050565b7f4e6f7468696e6720746f20636f6d706f756e64000000000000000000000000005f82015250565b5f6123c6601383611e75565b91506123d182612392565b602082019050919050565b5f6020820190508181035f8301526123f3816123ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061243581611cfc565b92915050565b5f602082840312156124505761244f611cc4565b5b5f61245d84828501612427565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506124a181611d84565b92915050565b5f602082840312156124bc576124bb611cc4565b5b5f6124c984828501612493565b91505092915050565b5f819050919050565b5f6124f56124f06124eb846124d2565b611e01565b611bca565b9050919050565b612505816124db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61253d81611ceb565b82525050565b5f61254e8383612534565b60208301905092915050565b5f602082019050919050565b5f6125708261250b565b61257a8185612515565b935061258583612525565b805f5b838110156125b557815161259c8882612543565b97506125a78361255a565b925050600181019050612588565b5085935050505092915050565b5f6080820190506125d55f8301876124fc565b81810360208301526125e78186612566565b90506125f66040830185611dd9565b6126036060830184611c93565b95945050505050565b5f80fd5b5f601f19601f8301169050919050565b61262982612610565b810181811067ffffffffffffffff82111715612648576126476123fa565b5b80604052505050565b5f61265a611cbb565b90506126668282612620565b919050565b5f67ffffffffffffffff821115612685576126846123fa565b5b602082029050602081019050919050565b5f80fd5b5f6126ac6126a78461266b565b612651565b905080838252602082019050602084028301858111156126cf576126ce612696565b5b835b818110156126f857806126e48882612493565b8452602084019350506020810190506126d1565b5050509392505050565b5f82601f8301126127165761271561260c565b5b815161272684826020860161269a565b91505092915050565b5f6020828403121561274457612743611cc4565b5b5f82015167ffffffffffffffff81111561276157612760611cc8565b5b61276d84828501612702565b91505092915050565b5f6040820190506127895f830185611c93565b6127966020830184611c93565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127d1602083611e75565b91506127dc8261279d565b602082019050919050565b5f6020820190508181035f8301526127fe816127c5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612839601f83611e75565b915061284482612805565b602082019050919050565b5f6020820190508181035f8301526128668161282d565b905091905056fea2646970667358221220c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a64736f6c63430008150033
Deployed Bytecode Sourcemap
11017:6145:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16534:15;16552:21;16534:39;;16635:18;;16612:19;;16602:7;:29;;;;:::i;:::-;:51;;:116;;;;;16703:15;16684;;16670:11;;:29;;;;:::i;:::-;:48;;16602:116;:148;;;;;16749:1;16735:11;;:15;16602:148;:182;;;;;16767:17;;;;;;;;;;;16602:182;16584:568;;;16863:18;;16840:19;;:41;;;;;;;;;;;17018:11;;11488:8;16984:18;;:30;16983:46;;;;;:::i;:::-;;;16941:17;;:89;16900:17;:130;;;;17074:15;17060:11;:29;;;;17109:31;17121:18;;17109:31;;;;;;:::i;:::-;;;;;;;;16584:568;16523:636;11017:6145;;;;11095:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12187:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11275:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15164:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11229:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11343:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13490:625;;;;;;;;;;;;;:::i;:::-;;12289:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11411:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12484:135;;;;;;;;;;;;;:::i;:::-;;12627:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11654:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2760:103;;;;;;;;;;;;;:::i;:::-;;11308:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12856:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2119:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11505:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12997:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11602:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11553:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11373:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15881:607;;;;;;;;;;;;;:::i;:::-;;11138:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15622:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3018:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14123:1033;;;;;;;;;;;;;:::i;:::-;;11069:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11095:36;;;;:::o;11179:43::-;;;;:::o;12187:94::-;2005:13;:11;:13::i;:::-;12266:6:::1;12251:5;;:22;;;;;;;;;;;;;;;;;;12187:94:::0;:::o;11275:26::-;;;;:::o;15164:450::-;5977:21;:19;:21::i;:::-;15263:5:::1;15249:19;;:10;:19;;;:50;;;;15294:4;15272:27;;:10;:27;;;15249:50;15227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:17;15369:18;15381:5;15369:11;:18::i;:::-;15349:38;;15418:15;15398:10;:17;15409:5;15398:17;;;;;;;;;;;;;;;:35;;;;15460:1;15448:9;:13;15444:122;;;15496:9;15478:7;:14;15486:5;15478:14;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;15528:5;15520:23;;:34;15544:9;15520:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15444:122;15589:5;15581:25;;;15596:9;15581:25;;;;;;:::i;:::-;;;;;;;;15216:398;6021:20:::0;:18;:20::i;:::-;15164:450;:::o;11229:39::-;;;;:::o;11343:23::-;;;;;;;;;;;;;:::o;13490:625::-;13559:1;13538:6;:18;13545:10;13538:18;;;;;;;;;;;;;;;;:22;13530:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13656:15;13640:12;;13615:10;:22;13626:10;13615:22;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;;13593:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;13746:4;:10;;;13757;13746:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13825:1;13804:6;:18;13811:10;13804:18;;;;;;;;;;;;;;;:22;;;;13856:6;:18;13863:10;13856:18;;;;;;;;;;;;;;;;13841:11;;:33;;;;;;;;;;;13963:6;:18;13970:10;13963:18;;;;;;;;;;;;;;;;13926:17;;:55;13889:20;:32;13910:10;13889:32;;;;;;;;;;;;;;;;:93;;;;;;;;;;;14004:5;;;;;;;;;;;:14;;;14019:10;14031:6;:18;14038:10;14031:18;;;;;;;;;;;;;;;;14004:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14076:10;14066:41;;;14088:6;:18;14095:10;14088:18;;;;;;;;;;;;;;;;14066:41;;;;;;:::i;:::-;;;;;;;;13490:625::o;12289:187::-;2005:13;:11;:13::i;:::-;12393:17:::1;12375:15;:35;;;;12426:42;12450:17;12426:42;;;;;;:::i;:::-;;;;;;;;12289:187:::0;:::o;11411:32::-;;;;:::o;12484:135::-;2005:13;:11;:13::i;:::-;12546:11:::1;;;;;;;;;;;12545:12;12537:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;12607:4;12593:11;;:18;;;;;;;;;;;;;;;;;;12484:135::o:0;12627:221::-;2005:13;:11;:13::i;:::-;12756:20:::1;12735:18;:41;;;;12792:48;12819:20;12792:48;;;;;;:::i;:::-;;;;;;;;12627:221:::0;:::o;11654:55::-;;;;;;;;;;;;;;;;;:::o;2760:103::-;2005:13;:11;:13::i;:::-;2825:30:::1;2852:1;2825:18;:30::i;:::-;2760:103::o:0;11308:26::-;;;;:::o;12856:133::-;12914:7;12966;:15;12974:6;12966:15;;;;;;;;;;;;;;;;12941:22;12956:6;12941:14;:22::i;:::-;:40;;;;:::i;:::-;12934:47;;12856:133;;;:::o;2119:87::-;2165:7;2192:6;;;;;;;;;;;2185:13;;2119:87;:::o;11505:41::-;;;;;;;;;;;;;;;;;:::o;12997:485::-;13069:1;13059:7;:11;13051:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13108:11;;;;;;;;;;;13100:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13151:5;;;;;;;;;;;:18;;;13170:10;13190:4;13197:7;13151:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13216:4;:10;;;13227;13216:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13296:7;13274:6;:18;13281:10;13274:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;13333:7;13318:11;;:22;;;;;;;;;;;13412:7;13392:17;;:27;13355:20;:32;13376:10;13355:32;;;;;;;;;;;;;;;;:65;;;;;;;;;;;13454:10;13447:27;;;13466:7;13447:27;;;;;;:::i;:::-;;;;;;;;12997:485;:::o;11602:45::-;;;;;;;;;;;;;;;;;:::o;11553:42::-;;;;;;;;;;;;;;;;;:::o;11373:29::-;;;;;;;;;;;;;:::o;15881:607::-;2005:13;:11;:13::i;:::-;15949:17:::1;;;;;;;;;;;15948:18;15940:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16018:11;;;;;;;;;;;16010:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:18;;16069:21;:43;;16061:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16164:1;16150:11;;:15;16142:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16211:4;16191:17;;:24;;;;;;;;;;;;;;;;;;16240:15;16226:11;:29;;;;16314:18;;16291:19;;:41;;;;;;;;;;;16457:11;;11488:8;16423:18;;:30;16422:46;;;;;:::i;:::-;;;16384:17;;:85;16347:17;:122;;;;15881:607::o:0;11138:34::-;;;;:::o;15622:251::-;15683:7;11488:8;15813:20;:28;15834:6;15813:28;;;;;;;;;;;;;;;;15774:6;:14;15781:6;15774:14;;;;;;;;;;;;;;;;15754:17;;:34;15753:88;15752:102;;;;;:::i;:::-;;;15728:126;;15622:251;;;:::o;3018:201::-;2005:13;:11;:13::i;:::-;3127:1:::1;3107:22;;:8;:22;;::::0;3099:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3183:28;3202:8;3183:18;:28::i;:::-;3018:201:::0;:::o;14123:1033::-;5977:21;:19;:21::i;:::-;14176:17:::1;14196:23;14208:10;14196:11;:23::i;:::-;14176:43;;14230:21;14283:42;14230:106;;14367:1;14355:9;:13;14347:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14426:9;14403:7;:19;14411:10;14403:19;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;14446:21;14484:1;14470:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14446:40;;14507:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14497:4;14502:1;14497:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14549:5;;;;;;;;;;;14531:4;14536:1;14531:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;14566:21;14590:5;;;;;;;;;;;:15;;;14614:4;14590:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14566:54;;14631:6;:28;;;14667:9;14692:1;14708:4;14735;14773:3;14755:15;:21;;;;:::i;:::-;14631:156;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14798:19;14853:13;14820:5;;;;;;;;;;;:15;;;14844:4;14820:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;14798:68;;14924:11;14902:6;:18;14909:10;14902:18;;;;;;;;;;;;;;;;:33;;;;;;;;;;;14965:11;14950;;:26;;;;;;;;;;;15065:11;15028:17;;:48;14991:20;:32;15012:10;14991:32;;;;;;;;;;;;;;;;:86;;;;;;;;;;;15113:10;15104:44;;;15125:9;15136:11;15104:44;;;;;;;:::i;:::-;;;;;;;;14165:991;;;;;6021:20:::0;:18;:20::i;:::-;14123:1033::o;11069:19::-;;;;;;;;;;;;;:::o;2284:132::-;2359:12;:10;:12::i;:::-;2348:23;;:7;:5;:7::i;:::-;:23;;;2340:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:132::o;6057:293::-;5459:1;6191:7;;:19;6183:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5459:1;6324:7;:18;;;;6057:293::o;6358:213::-;5415:1;6541:7;:22;;;;6358:213::o;3379:191::-;3453:16;3472:6;;;;;;;;;;;3453:25;;3498:8;3489:6;;:17;;;;;;;;;;;;;;;;;;3553:8;3522:40;;3543:8;3522:40;;;;;;;;;;;;3442:128;3379:191;:::o;617:98::-;670:7;697:10;690:17;;617:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;476:191::-;516:3;535:20;553:1;535:20;:::i;:::-;530:25;;569:20;587:1;569:20;:::i;:::-;564:25;;612:1;609;605:9;598:16;;633:3;630:1;627:10;624:36;;;640:18;;:::i;:::-;624:36;476:191;;;;:::o;673:180::-;721:77;718:1;711:88;818:4;815:1;808:15;842:4;839:1;832:15;859:118;946:24;964:5;946:24;:::i;:::-;941:3;934:37;859:118;;:::o;983:222::-;1076:4;1114:2;1103:9;1099:18;1091:26;;1127:71;1195:1;1184:9;1180:17;1171:6;1127:71;:::i;:::-;983:222;;;;:::o;1211:75::-;1244:6;1277:2;1271:9;1261:19;;1211:75;:::o;1292:117::-;1401:1;1398;1391:12;1415:117;1524:1;1521;1514:12;1538:126;1575:7;1615:42;1608:5;1604:54;1593:65;;1538:126;;;:::o;1670:96::-;1707:7;1736:24;1754:5;1736:24;:::i;:::-;1725:35;;1670:96;;;:::o;1772:122::-;1845:24;1863:5;1845:24;:::i;:::-;1838:5;1835:35;1825:63;;1884:1;1881;1874:12;1825:63;1772:122;:::o;1900:139::-;1946:5;1984:6;1971:20;1962:29;;2000:33;2027:5;2000:33;:::i;:::-;1900:139;;;;:::o;2045:329::-;2104:6;2153:2;2141:9;2132:7;2128:23;2124:32;2121:119;;;2159:79;;:::i;:::-;2121:119;2279:1;2304:53;2349:7;2340:6;2329:9;2325:22;2304:53;:::i;:::-;2294:63;;2250:117;2045:329;;;;:::o;2380:90::-;2414:7;2457:5;2450:13;2443:21;2432:32;;2380:90;;;:::o;2476:109::-;2557:21;2572:5;2557:21;:::i;:::-;2552:3;2545:34;2476:109;;:::o;2591:210::-;2678:4;2716:2;2705:9;2701:18;2693:26;;2729:65;2791:1;2780:9;2776:17;2767:6;2729:65;:::i;:::-;2591:210;;;;:::o;2807:122::-;2880:24;2898:5;2880:24;:::i;:::-;2873:5;2870:35;2860:63;;2919:1;2916;2909:12;2860:63;2807:122;:::o;2935:139::-;2981:5;3019:6;3006:20;2997:29;;3035:33;3062:5;3035:33;:::i;:::-;2935:139;;;;:::o;3080:329::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:119;;;3194:79;;:::i;:::-;3156:119;3314:1;3339:53;3384:7;3375:6;3364:9;3360:22;3339:53;:::i;:::-;3329:63;;3285:117;3080:329;;;;:::o;3415:118::-;3502:24;3520:5;3502:24;:::i;:::-;3497:3;3490:37;3415:118;;:::o;3539:222::-;3632:4;3670:2;3659:9;3655:18;3647:26;;3683:71;3751:1;3740:9;3736:17;3727:6;3683:71;:::i;:::-;3539:222;;;;:::o;3767:60::-;3795:3;3816:5;3809:12;;3767:60;;;:::o;3833:142::-;3883:9;3916:53;3934:34;3943:24;3961:5;3943:24;:::i;:::-;3934:34;:::i;:::-;3916:53;:::i;:::-;3903:66;;3833:142;;;:::o;3981:126::-;4031:9;4064:37;4095:5;4064:37;:::i;:::-;4051:50;;3981:126;;;:::o;4113:140::-;4177:9;4210:37;4241:5;4210:37;:::i;:::-;4197:50;;4113:140;;;:::o;4259:159::-;4360:51;4405:5;4360:51;:::i;:::-;4355:3;4348:64;4259:159;;:::o;4424:250::-;4531:4;4569:2;4558:9;4554:18;4546:26;;4582:85;4664:1;4653:9;4649:17;4640:6;4582:85;:::i;:::-;4424:250;;;;:::o;4680:169::-;4764:11;4798:6;4793:3;4786:19;4838:4;4833:3;4829:14;4814:29;;4680:169;;;;:::o;4855:161::-;4995:13;4991:1;4983:6;4979:14;4972:37;4855:161;:::o;5022:366::-;5164:3;5185:67;5249:2;5244:3;5185:67;:::i;:::-;5178:74;;5261:93;5350:3;5261:93;:::i;:::-;5379:2;5374:3;5370:12;5363:19;;5022:366;;;:::o;5394:419::-;5560:4;5598:2;5587:9;5583:18;5575:26;;5647:9;5641:4;5637:20;5633:1;5622:9;5618:17;5611:47;5675:131;5801:4;5675:131;:::i;:::-;5667:139;;5394:419;;;:::o;5819:167::-;5959:19;5955:1;5947:6;5943:14;5936:43;5819:167;:::o;5992:366::-;6134:3;6155:67;6219:2;6214:3;6155:67;:::i;:::-;6148:74;;6231:93;6320:3;6231:93;:::i;:::-;6349:2;6344:3;6340:12;6333:19;;5992:366;;;:::o;6364:419::-;6530:4;6568:2;6557:9;6553:18;6545:26;;6617:9;6611:4;6607:20;6603:1;6592:9;6588:17;6581:47;6645:131;6771:4;6645:131;:::i;:::-;6637:139;;6364:419;;;:::o;6789:223::-;6929:34;6925:1;6917:6;6913:14;6906:58;6998:6;6993:2;6985:6;6981:15;6974:31;6789:223;:::o;7018:366::-;7160:3;7181:67;7245:2;7240:3;7181:67;:::i;:::-;7174:74;;7257:93;7346:3;7257:93;:::i;:::-;7375:2;7370:3;7366:12;7359:19;;7018:366;;;:::o;7390:419::-;7556:4;7594:2;7583:9;7579:18;7571:26;;7643:9;7637:4;7633:20;7629:1;7618:9;7614:17;7607:47;7671:131;7797:4;7671:131;:::i;:::-;7663:139;;7390:419;;;:::o;7815:332::-;7936:4;7974:2;7963:9;7959:18;7951:26;;7987:71;8055:1;8044:9;8040:17;8031:6;7987:71;:::i;:::-;8068:72;8136:2;8125:9;8121:18;8112:6;8068:72;:::i;:::-;7815:332;;;;;:::o;8153:116::-;8223:21;8238:5;8223:21;:::i;:::-;8216:5;8213:32;8203:60;;8259:1;8256;8249:12;8203:60;8153:116;:::o;8275:137::-;8329:5;8360:6;8354:13;8345:22;;8376:30;8400:5;8376:30;:::i;:::-;8275:137;;;;:::o;8418:345::-;8485:6;8534:2;8522:9;8513:7;8509:23;8505:32;8502:119;;;8540:79;;:::i;:::-;8502:119;8660:1;8685:61;8738:7;8729:6;8718:9;8714:22;8685:61;:::i;:::-;8675:71;;8631:125;8418:345;;;;:::o;8769:170::-;8909:22;8905:1;8897:6;8893:14;8886:46;8769:170;:::o;8945:366::-;9087:3;9108:67;9172:2;9167:3;9108:67;:::i;:::-;9101:74;;9184:93;9273:3;9184:93;:::i;:::-;9302:2;9297:3;9293:12;9286:19;;8945:366;;;:::o;9317:419::-;9483:4;9521:2;9510:9;9506:18;9498:26;;9570:9;9564:4;9560:20;9556:1;9545:9;9541:17;9534:47;9598:131;9724:4;9598:131;:::i;:::-;9590:139;;9317:419;;;:::o;9742:164::-;9882:16;9878:1;9870:6;9866:14;9859:40;9742:164;:::o;9912:366::-;10054:3;10075:67;10139:2;10134:3;10075:67;:::i;:::-;10068:74;;10151:93;10240:3;10151:93;:::i;:::-;10269:2;10264:3;10260:12;10253:19;;9912:366;;;:::o;10284:419::-;10450:4;10488:2;10477:9;10473:18;10465:26;;10537:9;10531:4;10527:20;10523:1;10512:9;10508:17;10501:47;10565:131;10691:4;10565:131;:::i;:::-;10557:139;;10284:419;;;:::o;10709:166::-;10849:18;10845:1;10837:6;10833:14;10826:42;10709:166;:::o;10881:366::-;11023:3;11044:67;11108:2;11103:3;11044:67;:::i;:::-;11037:74;;11120:93;11209:3;11120:93;:::i;:::-;11238:2;11233:3;11229:12;11222:19;;10881:366;;;:::o;11253:419::-;11419:4;11457:2;11446:9;11442:18;11434:26;;11506:9;11500:4;11496:20;11492:1;11481:9;11477:17;11470:47;11534:131;11660:4;11534:131;:::i;:::-;11526:139;;11253:419;;;:::o;11678:442::-;11827:4;11865:2;11854:9;11850:18;11842:26;;11878:71;11946:1;11935:9;11931:17;11922:6;11878:71;:::i;:::-;11959:72;12027:2;12016:9;12012:18;12003:6;11959:72;:::i;:::-;12041;12109:2;12098:9;12094:18;12085:6;12041:72;:::i;:::-;11678:442;;;;;;:::o;12126:178::-;12266:30;12262:1;12254:6;12250:14;12243:54;12126:178;:::o;12310:366::-;12452:3;12473:67;12537:2;12532:3;12473:67;:::i;:::-;12466:74;;12549:93;12638:3;12549:93;:::i;:::-;12667:2;12662:3;12658:12;12651:19;;12310:366;;;:::o;12682:419::-;12848:4;12886:2;12875:9;12871:18;12863:26;;12935:9;12929:4;12925:20;12921:1;12910:9;12906:17;12899:47;12963:131;13089:4;12963:131;:::i;:::-;12955:139;;12682:419;;;:::o;13107:164::-;13247:16;13243:1;13235:6;13231:14;13224:40;13107:164;:::o;13277:366::-;13419:3;13440:67;13504:2;13499:3;13440:67;:::i;:::-;13433:74;;13516:93;13605:3;13516:93;:::i;:::-;13634:2;13629:3;13625:12;13618:19;;13277:366;;;:::o;13649:419::-;13815:4;13853:2;13842:9;13838:18;13830:26;;13902:9;13896:4;13892:20;13888:1;13877:9;13873:17;13866:47;13930:131;14056:4;13930:131;:::i;:::-;13922:139;;13649:419;;;:::o;14074:160::-;14214:12;14210:1;14202:6;14198:14;14191:36;14074:160;:::o;14240:366::-;14382:3;14403:67;14467:2;14462:3;14403:67;:::i;:::-;14396:74;;14479:93;14568:3;14479:93;:::i;:::-;14597:2;14592:3;14588:12;14581:19;;14240:366;;;:::o;14612:419::-;14778:4;14816:2;14805:9;14801:18;14793:26;;14865:9;14859:4;14855:20;14851:1;14840:9;14836:17;14829:47;14893:131;15019:4;14893:131;:::i;:::-;14885:139;;14612:419;;;:::o;15037:225::-;15177:34;15173:1;15165:6;15161:14;15154:58;15246:8;15241:2;15233:6;15229:15;15222:33;15037:225;:::o;15268:366::-;15410:3;15431:67;15495:2;15490:3;15431:67;:::i;:::-;15424:74;;15507:93;15596:3;15507:93;:::i;:::-;15625:2;15620:3;15616:12;15609:19;;15268:366;;;:::o;15640:419::-;15806:4;15844:2;15833:9;15829:18;15821:26;;15893:9;15887:4;15883:20;15879:1;15868:9;15864:17;15857:47;15921:131;16047:4;15921:131;:::i;:::-;15913:139;;15640:419;;;:::o;16065:169::-;16205:21;16201:1;16193:6;16189:14;16182:45;16065:169;:::o;16240:366::-;16382:3;16403:67;16467:2;16462:3;16403:67;:::i;:::-;16396:74;;16479:93;16568:3;16479:93;:::i;:::-;16597:2;16592:3;16588:12;16581:19;;16240:366;;;:::o;16612:419::-;16778:4;16816:2;16805:9;16801:18;16793:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16893:131;17019:4;16893:131;:::i;:::-;16885:139;;16612:419;;;:::o;17037:180::-;17085:77;17082:1;17075:88;17182:4;17179:1;17172:15;17206:4;17203:1;17196:15;17223:143;17280:5;17311:6;17305:13;17296:22;;17327:33;17354:5;17327:33;:::i;:::-;17223:143;;;;:::o;17372:351::-;17442:6;17491:2;17479:9;17470:7;17466:23;17462:32;17459:119;;;17497:79;;:::i;:::-;17459:119;17617:1;17642:64;17698:7;17689:6;17678:9;17674:22;17642:64;:::i;:::-;17632:74;;17588:128;17372:351;;;;:::o;17729:180::-;17777:77;17774:1;17767:88;17874:4;17871:1;17864:15;17898:4;17895:1;17888:15;17915:143;17972:5;18003:6;17997:13;17988:22;;18019:33;18046:5;18019:33;:::i;:::-;17915:143;;;;:::o;18064:351::-;18134:6;18183:2;18171:9;18162:7;18158:23;18154:32;18151:119;;;18189:79;;:::i;:::-;18151:119;18309:1;18334:64;18390:7;18381:6;18370:9;18366:22;18334:64;:::i;:::-;18324:74;;18280:128;18064:351;;;;:::o;18421:85::-;18466:7;18495:5;18484:16;;18421:85;;;:::o;18512:158::-;18570:9;18603:61;18621:42;18630:32;18656:5;18630:32;:::i;:::-;18621:42;:::i;:::-;18603:61;:::i;:::-;18590:74;;18512:158;;;:::o;18676:147::-;18771:45;18810:5;18771:45;:::i;:::-;18766:3;18759:58;18676:147;;:::o;18829:114::-;18896:6;18930:5;18924:12;18914:22;;18829:114;;;:::o;18949:184::-;19048:11;19082:6;19077:3;19070:19;19122:4;19117:3;19113:14;19098:29;;18949:184;;;;:::o;19139:132::-;19206:4;19229:3;19221:11;;19259:4;19254:3;19250:14;19242:22;;19139:132;;;:::o;19277:108::-;19354:24;19372:5;19354:24;:::i;:::-;19349:3;19342:37;19277:108;;:::o;19391:179::-;19460:10;19481:46;19523:3;19515:6;19481:46;:::i;:::-;19559:4;19554:3;19550:14;19536:28;;19391:179;;;;:::o;19576:113::-;19646:4;19678;19673:3;19669:14;19661:22;;19576:113;;;:::o;19725:732::-;19844:3;19873:54;19921:5;19873:54;:::i;:::-;19943:86;20022:6;20017:3;19943:86;:::i;:::-;19936:93;;20053:56;20103:5;20053:56;:::i;:::-;20132:7;20163:1;20148:284;20173:6;20170:1;20167:13;20148:284;;;20249:6;20243:13;20276:63;20335:3;20320:13;20276:63;:::i;:::-;20269:70;;20362:60;20415:6;20362:60;:::i;:::-;20352:70;;20208:224;20195:1;20192;20188:9;20183:14;;20148:284;;;20152:14;20448:3;20441:10;;19849:608;;;19725:732;;;;:::o;20463:720::-;20698:4;20736:3;20725:9;20721:19;20713:27;;20750:79;20826:1;20815:9;20811:17;20802:6;20750:79;:::i;:::-;20876:9;20870:4;20866:20;20861:2;20850:9;20846:18;20839:48;20904:108;21007:4;20998:6;20904:108;:::i;:::-;20896:116;;21022:72;21090:2;21079:9;21075:18;21066:6;21022:72;:::i;:::-;21104;21172:2;21161:9;21157:18;21148:6;21104:72;:::i;:::-;20463:720;;;;;;;:::o;21189:117::-;21298:1;21295;21288:12;21312:102;21353:6;21404:2;21400:7;21395:2;21388:5;21384:14;21380:28;21370:38;;21312:102;;;:::o;21420:281::-;21503:27;21525:4;21503:27;:::i;:::-;21495:6;21491:40;21633:6;21621:10;21618:22;21597:18;21585:10;21582:34;21579:62;21576:88;;;21644:18;;:::i;:::-;21576:88;21684:10;21680:2;21673:22;21463:238;21420:281;;:::o;21707:129::-;21741:6;21768:20;;:::i;:::-;21758:30;;21797:33;21825:4;21817:6;21797:33;:::i;:::-;21707:129;;;:::o;21842:311::-;21919:4;22009:18;22001:6;21998:30;21995:56;;;22031:18;;:::i;:::-;21995:56;22081:4;22073:6;22069:17;22061:25;;22141:4;22135;22131:15;22123:23;;21842:311;;;:::o;22159:117::-;22268:1;22265;22258:12;22299:732;22406:5;22431:81;22447:64;22504:6;22447:64;:::i;:::-;22431:81;:::i;:::-;22422:90;;22532:5;22561:6;22554:5;22547:21;22595:4;22588:5;22584:16;22577:23;;22648:4;22640:6;22636:17;22628:6;22624:30;22677:3;22669:6;22666:15;22663:122;;;22696:79;;:::i;:::-;22663:122;22811:6;22794:231;22828:6;22823:3;22820:15;22794:231;;;22903:3;22932:48;22976:3;22964:10;22932:48;:::i;:::-;22927:3;22920:61;23010:4;23005:3;23001:14;22994:21;;22870:155;22854:4;22849:3;22845:14;22838:21;;22794:231;;;22798:21;22412:619;;22299:732;;;;;:::o;23054:385::-;23136:5;23185:3;23178:4;23170:6;23166:17;23162:27;23152:122;;23193:79;;:::i;:::-;23152:122;23303:6;23297:13;23328:105;23429:3;23421:6;23414:4;23406:6;23402:17;23328:105;:::i;:::-;23319:114;;23142:297;23054:385;;;;:::o;23445:554::-;23540:6;23589:2;23577:9;23568:7;23564:23;23560:32;23557:119;;;23595:79;;:::i;:::-;23557:119;23736:1;23725:9;23721:17;23715:24;23766:18;23758:6;23755:30;23752:117;;;23788:79;;:::i;:::-;23752:117;23893:89;23974:7;23965:6;23954:9;23950:22;23893:89;:::i;:::-;23883:99;;23686:306;23445:554;;;;:::o;24005:332::-;24126:4;24164:2;24153:9;24149:18;24141:26;;24177:71;24245:1;24234:9;24230:17;24221:6;24177:71;:::i;:::-;24258:72;24326:2;24315:9;24311:18;24302:6;24258:72;:::i;:::-;24005:332;;;;;:::o;24343:182::-;24483:34;24479:1;24471:6;24467:14;24460:58;24343:182;:::o;24531:366::-;24673:3;24694:67;24758:2;24753:3;24694:67;:::i;:::-;24687:74;;24770:93;24859:3;24770:93;:::i;:::-;24888:2;24883:3;24879:12;24872:19;;24531:366;;;:::o;24903:419::-;25069:4;25107:2;25096:9;25092:18;25084:26;;25156:9;25150:4;25146:20;25142:1;25131:9;25127:17;25120:47;25184:131;25310:4;25184:131;:::i;:::-;25176:139;;24903:419;;;:::o;25328:181::-;25468:33;25464:1;25456:6;25452:14;25445:57;25328:181;:::o;25515:366::-;25657:3;25678:67;25742:2;25737:3;25678:67;:::i;:::-;25671:74;;25754:93;25843:3;25754:93;:::i;:::-;25872:2;25867:3;25863:12;25856:19;;25515:366;;;:::o;25887:419::-;26053:4;26091:2;26080:9;26076:18;26068:26;;26140:9;26134:4;26130:20;26126:1;26115:9;26111:17;26104:47;26168:131;26294:4;26168:131;:::i;:::-;26160:139;;25887:419;;;:::o
Swarm Source
ipfs://c3b0f3fb554c7d0063939ae78f332ee4e827a6e07d8dbd7dad5cacb8a6adf42a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,457.95 | 0.000000000000000002 | <$0.000001 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.