More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 776 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 64818431 | 141 days ago | IN | 0 POL | 0.0037353 | ||||
Withdraw | 48334246 | 561 days ago | IN | 0 POL | 0.00448179 | ||||
Withdraw | 46535098 | 607 days ago | IN | 0 POL | 0.00900925 | ||||
Withdraw | 46532950 | 607 days ago | IN | 0 POL | 0.00661632 | ||||
Withdraw | 38411174 | 816 days ago | IN | 0 POL | 0.0044818 | ||||
Withdraw | 37291559 | 844 days ago | IN | 0 POL | 0.00383995 | ||||
Withdraw | 37291559 | 844 days ago | IN | 0 POL | 0.00522875 | ||||
Withdraw | 36761791 | 857 days ago | IN | 0 POL | 0.00451189 | ||||
Withdraw | 35556449 | 886 days ago | IN | 0 POL | 0.00595016 | ||||
Withdraw | 35017052 | 900 days ago | IN | 0 POL | 0.00448179 | ||||
Withdraw | 33781464 | 930 days ago | IN | 0 POL | 0.00448179 | ||||
Deposit | 32910951 | 951 days ago | IN | 0 POL | 0.0058992 | ||||
Withdraw | 26803457 | 1108 days ago | IN | 0 POL | 0.00448193 | ||||
Withdraw | 26347645 | 1119 days ago | IN | 0 POL | 0.00500311 | ||||
Withdraw | 25409341 | 1145 days ago | IN | 0 POL | 0.00449672 | ||||
Withdraw | 24883489 | 1160 days ago | IN | 0 POL | 0.00024973 | ||||
Mass Update Pool... | 24473216 | 1170 days ago | IN | 0 POL | 0.00382959 | ||||
Withdraw | 24366422 | 1173 days ago | IN | 0 POL | 0.00022408 | ||||
Withdraw | 24104755 | 1180 days ago | IN | 0 POL | 0.02970121 | ||||
Withdraw | 23814096 | 1187 days ago | IN | 0 POL | 0.00089635 | ||||
Deposit | 23758229 | 1188 days ago | IN | 0 POL | 0.00604212 | ||||
Withdraw | 23751736 | 1188 days ago | IN | 0 POL | 0.00661405 | ||||
Withdraw | 23507399 | 1195 days ago | IN | 0 POL | 0.00073296 | ||||
Deposit | 23481337 | 1195 days ago | IN | 0 POL | 0.0079362 | ||||
Withdraw | 23481329 | 1195 days ago | IN | 0 POL | 0.00661405 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20531253 | 1272 days ago | Contract Creation | 0 POL |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xBEC0ed3B...b1e10e9a0 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MasterChef
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <=0.8.9; import "./IERC20.sol"; import "./Owner.sol"; import "./ReentrancyGuard.sol"; import "./SafeMath.sol"; import "./TransferHelper.sol"; contract MasterChef is Owner, ReentrancyGuard { using SafeMath for uint256; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. uint256 rewardLockedUp; // Reward locked up. uint256 nextHarvestUntil; // When can the user harvest again. // // We do some fancy math here. Basically, any point in time, the amount of tokens // entitled to a user but is pending to be distributed is: // // pending reward = (user.amount * pool.acctokenPerShare) - user.rewardDebt // // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens: // 1. The pool's `acctokenPerShare` (and `lastRewardBlock`) gets updated. // 2. User receives the pending reward sent to his/her address. // 3. User's `amount` gets updated. // 4. User's `rewardDebt` gets updated. } // Info of each pool. struct PoolInfo { address lptoken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. tokens to distribute per block. uint256 lastRewardBlock; // Last block number that tokens distribution occurs. uint256 acctokenPerShare; // Accumulated tokens per share, times 1e12. See below. uint256 depositFeeBP; // Deposit fee in basis points uint256 harvestInterval; // Harvest interval in seconds uint256 lpSupply; // To determine more precisely the deposits and avoid the dilution of rewards } // The token! IERC20 public token; // Dev address. address public devAddress; // Deposit Fee address. address public feeAddress; // tokens created per block. uint256 public tokenPerBlock; // Bonus muliplier for early token makers. uint256 public constant BONUS_MULTIPLIER = 1; // Max harvest interval uint256 public MAXIMUM_HARVEST_INTERVAL; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint = 0; // The block number when token mining starts. uint256 public startBlock; // Total locked up rewards uint256 public totalLockedUpRewards; // Max deposit fee: 400 = 4% uint256 public MAXIMUM_DEPOSIT_FEE; // Fee to DEV : 100 = 10% uint256 public DEV_FEE; address public InformationalFeeContract; // Define if MasterChef can mint the token bool public isInfinite; event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw( address indexed user, uint256 indexed pid, uint256 amount ); event EmissionRateUpdated(uint256 previousAmount, uint256 newAmount); event ReferralCommissionPaid( address indexed user, address indexed referrer, uint256 commissionAmount ); event RewardLockedUp( address indexed user, uint256 indexed pid, uint256 amountLockedUp ); event AddPool( uint256 indexed pid, uint256 allocPoint, address lptokenAddress, uint256 depositFeeBP, uint256 harvestInterval, uint256 lastRewardBlock ); event SetPool( uint256 indexed pid, uint256 allocPoint, uint256 depositFeeBP, uint256 harvestInterval ); event SetDevAddress(address previousDevAddress, address newDevAddress); event SetFeeAddress(address previousFeeAddress, address newFeeAddress); event SetReferralCommissionRate( uint256 previousReferralCommissionRate, uint256 newReferralCommissionRate ); event SettokenReferral( address previoustokenReferral, address newtokenReferral ); constructor( address _token, //uint256 [_startBlock, _tokenPerBlock, _MAXIMUM_HARVEST_INTERVAL, _MAXIMUM_DEPOSIT_FEE, _DEV_FEE] uint256[5] memory _MasterChefValues, address _InformationalFeeContract, bool _isInfinite ) { token = IERC20(_token); startBlock = _MasterChefValues[0]; tokenPerBlock = _MasterChefValues[1]; MAXIMUM_HARVEST_INTERVAL = _MasterChefValues[2]; MAXIMUM_DEPOSIT_FEE = _MasterChefValues[3]; DEV_FEE = _MasterChefValues[4]; InformationalFeeContract = _InformationalFeeContract; isInfinite = _isInfinite; devAddress = tx.origin; feeAddress = tx.origin; } function poolLength() external view returns (uint256) { return poolInfo.length; } // Add a new lp to the pool. Can only be called by the owner. // DO NOT add the same LP token more than once. Rewards will be messed up if you do. function add( uint256 _allocPoint, address _lptoken, uint256 _depositFeeBP, uint256 _harvestInterval, bool _withUpdate ) external isOwner { require( _depositFeeBP <= MAXIMUM_DEPOSIT_FEE, "add: invalid deposit fee basis points" ); require( _harvestInterval <= MAXIMUM_HARVEST_INTERVAL, "add: invalid harvest interval" ); // Test line to ensure the function will fail if the token doesn't exist IERC20(_lptoken).balanceOf(address(this)); if (_withUpdate) { massUpdatePools(); } uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; totalAllocPoint = totalAllocPoint.add(_allocPoint); poolInfo.push( PoolInfo({ lptoken: _lptoken, allocPoint: _allocPoint, lastRewardBlock: lastRewardBlock, acctokenPerShare: 0, depositFeeBP: _depositFeeBP, harvestInterval: _harvestInterval, lpSupply: 0 }) ); uint256 pid = poolInfo.length.sub(1); emit AddPool( pid, _allocPoint, _lptoken, _depositFeeBP, _harvestInterval, lastRewardBlock ); } // Update the given pool's token allocation point and deposit fee. Can only be called by the owner. function set( uint256 _pid, uint256 _allocPoint, uint256 _depositFeeBP, uint256 _harvestInterval, bool _withUpdate ) external isOwner { require( _depositFeeBP <= MAXIMUM_DEPOSIT_FEE, "set: invalid deposit fee basis points" ); require( _harvestInterval <= MAXIMUM_HARVEST_INTERVAL, "set: invalid harvest interval" ); if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add( _allocPoint ); poolInfo[_pid].allocPoint = _allocPoint; poolInfo[_pid].depositFeeBP = _depositFeeBP; poolInfo[_pid].harvestInterval = _harvestInterval; emit SetPool(_pid, _allocPoint, _depositFeeBP, _harvestInterval); } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) public pure returns (uint256) { return _to.sub(_from).mul(BONUS_MULTIPLIER); } // View function to see pending tokens on frontend. function pendingtoken(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 acctokenPerShare = pool.acctokenPerShare; if (block.number > pool.lastRewardBlock && pool.lpSupply != 0) { uint256 multiplier = getMultiplier( pool.lastRewardBlock, block.number ); uint256 tokenReward = multiplier .mul(tokenPerBlock) .mul(pool.allocPoint) .div(totalAllocPoint); acctokenPerShare = acctokenPerShare.add( tokenReward.mul(1e12).div(pool.lpSupply) ); } uint256 pending = user.amount.mul(acctokenPerShare).div(1e12).sub( user.rewardDebt ); return pending.add(user.rewardLockedUp); } // View function to see if user can harvest tokens. function canHarvest(uint256 _pid, address _user) public view returns (bool) { UserInfo storage user = userInfo[_pid][_user]; return block.timestamp >= user.nextHarvestUntil; } // Update reward variables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { _updatePool(pid); } } // Update reward variables of the given pool to be up-to-date. function _updatePool(uint256 _pid) internal { PoolInfo storage pool = poolInfo[_pid]; if (block.number <= pool.lastRewardBlock) { return; } if (pool.lpSupply == 0 || pool.allocPoint == 0) { pool.lastRewardBlock = block.number; return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 tokenReward = multiplier .mul(tokenPerBlock) .mul(pool.allocPoint) .div(totalAllocPoint); if (isInfinite) { token.mint(address(this), tokenReward.mul(DEV_FEE).div(1000).add(tokenReward)); _safetokenTransfer( devAddress, tokenReward.mul(DEV_FEE).div(1000) ); } else { _safetokenTransfer( devAddress, tokenReward.mul(DEV_FEE).div(1000) ); _safetokenTransfer( InformationalFeeContract, tokenReward.mul(5).div(1000) ); } pool.acctokenPerShare = pool.acctokenPerShare.add( tokenReward.mul(1e12).div(pool.lpSupply) ); pool.lastRewardBlock = block.number; } // Update reward variables of the given pool to be up-to-date (external version w/ non-reentrancy) function updatePool(uint256 _pid) external nonReentrant { _updatePool(_pid); } // Deposit LP tokens to MasterChef for token allocation. function deposit(uint256 _pid, uint256 _amount) external nonReentrant { if (!isInfinite && token.balanceOf(address(this)) == 0) { revert("Distribution is over"); } PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; _updatePool(_pid); _payOrLockupPendingtoken(_pid); if (_amount > 0) { // To handle correctly the transfer tax tokens w/ the pools uint256 balanceBefore = IERC20(pool.lptoken).balanceOf( address(this) ); TransferHelper.safeTransferFrom( pool.lptoken, msg.sender, address(this), _amount ); _amount = IERC20(pool.lptoken).balanceOf(address(this)).sub( balanceBefore ); if (pool.depositFeeBP > 0) { uint256 depositFee = _amount.mul(pool.depositFeeBP).div(10000); TransferHelper.safeTransfer( pool.lptoken, feeAddress, depositFee ); user.amount = user.amount.add(_amount).sub(depositFee); pool.lpSupply = pool.lpSupply.add(_amount).sub(depositFee); } else { user.amount = user.amount.add(_amount); pool.lpSupply = pool.lpSupply.add(_amount); } } user.rewardDebt = user.amount.mul(pool.acctokenPerShare).div(1e12); emit Deposit(msg.sender, _pid, _amount); } // Withdraw LP tokens from MasterChef. function withdraw(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "withdraw: not good"); _updatePool(_pid); _payOrLockupPendingtoken(_pid); if (_amount > 0) { user.amount = user.amount.sub(_amount); TransferHelper.safeTransfer(pool.lptoken, msg.sender, _amount); pool.lpSupply = pool.lpSupply.sub(_amount); } user.rewardDebt = user.amount.mul(pool.acctokenPerShare).div(1e12); emit Withdraw(msg.sender, _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; pool.lpSupply = pool.lpSupply.sub(user.amount); user.amount = 0; user.rewardDebt = 0; user.rewardLockedUp = 0; user.nextHarvestUntil = 0; TransferHelper.safeTransfer(pool.lptoken, msg.sender, amount); emit EmergencyWithdraw(msg.sender, _pid, amount); } // Pay or lockup pending tokens. function _payOrLockupPendingtoken(uint256 _pid) internal { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; if (user.nextHarvestUntil == 0) { user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval); } uint256 pending = user.amount.mul(pool.acctokenPerShare).div(1e12).sub( user.rewardDebt ); if (canHarvest(_pid, msg.sender)) { if (pending > 0 || user.rewardLockedUp > 0) { uint256 totalRewards = pending.add(user.rewardLockedUp); // reset lockup totalLockedUpRewards = totalLockedUpRewards.sub( user.rewardLockedUp ); user.rewardLockedUp = 0; user.nextHarvestUntil = block.timestamp.add( pool.harvestInterval ); // send rewards _safetokenTransfer(msg.sender, totalRewards); } } else if (pending > 0) { user.rewardLockedUp = user.rewardLockedUp.add(pending); totalLockedUpRewards = totalLockedUpRewards.add(pending); emit RewardLockedUp(msg.sender, _pid, pending); } } // Safe token transfer function, just in case if rounding error causes pool to not have enough tokens. function _safetokenTransfer(address _to, uint256 _amount) internal { uint256 tokenBal = token.balanceOf(address(this)); if (_amount >= tokenBal) { if (!isInfinite && tokenPerBlock != 0) { _updateEmissionRate(0); } TransferHelper.safeTransfer(address(token), _to, tokenBal); } else { TransferHelper.safeTransfer(address(token), _to, _amount); } } // Update dev address by the previous dev. function setDevAddress(address _devAddress) external { require(msg.sender == devAddress, "setDevAddress: FORBIDDEN"); require(_devAddress != address(0), "setDevAddress: ZERO"); address previousDevAddress = devAddress; devAddress = _devAddress; emit SetDevAddress(previousDevAddress, devAddress); } function setFeeAddress(address _feeAddress) external { require(msg.sender == feeAddress, "setFeeAddress: FORBIDDEN"); require(_feeAddress != address(0), "setFeeAddress: ZERO"); address previousFeeAddress = feeAddress; feeAddress = _feeAddress; emit SetFeeAddress(previousFeeAddress, feeAddress); } // Pancake has to add hidden dummy pools in order to alter the emission, here we make it simple and transparent to all. function updateEmissionRate(uint256 _tokenPerBlock) external isOwner { _updateEmissionRate(_tokenPerBlock); } function _updateEmissionRate(uint256 _tokenPerBlock) internal { massUpdatePools(); uint256 previoustokenPerBlock = tokenPerBlock; tokenPerBlock = _tokenPerBlock; emit EmissionRateUpdated(previoustokenPerBlock, tokenPerBlock); } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 <=0.8.9; interface IERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function mint(address _to, uint256 _amount) external returns (bool); function burn(uint256 amount) external returns (bool); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <=0.8.9; abstract contract Owner { address public owner; event OwnerSet(address indexed oldOwner, address indexed newOwner); modifier isOwner() { require(msg.sender == owner, "Caller is not owner"); _; } constructor() { owner = msg.sender; emit OwnerSet(address(0), owner); } function changeOwner(address newOwner) external isOwner { emit OwnerSet(owner, newOwner); owner = newOwner; } function getOwner() external view returns (address) { return owner; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <=0.8.9; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.5.0 <=0.8.9; 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) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); 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) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.6.2 <=0.8.9; library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x095ea7b3, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED" ); } function safeTransfer( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x23b872dd, from, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED" ); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256[5]","name":"_MasterChefValues","type":"uint256[5]"},{"internalType":"address","name":"_InformationalFeeContract","type":"address"},{"internalType":"bool","name":"_isInfinite","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":false,"internalType":"address","name":"lptokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositFeeBP","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"harvestInterval","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastRewardBlock","type":"uint256"}],"name":"AddPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"EmissionRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"commissionAmount","type":"uint256"}],"name":"ReferralCommissionPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountLockedUp","type":"uint256"}],"name":"RewardLockedUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousDevAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newDevAddress","type":"address"}],"name":"SetDevAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousFeeAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newFeeAddress","type":"address"}],"name":"SetFeeAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositFeeBP","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"harvestInterval","type":"uint256"}],"name":"SetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousReferralCommissionRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReferralCommissionRate","type":"uint256"}],"name":"SetReferralCommissionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previoustokenReferral","type":"address"},{"indexed":false,"internalType":"address","name":"newtokenReferral","type":"address"}],"name":"SettokenReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InformationalFeeContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DEPOSIT_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_HARVEST_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"address","name":"_lptoken","type":"address"},{"internalType":"uint256","name":"_depositFeeBP","type":"uint256"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isInfinite","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingtoken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"address","name":"lptoken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"acctokenPerShare","type":"uint256"},{"internalType":"uint256","name":"depositFeeBP","type":"uint256"},{"internalType":"uint256","name":"harvestInterval","type":"uint256"},{"internalType":"uint256","name":"lpSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_depositFeeBP","type":"uint256"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLockedUpRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenPerBlock","type":"uint256"}],"name":"updateEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardLockedUp","type":"uint256"},{"internalType":"uint256","name":"nextHarvestUntil","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101805760003560e01c8063081e3eda146101855780630ba84cd21461019c5780631526fe27146101b157806317caf6f1146102035780632e6c998d1461020c57806333d9ed3b1461022f5780633ad10ef61461024357806341275358146102635780634198709a14610276578063436a88c11461027f578063441a3e7014610288578063474fa6301461029b57806348cd4cb1146102a457806351eb05a6146102ad5780635312ea8e146102c057806360e4c4ce146102d3578063630b5ba1146102e65780638705fcd4146102ee578063893d20e8146103015780638aa28550146103125780638da5cb5b1461031a5780638dbb1e3a1461032d57806393f1a40b146103405780639aca95ec146103a0578063a6f9dae1146103a9578063d0d41fe1146103bc578063d37bd133146103cf578063de73149d146103e2578063e2bbb158146103eb578063f06a6a8c146103fe578063f6e6a0e614610411578063fc0c546a14610424575b600080fd5b6007545b6040519081526020015b60405180910390f35b6101af6101aa366004611cf4565b610437565b005b6101c46101bf366004611cf4565b610476565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610193565b61018960095481565b61021f61021a366004611d29565b6104cf565b6040519015158152602001610193565b600e5461021f90600160a01b900460ff1681565b600354610256906001600160a01b031681565b6040516101939190611d55565b600454610256906001600160a01b031681565b61018960055481565b610189600d5481565b6101af610296366004611d69565b6104ff565b610189600b5481565b610189600a5481565b6101af6102bb366004611cf4565b610666565b6101af6102ce366004611cf4565b61069e565b6101af6102e1366004611d99565b610780565b6101af610979565b6101af6102fc366004611de6565b6109a4565b6000546001600160a01b0316610256565b610189600181565b600054610256906001600160a01b031681565b61018961033b366004611d69565b610aa3565b61038061034e366004611d29565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610193565b610189600c5481565b6101af6103b7366004611de6565b610ac1565b6101af6103ca366004611de6565b610b46565b6101896103dd366004611d29565b610c39565b61018960065481565b6101af6103f9366004611d69565b610d5f565b600e54610256906001600160a01b031681565b6101af61041f366004611e01565b6110ce565b600254610256906001600160a01b031681565b6000546001600160a01b0316331461046a5760405162461bcd60e51b815260040161046190611e47565b60405180910390fd5b61047381611440565b50565b6007818154811061048657600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b039095169650929491939092919087565b60008281526008602090815260408083206001600160a01b03851684529091529020600301544210155b92915050565b600260015414156105225760405162461bcd60e51b815260040161046190611e74565b600260018190555060006007838154811061053f5761053f611eab565b6000918252602080832086845260088252604080852033865290925292208054600790920290920192508311156105ad5760405162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b6044820152606401610461565b6105b684611486565b6105bf8461167c565b82156105fe5780546105d190846117fb565b815581546105e9906001600160a01b0316338561183d565b60068201546105f890846117fb565b60068301555b6003820154815461061f9164e8d4a51000916106199161195a565b906119d9565b6001820155604051838152849033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a35050600180555050565b600260015414156106895760405162461bcd60e51b815260040161046190611e74565b600260015561069781611486565b5060018055565b600260015414156106c15760405162461bcd60e51b815260040161046190611e74565b60026001819055506000600782815481106106de576106de611eab565b6000918252602080832085845260088252604080852033865290925292208054600792909202909201600681015490935061071990826117fb565b6006840155600080835560018301819055600283018190556003830155825461074c906001600160a01b0316338361183d565b604051818152849033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae059590602001610654565b6000546001600160a01b031633146107aa5760405162461bcd60e51b815260040161046190611e47565b600c5483111561080a5760405162461bcd60e51b815260206004820152602560248201527f7365743a20696e76616c6964206465706f7369742066656520626173697320706044820152646f696e747360d81b6064820152608401610461565b60065482111561085c5760405162461bcd60e51b815260206004820152601d60248201527f7365743a20696e76616c6964206861727665737420696e74657276616c0000006044820152606401610461565b801561086a5761086a610979565b6108ad846108a76007888154811061088457610884611eab565b9060005260206000209060070201600101546009546117fb90919063ffffffff16565b90611a18565b60098190555083600786815481106108c7576108c7611eab565b90600052602060002090600702016001018190555082600786815481106108f0576108f0611eab565b906000526020600020906007020160040181905550816007868154811061091957610919611eab565b60009182526020918290206005600790920201019190915560408051868152918201859052810183905285907f638f84b26ab0fed05e944aa4ad0d38a62a9fc8234984bbb9e0091a676bf305f49060600160405180910390a25050505050565b60075460005b818110156109a05761099081611486565b61099981611ed7565b905061097f565b5050565b6004546001600160a01b031633146109f95760405162461bcd60e51b815260206004820152601860248201527739b2ba2332b2a0b2323932b9b99d102327a92124a22222a760411b6044820152606401610461565b6001600160a01b038116610a455760405162461bcd60e51b8152602060048201526013602482015272736574466565416464726573733a205a45524f60681b6044820152606401610461565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116917fd44190acf9d04bdb5d3a1aafff7e6dee8b40b93dfb8c5d3f0eea4b9f4539c3f791610a97918491611ef2565b60405180910390a15050565b6000610aba6001610ab484866117fb565b9061195a565b9392505050565b6000546001600160a01b03163314610aeb5760405162461bcd60e51b815260040161046190611e47565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820152601860248201527739b2ba2232bb20b2323932b9b99d102327a92124a22222a760411b6044820152606401610461565b6001600160a01b038116610be75760405162461bcd60e51b8152602060048201526013602482015272736574446576416464726573733a205a45524f60681b6044820152606401610461565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116917f618c54559e94f1499a808aad71ee8729f8e74e8c48e979616328ce493a1a52e791610a97918491611ef2565b60008060078481548110610c4f57610c4f611eab565b600091825260208083208784526008825260408085206001600160a01b03891686529092529220600360079092029092019081015460028201549193509043118015610c9e5750600683015415155b15610d0b576000610cb3846002015443610aa3565b90506000610cda6009546106198760010154610ab46005548761195a90919063ffffffff16565b9050610d06610cff866006015461061964e8d4a510008561195a90919063ffffffff16565b8490611a18565b925050505b6000610d3b8360010154610d3564e8d4a5100061061986886000015461195a90919063ffffffff16565b906117fb565b9050610d54836002015482611a1890919063ffffffff16565b979650505050505050565b60026001541415610d825760405162461bcd60e51b815260040161046190611e74565b6002600155600e54600160a01b900460ff16158015610e1e57506002546040516370a0823160e01b81526001600160a01b03909116906370a0823190610dcc903090600401611d55565b60206040518083038186803b158015610de457600080fd5b505afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190611f0c565b155b15610e625760405162461bcd60e51b81526020600482015260146024820152732234b9ba3934b13aba34b7b71034b99037bb32b960611b6044820152606401610461565b600060078381548110610e7757610e77611eab565b60009182526020808320868452600882526040808520338652909252922060079091029091019150610ea884611486565b610eb18461167c565b821561107a5781546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610ee7903090600401611d55565b60206040518083038186803b158015610eff57600080fd5b505afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190611f0c565b8354909150610f51906001600160a01b0316333087611a75565b82546040516370a0823160e01b8152610fd69183916001600160a01b03909116906370a0823190610f86903090600401611d55565b60206040518083038186803b158015610f9e57600080fd5b505afa158015610fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190611f0c565b60048401549094501561105557600061100261271061061986600401548861195a90919063ffffffff16565b8454600454919250611021916001600160a01b0391821691168361183d565b8254611033908290610d359088611a18565b8355600684015461104a908290610d359088611a18565b600685015550611078565b81546110619085611a18565b825560068301546110729085611a18565b60068401555b505b600382015481546110959164e8d4a51000916106199161195a565b6001820155604051838152849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590602001610654565b6000546001600160a01b031633146110f85760405162461bcd60e51b815260040161046190611e47565b600c548311156111585760405162461bcd60e51b815260206004820152602560248201527f6164643a20696e76616c6964206465706f7369742066656520626173697320706044820152646f696e747360d81b6064820152608401610461565b6006548211156111aa5760405162461bcd60e51b815260206004820152601d60248201527f6164643a20696e76616c6964206861727665737420696e74657276616c0000006044820152606401610461565b6040516370a0823160e01b81526001600160a01b038516906370a08231906111d6903090600401611d55565b60206040518083038186803b1580156111ee57600080fd5b505afa158015611202573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112269190611f0c565b50801561123557611235610979565b6000600a54431161124857600a5461124a565b435b60095490915061125a9087611a18565b6009556040805160e0810182526001600160a01b03878116825260208201898152928201848152600060608401818152608085018a815260a086018a815260c08701848152600780546001808201835582885299517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68891830291820180546001600160a01b03191691909a161790985598517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68988015594517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a87015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b860155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68c850155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68d84015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68e9092019190915591546113db916117fb565b604080518981526001600160a01b0389166020820152908101879052606081018690526080810184905290915081907fd11951a412a72dea268b72d4675d9d7e30aa8975bbc7cce1b279a5fe26a5a4059060a00160405180910390a250505050505050565b611448610979565b600580549082905560408051828152602081018490527f144d30c57e277deb14c5d686b95cf61cfea257d9d551cef4288b2f7db418f87a9101610a97565b60006007828154811061149b5761149b611eab565b90600052602060002090600702019050806002015443116114ba575050565b600681015415806114cd57506001810154155b156114dc574360029091015550565b60006114ec826002015443610aa3565b905060006115136009546106198560010154610ab46005548761195a90919063ffffffff16565b600e54909150600160a01b900460ff16156115fc57600254600d546001600160a01b03909116906340c10f1990309061155b9085906108a7906103e89061061990849061195a565b6040518363ffffffff1660e01b8152600401611578929190611f25565b602060405180830381600087803b15801561159257600080fd5b505af11580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190611f3e565b50600354600d546115f7916001600160a01b0316906115f2906103e89061061990869061195a565b611ba5565b611644565b600354600d54611623916001600160a01b0316906115f2906103e89061061990869061195a565b600e54611644906001600160a01b03166115f26103e861061985600561195a565b600683015461166b90611660906106198464e8d4a5100061195a565b600385015490611a18565b600384015550504360029091015550565b60006007828154811061169157611691611eab565b6000918252602080832085845260088252604080852033865290925292206003810154600790920290920192506116d85760058201546116d2904290611a18565b60038201555b60006117068260010154610d3564e8d4a510006106198760030154876000015461195a90919063ffffffff16565b905061171284336104cf565b1561179357600081118061172a575060008260020154115b1561178e576000611748836002015483611a1890919063ffffffff16565b90506117638360020154600b546117fb90919063ffffffff16565b600b5560006002840155600584015461177d904290611a18565b600384015561178c3382611ba5565b505b6117f5565b80156117f55760028201546117a89082611a18565b6002830155600b546117ba9082611a18565b600b55604051818152849033907fee470483107f579a55c754fa00613c45a9a3b617a418b39cb0be97e5381ba7c19060200160405180910390a35b50505050565b6000610aba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c8c565b600080846001600160a01b031663a9059cbb8585604051602401611862929190611f25565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161189b9190611f87565b6000604051808303816000865af19150503d80600081146118d8576040519150601f19603f3d011682016040523d82523d6000602084013e6118dd565b606091505b50915091508180156119075750805115806119075750808060200190518101906119079190611f3e565b6119535760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610461565b5050505050565b600082611969575060006104f9565b60006119758385611fa3565b9050826119828583611fc2565b14610aba5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610461565b6000610aba83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611cc6565b600080611a258385611fe4565b905083811015610aba5760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606401610461565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691611ad99190611f87565b6000604051808303816000865af19150503d8060008114611b16576040519150601f19603f3d011682016040523d82523d6000602084013e611b1b565b606091505b5091509150818015611b45575080511580611b45575080806020019051810190611b459190611f3e565b611b9d5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610461565b505050505050565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611bd6903090600401611d55565b60206040518083038186803b158015611bee57600080fd5b505afa158015611c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c269190611f0c565b9050808210611c7557600e54600160a01b900460ff16158015611c4a575060055415155b15611c5957611c596000611440565b600254611c70906001600160a01b0316848361183d565b505050565b600254611c70906001600160a01b0316848461183d565b60008184841115611cb05760405162461bcd60e51b81526004016104619190611ffc565b506000611cbd848661202f565b95945050505050565b60008183611ce75760405162461bcd60e51b81526004016104619190611ffc565b506000611cbd8486611fc2565b600060208284031215611d0657600080fd5b5035919050565b80356001600160a01b0381168114611d2457600080fd5b919050565b60008060408385031215611d3c57600080fd5b82359150611d4c60208401611d0d565b90509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215611d7c57600080fd5b50508035926020909101359150565b801515811461047357600080fd5b600080600080600060a08688031215611db157600080fd5b853594506020860135935060408601359250606086013591506080860135611dd881611d8b565b809150509295509295909350565b600060208284031215611df857600080fd5b610aba82611d0d565b600080600080600060a08688031215611e1957600080fd5b85359450611e2960208701611d0d565b935060408601359250606086013591506080860135611dd881611d8b565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611eeb57611eeb611ec1565b5060010190565b6001600160a01b0392831681529116602082015260400190565b600060208284031215611f1e57600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b600060208284031215611f5057600080fd5b8151610aba81611d8b565b60005b83811015611f76578181015183820152602001611f5e565b838111156117f55750506000910152565b60008251611f99818460208701611f5b565b9190910192915050565b6000816000190483118215151615611fbd57611fbd611ec1565b500290565b600082611fdf57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611ff757611ff7611ec1565b500190565b602081526000825180602084015261201b816040850160208701611f5b565b601f01601f19169190910160400192915050565b60008282101561204157612041611ec1565b50039056fea2646970667358221220058ddc8b371bf9540b25895e82894c1b542251ebbb3e086e208ff6566204f75864736f6c63430008090033
Deployed Bytecode Sourcemap
205:16883:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:93;5100:8;:15;5029:93;;;160:25:6;;;148:2;133:18;5029:93:1;;;;;;;;16696:121;;;;;;:::i;:::-;;:::i;:::-;;2274:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;714:32:6;;;696:51;;778:2;763:18;;756:34;;;;806:18;;;799:34;;;;864:2;849:18;;842:34;;;;907:3;892:19;;885:35;734:3;936:19;;929:35;995:3;980:19;;973:35;683:3;668:19;2274:26:1;381:633:6;2511:34:1;;;;;;8970:223;;;;;;:::i;:::-;;:::i;:::-;;;1621:14:6;;1614:22;1596:41;;1584:2;1569:18;8970:223:1;1456:187:6;2931:22:1;;;;;-1:-1:-1;;;2931:22:1;;;;;;1920:25;;;;;-1:-1:-1;;;;;1920:25:1;;;;;;;;;;:::i;1979:::-;;;;;-1:-1:-1;;;;;1979:25:1;;;2043:28;;;;;;2809:22;;;;;;12697:664;;;;;;:::i;:::-;;:::i;2663:35::-;;;;;;2601:25;;;;;;10897:90;;;;;;:::i;:::-;;:::i;13429:523::-;;;;;;:::i;:::-;;:::i;6804:862::-;;;;;;:::i;:::-;;:::i;9273:176::-;;;:::i;16224:342::-;;;;;;:::i;:::-;;:::i;536:81:2:-;579:7;605:5;-1:-1:-1;;;;;605:5:2;536:81;;2124:44:1;;2167:1;2124:44;;100:20:2;;;;;-1:-1:-1;;;;;100:20:2;;;7739:169:1;;;;;;:::i;:::-;;:::i;2354:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3174:25:6;;;3230:2;3215:18;;3208:34;;;;3258:18;;;3251:34;3316:2;3301:18;;3294:34;3161:3;3146:19;2354:64:1;2943:391:6;2738:34:1;;;;;;401:129:2;;;;;;:::i;:::-;;:::i;15876:342:1:-;;;;;;:::i;:::-;;:::i;7970:938::-;;;;;;:::i;:::-;;:::i;2202:39::-;;;;;;11054:1594;;;;;;:::i;:::-;;:::i;2838:39::-;;;;;-1:-1:-1;;;;;2838:39:1;;;5283:1411;;;;;;:::i;:::-;;:::i;1875:19::-;;;;;-1:-1:-1;;;;;1875:19:1;;;16696:121;251:5:2;;-1:-1:-1;;;;;251:5:2;237:10;:19;229:51;;;;-1:-1:-1;;;229:51:2;;;;;;;:::i;:::-;;;;;;;;;16775:35:1::1;16795:14;16775:19;:35::i;:::-;16696:121:::0;:::o;2274:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2274:26:1;;;;-1:-1:-1;2274:26:1;;;;;;;;;:::o;8970:223::-;9064:4;9108:14;;;:8;:14;;;;;;;;-1:-1:-1;;;;;9108:21:1;;;;;;;;;9165;;;9146:15;:40;;8970:223;;;;;:::o;12697:664::-;193:1:3;332:7;;:19;;324:63;;;;-1:-1:-1;;;324:63:3;;;;;;;:::i;:::-;193:1;398:7;:18;;;;12778:21:1::1;12802:8;12811:4;12802:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;12850;;;:8:::1;:14:::0;;;;;;12865:10:::1;12850:26:::0;;;;;;;12894:11;;12802:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;12894:22:1;-1:-1:-1;12894:22:1::1;12886:53;;;::::0;-1:-1:-1;;;12886:53:1;;5128:2:6;12886:53:1::1;::::0;::::1;5110:21:6::0;5167:2;5147:18;;;5140:30;-1:-1:-1;;;5186:18:6;;;5179:48;5244:18;;12886:53:1::1;4926:342:6::0;12886:53:1::1;12950:17;12962:4;12950:11;:17::i;:::-;12977:30;13002:4;12977:24;:30::i;:::-;13021:11:::0;;13017:212:::1;;13062:11:::0;;:24:::1;::::0;13078:7;13062:15:::1;:24::i;:::-;13048:38:::0;;13128:12;;13100:62:::1;::::0;-1:-1:-1;;;;;13128:12:1::1;13142:10;13154:7:::0;13100:27:::1;:62::i;:::-;13192:13;::::0;::::1;::::0;:26:::1;::::0;13210:7;13192:17:::1;:26::i;:::-;13176:13;::::0;::::1;:42:::0;13017:212:::1;13272:21;::::0;::::1;::::0;13256:11;;:48:::1;::::0;13299:4:::1;::::0;13256:38:::1;::::0;:15:::1;:38::i;:::-;:42:::0;::::1;:48::i;:::-;13238:15;::::0;::::1;:66:::0;13319:35:::1;::::0;160:25:6;;;13340:4:1;;13328:10:::1;::::0;13319:35:::1;::::0;148:2:6;133:18;13319:35:1::1;;;;;;;;-1:-1:-1::0;;150:1:3;437:22;;-1:-1:-1;;12697:664:1:o;10897:90::-;193:1:3;332:7;;:19;;324:63;;;;-1:-1:-1;;;324:63:3;;;;;;;:::i;:::-;193:1;398:7;:18;10963:17:1::1;10975:4:::0;10963:11:::1;:17::i;:::-;-1:-1:-1::0;150:1:3;437:22;;10897:90:1:o;13429:523::-;193:1:3;332:7;;:19;;324:63;;;;-1:-1:-1;;;324:63:3;;;;;;;:::i;:::-;193:1;398:7;:18;;;;13502:21:1::1;13526:8;13535:4;13526:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;13574;;;:8:::1;:14:::0;;;;;;13589:10:::1;13574:26:::0;;;;;;;13627:11;;13526:14:::1;::::0;;;::::1;::::0;;::::1;13664:13;::::0;::::1;::::0;13526:14;;-1:-1:-1;13664:30:1::1;::::0;13627:11;13664:17:::1;:30::i;:::-;13648:13;::::0;::::1;:46:::0;13718:1:::1;13704:15:::0;;;13729::::1;::::0;::::1;:19:::0;;;13758::::1;::::0;::::1;:23:::0;;;13791:21:::1;::::0;::::1;:25:::0;13854:12;;13826:61:::1;::::0;-1:-1:-1;;;;;13854:12:1::1;13868:10;13880:6:::0;13826:27:::1;:61::i;:::-;13902:43;::::0;160:25:6;;;13932:4:1;;13920:10:::1;::::0;13902:43:::1;::::0;148:2:6;133:18;13902:43:1::1;14:177:6::0;6804:862:1;251:5:2;;-1:-1:-1;;;;;251:5:2;237:10;:19;229:51;;;;-1:-1:-1;;;229:51:2;;;;;;;:::i;:::-;7030:19:1::1;;7013:13;:36;;6992:120;;;::::0;-1:-1:-1;;;6992:120:1;;5475:2:6;6992:120:1::1;::::0;::::1;5457:21:6::0;5514:2;5494:18;;;5487:30;5553:34;5533:18;;;5526:62;-1:-1:-1;;;5604:18:6;;;5597:35;5649:19;;6992:120:1::1;5273:401:6::0;6992:120:1::1;7163:24;;7143:16;:44;;7122:120;;;::::0;-1:-1:-1;;;7122:120:1;;5881:2:6;7122:120:1::1;::::0;::::1;5863:21:6::0;5920:2;5900:18;;;5893:30;5959:31;5939:18;;;5932:59;6008:18;;7122:120:1::1;5679:353:6::0;7122:120:1::1;7257:11;7253:59;;;7284:17;:15;:17::i;:::-;7339:85;7403:11;7339:46;7359:8;7368:4;7359:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;7339:15;;:19;;:46;;;;:::i;:::-;:50:::0;::::1;:85::i;:::-;7321:15;:103;;;;7462:11;7434:8;7443:4;7434:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;:39;;;;7513:13;7483:8;7492:4;7483:14;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;:43;;;;7569:16;7536:8;7545:4;7536:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;:30:::1;:14;::::0;;::::1;;:30;:49:::0;;;;7600:59:::1;::::0;;6239:25:6;;;6280:18;;;6273:34;;;6323:18;;6316:34;;;7608:4:1;;7600:59:::1;::::0;6227:2:6;6212:18;7600:59:1::1;;;;;;;6804:862:::0;;;;;:::o;9273:176::-;9334:8;:15;9317:14;9359:84;9387:6;9381:3;:12;9359:84;;;9416:16;9428:3;9416:11;:16::i;:::-;9395:5;;;:::i;:::-;;;9359:84;;;;9307:142;9273:176::o;16224:342::-;16309:10;;-1:-1:-1;;;;;16309:10:1;16295;:24;16287:61;;;;-1:-1:-1;;;16287:61:1;;6835:2:6;16287:61:1;;;6817:21:6;6874:2;6854:18;;;6847:30;-1:-1:-1;;;6893:18:6;;;6886:54;6957:18;;16287:61:1;6633:348:6;16287:61:1;-1:-1:-1;;;;;16366:25:1;;16358:57;;;;-1:-1:-1;;;16358:57:1;;7188:2:6;16358:57:1;;;7170:21:6;7227:2;7207:18;;;7200:30;-1:-1:-1;;;7246:18:6;;;7239:49;7305:18;;16358:57:1;6986:343:6;16358:57:1;16455:10;;;-1:-1:-1;;;;;16475:24:1;;;-1:-1:-1;;;;;;16475:24:1;;;;;;;16514:45;;16455:10;;;16514:45;;;;16455:10;;16514:45;:::i;:::-;;;;;;;;16277:289;16224:342;:::o;7739:169::-;7835:7;7865:36;2167:1;7865:14;:3;7873:5;7865:7;:14::i;:::-;:18;;:36::i;:::-;7858:43;7739:169;-1:-1:-1;;;7739:169:1:o;401:129:2:-;251:5;;-1:-1:-1;;;;;251:5:2;237:10;:19;229:51;;;;-1:-1:-1;;;229:51:2;;;;;;;:::i;:::-;481:5:::1;::::0;;472:25:::1;::::0;-1:-1:-1;;;;;472:25:2;;::::1;::::0;481:5;::::1;::::0;472:25:::1;::::0;::::1;507:5;:16:::0;;-1:-1:-1;;;;;;507:16:2::1;-1:-1:-1::0;;;;;507:16:2;;;::::1;::::0;;;::::1;::::0;;401:129::o;15876:342:1:-;15961:10;;-1:-1:-1;;;;;15961:10:1;15947;:24;15939:61;;;;-1:-1:-1;;;15939:61:1;;7845:2:6;15939:61:1;;;7827:21:6;7884:2;7864:18;;;7857:30;-1:-1:-1;;;7903:18:6;;;7896:54;7967:18;;15939:61:1;7643:348:6;15939:61:1;-1:-1:-1;;;;;16018:25:1;;16010:57;;;;-1:-1:-1;;;16010:57:1;;8198:2:6;16010:57:1;;;8180:21:6;8237:2;8217:18;;;8210:30;-1:-1:-1;;;8256:18:6;;;8249:49;8315:18;;16010:57:1;7996:343:6;16010:57:1;16107:10;;;-1:-1:-1;;;;;16127:24:1;;;-1:-1:-1;;;;;;16127:24:1;;;;;;;16166:45;;16107:10;;;16166:45;;;;16107:10;;16166:45;:::i;7970:938::-;8068:7;8091:21;8115:8;8124:4;8115:14;;;;;;;;:::i;:::-;;;;;;;;;8163;;;:8;:14;;;;;;-1:-1:-1;;;;;8163:21:1;;;;;;;;;8221;8115:14;;;;;;;8221:21;;;;8271:20;;;;8115:14;;-1:-1:-1;8221:21:1;8256:12;:35;:57;;;;-1:-1:-1;8295:13:1;;;;:18;;8256:57;8252:487;;;8329:18;8350:95;8381:4;:20;;;8419:12;8350:13;:95::i;:::-;8329:116;;8459:19;8481:122;8587:15;;8481:84;8549:4;:15;;;8481:46;8513:13;;8481:10;:31;;:46;;;;:::i;:122::-;8459:144;;8636:92;8674:40;8700:4;:13;;;8674:21;8690:4;8674:11;:15;;:21;;;;:::i;:40::-;8636:16;;:20;:92::i;:::-;8617:111;;8315:424;;8252:487;8748:15;8766:86;8827:4;:15;;;8766:43;8804:4;8766:33;8782:16;8766:4;:11;;;:15;;:33;;;;:::i;:43::-;:47;;:86::i;:::-;8748:104;;8869:32;8881:4;:19;;;8869:7;:11;;:32;;;;:::i;:::-;8862:39;7970:938;-1:-1:-1;;;;;;;7970:938:1:o;11054:1594::-;193:1:3;332:7;;:19;;324:63;;;;-1:-1:-1;;;324:63:3;;;;;;;:::i;:::-;193:1;398:7;:18;11139:10:1::1;::::0;-1:-1:-1;;;11139:10:1;::::1;;;11138:11;:50:::0;::::1;;;-1:-1:-1::0;11153:5:1::1;::::0;:30:::1;::::0;-1:-1:-1;;;11153:30:1;;-1:-1:-1;;;;;11153:5:1;;::::1;::::0;:15:::1;::::0;:30:::1;::::0;11177:4:::1;::::0;11153:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35:::0;11138:50:::1;11134:111;;;11204:30;::::0;-1:-1:-1;;;11204:30:1;;8735:2:6;11204:30:1::1;::::0;::::1;8717:21:6::0;8774:2;8754:18;;;8747:30;-1:-1:-1;;;8793:18:6;;;8786:50;8853:18;;11204:30:1::1;8533:344:6::0;11134:111:1::1;11255:21;11279:8;11288:4;11279:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;11327;;;:8:::1;:14:::0;;;;;;11342:10:::1;11327:26:::0;;;;;;;11279:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;11363:17:1::1;11336:4:::0;11363:11:::1;:17::i;:::-;11391:30;11416:4;11391:24;:30::i;:::-;11435:11:::0;;11431:1086:::1;;11565:12:::0;;11558:75:::1;::::0;-1:-1:-1;;;11558:75:1;;11534:21:::1;::::0;-1:-1:-1;;;;;11565:12:1::1;::::0;11558:30:::1;::::0;:75:::1;::::0;11614:4:::1;::::0;11558:75:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11696:12:::0;;11534:99;;-1:-1:-1;11647:159:1::1;::::0;-1:-1:-1;;;;;11696:12:1::1;11726:10;11762:4;11785:7:::0;11647:31:::1;:159::i;:::-;11837:12:::0;;11830:45:::1;::::0;-1:-1:-1;;;11830:45:1;;:94:::1;::::0;11897:13;;-1:-1:-1;;;;;11837:12:1;;::::1;::::0;11830:30:::1;::::0;:45:::1;::::0;11869:4:::1;::::0;11830:45:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:94::-;11943:17;::::0;::::1;::::0;11820:104;;-1:-1:-1;11943:21:1;11939:568:::1;;11984:18;12005:41;12040:5;12005:30;12017:4;:17;;;12005:7;:11;;:30;;;;:::i;:41::-;12113:12:::0;;12147:10:::1;::::0;11984:62;;-1:-1:-1;12064:143:1::1;::::0;-1:-1:-1;;;;;12113:12:1;;::::1;::::0;12147:10:::1;11984:62:::0;12064:27:::1;:143::i;:::-;12239:11:::0;;:40:::1;::::0;12268:10;;12239:24:::1;::::0;12255:7;12239:15:::1;:24::i;:40::-;12225:54:::0;;12313:13:::1;::::0;::::1;::::0;:42:::1;::::0;12344:10;;12313:26:::1;::::0;12331:7;12313:17:::1;:26::i;:42::-;12297:13;::::0;::::1;:58:::0;-1:-1:-1;11939:568:1::1;;;12408:11:::0;;:24:::1;::::0;12424:7;12408:15:::1;:24::i;:::-;12394:38:::0;;12466:13:::1;::::0;::::1;::::0;:26:::1;::::0;12484:7;12466:17:::1;:26::i;:::-;12450:13;::::0;::::1;:42:::0;11939:568:::1;11448:1069;11431:1086;12560:21;::::0;::::1;::::0;12544:11;;:48:::1;::::0;12587:4:::1;::::0;12544:38:::1;::::0;:15:::1;:38::i;:48::-;12526:15;::::0;::::1;:66:::0;12607:34:::1;::::0;160:25:6;;;12627:4:1;;12615:10:::1;::::0;12607:34:::1;::::0;148:2:6;133:18;12607:34:1::1;14:177:6::0;5283:1411:1;251:5:2;;-1:-1:-1;;;;;251:5:2;237:10;:19;229:51;;;;-1:-1:-1;;;229:51:2;;;;;;;:::i;:::-;5513:19:1::1;;5496:13;:36;;5475:120;;;::::0;-1:-1:-1;;;5475:120:1;;9084:2:6;5475:120:1::1;::::0;::::1;9066:21:6::0;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;-1:-1:-1;;;9213:18:6;;;9206:35;9258:19;;5475:120:1::1;8882:401:6::0;5475:120:1::1;5646:24;;5626:16;:44;;5605:120;;;::::0;-1:-1:-1;;;5605:120:1;;9490:2:6;5605:120:1::1;::::0;::::1;9472:21:6::0;9529:2;9509:18;;;9502:30;9568:31;9548:18;;;9541:59;9617:18;;5605:120:1::1;9288:353:6::0;5605:120:1::1;5817:41;::::0;-1:-1:-1;;;5817:41:1;;-1:-1:-1;;;;;5817:26:1;::::1;::::0;::::1;::::0;:41:::1;::::0;5852:4:::1;::::0;5817:41:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5873:11;5869:59;;;5900:17;:15;:17::i;:::-;5937:23;5978:10;;5963:12;:25;:77;;6030:10;;5963:77;;;6003:12;5963:77;6068:15;::::0;5937:103;;-1:-1:-1;6068:32:1::1;::::0;6088:11;6068:19:::1;:32::i;:::-;6050:15;:50:::0;6137:312:::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6137:312:1;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;6137:312:1;;;;;;;;;;;;;;;;;;;;;;;;6110:8:::1;:349:::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;6110:349:1::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6483:15;;:22:::1;::::0;:19:::1;:22::i;:::-;6520:167;::::0;;9905:25:6;;;-1:-1:-1;;;;;9966:32:6;;9961:2;9946:18;;9939:60;10015:18;;;10008:34;;;10073:2;10058:18;;10051:34;;;10116:3;10101:19;;10094:35;;;6469:36:1;;-1:-1:-1;6469:36:1;;6520:167:::1;::::0;9892:3:6;9877:19;6520:167:1::1;;;;;;;5465:1229;;5283:1411:::0;;;;;:::o;16823:263::-;16895:17;:15;:17::i;:::-;16954:13;;;16977:30;;;;17022:57;;;10314:25:6;;;10370:2;10355:18;;10348:34;;;17022:57:1;;10287:18:6;17022:57:1;10140:248:6;9522:1266:1;9576:21;9600:8;9609:4;9600:14;;;;;;;;:::i;:::-;;;;;;;;;;;9576:38;;9644:4;:20;;;9628:12;:36;9624:73;;9680:7;9522:1266;:::o;9624:73::-;9710:13;;;;:18;;:42;;-1:-1:-1;9732:15:1;;;;:20;9710:42;9706:128;;;9791:12;9768:20;;;;:35;-1:-1:-1;9522:1266:1:o;9706:128::-;9843:18;9864:49;9878:4;:20;;;9900:12;9864:13;:49::i;:::-;9843:70;;9923:19;9945:110;10039:15;;9945:76;10005:4;:15;;;9945:42;9973:13;;9945:10;:27;;:42;;;;:::i;:110::-;10069:10;;9923:132;;-1:-1:-1;;;;10069:10:1;;;;10065:549;;;10095:5;;10137:7;;-1:-1:-1;;;;;10095:5:1;;;;:10;;10114:4;;10121:51;;10160:11;;10121:34;;10150:4;;10121:24;;10160:11;;10121:15;:24::i;:51::-;10095:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10236:10:1;;10280:7;;10200:112;;-1:-1:-1;;;;;10236:10:1;;10264:34;;10293:4;;10264:24;;:11;;:15;:24::i;:34::-;10200:18;:112::i;:::-;10065:549;;;10392:10;;10436:7;;10356:112;;-1:-1:-1;;;;;10392:10:1;;10420:34;;10449:4;;10420:24;;:11;;:15;:24::i;10356:112::-;10519:24;;10483:120;;-1:-1:-1;;;;;10519:24:1;10561:28;10584:4;10561:18;:11;10577:1;10561:15;:18::i;10483:120::-;10712:13;;;;10647:89;;10686:40;;:21;:11;10702:4;10686:15;:21::i;:40::-;10647:21;;;;;:25;:89::i;:::-;10623:21;;;:113;-1:-1:-1;;10769:12:1;10746:20;;;;:35;-1:-1:-1;9522:1266:1:o;13995:1269::-;14062:21;14086:8;14095:4;14086:14;;;;;;;;:::i;:::-;;;;;;;;;14134;;;:8;:14;;;;;;14149:10;14134:26;;;;;;;14175:21;;;;14086:14;;;;;;;;-1:-1:-1;14171:122:1;;14261:20;;;;14241:41;;:15;;:19;:41::i;:::-;14217:21;;;:65;14171:122;14303:15;14321:91;14387:4;:15;;;14321:48;14364:4;14321:38;14337:4;:21;;;14321:4;:11;;;:15;;:38;;;;:::i;:91::-;14303:109;;14426:28;14437:4;14443:10;14426;:28::i;:::-;14422:836;;;14484:1;14474:7;:11;:38;;;;14511:1;14489:4;:19;;;:23;14474:38;14470:546;;;14532:20;14555:32;14567:4;:19;;;14555:7;:11;;:32;;;;:::i;:::-;14532:55;;14661:83;14707:4;:19;;;14661:20;;:24;;:83;;;;:::i;:::-;14638:20;:106;14784:1;14762:19;;;:23;14868:20;;;;14827:79;;:15;;:19;:79::i;:::-;14803:21;;;:103;14957:44;14976:10;14988:12;14957:18;:44::i;:::-;14514:502;14470:546;14422:836;;;15036:11;;15032:226;;15085:19;;;;:32;;15109:7;15085:23;:32::i;:::-;15063:19;;;:54;15154:20;;:33;;15179:7;15154:24;:33::i;:::-;15131:20;:56;15206:41;;160:25:6;;;15233:4:1;;15221:10;;15206:41;;148:2:6;133:18;15206:41:1;;;;;;;15032:226;14052:1212;;;13995:1269;:::o;274:134:4:-;332:7;358:43;362:1;365;358:43;;;;;;;;;;;;;;;;;:3;:43::i;483:380:5:-;597:12;611:17;632:5;-1:-1:-1;;;;;632:10:5;679;691:2;695:5;656:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;656:45:5;;;;;;;;;;;632:79;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;596:115;;;;742:7;:57;;;;-1:-1:-1;754:11:5;;:16;;:44;;;785:4;774:24;;;;;;;;;;;;:::i;:::-;721:135;;;;-1:-1:-1;;;721:135:5;;11666:2:6;721:135:5;;;11648:21:6;11705:2;11685:18;;;11678:30;11744:33;11724:18;;;11717:61;11795:18;;721:135:5;11464:355:6;721:135:5;586:277;;483:380;;;:::o;636:240:4:-;694:7;717:6;713:45;;-1:-1:-1;746:1:4;739:8;;713:45;768:9;780:5;784:1;780;:5;:::i;:::-;768:17;-1:-1:-1;812:1:4;803:5;807:1;768:17;803:5;:::i;:::-;:10;795:56;;;;-1:-1:-1;;;795:56:4;;12421:2:6;795:56:4;;;12403:21:6;12460:2;12440:18;;;12433:30;12499:34;12479:18;;;12472:62;-1:-1:-1;;;12550:18:6;;;12543:31;12591:19;;795:56:4;12219:397:6;882:130:4;940:7;966:39;970:1;973;966:39;;;;;;;;;;;;;-1:-1:-1;;;966:39:4;;;:3;:39::i;93:175::-;151:7;;182:5;186:1;182;:5;:::i;:::-;170:17;;210:1;205;:6;;197:46;;;;-1:-1:-1;;;197:46:4;;12956:2:6;197:46:4;;;12938:21:6;12995:2;12975:18;;;12968:30;-1:-1:-1;;;13014:18:6;;;13007:57;13081:18;;197:46:4;12754:351:6;869:417:5;1068:51;;;-1:-1:-1;;;;;13368:15:6;;;1068:51:5;;;13350:34:6;13420:15;;;13400:18;;;13393:43;13452:18;;;;13445:34;;;1068:51:5;;;;;;;;;;13285:18:6;;;;1068:51:5;;;;;;;-1:-1:-1;;;;;1068:51:5;-1:-1:-1;;;1068:51:5;;;1044:85;;-1:-1:-1;;;;1044:10:5;;;;:85;;1068:51;1044:85;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1008:121;;;;1160:7;:57;;;;-1:-1:-1;1172:11:5;;:16;;:44;;;1203:4;1192:24;;;;;;;;;;;;:::i;:::-;1139:140;;;;-1:-1:-1;;;1139:140:5;;13692:2:6;1139:140:5;;;13674:21:6;13731:2;13711:18;;;13704:30;13770:34;13750:18;;;13743:62;-1:-1:-1;;;13821:18:6;;;13814:34;13865:19;;1139:140:5;13490:400:6;1139:140:5;998:288;;869:417;;;;:::o;15377:446:1:-;15473:5;;:30;;-1:-1:-1;;;15473:30:1;;15454:16;;-1:-1:-1;;;;;15473:5:1;;:15;;:30;;15497:4;;15473:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15454:49;;15529:8;15518:7;:19;15514:303;;15558:10;;-1:-1:-1;;;15558:10:1;;;;15557:11;:33;;;;-1:-1:-1;15572:13:1;;:18;;15557:33;15553:94;;;15610:22;15630:1;15610:19;:22::i;:::-;15696:5;;15660:58;;-1:-1:-1;;;;;15696:5:1;15704:3;15709:8;15660:27;:58::i;:::-;15444:379;15377:446;;:::o;15514:303::-;15785:5;;15749:57;;-1:-1:-1;;;;;15785:5:1;15793:3;15798:7;15749:27;:57::i;414:216:4:-;530:7;565:12;557:6;;;;549:29;;;;-1:-1:-1;;;549:29:4;;;;;;;;:::i;:::-;-1:-1:-1;588:9:4;600:5;604:1;600;:5;:::i;:::-;588:17;414:216;-1:-1:-1;;;;;414:216:4:o;1018:215::-;1134:7;1168:12;1161:5;1153:28;;;;-1:-1:-1;;;1153:28:4;;;;;;;;:::i;:::-;-1:-1:-1;1191:9:4;1203:5;1207:1;1203;:5;:::i;196:180:6:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:6;;196:180;-1:-1:-1;196:180:6:o;1019:173::-;1087:20;;-1:-1:-1;;;;;1136:31:6;;1126:42;;1116:70;;1182:1;1179;1172:12;1116:70;1019:173;;;:::o;1197:254::-;1265:6;1273;1326:2;1314:9;1305:7;1301:23;1297:32;1294:52;;;1342:1;1339;1332:12;1294:52;1378:9;1365:23;1355:33;;1407:38;1441:2;1430:9;1426:18;1407:38;:::i;:::-;1397:48;;1197:254;;;;;:::o;1648:203::-;-1:-1:-1;;;;;1812:32:6;;;;1794:51;;1782:2;1767:18;;1648:203::o;1856:248::-;1924:6;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;-1:-1:-1;;2024:23:6;;;2094:2;2079:18;;;2066:32;;-1:-1:-1;1856:248:6:o;2109:118::-;2195:5;2188:13;2181:21;2174:5;2171:32;2161:60;;2217:1;2214;2207:12;2232:515;2324:6;2332;2340;2348;2356;2409:3;2397:9;2388:7;2384:23;2380:33;2377:53;;;2426:1;2423;2416:12;2377:53;2462:9;2449:23;2439:33;;2519:2;2508:9;2504:18;2491:32;2481:42;;2570:2;2559:9;2555:18;2542:32;2532:42;;2621:2;2610:9;2606:18;2593:32;2583:42;;2675:3;2664:9;2660:19;2647:33;2689:28;2711:5;2689:28;:::i;:::-;2736:5;2726:15;;;2232:515;;;;;;;;:::o;2752:186::-;2811:6;2864:2;2852:9;2843:7;2839:23;2835:32;2832:52;;;2880:1;2877;2870:12;2832:52;2903:29;2922:9;2903:29;:::i;3339:521::-;3431:6;3439;3447;3455;3463;3516:3;3504:9;3495:7;3491:23;3487:33;3484:53;;;3533:1;3530;3523:12;3484:53;3569:9;3556:23;3546:33;;3598:38;3632:2;3621:9;3617:18;3598:38;:::i;:::-;3588:48;;3683:2;3672:9;3668:18;3655:32;3645:42;;3734:2;3723:9;3719:18;3706:32;3696:42;;3788:3;3777:9;3773:19;3760:33;3802:28;3824:5;3802:28;:::i;4086:343::-;4288:2;4270:21;;;4327:2;4307:18;;;4300:30;-1:-1:-1;;;4361:2:6;4346:18;;4339:49;4420:2;4405:18;;4086:343::o;4434:355::-;4636:2;4618:21;;;4675:2;4655:18;;;4648:30;4714:33;4709:2;4694:18;;4687:61;4780:2;4765:18;;4434:355::o;4794:127::-;4855:10;4850:3;4846:20;4843:1;4836:31;4886:4;4883:1;4876:15;4910:4;4907:1;4900:15;6361:127;6422:10;6417:3;6413:20;6410:1;6403:31;6453:4;6450:1;6443:15;6477:4;6474:1;6467:15;6493:135;6532:3;-1:-1:-1;;6553:17:6;;6550:43;;;6573:18;;:::i;:::-;-1:-1:-1;6620:1:6;6609:13;;6493:135::o;7334:304::-;-1:-1:-1;;;;;7564:15:6;;;7546:34;;7616:15;;7611:2;7596:18;;7589:43;7496:2;7481:18;;7334:304::o;8344:184::-;8414:6;8467:2;8455:9;8446:7;8442:23;8438:32;8435:52;;;8483:1;8480;8473:12;8435:52;-1:-1:-1;8506:16:6;;8344:184;-1:-1:-1;8344:184:6:o;10393:274::-;-1:-1:-1;;;;;10585:32:6;;;;10567:51;;10649:2;10634:18;;10627:34;10555:2;10540:18;;10393:274::o;10672:245::-;10739:6;10792:2;10780:9;10771:7;10767:23;10763:32;10760:52;;;10808:1;10805;10798:12;10760:52;10840:9;10834:16;10859:28;10881:5;10859:28;:::i;10922:258::-;10994:1;11004:113;11018:6;11015:1;11012:13;11004:113;;;11094:11;;;11088:18;11075:11;;;11068:39;11040:2;11033:10;11004:113;;;11135:6;11132:1;11129:13;11126:48;;;-1:-1:-1;;11170:1:6;11152:16;;11145:27;10922:258::o;11185:274::-;11314:3;11352:6;11346:13;11368:53;11414:6;11409:3;11402:4;11394:6;11390:17;11368:53;:::i;:::-;11437:16;;;;;11185:274;-1:-1:-1;;11185:274:6:o;11824:168::-;11864:7;11930:1;11926;11922:6;11918:14;11915:1;11912:21;11907:1;11900:9;11893:17;11889:45;11886:71;;;11937:18;;:::i;:::-;-1:-1:-1;11977:9:6;;11824:168::o;11997:217::-;12037:1;12063;12053:132;;12107:10;12102:3;12098:20;12095:1;12088:31;12142:4;12139:1;12132:15;12170:4;12167:1;12160:15;12053:132;-1:-1:-1;12199:9:6;;11997:217::o;12621:128::-;12661:3;12692:1;12688:6;12685:1;12682:13;12679:39;;;12698:18;;:::i;:::-;-1:-1:-1;12734:9:6;;12621:128::o;13895:383::-;14044:2;14033:9;14026:21;14007:4;14076:6;14070:13;14119:6;14114:2;14103:9;14099:18;14092:34;14135:66;14194:6;14189:2;14178:9;14174:18;14169:2;14161:6;14157:15;14135:66;:::i;:::-;14262:2;14241:15;-1:-1:-1;;14237:29:6;14222:45;;;;14269:2;14218:54;;13895:383;-1:-1:-1;;13895:383:6:o;14283:125::-;14323:4;14351:1;14348;14345:8;14342:34;;;14356:18;;:::i;:::-;-1:-1:-1;14393:9:6;;14283:125::o
Swarm Source
ipfs://058ddc8b371bf9540b25895e82894c1b542251ebbb3e086e208ff6566204f758
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.