Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
Latest 25 from a total of 248 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18218728 | 403 days ago | IN | 0 ETH | 0.00112563 | ||||
Rescue | 16417403 | 656 days ago | IN | 0 ETH | 0.00066182 | ||||
Update Reward Am... | 16396988 | 659 days ago | IN | 0 ETH | 0.00033881 | ||||
Accept Ownership | 16396945 | 659 days ago | IN | 0 ETH | 0.00038008 | ||||
Transfer Ownersh... | 16396875 | 659 days ago | IN | 0 ETH | 0.00067731 | ||||
Withdraw And Get... | 16199927 | 686 days ago | IN | 0 ETH | 0.00222291 | ||||
Withdraw And Get... | 16199918 | 686 days ago | IN | 0 ETH | 0.00229199 | ||||
Get Reward | 16199912 | 686 days ago | IN | 0 ETH | 0.00104157 | ||||
Get Reward | 16199911 | 686 days ago | IN | 0 ETH | 0.00106163 | ||||
Withdraw And Get... | 16120329 | 697 days ago | IN | 0 ETH | 0.00207387 | ||||
Get Reward | 16120325 | 697 days ago | IN | 0 ETH | 0.00135678 | ||||
Withdraw And Get... | 16061143 | 706 days ago | IN | 0 ETH | 0.00114765 | ||||
Withdraw And Get... | 15690907 | 757 days ago | IN | 0 ETH | 0.00228283 | ||||
Withdraw And Get... | 15681091 | 759 days ago | IN | 0 ETH | 0.00085111 | ||||
Get Reward | 15257075 | 824 days ago | IN | 0 ETH | 0.00051962 | ||||
Get Reward | 15198680 | 833 days ago | IN | 0 ETH | 0.00037974 | ||||
Withdraw And Get... | 15108584 | 847 days ago | IN | 0 ETH | 0.00101528 | ||||
Get Reward | 15106634 | 847 days ago | IN | 0 ETH | 0.00043504 | ||||
Withdraw And Get... | 14570564 | 935 days ago | IN | 0 ETH | 0.00312945 | ||||
Withdraw And Get... | 14570564 | 935 days ago | IN | 0 ETH | 0.00451354 | ||||
Update Stake Swa... | 14537994 | 940 days ago | IN | 0 ETH | 0.00131016 | ||||
Update Stake Swa... | 14531293 | 941 days ago | IN | 0 ETH | 0.00111107 | ||||
Update Stake Swa... | 14524814 | 942 days ago | IN | 0 ETH | 0.00159619 | ||||
Update Stake Swa... | 14519373 | 943 days ago | IN | 0 ETH | 0.00128831 | ||||
Update Stake Swa... | 14505859 | 945 days ago | IN | 0 ETH | 0.00116092 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LockStakingRewardMinAmountFixedAPY
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-09 */ pragma solidity =0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface INimbusRouter { function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } contract Ownable { address public owner; address public newOwner; event OwnershipTransferred(address indexed from, address indexed to); constructor() { owner = msg.sender; emit OwnershipTransferred(address(0), owner); } modifier onlyOwner { require(msg.sender == owner, "Ownable: Caller is not the owner"); _; } function transferOwnership(address transferOwner) public onlyOwner { require(transferOwner != newOwner); newOwner = transferOwner; } function acceptOwnership() virtual public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in construction, // since the code is only stored at the end of the constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract ReentrancyGuard { /// @dev counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } interface ILockStakingRewards { function earned(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function stake(uint256 amount) external; function stakeFor(uint256 amount, address user) external; function getReward() external; function withdraw(uint256 nonce) external; function withdrawAndGetReward(uint256 nonce) external; } interface IERC20Permit { function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } contract LockStakingRewardMinAmountFixedAPY is ILockStakingRewards, ReentrancyGuard, Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public immutable rewardsToken; IERC20 public immutable stakingToken; uint256 public rewardRate; uint256 public immutable lockDuration; uint256 public constant rewardDuration = 365 days; INimbusRouter public swapRouter; address public swapToken; uint public swapTokenAmountThresholdForStaking; mapping(address => uint256) public weightedStakeDate; mapping(address => mapping(uint256 => uint256)) public stakeLocks; mapping(address => mapping(uint256 => uint256)) public stakeAmounts; mapping(address => mapping(uint256 => uint256)) public stakeAmountsRewardEquivalent; mapping(address => uint256) public stakeNonces; uint256 private _totalSupply; uint256 private _totalSupplyRewardEquivalent; mapping(address => uint256) private _balances; mapping(address => uint256) private _balancesRewardEquivalent; event RewardUpdated(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); event Rescue(address to, uint amount); event RescueToken(address to, address token, uint amount); constructor( address _rewardsToken, address _stakingToken, uint _rewardRate, uint _lockDuration, address _swapRouter, address _swapToken, uint _swapTokenAmount ) { rewardsToken = IERC20(_rewardsToken); stakingToken = IERC20(_stakingToken); rewardRate = _rewardRate; lockDuration = _lockDuration; swapRouter = INimbusRouter(_swapRouter); swapToken = _swapToken; swapTokenAmountThresholdForStaking = _swapTokenAmount; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function totalSupplyRewardEquivalent() external view returns (uint256) { return _totalSupplyRewardEquivalent; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function balanceOfRewardEquivalent(address account) external view returns (uint256) { return _balancesRewardEquivalent[account]; } function earned(address account) public view override returns (uint256) { return (_balancesRewardEquivalent[account].mul(block.timestamp.sub(weightedStakeDate[account])).mul(rewardRate)) / (100 * rewardDuration); } function isAmountMeetsMinThreshold(uint amount) public view returns (bool) { address[] memory path = new address[](2); path[0] = address(stakingToken); path[1] = swapToken; uint tokenAmount = swapRouter.getAmountsOut(amount, path)[1]; return tokenAmount >= swapTokenAmountThresholdForStaking; } function stakeWithPermit(uint256 amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external nonReentrant { require(amount > 0, "LockStakingRewardMinAmountFixedAPY: Cannot stake 0"); // permit IERC20Permit(address(stakingToken)).permit(msg.sender, address(this), amount, deadline, v, r, s); _stake(amount, msg.sender); } function stake(uint256 amount) external override nonReentrant { require(amount > 0, "LockStakingRewardMinAmountFixedAPY: Cannot stake 0"); _stake(amount, msg.sender); } function stakeFor(uint256 amount, address user) external override nonReentrant { require(amount > 0, "LockStakingRewardMinAmountFixedAPY: Cannot stake 0"); _stake(amount, user); } function _stake(uint256 amount, address user) private { require(isAmountMeetsMinThreshold(amount), "LockStakingRewardMinAmountFixedAPY: Amount is less than min stake"); stakingToken.safeTransferFrom(msg.sender, address(this), amount); uint amountRewardEquivalent = getEquivalentAmount(amount); _totalSupply = _totalSupply.add(amount); _totalSupplyRewardEquivalent = _totalSupplyRewardEquivalent.add(amountRewardEquivalent); uint previousAmount = _balances[user]; uint newAmount = previousAmount.add(amount); weightedStakeDate[user] = (weightedStakeDate[user].mul(previousAmount) / newAmount).add(block.timestamp.mul(amount) / newAmount); _balances[user] = newAmount; uint stakeNonce = stakeNonces[user]++; stakeAmounts[user][stakeNonce] = amount; stakeLocks[user][stakeNonce] = block.timestamp + lockDuration; stakeAmountsRewardEquivalent[user][stakeNonce] = amountRewardEquivalent; _balancesRewardEquivalent[user] = _balancesRewardEquivalent[user].add(amountRewardEquivalent); emit Staked(user, amount); } //A user can withdraw its staking tokens even if there is no rewards tokens on the contract account function withdraw(uint256 nonce) public override nonReentrant { require(stakeAmounts[msg.sender][nonce] > 0, "LockStakingRewardMinAmountFixedAPY: This stake nonce was withdrawn"); require(stakeLocks[msg.sender][nonce] < block.timestamp, "LockStakingRewardMinAmountFixedAPY: Locked"); uint amount = stakeAmounts[msg.sender][nonce]; uint amountRewardEquivalent = stakeAmountsRewardEquivalent[msg.sender][nonce]; _totalSupply = _totalSupply.sub(amount); _totalSupplyRewardEquivalent = _totalSupplyRewardEquivalent.sub(amountRewardEquivalent); _balances[msg.sender] = _balances[msg.sender].sub(amount); _balancesRewardEquivalent[msg.sender] = _balancesRewardEquivalent[msg.sender].sub(amountRewardEquivalent); stakingToken.safeTransfer(msg.sender, amount); stakeAmounts[msg.sender][nonce] = 0; stakeAmountsRewardEquivalent[msg.sender][nonce] = 0; emit Withdrawn(msg.sender, amount); } function getReward() public override nonReentrant { uint256 reward = earned(msg.sender); if (reward > 0) { weightedStakeDate[msg.sender] = block.timestamp; rewardsToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function withdrawAndGetReward(uint256 nonce) external override { getReward(); withdraw(nonce); } function getEquivalentAmount(uint amount) public view returns (uint) { address[] memory path = new address[](2); uint equivalent; if (stakingToken != rewardsToken) { path[0] = address(stakingToken); path[1] = address(rewardsToken); equivalent = swapRouter.getAmountsOut(amount, path)[1]; } else { equivalent = amount; } return equivalent; } function updateRewardAmount(uint256 reward) external onlyOwner { rewardRate = reward; emit RewardUpdated(reward); } function updateSwapRouter(address newSwapRouter) external onlyOwner { require(newSwapRouter != address(0), "LockStakingRewardMinAmountFixedAPY: Address is zero"); swapRouter = INimbusRouter(newSwapRouter); } function updateSwapToken(address newSwapToken) external onlyOwner { require(newSwapToken != address(0), "LockStakingRewardMinAmountFixedAPY: Address is zero"); swapToken = newSwapToken; } function updateStakeSwapTokenAmountThreshold(uint threshold) external onlyOwner { swapTokenAmountThresholdForStaking = threshold; } function rescue(address to, address token, uint256 amount) external onlyOwner { require(to != address(0), "LockStakingRewardMinAmountFixedAPY: Cannot rescue to the zero address"); require(amount > 0, "LockStakingRewardMinAmountFixedAPY: Cannot rescue 0"); require(token != address(stakingToken), "LockStakingRewardMinAmountFixedAPY: Cannot rescue staking token"); //owner can rescue rewardsToken if there is spare unused tokens on staking contract balance IERC20(token).safeTransfer(to, amount); emit RescueToken(to, address(token), amount); } function rescue(address payable to, uint256 amount) external onlyOwner { require(to != address(0), "LockStakingRewardMinAmountFixedAPY: Cannot rescue to the zero address"); require(amount > 0, "LockStakingRewardMinAmountFixedAPY: Cannot rescue 0"); to.transfer(amount); emit Rescue(to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_rewardsToken","type":"address"},{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"uint256","name":"_rewardRate","type":"uint256"},{"internalType":"uint256","name":"_lockDuration","type":"uint256"},{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_swapToken","type":"address"},{"internalType":"uint256","name":"_swapTokenAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Rescue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RescueToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardUpdated","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":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfRewardEquivalent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getEquivalentAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"isAmountMeetsMinThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeAmountsRewardEquivalent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"stakeFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeNonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract INimbusRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokenAmountThresholdForStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyRewardEquivalent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"transferOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"updateRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"updateStakeSwapTokenAmountThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSwapRouter","type":"address"}],"name":"updateSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSwapToken","type":"address"}],"name":"updateSwapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"weightedStakeDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"withdrawAndGetReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b5060405162002b1a38038062002b1a8339810160408190526200003491620000fa565b6001600081815581546001600160a01b0319163317918290556040516001600160a01b0392909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606097881b81166080529590961b90941660a05260039290925560c052600480546001600160a01b039283166001600160a01b0319918216179091556005805492909316911617905560065562000173565b80516001600160a01b0381168114620000f557600080fd5b919050565b600080600080600080600060e0888a03121562000115578283fd5b6200012088620000dd565b96506200013060208901620000dd565b955060408801519450606088015193506200014e60808901620000dd565b92506200015e60a08901620000dd565b915060c0880151905092959891949750929550565b60805160601c60a05160601c60c051612924620001f6600039600081816105360152611c0b01526000818161072e0152818161097701528181610b9401528181610e6c0152818161141c01528181611458015281816117580152611aa0015260008181610aa3015281816113e5015281816114ed015261167001526129246000f3fe608060405234801561001057600080fd5b506004361061025b5760003560e01c806386a9d8a811610145578063c9eadb86116100bd578063ecd9ba821161008c578063f44c407a11610071578063f44c407a14610481578063f520e7e514610494578063f8e578121461049c5761025b565b8063ecd9ba821461045b578063f2fde38b1461046e5761025b565b8063c9eadb8614610430578063d1af0c7d14610443578063d4ee1d901461044b578063dc73e49c146104535761025b565b8063a694fc3a11610114578063b98b677f116100f9578063b98b677f14610402578063baee99c214610415578063c31c9c07146104285761025b565b8063a694fc3a146103dc578063ac348bb2146103ef5761025b565b806386a9d8a81461039b5780638da5cb5b146103ae5780638edc7f2d146103b6578063971fe937146103c95761025b565b80633f7c0ebf116101d857806372f702f3116101a75780637a4e4ecf1161018c5780637a4e4ecf1461036d5780637b0a47ee146103805780637fc96d6b146103885761025b565b806372f702f31461035057806379ba5097146103655761025b565b80633f7c0ebf146102f757806351746bb214610317578063673434b21461032a57806370a082311461033d5761025b565b806318160ddd1161022f57806320ff430b1161021457806320ff430b146102c95780632e1a7d4d146102dc5780633d18b912146102ef5761025b565b806318160ddd146102b95780631cb1f5b6146102c15761025b565b80628cc2621461026057806304554443146102895780630a4c8f741461029157806315c2ba14146102a6575b600080fd5b61027361026e366004611eb9565b6104a4565b6040516102809190612724565b60405180910390f35b610273610534565b6102a461029f36600461202c565b610558565b005b6102a46102b436600461202c565b6105b7565b610273610648565b61027361064e565b6102a46102d7366004611f00565b610654565b6102a46102ea36600461202c565b610813565b6102a4610a5e565b61030a61030536600461202c565b610b6d565b60405161028091906121bf565b6102a4610325366004612044565b610d7f565b610273610338366004611eb9565b610e1a565b61027361034b366004611eb9565b610e42565b610358610e6a565b60405161028091906120f9565b6102a4610e8e565b6102a461037b366004611ed5565b610f4a565b6102736110a3565b6102a4610396366004611eb9565b6110a9565b6102736103a9366004611eb9565b61118e565b6103586111a0565b6102736103c4366004611f40565b6111bc565b6102736103d7366004611f40565b6111d9565b6102a46103ea36600461202c565b6111f6565b6102736103fd366004611f40565b61128c565b6102a4610410366004611eb9565b6112a9565b610273610423366004611eb9565b61138e565b6103586113a0565b61027361043e36600461202c565b6113bc565b61035861166e565b610358611692565b6103586116ae565b6102a4610469366004612073565b6116ca565b6102a461047c366004611eb9565b611818565b6102a461048f36600461202c565b6118d8565b6102736118e9565b6102736118f1565b60006104b56301e1338060646127e1565b60035473ffffffffffffffffffffffffffffffffffffffff8416600090815260076020526040902054610524919061051e906104f29042906118f7565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600f602052604090205490611947565b90611947565b61052e91906127a8565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60405180910390fd5b600655565b60015473ffffffffffffffffffffffffffffffffffffffff163314610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60038190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f69061063d908390612724565b60405180910390a150565b600c5490565b600d5490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff83166106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612473565b6000811161072c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906123aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a99061225c565b6107d373ffffffffffffffffffffffffffffffffffffffff831684836119a6565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba91083838360405161080693929190612140565b60405180910390a1505050565b60016000808282546108259190612790565b9091555050600080543382526009602090815260408084208585529091529091205461087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612553565b33600090815260086020908152604080832085845290915290205442116108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612316565b336000818152600960209081526040808320868452825280832054938352600a8252808320868452909152902054600c5461090b90836118f7565b600c55600d5461091b90826118f7565b600d55336000908152600e602052604090205461093890836118f7565b336000908152600e6020908152604080832093909355600f9052205461095e90826118f7565b336000818152600f60205260409020919091556109b3907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690846119a6565b3360008181526009602090815260408083208884528252808320839055838352600a825280832088845290915280822091909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d590610a15908590612724565b60405180910390a250506000548114610a5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b5050565b6001600080828254610a709190612790565b90915550506000805490610a83336104a4565b90508015610b2e57336000818152600760205260409020429055610adf907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690836119a6565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051610b259190612724565b60405180910390a25b506000548114610b6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b50565b604080516002808252606082018352600092839291906020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610bed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600554825191169082906001908110610c52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600480546040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600093919091169163d06ca61f91610cbb91889187910161272d565b60006040518083038186803b158015610cd357600080fd5b505afa158015610ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d2d9190810190611f52565b600181518110610d66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060065481101592505050919050565b6001600080828254610d919190612790565b909155505060005482610dd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b610dda8383611a47565b6000548114610e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610eb257600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8216610fe8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612473565b60008111611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906123aa565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611065573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af2828260405161109792919061211a565b60405180910390a15050565b60035481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8116611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906122b9565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b6020526000908152604090205481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600960209081526000928352604080842090915290825290205481565b600860209081526000928352604080842090915290825290205481565b60016000808282546112089190612790565b909155505060005481611247576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b6112518233611a47565b6000548114610a5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b600a60209081526000928352604080842090915290825290205481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8116611347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906122b9565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60076020526000908152604090205481565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6040805160028082526060820183526000928392919060208301908036833701905050905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611664577f0000000000000000000000000000000000000000000000000000000000000000826000815181106114b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000082600181518110611546577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600480546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815292169163d06ca61f916115aa91889187910161272d565b60006040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261161c9190810190611f52565b600181518110611655577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050611667565b50825b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60016000808282546116dc9190612790565b90915550506000548561171b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9061179990339030908b908b908b908b908b90600401612171565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b505050506117d58633611a47565b6000548114611810576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611869576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60025473ffffffffffffffffffffffffffffffffffffffff8281169116141561189157600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6118e0610a5e565b610b6a81610813565b6301e1338081565b60065481565b600082821115611933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a99061243c565b600061193f838561281e565b949350505050565b6000826119565750600061052e565b600061196283856127e1565b90508261196f85836127a8565b14611667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f6565b610e158363a9059cbb60e01b84846040516024016119c592919061211a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611cf7565b611a5082610b6d565b611a86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612633565b611ac873ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085611e49565b6000611ad3836113bc565b600c54909150611ae39084611e6a565b600c55600d54611af39082611e6a565b600d5573ffffffffffffffffffffffffffffffffffffffff82166000908152600e602052604081205490611b278286611e6a565b9050611b8381611b374288611947565b611b4191906127a8565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260409020548390611b739086611947565b611b7d91906127a8565b90611e6a565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832093909355600e8152828220849055600b905290812080549082611bcd83612835565b9091555073ffffffffffffffffffffffffffffffffffffffff8616600090815260096020908152604080832084845290915290208790559050611c307f000000000000000000000000000000000000000000000000000000000000000042612790565b73ffffffffffffffffffffffffffffffffffffffff86166000818152600860209081526040808320868452825280832094909455828252600a81528382208583528152838220889055918152600f9091522054611c8d9085611e6a565b73ffffffffffffffffffffffffffffffffffffffff86166000818152600f6020526040908190209290925590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90611ce7908990612724565b60405180910390a2505050505050565b611d168273ffffffffffffffffffffffffffffffffffffffff16611eb3565b611d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126ed565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051611d7491906120c0565b6000604051808303816000865af19150503d8060008114611db1576040519150601f19603f3d011682016040523d82523d6000602084013e611db6565b606091505b509150915081611df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612407565b805115611e435780806020019051810190611e0d919061200c565b611e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906125d6565b50505050565b611e43846323b872dd60e01b8585856040516024016119c593929190612140565b600080611e778385612790565b905083811015611667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612373565b3b151590565b600060208284031215611eca578081fd5b8135611667816128cc565b60008060408385031215611ee7578081fd5b8235611ef2816128cc565b946020939093013593505050565b600080600060608486031215611f14578081fd5b8335611f1f816128cc565b92506020840135611f2f816128cc565b929592945050506040919091013590565b60008060408385031215611ee7578182fd5b60006020808385031215611f64578182fd5b825167ffffffffffffffff80821115611f7b578384fd5b818501915085601f830112611f8e578384fd5b815181811115611fa057611fa061289d565b83810260405185828201018181108582111715611fbf57611fbf61289d565b604052828152858101935084860182860187018a1015611fdd578788fd5b8795505b83861015611fff578051855260019590950194938601938601611fe1565b5098975050505050505050565b60006020828403121561201d578081fd5b81518015158114611667578182fd5b60006020828403121561203d578081fd5b5035919050565b60008060408385031215612056578182fd5b823591506020830135612068816128cc565b809150509250929050565b600080600080600060a0868803121561208a578081fd5b8535945060208601359350604086013560ff811681146120a8578182fd5b94979396509394606081013594506080013592915050565b60008251815b818110156120e057602081860181015185830152016120c6565b818111156120ee5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b901515815260200190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526032908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f74207374616b6520300000000000000000000000000000606082015260800190565b6020808252603f908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f7420726573637565207374616b696e6720746f6b656e00606082015260800190565b60208082526033908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2041646472657373206973207a65726f00000000000000000000000000606082015260800190565b6020808252602a908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a204c6f636b656400000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526033908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f7420726573637565203000000000000000000000000000606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526045908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f742072657363756520746f20746865207a65726f20616460608201527f6472657373000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2054686973207374616b65206e6f6e636520776173207769746864726160608201527f776e000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526041908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a20416d6f756e74206973206c657373207468616e206d696e207374616b60608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b60006040820184835260206040818501528185518084526060860191508287019350845b8181101561278357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612751565b5090979650505050505050565b600082198211156127a3576127a361286e565b500190565b6000826127dc577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128195761281961286e565b500290565b6000828210156128305761283061286e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128675761286761286e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610b6a57600080fdfea26469706673582212207052a2669f688e44304a9b3c51f035d21341762f358557a921068f26216855ec64736f6c63430008000033000000000000000000000000eb58343b36c7528f23caae63a150240241310049000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b72000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000005f6bb6b96ca657a3666d2f1bca302b999a671b4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000009502f900
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025b5760003560e01c806386a9d8a811610145578063c9eadb86116100bd578063ecd9ba821161008c578063f44c407a11610071578063f44c407a14610481578063f520e7e514610494578063f8e578121461049c5761025b565b8063ecd9ba821461045b578063f2fde38b1461046e5761025b565b8063c9eadb8614610430578063d1af0c7d14610443578063d4ee1d901461044b578063dc73e49c146104535761025b565b8063a694fc3a11610114578063b98b677f116100f9578063b98b677f14610402578063baee99c214610415578063c31c9c07146104285761025b565b8063a694fc3a146103dc578063ac348bb2146103ef5761025b565b806386a9d8a81461039b5780638da5cb5b146103ae5780638edc7f2d146103b6578063971fe937146103c95761025b565b80633f7c0ebf116101d857806372f702f3116101a75780637a4e4ecf1161018c5780637a4e4ecf1461036d5780637b0a47ee146103805780637fc96d6b146103885761025b565b806372f702f31461035057806379ba5097146103655761025b565b80633f7c0ebf146102f757806351746bb214610317578063673434b21461032a57806370a082311461033d5761025b565b806318160ddd1161022f57806320ff430b1161021457806320ff430b146102c95780632e1a7d4d146102dc5780633d18b912146102ef5761025b565b806318160ddd146102b95780631cb1f5b6146102c15761025b565b80628cc2621461026057806304554443146102895780630a4c8f741461029157806315c2ba14146102a6575b600080fd5b61027361026e366004611eb9565b6104a4565b6040516102809190612724565b60405180910390f35b610273610534565b6102a461029f36600461202c565b610558565b005b6102a46102b436600461202c565b6105b7565b610273610648565b61027361064e565b6102a46102d7366004611f00565b610654565b6102a46102ea36600461202c565b610813565b6102a4610a5e565b61030a61030536600461202c565b610b6d565b60405161028091906121bf565b6102a4610325366004612044565b610d7f565b610273610338366004611eb9565b610e1a565b61027361034b366004611eb9565b610e42565b610358610e6a565b60405161028091906120f9565b6102a4610e8e565b6102a461037b366004611ed5565b610f4a565b6102736110a3565b6102a4610396366004611eb9565b6110a9565b6102736103a9366004611eb9565b61118e565b6103586111a0565b6102736103c4366004611f40565b6111bc565b6102736103d7366004611f40565b6111d9565b6102a46103ea36600461202c565b6111f6565b6102736103fd366004611f40565b61128c565b6102a4610410366004611eb9565b6112a9565b610273610423366004611eb9565b61138e565b6103586113a0565b61027361043e36600461202c565b6113bc565b61035861166e565b610358611692565b6103586116ae565b6102a4610469366004612073565b6116ca565b6102a461047c366004611eb9565b611818565b6102a461048f36600461202c565b6118d8565b6102736118e9565b6102736118f1565b60006104b56301e1338060646127e1565b60035473ffffffffffffffffffffffffffffffffffffffff8416600090815260076020526040902054610524919061051e906104f29042906118f7565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600f602052604090205490611947565b90611947565b61052e91906127a8565b92915050565b7f000000000000000000000000000000000000000000000000000000000076a70081565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60405180910390fd5b600655565b60015473ffffffffffffffffffffffffffffffffffffffff163314610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60038190556040517fcb94909754d27c309adf4167150f1f7aa04de40b6a0e6bb98b2ae80a2bf438f69061063d908390612724565b60405180910390a150565b600c5490565b600d5490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff83166106f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612473565b6000811161072c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906123aa565b7f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a99061225c565b6107d373ffffffffffffffffffffffffffffffffffffffff831684836119a6565b7faabf44ab9d5bef08d1b60f287a337f0d11a248e49741ad189b429e47e98ba91083838360405161080693929190612140565b60405180910390a1505050565b60016000808282546108259190612790565b9091555050600080543382526009602090815260408084208585529091529091205461087d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612553565b33600090815260086020908152604080832085845290915290205442116108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612316565b336000818152600960209081526040808320868452825280832054938352600a8252808320868452909152902054600c5461090b90836118f7565b600c55600d5461091b90826118f7565b600d55336000908152600e602052604090205461093890836118f7565b336000908152600e6020908152604080832093909355600f9052205461095e90826118f7565b336000818152600f60205260409020919091556109b3907f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7273ffffffffffffffffffffffffffffffffffffffff1690846119a6565b3360008181526009602090815260408083208884528252808320839055838352600a825280832088845290915280822091909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d590610a15908590612724565b60405180910390a250506000548114610a5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b5050565b6001600080828254610a709190612790565b90915550506000805490610a83336104a4565b90508015610b2e57336000818152600760205260409020429055610adf907f000000000000000000000000eb58343b36c7528f23caae63a15024024131004973ffffffffffffffffffffffffffffffffffffffff1690836119a6565b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051610b259190612724565b60405180910390a25b506000548114610b6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b50565b604080516002808252606082018352600092839291906020830190803683370190505090507f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7281600081518110610bed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600554825191169082906001908110610c52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600480546040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600093919091169163d06ca61f91610cbb91889187910161272d565b60006040518083038186803b158015610cd357600080fd5b505afa158015610ce7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d2d9190810190611f52565b600181518110610d66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060065481101592505050919050565b6001600080828254610d919190612790565b909155505060005482610dd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b610dda8383611a47565b6000548114610e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f602052604090205490565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b7f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7281565b60025473ffffffffffffffffffffffffffffffffffffffff163314610eb257600080fd5b60025460015460405173ffffffffffffffffffffffffffffffffffffffff92831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360028054600180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8216610fe8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612473565b60008111611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906123aa565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f19350505050158015611065573d6000803e3d6000fd5b507f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af2828260405161109792919061211a565b60405180910390a15050565b60035481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8116611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906122b9565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b6020526000908152604090205481565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600960209081526000928352604080842090915290825290205481565b600860209081526000928352604080842090915290825290205481565b60016000808282546112089190612790565b909155505060005481611247576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b6112518233611a47565b6000548114610a5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b600a60209081526000928352604080842090915290825290205481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b73ffffffffffffffffffffffffffffffffffffffff8116611347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906122b9565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60076020526000908152604090205481565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6040805160028082526060820183526000928392919060208301908036833701905050905060007f000000000000000000000000eb58343b36c7528f23caae63a15024024131004973ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7273ffffffffffffffffffffffffffffffffffffffff1614611664577f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b72826000815181106114b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000eb58343b36c7528f23caae63a15024024131004982600181518110611546577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600480546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815292169163d06ca61f916115aa91889187910161272d565b60006040518083038186803b1580156115c257600080fd5b505afa1580156115d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261161c9190810190611f52565b600181518110611655577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050611667565b50825b9392505050565b7f000000000000000000000000eb58343b36c7528f23caae63a15024024131004981565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60016000808282546116dc9190612790565b90915550506000548561171b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ff565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b72169063d505accf9061179990339030908b908b908b908b908b90600401612171565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b505050506117d58633611a47565b6000548114611810576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126b6565b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611869576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906121ca565b60025473ffffffffffffffffffffffffffffffffffffffff8281169116141561189157600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6118e0610a5e565b610b6a81610813565b6301e1338081565b60065481565b600082821115611933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a99061243c565b600061193f838561281e565b949350505050565b6000826119565750600061052e565b600061196283856127e1565b90508261196f85836127a8565b14611667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f6565b610e158363a9059cbb60e01b84846040516024016119c592919061211a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611cf7565b611a5082610b6d565b611a86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612633565b611ac873ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b7216333085611e49565b6000611ad3836113bc565b600c54909150611ae39084611e6a565b600c55600d54611af39082611e6a565b600d5573ffffffffffffffffffffffffffffffffffffffff82166000908152600e602052604081205490611b278286611e6a565b9050611b8381611b374288611947565b611b4191906127a8565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260409020548390611b739086611947565b611b7d91906127a8565b90611e6a565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832093909355600e8152828220849055600b905290812080549082611bcd83612835565b9091555073ffffffffffffffffffffffffffffffffffffffff8616600090815260096020908152604080832084845290915290208790559050611c307f000000000000000000000000000000000000000000000000000000000076a70042612790565b73ffffffffffffffffffffffffffffffffffffffff86166000818152600860209081526040808320868452825280832094909455828252600a81528382208583528152838220889055918152600f9091522054611c8d9085611e6a565b73ffffffffffffffffffffffffffffffffffffffff86166000818152600f6020526040908190209290925590517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90611ce7908990612724565b60405180910390a2505050505050565b611d168273ffffffffffffffffffffffffffffffffffffffff16611eb3565b611d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906126ed565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051611d7491906120c0565b6000604051808303816000865af19150503d8060008114611db1576040519150601f19603f3d011682016040523d82523d6000602084013e611db6565b606091505b509150915081611df2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612407565b805115611e435780806020019051810190611e0d919061200c565b611e43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906125d6565b50505050565b611e43846323b872dd60e01b8585856040516024016119c593929190612140565b600080611e778385612790565b905083811015611667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990612373565b3b151590565b600060208284031215611eca578081fd5b8135611667816128cc565b60008060408385031215611ee7578081fd5b8235611ef2816128cc565b946020939093013593505050565b600080600060608486031215611f14578081fd5b8335611f1f816128cc565b92506020840135611f2f816128cc565b929592945050506040919091013590565b60008060408385031215611ee7578182fd5b60006020808385031215611f64578182fd5b825167ffffffffffffffff80821115611f7b578384fd5b818501915085601f830112611f8e578384fd5b815181811115611fa057611fa061289d565b83810260405185828201018181108582111715611fbf57611fbf61289d565b604052828152858101935084860182860187018a1015611fdd578788fd5b8795505b83861015611fff578051855260019590950194938601938601611fe1565b5098975050505050505050565b60006020828403121561201d578081fd5b81518015158114611667578182fd5b60006020828403121561203d578081fd5b5035919050565b60008060408385031215612056578182fd5b823591506020830135612068816128cc565b809150509250929050565b600080600080600060a0868803121561208a578081fd5b8535945060208601359350604086013560ff811681146120a8578182fd5b94979396509394606081013594506080013592915050565b60008251815b818110156120e057602081860181015185830152016120c6565b818111156120ee5782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b901515815260200190565b6020808252818101527f4f776e61626c653a2043616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526032908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f74207374616b6520300000000000000000000000000000606082015260800190565b6020808252603f908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f7420726573637565207374616b696e6720746f6b656e00606082015260800190565b60208082526033908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2041646472657373206973207a65726f00000000000000000000000000606082015260800190565b6020808252602a908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a204c6f636b656400000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526033908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f7420726573637565203000000000000000000000000000606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526045908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2043616e6e6f742072657363756520746f20746865207a65726f20616460608201527f6472657373000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526042908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a2054686973207374616b65206e6f6e636520776173207769746864726160608201527f776e000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526041908201527f4c6f636b5374616b696e675265776172644d696e416d6f756e7446697865644160408201527f50593a20416d6f756e74206973206c657373207468616e206d696e207374616b60608201527f6500000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b60006040820184835260206040818501528185518084526060860191508287019350845b8181101561278357845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612751565b5090979650505050505050565b600082198211156127a3576127a361286e565b500190565b6000826127dc577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128195761281961286e565b500290565b6000828210156128305761283061286e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128675761286761286e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610b6a57600080fdfea26469706673582212207052a2669f688e44304a9b3c51f035d21341762f358557a921068f26216855ec64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000eb58343b36c7528f23caae63a150240241310049000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b72000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000005f6bb6b96ca657a3666d2f1bca302b999a671b4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000009502f900
-----Decoded View---------------
Arg [0] : _rewardsToken (address): 0xEB58343b36C7528F23CAAe63a150240241310049
Arg [1] : _stakingToken (address): 0x639ae8F3EEd18690bF451229d14953a5A5627b72
Arg [2] : _rewardRate (uint256): 14
Arg [3] : _lockDuration (uint256): 7776000
Arg [4] : _swapRouter (address): 0x05F6BB6b96ca657a3666d2f1bCA302b999a671b4
Arg [5] : _swapToken (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [6] : _swapTokenAmount (uint256): 2500000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb58343b36c7528f23caae63a150240241310049
Arg [1] : 000000000000000000000000639ae8f3eed18690bf451229d14953a5a5627b72
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [3] : 000000000000000000000000000000000000000000000000000000000076a700
Arg [4] : 00000000000000000000000005f6bb6b96ca657a3666d2f1bca302b999a671b4
Arg [5] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [6] : 000000000000000000000000000000000000000000000000000000009502f900
Deployed Bytecode Sourcemap
6316:8810:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8835:228;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6603:37;;;:::i;14019:145::-;;;;;;:::i;:::-;;:::i;:::-;;13417:138;;;;;;:::i;:::-;;:::i;8307:102::-;;;:::i;8417:125::-;;;:::i;14172:604::-;;;;;;:::i;:::-;;:::i;11479:993::-;;;;;;:::i;:::-;;:::i;12480:314::-;;;:::i;9071:344::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9994:202::-;;;;;;:::i;:::-;;:::i;8683:144::-;;;;;;:::i;:::-;;:::i;8550:121::-;;;;;;:::i;:::-;;:::i;6527:36::-;;;:::i;:::-;;;;;;;:::i;1410:204::-;;;:::i;14784:339::-;;;;;;:::i;:::-;;:::i;6570:25::-;;;:::i;13801:210::-;;;;;;:::i;:::-;;:::i;7153:46::-;;;;;;:::i;:::-;;:::i;875:20::-;;;:::i;6989:67::-;;;;;;:::i;:::-;;:::i;6917:65::-;;;;;;:::i;:::-;;:::i;9795:191::-;;;;;;:::i;:::-;;:::i;7063:83::-;;;;;;:::i;:::-;;:::i;13563:230::-;;;;;;:::i;:::-;;:::i;6858:52::-;;;;;;:::i;:::-;;:::i;6711:31::-;;;:::i;12929:478::-;;;;;;:::i;:::-;;:::i;6484:36::-;;;:::i;902:23::-;;;:::i;6749:24::-;;;:::i;9423:364::-;;;;;;:::i;:::-;;:::i;1247:155::-;;;;;;:::i;:::-;;:::i;12802:119::-;;;;;;:::i;:::-;;:::i;6648:49::-;;;:::i;6803:46::-;;;:::i;8835:228::-;8898:7;9034:20;6689:8;9034:3;:20;:::i;:::-;9018:10;;8985:26;;;;;;;:17;:26;;;;;;8926:103;;9018:10;8926:87;;8965:47;;:15;;:19;:47::i;:::-;8926:34;;;;;;;:25;:34;;;;;;;:38;:87::i;:::-;:91;;:103::i;:::-;8925:130;;;;:::i;:::-;8918:137;8835:228;-1:-1:-1;;8835:228:0:o;6603:37::-;;;:::o;14019:145::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14110:34:::1;:46:::0;14019:145::o;13417:138::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;13491:10:::1;:19:::0;;;13526:21:::1;::::0;::::1;::::0;::::1;::::0;13504:6;;13526:21:::1;:::i;:::-;;;;;;;;13417:138:::0;:::o;8307:102::-;8389:12;;8307:102;:::o;8417:125::-;8506:28;;8417:125;:::o;14172:604::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;14269:16:::1;::::0;::::1;14261:98;;;;;;;;;;;;:::i;:::-;14387:1;14378:6;:10;14370:74;;;;;;;;;;;;:::i;:::-;14480:12;14463:30;;:5;:30;;;;14455:106;;;;;;;;;;;;:::i;:::-;14675:38;:26;::::0;::::1;14702:2:::0;14706:6;14675:26:::1;:38::i;:::-;14729:39;14741:2;14753:5;14761:6;14729:39;;;;;;;;:::i;:::-;;;;;;;;14172:604:::0;;;:::o;11479:993::-;5508:1;5491:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5520:20:0;5543:13;;11573:10:::1;11560:24:::0;;:12:::1;:24;::::0;;;;;;;:31;;;;;;;;;;11552:114:::1;;;;;;;;;;;;:::i;:::-;11696:10;11685:22;::::0;;;:10:::1;:22;::::0;;;;;;;:29;;;;;;;;;11717:15:::1;-1:-1:-1::0;11677:102:0::1;;;;;;;;;;;;:::i;:::-;11817:10;11790:11;11804:24:::0;;;:12:::1;:24;::::0;;;;;;;:31;;;;;;;;;11876:40;;;:28:::1;:40:::0;;;;;:47;;;;;;;;;11949:12:::1;::::0;:24:::1;::::0;11804:31;11949:16:::1;:24::i;:::-;11934:12;:39:::0;12015:28:::1;::::0;:56:::1;::::0;12048:22;12015:32:::1;:56::i;:::-;11984:28;:87:::0;12116:10:::1;12106:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;12132:6;12106:25:::1;:33::i;:::-;12092:10;12082:21;::::0;;;:9:::1;:21;::::0;;;;;;;:57;;;;12190:25:::1;:37:::0;;;;:65:::1;::::0;12232:22;12190:41:::1;:65::i;:::-;12176:10;12150:37;::::0;;;:25:::1;:37;::::0;;;;:105;;;;12266:45:::1;::::0;:12:::1;12150:37;12266:25;::::0;12304:6;12266:25:::1;:45::i;:::-;12335:10;12356:1;12322:24:::0;;;:12:::1;:24;::::0;;;;;;;:31;;;;;;;;:35;;;12368:40;;;:28:::1;:40:::0;;;;;:47;;;;;;;;;:51;;;;12435:29;::::1;::::0;::::1;::::0;12457:6;;12435:29:::1;:::i;:::-;;;;;;;;5567:1;;5603:13:::0;;5587:12;:29;5579:73;;;;;;;;;;;;:::i;:::-;11479:993;;:::o;12480:314::-;5508:1;5491:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5520:20:0;5543:13;;;12558:18:::1;12565:10;12558:6;:18::i;:::-;12541:35:::0;-1:-1:-1;12591:10:0;;12587:200:::1;;12636:10;12618:29;::::0;;;:17:::1;:29;::::0;;;;12650:15:::1;12618:47:::0;;12680:45:::1;::::0;:12:::1;12618:29;12680:25;::::0;12718:6;12680:25:::1;:45::i;:::-;12756:10;12745:30;;;12768:6;12745:30;;;;;;:::i;:::-;;;;;;;;12587:200;5567:1;5603:13:::0;;5587:12;:29;5579:73;;;;;;;;;;;;:::i;:::-;12480:314;:::o;9071:344::-;9181:16;;;9195:1;9181:16;;;;;;;;9140:4;;;;9181:16;9195:1;9181:16;;;;;;;;;;-1:-1:-1;9181:16:0;9157:40;;9226:12;9208:4;9213:1;9208:7;;;;;;;;;;;;;;;;:31;;;;:7;;;;;;;;;:31;9260:9;;9250:7;;9260:9;;;9250:4;;9260:9;;9250:7;;;;;;;;;;;;;;:19;;;;:7;;;;;;;;;:19;9299:10;;;:38;;;;;9280:16;;9299:10;;;;;:24;;:38;;9324:6;;9332:4;;9299:38;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9338:1;9299:41;;;;;;;;;;;;;;;;;;;;;;9280:60;;9373:34;;9358:11;:49;;9351:56;;;;9071:344;;;:::o;9994:202::-;5508:1;5491:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5520:20:0;5543:13;10092:10;10084:73:::1;;;;;;;;;;;;:::i;:::-;10168:20;10175:6;10183:4;10168:6;:20::i;:::-;5603:13:::0;;5587:12;:29;5579:73;;;;;;;;;;;;:::i;:::-;9994:202;;;:::o;8683:144::-;8785:34;;8758:7;8785:34;;;:25;:34;;;;;;;8683:144::o;8550:121::-;8645:18;;8618:7;8645:18;;;:9;:18;;;;;;;8550:121::o;6527:36::-;;;:::o;1410:204::-;1485:8;;;;1471:10;:22;1463:31;;;;;;1538:8;;;1531:5;1510:37;;1538:8;;;;;1531:5;;;;1510:37;;1538:8;;1510:37;1566:8;;;;1558:16;;;;;;1566:8;;;1558:16;;;;1585:21;;;1410:204::o;14784:339::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;14874:16:::1;::::0;::::1;14866:98;;;;;;;;;;;;:::i;:::-;14992:1;14983:6;:10;14975:74;;;;;;;;;;;;:::i;:::-;15062:19;::::0;:11:::1;::::0;::::1;::::0;:19;::::1;;;::::0;15074:6;;15062:19:::1;::::0;;;15074:6;15062:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15097:18;15104:2;15108:6;15097:18;;;;;;;:::i;:::-;;;;;;;;14784:339:::0;;:::o;6570:25::-;;;;:::o;13801:210::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;13886:26:::1;::::0;::::1;13878:90;;;;;;;;;;;;:::i;:::-;13979:9;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;13801:210::o;7153:46::-;;;;;;;;;;;;;:::o;875:20::-;;;;;;:::o;6989:67::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6917:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9795:191::-;5508:1;5491:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5520:20:0;5543:13;9876:10;9868:73:::1;;;;;;;;;;;;:::i;:::-;9952:26;9959:6;9967:10;9952:6;:26::i;:::-;5603:13:::0;;5587:12;:29;5579:73;;;;;;;;;;;;:::i;7063:83::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;13563:230::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;13650:27:::1;::::0;::::1;13642:91;;;;;;;;;;;;:::i;:::-;13744:10;:41:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;13563:230::o;6858:52::-;;;;;;;;;;;;;:::o;6711:31::-;;;;;;:::o;12929:478::-;13033:16;;;13047:1;13033:16;;;;;;;;12992:4;;;;13033:16;13047:1;13033:16;;;;;;;;;;-1:-1:-1;13033:16:0;13009:40;;13062:15;13108:12;13092:28;;:12;:28;;;13088:274;;13155:12;13137:4;13142:1;13137:7;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;13213:12;13195:4;13200:1;13195:7;;;;;;;;;;;;;;;;:31;;;;:7;;;;;;;;;:31;13254:10;;;:38;;;;;:10;;;:24;;:38;;13279:6;;13287:4;;13254:38;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13293:1;13254:41;;;;;;;;;;;;;;;;;;;;;;13241:54;;13088:274;;;-1:-1:-1;13341:6:0;13088:274;13389:10;12929:478;-1:-1:-1;;;12929:478:0:o;6484:36::-;;;:::o;902:23::-;;;;;;:::o;6749:24::-;;;;;;:::o;9423:364::-;5508:1;5491:13;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;5520:20:0;5543:13;9551:10;9543:73:::1;;;;;;;;;;;;:::i;:::-;9646:96;::::0;;;;:42:::1;9667:12;9646:42;::::0;::::1;::::0;:96:::1;::::0;9689:10:::1;::::0;9709:4:::1;::::0;9716:6;;9724:8;;9734:1;;9737;;9740;;9646:96:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9753:26;9760:6;9768:10;9753:6;:26::i;:::-;5603:13:::0;;5587:12;:29;5579:73;;;;;;;;;;;;:::i;:::-;9423:364;;;;;;:::o;1247:155::-;1177:5;;;;1163:10;:19;1155:64;;;;;;;;;;;;:::i;:::-;1350:8:::1;::::0;::::1;1333:25:::0;;::::1;1350:8:::0;::::1;1333:25;;1325:34;;;::::0;::::1;;1370:8;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1247:155::o;12802:119::-;12876:11;:9;:11::i;:::-;12898:15;12907:5;12898:8;:15::i;6648:49::-;6689:8;6648:49;:::o;6803:46::-;;;;:::o;1834:184::-;1892:7;1925:1;1920;:6;;1912:49;;;;;;;;;;;;:::i;:::-;1972:9;1984:5;1988:1;1984;:5;:::i;:::-;1972:17;1834:184;-1:-1:-1;;;;1834:184:0:o;2026:248::-;2084:7;2106:6;2102:47;;-1:-1:-1;2136:1:0;2129:8;;2102:47;2161:9;2173:5;2177:1;2173;:5;:::i;:::-;2161:17;-1:-1:-1;2206:1:0;2197:5;2201:1;2161:17;2197:5;:::i;:::-;:10;2189:56;;;;;;;;;;;;:::i;3315:176::-;3398:85;3417:5;3447:23;;;3472:2;3476:5;3424:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3398:18;:85::i;10204:1160::-;10277:33;10303:6;10277:25;:33::i;:::-;10269:111;;;;;;;;;;;;:::i;:::-;10391:64;:29;:12;:29;10421:10;10441:4;10448:6;10391:29;:64::i;:::-;10466:27;10496;10516:6;10496:19;:27::i;:::-;10551:12;;10466:57;;-1:-1:-1;10551:24:0;;10568:6;10551:16;:24::i;:::-;10536:12;:39;10617:28;;:56;;10650:22;10617:32;:56::i;:::-;10586:28;:87;10706:15;;;10684:19;10706:15;;;:9;:15;;;;;;;10749:26;10706:15;10768:6;10749:18;:26::i;:::-;10732:43;-1:-1:-1;10812:102:0;10732:43;10874:27;:15;10894:6;10874:19;:27::i;:::-;:39;;;;:::i;:::-;10813:23;;;;;;;:17;:23;;;;;;10859:9;;10813:43;;10841:14;10813:27;:43::i;:::-;:55;;;;:::i;:::-;10812:61;;:102::i;:::-;10786:23;;;;;;;:17;:23;;;;;;;;:128;;;;10925:9;:15;;;;;:27;;;10983:11;:17;;;;;:19;;;10786:23;10983:19;;;:::i;:::-;;;;-1:-1:-1;11013:18:0;;;;;;;:12;:18;;;;;;;;:30;;;;;;;;:39;;;10965:37;-1:-1:-1;11094:30:0;11112:12;11094:15;:30;:::i;:::-;11063:16;;;;;;;:10;:16;;;;;;;;:28;;;;;;;;:61;;;;11145:34;;;:28;:34;;;;;:46;;;;;;;;:71;;;11261:31;;;:25;:31;;;;;:59;;11194:22;11261:35;:59::i;:::-;11227:31;;;;;;;:25;:31;;;;;;;:93;;;;11336:20;;;;;;11349:6;;11336:20;:::i;:::-;;;;;;;;10204:1160;;;;;;:::o;4652:454::-;4740:27;4748:5;4740:25;;;:27::i;:::-;4732:71;;;;;;;;;;;;:::i;:::-;4817:12;4831:23;4866:5;4858:19;;4878:4;4858:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4816:67;;;;4902:7;4894:52;;;;;;;;;;;;:::i;:::-;4963:17;;:21;4959:140;;5021:10;5010:30;;;;;;;;;;;;:::i;:::-;5002:85;;;;;;;;;;;;:::i;:::-;4652:454;;;;:::o;3499:204::-;3600:95;3619:5;3649:27;;;3678:4;3684:2;3688:5;3626:68;;;;;;;;;;:::i;1645:181::-;1703:7;;1735:5;1739:1;1735;:5;:::i;:::-;1723:17;;1764:1;1759;:6;;1751:46;;;;;;;;;;;;:::i;2805:411::-;3161:20;3200:8;;;2805:411::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:335::-;;;415:2;403:9;394:7;390:23;386:32;383:2;;;436:6;428;421:22;383:2;480:9;467:23;499:33;526:5;499:33;:::i;:::-;551:5;603:2;588:18;;;;575:32;;-1:-1:-1;;;373:240:1:o;618:470::-;;;;764:2;752:9;743:7;739:23;735:32;732:2;;;785:6;777;770:22;732:2;829:9;816:23;848:33;875:5;848:33;:::i;:::-;900:5;-1:-1:-1;957:2:1;942:18;;929:32;970:35;929:32;970:35;:::i;:::-;722:366;;1024:7;;-1:-1:-1;;;1078:2:1;1063:18;;;;1050:32;;722:366::o;1093:327::-;;;1222:2;1210:9;1201:7;1197:23;1193:32;1190:2;;;1243:6;1235;1228:22;1425:1148;;1551:2;1594;1582:9;1573:7;1569:23;1565:32;1562:2;;;1615:6;1607;1600:22;1562:2;1653:9;1647:16;1682:18;1723:2;1715:6;1712:14;1709:2;;;1744:6;1736;1729:22;1709:2;1787:6;1776:9;1772:22;1762:32;;1832:7;1825:4;1821:2;1817:13;1813:27;1803:2;;1859:6;1851;1844:22;1803:2;1893;1887:9;1915:2;1911;1908:10;1905:2;;;1921:18;;:::i;:::-;1968:2;1964;1960:11;2000:2;1994:9;2051:2;2046;2038:6;2034:15;2030:24;2104:6;2092:10;2089:22;2084:2;2072:10;2069:18;2066:46;2063:2;;;2115:18;;:::i;:::-;2151:2;2144:22;2201:18;;;2235:15;;;;-1:-1:-1;2270:11:1;;;2300;;;2296:20;;2293:33;-1:-1:-1;2290:2:1;;;2344:6;2336;2329:22;2290:2;2371:6;2362:15;;2386:156;2400:2;2397:1;2394:9;2386:156;;;2457:10;;2445:23;;2418:1;2411:9;;;;;2488:12;;;;2520;;2386:156;;;-1:-1:-1;2561:6:1;1531:1042;-1:-1:-1;;;;;;;;1531:1042:1:o;2578:297::-;;2698:2;2686:9;2677:7;2673:23;2669:32;2666:2;;;2719:6;2711;2704:22;2666:2;2756:9;2750:16;2809:5;2802:13;2795:21;2788:5;2785:32;2775:2;;2836:6;2828;2821:22;2880:190;;2992:2;2980:9;2971:7;2967:23;2963:32;2960:2;;;3013:6;3005;2998:22;2960:2;-1:-1:-1;3041:23:1;;2950:120;-1:-1:-1;2950:120:1:o;3075:327::-;;;3204:2;3192:9;3183:7;3179:23;3175:32;3172:2;;;3225:6;3217;3210:22;3172:2;3266:9;3253:23;3243:33;;3326:2;3315:9;3311:18;3298:32;3339:33;3366:5;3339:33;:::i;:::-;3391:5;3381:15;;;3162:240;;;;;:::o;3407:563::-;;;;;;3585:3;3573:9;3564:7;3560:23;3556:33;3553:2;;;3607:6;3599;3592:22;3553:2;3648:9;3635:23;3625:33;;3705:2;3694:9;3690:18;3677:32;3667:42;;3759:2;3748:9;3744:18;3731:32;3803:4;3796:5;3792:16;3785:5;3782:27;3772:2;;3828:6;3820;3813:22;3772:2;3543:427;;;;-1:-1:-1;3856:5:1;;3908:2;3893:18;;3880:32;;-1:-1:-1;3959:3:1;3944:19;3931:33;;3543:427;-1:-1:-1;;3543:427:1:o;3975:430::-;;4142:6;4136:13;4167:3;4179:129;4193:6;4190:1;4187:13;4179:129;;;4291:4;4275:14;;;4271:25;;4265:32;4252:11;;;4245:53;4208:12;4179:129;;;4326:6;4323:1;4320:13;4317:2;;;4361:3;4352:6;4347:3;4343:16;4336:29;4317:2;-1:-1:-1;4383:16:1;;;;;4112:293;-1:-1:-1;;4112:293:1:o;4410:226::-;4586:42;4574:55;;;;4556:74;;4544:2;4529:18;;4511:125::o;4641:305::-;4853:42;4841:55;;;;4823:74;;4928:2;4913:18;;4906:34;4811:2;4796:18;;4778:168::o;4951:398::-;5163:42;5232:15;;;5214:34;;5284:15;;;;5279:2;5264:18;;5257:43;5331:2;5316:18;;5309:34;;;;5141:2;5126:18;;5108:241::o;5354:693::-;5675:42;5744:15;;;5726:34;;5796:15;;;;5791:2;5776:18;;5769:43;5843:2;5828:18;;5821:34;;;;5886:2;5871:18;;5864:34;;;;5947:4;5935:17;5929:3;5914:19;;5907:46;5984:3;5969:19;;5962:35;6028:3;6013:19;;6006:35;;;;5652:3;5637:19;;5619:428::o;6354:187::-;6519:14;;6512:22;6494:41;;6482:2;6467:18;;6449:92::o;7041:356::-;7243:2;7225:21;;;7262:18;;;7255:30;7321:34;7316:2;7301:18;;7294:62;7388:2;7373:18;;7215:182::o;7402:414::-;7604:2;7586:21;;;7643:2;7623:18;;;7616:30;7682:34;7677:2;7662:18;;7655:62;7753:20;7748:2;7733:18;;7726:48;7806:3;7791:19;;7576:240::o;7821:427::-;8023:2;8005:21;;;8062:2;8042:18;;;8035:30;8101:34;8096:2;8081:18;;8074:62;8172:33;8167:2;8152:18;;8145:61;8238:3;8223:19;;7995:253::o;8253:415::-;8455:2;8437:21;;;8494:2;8474:18;;;8467:30;8533:34;8528:2;8513:18;;8506:62;8604:21;8599:2;8584:18;;8577:49;8658:3;8643:19;;8427:241::o;8673:406::-;8875:2;8857:21;;;8914:2;8894:18;;;8887:30;8953:34;8948:2;8933:18;;8926:62;9024:12;9019:2;9004:18;;8997:40;9069:3;9054:19;;8847:232::o;9084:351::-;9286:2;9268:21;;;9325:2;9305:18;;;9298:30;9364:29;9359:2;9344:18;;9337:57;9426:2;9411:18;;9258:177::o;9440:415::-;9642:2;9624:21;;;9681:2;9661:18;;;9654:30;9720:34;9715:2;9700:18;;9693:62;9791:21;9786:2;9771:18;;9764:49;9845:3;9830:19;;9614:241::o;9860:356::-;10062:2;10044:21;;;10081:18;;;10074:30;10140:34;10135:2;10120:18;;10113:62;10207:2;10192:18;;10034:182::o;10221:354::-;10423:2;10405:21;;;10462:2;10442:18;;;10435:30;10501:32;10496:2;10481:18;;10474:60;10566:2;10551:18;;10395:180::o;10580:473::-;10782:2;10764:21;;;10821:2;10801:18;;;10794:30;10860:34;10855:2;10840:18;;10833:62;10931:34;10926:2;10911:18;;10904:62;11003:7;10997:3;10982:19;;10975:36;11043:3;11028:19;;10754:299::o;11058:397::-;11260:2;11242:21;;;11299:2;11279:18;;;11272:30;11338:34;11333:2;11318:18;;11311:62;11409:3;11404:2;11389:18;;11382:31;11445:3;11430:19;;11232:223::o;11460:470::-;11662:2;11644:21;;;11701:2;11681:18;;;11674:30;11740:34;11735:2;11720:18;;11713:62;11811:34;11806:2;11791:18;;11784:62;11883:4;11877:3;11862:19;;11855:33;11920:3;11905:19;;11634:296::o;11935:406::-;12137:2;12119:21;;;12176:2;12156:18;;;12149:30;12215:34;12210:2;12195:18;;12188:62;12286:12;12281:2;12266:18;;12259:40;12331:3;12316:19;;12109:232::o;12346:469::-;12548:2;12530:21;;;12587:2;12567:18;;;12560:30;12626:34;12621:2;12606:18;;12599:62;12697:34;12692:2;12677:18;;12670:62;12769:3;12763;12748:19;;12741:32;12805:3;12790:19;;12520:295::o;12820:355::-;13022:2;13004:21;;;13061:2;13041:18;;;13034:30;13100:33;13095:2;13080:18;;13073:61;13166:2;13151:18;;12994:181::o;13180:355::-;13382:2;13364:21;;;13421:2;13401:18;;;13394:30;13460:33;13455:2;13440:18;;13433:61;13526:2;13511:18;;13354:181::o;13540:177::-;13686:25;;;13674:2;13659:18;;13641:76::o;13722:755::-;;13940:2;13929:9;13925:18;13970:6;13959:9;13952:25;13996:2;14034;14029;14018:9;14014:18;14007:30;14057:6;14092;14086:13;14123:6;14115;14108:22;14161:2;14150:9;14146:18;14139:25;;14199:2;14191:6;14187:15;14173:29;;14220:4;14233:218;14247:6;14244:1;14241:13;14233:218;;;14312:13;;14327:42;14308:62;14296:75;;14426:15;;;;14391:12;;;;14269:1;14262:9;14233:218;;;-1:-1:-1;14468:3:1;;13901:576;-1:-1:-1;;;;;;;13901:576:1:o;14482:128::-;;14553:1;14549:6;14546:1;14543:13;14540:2;;;14559:18;;:::i;:::-;-1:-1:-1;14595:9:1;;14530:80::o;14615:274::-;;14681:1;14671:2;;14716:77;14713:1;14706:88;14817:4;14814:1;14807:15;14845:4;14842:1;14835:15;14671:2;-1:-1:-1;14874:9:1;;14661:228::o;14894:::-;;15060:1;14992:66;14988:74;14985:1;14982:81;14977:1;14970:9;14963:17;14959:105;14956:2;;;15067:18;;:::i;:::-;-1:-1:-1;15107:9:1;;14946:176::o;15127:125::-;;15195:1;15192;15189:8;15186:2;;;15200:18;;:::i;:::-;-1:-1:-1;15237:9:1;;15176:76::o;15257:195::-;;15327:66;15320:5;15317:77;15314:2;;;15397:18;;:::i;:::-;-1:-1:-1;15444:1:1;15433:13;;15304:148::o;15457:184::-;15509:77;15506:1;15499:88;15606:4;15603:1;15596:15;15630:4;15627:1;15620:15;15646:184;15698:77;15695:1;15688:88;15795:4;15792:1;15785:15;15819:4;15816:1;15809:15;15835:156;15923:42;15916:5;15912:54;15905:5;15902:65;15892:2;;15981:1;15978;15971:12
Swarm Source
ipfs://7052a2669f688e44304a9b3c51f035d21341762f358557a921068f26216855ec
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.