More Info
Private Name Tags
ContractCreator
Latest 12 from a total of 12 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 12942584 | 1144 days ago | IN | 0 ETH | 0.000871 | ||||
Approve | 12942584 | 1144 days ago | IN | 0 ETH | 0.0009581 | ||||
Emergency Save L... | 12690852 | 1184 days ago | IN | 0 ETH | 0.00110556 | ||||
Emergency Save L... | 12690852 | 1184 days ago | IN | 0 ETH | 0.00208886 | ||||
Set Farm Rewards... | 12690769 | 1184 days ago | IN | 0 ETH | 0.00294606 | ||||
Set Farm Rewards... | 12690735 | 1184 days ago | IN | 0 ETH | 0.00275807 | ||||
Farm | 12690475 | 1184 days ago | IN | 0 ETH | 0.00394138 | ||||
Set Farm Rewards | 12690381 | 1184 days ago | IN | 0 ETH | 0.00240255 | ||||
Set Farm Rewards... | 12686361 | 1184 days ago | IN | 0 ETH | 0.00243478 | ||||
0x60806040 | 12678580 | 1186 days ago | IN | 0 ETH | 0.08773056 | ||||
Approve | 12244625 | 1253 days ago | IN | 0 ETH | 0.00158088 | ||||
Transfer | 12119484 | 1272 days ago | IN | 0.6 ETH | 0.001974 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GoldFarmFaaS
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-21 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.4; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers . */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function ceil(uint a, uint m) internal pure returns (uint r) { return (a + m - 1) / m * m; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length 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, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on 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; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } abstract contract IRewardDistributionRecipient is Ownable { address rewardDistribution; modifier onlyRewardDistribution() { require(_msgSender() == rewardDistribution, "Caller is not reward distribution"); _; } function setRewardDistributionAdmin(address _rewardDistribution) internal { require(rewardDistribution == address(0), "Reward distribution Admin already set"); rewardDistribution = _rewardDistribution; } function updateRewardDistributionAdmin(address _rewardDistribution) public onlyOwner { require(rewardDistribution == address(0), "Reward distribution Admin already set"); rewardDistribution = _rewardDistribution; } } contract GoldFarmFaaS is IRewardDistributionRecipient, ReentrancyGuard { using SafeERC20 for IERC20; using SafeMath for uint256; using Address for address; IERC20 public rewardToken;// FEGtoken BSC20 IERC20 public rewardToken1;// GoldFarm BSC20 IERC20 public lpToken; // Direwolftoken.com BSC20 address public devAddy = 0xdaC47d05e1aAa9Bd4DA120248E8e0d7480365CFB;//collects pool use fee uint256 public devtxfee = 1; //Fee for pool use, sent to GOLD farming pool uint256 public txfee = 0; //Amount of frictionless rewards of the LP token uint256 public duration = 90 days; uint256 public duration1 = 90 days; bool public perform = true; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 public periodFinish1 = 0; uint256 public rewardRate1 = 0; uint256 public lastUpdateTime1; uint256 public rewardPerTokenStored1; mapping(address => uint256) public userRewardPerTokenPaid1; mapping(address => uint256) public rewards1; mapping(address => uint) public farmTime; bool public farmBreaker = false; // farm can be lock by admin,, default unlocked type=0 bool public rewardBreaker = false; // getreward can be lock by admin,, default unlocked type=1 bool public reward1Breaker = false; // getreward1 can be lock by admin,, default unlocked type=2 bool public withdrawBreaker = false; // withdraw can be lock by admin,, default unlocked type=3 uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => uint256) public lpTokenReward; event RewardAdded(uint256 reward); event Farmed(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); address[] public farmers; struct USER{ bool initialized; } mapping(address => USER) stakers; constructor(address _lpToken, address _rewardToken, address _rewardToken1) { rewardToken = IERC20(_rewardToken); rewardToken1 = IERC20(_rewardToken1); lpToken = IERC20(_lpToken); setRewardDistributionAdmin(msg.sender); } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } modifier updateReward1(address account) { rewardPerTokenStored1 = rewardPerToken1(); lastUpdateTime1 = lastTimeRewardApplicable1(); if (account != address(0)) { rewards1[account] = earned1(account); userRewardPerTokenPaid1[account] = rewardPerTokenStored1; } _; } modifier noContract(address account) { require(Address.isContract(account) == false, "Contracts are not allowed to interact with the farm"); _; } function setdevAddy(address _addy) public onlyOwner { require(_addy != address(0), " Setting 0 as Addy "); devAddy = _addy; } function setBreaker(bool _breaker, uint256 _type) external onlyOwner { if(_type==0){ farmBreaker =_breaker; } else if(_type==1){ rewardBreaker=_breaker; } else if(_type==2){ reward1Breaker=_breaker; }else if(_type==3){ withdrawBreaker=_breaker; } } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function recoverLostTokensAfterFarmExpired(IERC20 _token, uint256 amount) external onlyOwner { // Recover lost tokens can only be used after farming duration expires require(duration < block.timestamp, "Cannot use if farm is live"); _token.safeTransfer(owner(), amount); } receive() external payable { // Prevent ETH from being sent to the farming contract revert(); } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function lastTimeRewardApplicable1() public view returns (uint256) { return Math.min(block.timestamp, periodFinish1); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e9) .div(totalSupply()) ); } function rewardPerToken1() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored1; } return rewardPerTokenStored1.add( lastTimeRewardApplicable1() .sub(lastUpdateTime1) .mul(rewardRate1) .mul(1e18) .div(totalSupply()) ); } function earned(address account) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e9) .add(rewards[account]); } function earned1(address account) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken1().sub(userRewardPerTokenPaid1[account])) .div(1e18) .add(rewards1[account]); } function isStakeholder(address _address) public view returns(bool) { if(stakers[_address].initialized) return true; else return false; } function addStakeholder(address _stakeholder) internal { (bool _isStakeholder) = isStakeholder(_stakeholder); if(!_isStakeholder) { farmTime[msg.sender] = block.timestamp; stakers[_stakeholder].initialized = true; } } function farm(uint256 amount) external updateReward(msg.sender) updateReward1(msg.sender) noContract(msg.sender) nonReentrant { require(farmBreaker == false, "Admin Restricted function temporarily 0"); require(amount > 0, "Cannot farm nothing"); lpToken.safeTransferFrom(msg.sender, address(this), amount); uint256 devtax = amount.mul(devtxfee).div(100); uint256 _txfee = amount.mul(txfee).div(100); lpToken.safeTransfer(address(devAddy), devtax); uint256 finalAmount = amount.sub(_txfee).sub(devtax); _totalSupply = _totalSupply.add(finalAmount); _balances[msg.sender] = _balances[msg.sender].add(finalAmount); addStakeholder(msg.sender); emit Farmed(msg.sender,finalAmount); } function withdraw(uint256 amount) public updateReward(msg.sender) updateReward1(msg.sender) noContract(msg.sender) nonReentrant { require(withdrawBreaker == false, "Admin Restricted function temporarily 3"); require(amount > 0, "Cannot withdraw nothing"); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); lpToken.safeTransfer(msg.sender, amount); if( _balances[msg.sender] == 0) { stakers[msg.sender].initialized = false; } emit Withdrawn(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); ClaimLPReward(); getReward(); getReward1(); } function getReward() public updateReward(msg.sender) noContract(msg.sender) { require(rewardBreaker == false, "Admin Restricted function temporarily 1"); uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; rewardToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function getReward1() public updateReward1(msg.sender) noContract(msg.sender) { require(reward1Breaker == false, "Admin Restricted function temporarily 2"); uint256 reward1 = earned1(msg.sender); if (reward1 > 0) { rewards1[msg.sender] = 0; rewardToken1.safeTransfer(msg.sender, reward1); emit RewardPaid(msg.sender, reward1); } } function setFarmRewards(uint256 reward, uint256 _duration) public onlyRewardDistribution nonReentrant updateReward(address(0)) { require(_duration > 0, "Duration must not be 0"); if(rewardRate.mul(duration) <= rewardToken.balanceOf(address(this))){ duration = _duration.mul(1 days); if (block.timestamp >= periodFinish) { rewardRate = reward.div(duration); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(duration); } lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(duration); require(rewardRate.mul(duration) <= rewardToken.balanceOf(address(this)), "Insufficient reward"); emit RewardAdded(reward); } } function setFarmRewards1(uint256 _reward1, uint256 _duration2) public onlyRewardDistribution nonReentrant updateReward1(address(0)) { require(_duration2 > 0, "Duration must not be 0"); if(rewardRate1.mul(duration1) <= rewardToken1.balanceOf(address(this))){ duration1 = _duration2.mul(1 days); if (block.timestamp >= periodFinish1) { rewardRate1 = _reward1.div(duration1); } else { uint256 remaining1 = periodFinish1.sub(block.timestamp); uint256 leftover1 = remaining1.mul(rewardRate1); rewardRate1 = _reward1.add(leftover1).div(duration1); } lastUpdateTime1 = block.timestamp; periodFinish1 = block.timestamp.add(duration1); require(rewardRate1.mul(duration1) <= rewardToken1.balanceOf(address(this)), "Insufficient reward"); emit RewardAdded(_reward1); } } uint256 public aclaimed = 0; function DisributeLPTxFunds1() public { // distribute any TX rewards tokens sent to pool for tokens with TX rewards uint256 balanceOfContract = lpToken.balanceOf(address(this)); uint256 transferToAmount = balanceOfContract.sub(_totalSupply.add(aclaimed)); aclaimed = aclaimed.add(transferToAmount); if(transferToAmount > 0 ){ for (uint256 s = 0; s < farmers.length; s++){ address abc = farmers[s]; uint256 blnc = balanceOf(abc); if(blnc > 0) { uint256 userShare = (transferToAmount).mul(blnc).div(_totalSupply); lpTokenReward[abc] = lpTokenReward[abc].add(userShare); emit RewardAdded(userShare); } } } } function ClaimAllRewards() public { ClaimLPReward(); getReward(); getReward1(); if(perform==true){ DisributeLPTxFunds1();} } function onePercent(uint256 _tokens) private pure returns (uint256){ uint256 roundValue = _tokens.ceil(100); uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2)); return onePercentofTokens; } function emergencySaveLostTokens(address _token) external onlyOwner { require(IERC20(_token).transfer(owner(), IERC20(_token).balanceOf(address(this))), "Error in retrieving tokens"); } function ClaimLPReward() public { address _addy = msg.sender; if(lpTokenReward[_addy] > 0 ){ aclaimed = aclaimed.sub(lpTokenReward[_addy]); lpToken.safeTransfer(msg.sender, lpTokenReward[_addy]); lpTokenReward[_addy] = 0; } } function changePerform(bool _bool) external onlyOwner{ perform = _bool; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"},{"internalType":"address","name":"_rewardToken1","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Farmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"ClaimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClaimLPReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DisributeLPTxFunds1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"aclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devtxfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration1","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":"address","name":"account","type":"address"}],"name":"earned1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"emergencySaveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"farm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farmBreaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"farmTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"farmers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpTokenReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverLostTokensAfterFarmExpired","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward1Breaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardBreaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored1","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":"rewardRate1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_breaker","type":"bool"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"setBreaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setFarmRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reward1","type":"uint256"},{"internalType":"uint256","name":"_duration2","type":"uint256"}],"name":"setFarmRewards1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addy","type":"address"}],"name":"setdevAddy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"updateRewardDistributionAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawBreaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600680546001600160a01b03191673dac47d05e1aaa9bd4da120248e8e0d7480365cfb17905560016007819055600060088190556276a7006009819055600a55600b805460ff1916909217909155600c819055600d819055601281905560138190556019805463ffffffff19169055601f553480156200008357600080fd5b5060405162002c7d38038062002c7d833981016040819052620000a691620001e6565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600255600380546001600160a01b038085166001600160a01b03199283161790925560048054848416908316179055600580549286169290911691909117905562000132336200013b565b5050506200022f565b6001546001600160a01b031615620001a75760405162461bcd60e51b815260206004820152602560248201527f52657761726420646973747269627574696f6e2041646d696e20616c726561646044820152641e481cd95d60da1b606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001e157600080fd5b919050565b600080600060608486031215620001fb578283fd5b6200020684620001c9565b92506200021660208501620001c9565b91506200022660408501620001c9565b90509250925092565b612a3e806200023f6000396000f3fe6080604052600436106103795760003560e01c8063715018a6116101d1578063bd994fc811610102578063e9fad8ee116100a0578063ef037b901161006f578063ef037b90146109a8578063f2fde38b146109c8578063f7c618c1146109e8578063fe271f5f14610a0857600080fd5b8063e9fad8ee14610948578063ebb9ab2a1461095d578063ebe2b12b14610972578063ed6a1c4f1461098857600080fd5b8063c8f33c91116100dc578063c8f33c91146108f1578063cd3daf9d14610907578063df136d651461091c578063e89c31691461093257600080fd5b8063bd994fc81461088e578063bf6d63da146108a4578063c3f344a8146108c457600080fd5b80638da5cb5b1161016f578063a1ec508a11610149578063a1ec508a14610828578063a68ca7111461083e578063a8d598a41461085e578063b147f40c1461087457600080fd5b80638da5cb5b146107da5780638f864bb0146107f8578063a1568c6e1461081257600080fd5b80638698c211116101ab5780638698c211146107565780638a75317b146107775780638afdd6691461078d5780638b876347146107ad57600080fd5b8063715018a6146107165780637b0a47ee1461072b57806380faa57d1461074157600080fd5b80633ed38cc6116102ab57806357e885b911610249578063674d83c211610223578063674d83c2146106735780636a231b03146106935780636f28d688146106c057806370a08231146106e057600080fd5b806357e885b9146106285780635fcbd2851461063e5780636426f1341461065e57600080fd5b80634e8b0137116102855780634e8b01371461059b5780634f49e655146105bb578063538a85a1146105db57806354df47ce146105fb57600080fd5b80633ed38cc61461055057806345bde80014610566578063462de1c61461057b57600080fd5b806322ff6acd116103185780632e1a7d4d116102f25780632e1a7d4d146104db5780632f3fadea146104fb57806331c2b53d1461051b5780633d18b9121461053b57600080fd5b806322ff6acd1461045f578063295707781461048e5780632a9d84af146104c657600080fd5b806318160ddd1161035457806318160ddd146103fe578063196dc32e146104135780631a77398f1461042a578063200681391461043f57600080fd5b80628cc262146103885780630700037d146103bb5780630fb5a6b4146103e857600080fd5b3661038357600080fd5b600080fd5b34801561039457600080fd5b506103a86103a33660046126be565b610a35565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103a86103d63660046126be565b60116020526000908152604090205481565b3480156103f457600080fd5b506103a860095481565b34801561040a57600080fd5b50601a546103a8565b34801561041f57600080fd5b50610428610ab0565b005b34801561043657600080fd5b506103a8610b34565b34801561044b57600080fd5b5061042861045a3660046126be565b610b87565b34801561046b57600080fd5b5060195461047e90610100900460ff1681565b60405190151581526020016103b2565b34801561049a57600080fd5b506006546104ae906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b3480156104d257600080fd5b506103a8610d1c565b3480156104e757600080fd5b506104286104f636600461275a565b610d2a565b34801561050757600080fd5b506104286105163660046126be565b610f90565b34801561052757600080fd5b5061042861053636600461273d565b611043565b34801561054757600080fd5b506104286110e8565b34801561055c57600080fd5b506103a860085481565b34801561057257600080fd5b50610428611230565b34801561058757600080fd5b506103a86105963660046126be565b6113f7565b3480156105a757600080fd5b506104286105b636600461278a565b61143e565b3480156105c757600080fd5b506104286105d63660046126da565b611761565b3480156105e757600080fd5b506104286105f636600461275a565b61179e565b34801561060757600080fd5b506103a86106163660046126be565b601c6020526000908152604090205481565b34801561063457600080fd5b506103a860075481565b34801561064a57600080fd5b506005546104ae906001600160a01b031681565b34801561066a57600080fd5b50610428611a3f565b34801561067f57600080fd5b5061042861068e366004612712565b611a71565b34801561069f57600080fd5b506103a86106ae3660046126be565b60176020526000908152604090205481565b3480156106cc57600080fd5b506004546104ae906001600160a01b031681565b3480156106ec57600080fd5b506103a86106fb3660046126be565b6001600160a01b03166000908152601b602052604090205490565b34801561072257600080fd5b50610428611b20565b34801561073757600080fd5b506103a8600d5481565b34801561074d57600080fd5b506103a8611b94565b34801561076257600080fd5b5060195461047e906301000000900460ff1681565b34801561078357600080fd5b506103a860145481565b34801561079957600080fd5b506104ae6107a836600461275a565b611ba2565b3480156107b957600080fd5b506103a86107c83660046126be565b60106020526000908152604090205481565b3480156107e657600080fd5b506000546001600160a01b03166104ae565b34801561080457600080fd5b5060195461047e9060ff1681565b34801561081e57600080fd5b506103a860125481565b34801561083457600080fd5b506103a860135481565b34801561084a57600080fd5b5061042861085936600461278a565b611bcc565b34801561086a57600080fd5b506103a860155481565b34801561088057600080fd5b50600b5461047e9060ff1681565b34801561089a57600080fd5b506103a8600a5481565b3480156108b057600080fd5b506104286108bf3660046126be565b611e6b565b3480156108d057600080fd5b506103a86108df3660046126be565b60186020526000908152604090205481565b3480156108fd57600080fd5b506103a8600e5481565b34801561091357600080fd5b506103a8611f03565b34801561092857600080fd5b506103a8600f5481565b34801561093e57600080fd5b506103a8601f5481565b34801561095457600080fd5b50610428611f4d565b34801561096957600080fd5b50610428611f7a565b34801561097e57600080fd5b506103a8600c5481565b34801561099457600080fd5b5060195461047e9062010000900460ff1681565b3480156109b457600080fd5b5061047e6109c33660046126be565b612088565b3480156109d457600080fd5b506104286109e33660046126be565b6120b9565b3480156109f457600080fd5b506003546104ae906001600160a01b031681565b348015610a1457600080fd5b506103a8610a233660046126be565b60166020526000908152604090205481565b6001600160a01b0381166000908152601160209081526040808320546010909252822054610aaa9190610aa490633b9aca0090610a9e90610a7e90610a78611f03565b906121a3565b6001600160a01b0388166000908152601b60205260409020545b906121ec565b9061226b565b906122ad565b92915050565b336000818152601c602052604090205415610b31576001600160a01b0381166000908152601c6020526040902054601f54610aea916121a3565b601f556001600160a01b038082166000908152601c6020526040902054600554610b17921690339061230c565b6001600160a01b0381166000908152601c60205260408120555b50565b6000610b3f601a5490565b610b4a575060155490565b610b82610b79610b59601a5490565b610a9e670de0b6b3a7640000610a98601354610a98601454610a78610d1c565b601554906122ad565b905090565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610bb1906127fa565b60405180910390fd5b806001600160a01b031663a9059cbb610bdb6000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b158015610c1a57600080fd5b505afa158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c529190612772565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd091906126f6565b610b315760405162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e730000000000006044820152606401610bb1565b6000610b824260125461236f565b33610d33611f03565b600f55610d3e611b94565b600e556001600160a01b03811615610d8557610d5981610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33610d8e610b34565b601555610d99610d1c565b6014556001600160a01b03811615610de057610db4816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b15610e005760405162461bcd60e51b8152600401610bb19061282f565b600280541415610e225760405162461bcd60e51b8152600401610bb1906128c3565b600280556019546301000000900460ff1615610e7e5760405162461bcd60e51b815260206004820152602760248201526000805160206129e98339815191526044820152666172696c79203360c81b6064820152608401610bb1565b60008411610ece5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207769746864726177206e6f7468696e670000000000000000006044820152606401610bb1565b601a54610edb90856121a3565b601a55336000908152601b6020526040902054610ef890856121a3565b336000818152601b6020526040902091909155600554610f24916001600160a01b03909116908661230c565b336000908152601b6020526040902054610f5057336000908152601e60205260409020805460ff191690555b60405184815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a2505060016002555050565b6000546001600160a01b03163314610fba5760405162461bcd60e51b8152600401610bb1906127fa565b6001546001600160a01b0316156110215760405162461bcd60e51b815260206004820152602560248201527f52657761726420646973747269627574696f6e2041646d696e20616c726561646044820152641e481cd95d60da1b6064820152608401610bb1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461106d5760405162461bcd60e51b8152600401610bb1906127fa565b42600954106110be5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420757365206966206661726d206973206c6976650000000000006044820152606401610bb1565b6110e46110d36000546001600160a01b031690565b6001600160a01b038416908361230c565b5050565b336110f1611f03565b600f556110fc611b94565b600e556001600160a01b038116156111435761111781610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33803b156111635760405162461bcd60e51b8152600401610bb19061282f565b601954610100900460ff16156111b95760405162461bcd60e51b815260206004820152602760248201526000805160206129e98339815191526044820152666172696c79203160c81b6064820152608401610bb1565b60006111c433610a35565b9050801561122b57336000818152601160205260408120556003546111f5916001600160a01b03909116908361230c565b60405181815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a25b505050565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612772565b905060006112d16112ca601f54601a546122ad90919063ffffffff16565b83906121a3565b601f549091506112e190826122ad565b601f5580156110e45760005b601d5481101561122b576000601d828154811061131a57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546001600160a01b0316915061134f826001600160a01b03166000908152601b602052604090205490565b905080156113e257601a5460009061136b90610a9e87856121ec565b6001600160a01b0384166000908152601c602052604090205490915061139190826122ad565b6001600160a01b0384166000908152601c602090815260409182902092909255518281527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d910160405180910390a1505b505080806113ef90612994565b9150506112ed565b6001600160a01b0381166000908152601760209081526040808320546016909252822054610aaa9190610aa490670de0b6b3a764000090610a9e90610a7e90610a78610b34565b6001546001600160a01b0316336001600160a01b0316146114715760405162461bcd60e51b8152600401610bb190612882565b6002805414156114935760405162461bcd60e51b8152600401610bb1906128c3565b6002805560006114a1610b34565b6015556114ac610d1c565b6014556001600160a01b038116156114f3576114c7816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b6000821161153c5760405162461bcd60e51b815260206004820152601660248201527504475726174696f6e206d757374206e6f7420626520360541b6044820152606401610bb1565b600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a082319060240160206040518083038186803b15801561158057600080fd5b505afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190612772565b600a546013546115c7916121ec565b11611757576115d982620151806121ec565b600a5560125442106115fb57600a546115f390849061226b565b60135561163e565b60125460009061160b90426121a3565b90506000611624601354836121ec90919063ffffffff16565b600a5490915061163890610a9e87846122ad565b60135550505b426014819055600a5461165191906122ad565b601255600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a082319060240160206040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190612772565b600a546013546116df916121ec565b11156117235760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081c995dd85c99606a1b6044820152606401610bb1565b6040518381527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9060200160405180910390a15b5050600160025550565b6000546001600160a01b0316331461178b5760405162461bcd60e51b8152600401610bb1906127fa565b600b805460ff1916911515919091179055565b336117a7611f03565b600f556117b2611b94565b600e556001600160a01b038116156117f9576117cd81610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33611802610b34565b60155561180d610d1c565b6014556001600160a01b0381161561185457611828816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b156118745760405162461bcd60e51b8152600401610bb19061282f565b6002805414156118965760405162461bcd60e51b8152600401610bb1906128c3565b6002805560195460ff16156118eb5760405162461bcd60e51b815260206004820152602760248201526000805160206129e983398151915260448201526606172696c7920360cc1b6064820152608401610bb1565b600084116119315760405162461bcd60e51b815260206004820152601360248201527243616e6e6f74206661726d206e6f7468696e6760681b6044820152606401610bb1565b600554611949906001600160a01b0316333087612385565b60006119656064610a9e600754886121ec90919063ffffffff16565b905060006119836064610a9e600854896121ec90919063ffffffff16565b6006546005549192506119a3916001600160a01b0390811691168461230c565b60006119b383610a7889856121a3565b601a549091506119c390826122ad565b601a55336000908152601b60205260409020546119e090826122ad565b336000818152601b60205260409020919091556119fc906123c3565b60405181815233907f78b5171f3125ee7fa9cda18c8fa6bdfdd147883c0abd8cae698c883b49a192bb9060200160405180910390a2505060016002555050505050565b611a47610ab0565b611a4f6110e8565b611a57611f7a565b600b5460ff16151560011415611a6f57611a6f611230565b565b6000546001600160a01b03163314611a9b5760405162461bcd60e51b8152600401610bb1906127fa565b80611ab4576019805483151560ff199091161790555050565b8060011415611ad657601980548315156101000261ff00199091161790555050565b8060021415611afa5760198054831515620100000262ff0000199091161790555050565b80600314156110e4576019805483151563010000000263ff000000199091161790555050565b6000546001600160a01b03163314611b4a5760405162461bcd60e51b8152600401610bb1906127fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610b8242600c5461236f565b601d8181548110611bb257600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b0316336001600160a01b031614611bff5760405162461bcd60e51b8152600401610bb190612882565b600280541415611c215760405162461bcd60e51b8152600401610bb1906128c3565b600280556000611c2f611f03565b600f55611c3a611b94565b600e556001600160a01b03811615611c8157611c5581610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b60008211611cca5760405162461bcd60e51b815260206004820152601660248201527504475726174696f6e206d757374206e6f7420626520360541b6044820152606401610bb1565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612772565b600954600d54611d54916121ec565b1161175757611d6682620151806121ec565b600955600c544210611d8857600954611d8090849061226b565b600d55611dcb565b600c54600090611d9890426121a3565b90506000611db1600d54836121ec90919063ffffffff16565b600954909150611dc590610a9e87846122ad565b600d5550505b42600e819055600954611dde91906122ad565b600c556003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190612772565b600954600d546116df916121ec565b6000546001600160a01b03163314611e955760405162461bcd60e51b8152600401610bb1906127fa565b6001600160a01b038116611ee15760405162461bcd60e51b815260206004820152601360248201527201029b2ba3a34b73390181030b99020b2323c9606d1b6044820152606401610bb1565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000611f0e601a5490565b611f195750600f5490565b610b82611f44611f28601a5490565b610a9e633b9aca00610a98600d54610a98600e54610a78611b94565b600f54906122ad565b336000908152601b6020526040902054611f6690610d2a565b611f6e610ab0565b611f766110e8565b611a6f5b33611f83610b34565b601555611f8e610d1c565b6014556001600160a01b03811615611fd557611fa9816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b15611ff55760405162461bcd60e51b8152600401610bb19061282f565b60195462010000900460ff161561204c5760405162461bcd60e51b815260206004820152602760248201526000805160206129e983398151915260448201526630b934b63c901960c91b6064820152608401610bb1565b6000612057336113f7565b9050801561122b57336000818152601760205260408120556004546111f5916001600160a01b03909116908361230c565b6001600160a01b0381166000908152601e602052604081205460ff16156120b157506001919050565b506000919050565b6000546001600160a01b031633146120e35760405162461bcd60e51b8152600401610bb1906127fa565b6001600160a01b0381166121485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006121e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061240c565b9392505050565b6000826121fb57506000610aaa565b60006122078385612932565b9050826122148583612912565b146121e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb1565b60006121e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612446565b6000806122ba83856128fa565b9050838110156121e55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb1565b6040516001600160a01b03831660248201526044810182905261122b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612474565b600081831061237e57816121e5565b5090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526123bd9085906323b872dd60e01b90608401612338565b50505050565b60006123ce82612088565b9050806110e4573360009081526018602090815260408083204290556001600160a01b0385168352601e9091529020805460ff191660011790555050565b600081848411156124305760405162461bcd60e51b8152600401610bb191906127c7565b50600061243d8486612951565b95945050505050565b600081836124675760405162461bcd60e51b8152600401610bb191906127c7565b50600061243d8486612912565b60006124c9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125469092919063ffffffff16565b80519091501561122b57808060200190518101906124e791906126f6565b61122b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bb1565b6060612555848460008561255d565b949350505050565b6060824710156125be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bb1565b843b61260c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bb1565b600080866001600160a01b0316858760405161262891906127ab565b60006040518083038185875af1925050503d8060008114612665576040519150601f19603f3d011682016040523d82523d6000602084013e61266a565b606091505b509150915061267a828286612685565b979650505050505050565b606083156126945750816121e5565b8251156126a45782518084602001fd5b8160405162461bcd60e51b8152600401610bb191906127c7565b6000602082840312156126cf578081fd5b81356121e5816129c5565b6000602082840312156126eb578081fd5b81356121e5816129da565b600060208284031215612707578081fd5b81516121e5816129da565b60008060408385031215612724578081fd5b823561272f816129da565b946020939093013593505050565b6000806040838503121561274f578182fd5b823561272f816129c5565b60006020828403121561276b578081fd5b5035919050565b600060208284031215612783578081fd5b5051919050565b6000806040838503121561279c578182fd5b50508035926020909101359150565b600082516127bd818460208701612968565b9190910192915050565b60208152600082518060208401526127e6816040850160208701612968565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f436f6e74726163747320617265206e6f7420616c6c6f77656420746f20696e746040820152726572616374207769746820746865206661726d60681b606082015260800190565b60208082526021908201527f43616c6c6572206973206e6f742072657761726420646973747269627574696f6040820152603760f91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000821982111561290d5761290d6129af565b500190565b60008261292d57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561294c5761294c6129af565b500290565b600082821015612963576129636129af565b500390565b60005b8381101561298357818101518382015260200161296b565b838111156123bd5750506000910152565b60006000198214156129a8576129a86129af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b3157600080fd5b8015158114610b3157600080fdfe41646d696e20526573747269637465642066756e6374696f6e2074656d706f72a26469706673582212200222fcdc36b84cdab5286191ccd858741b61fb8159b4cc13af3d34269189e43464736f6c63430008040033000000000000000000000000bdea5bb640dbfc4593809deec5cdb8f99b704cd2000000000000000000000000389999216860ab8e0175387a0c90e5c52522c945000000000000000000000000f1b8762a7fa8c244e36f7234edf40cfae24394e3
Deployed Bytecode
0x6080604052600436106103795760003560e01c8063715018a6116101d1578063bd994fc811610102578063e9fad8ee116100a0578063ef037b901161006f578063ef037b90146109a8578063f2fde38b146109c8578063f7c618c1146109e8578063fe271f5f14610a0857600080fd5b8063e9fad8ee14610948578063ebb9ab2a1461095d578063ebe2b12b14610972578063ed6a1c4f1461098857600080fd5b8063c8f33c91116100dc578063c8f33c91146108f1578063cd3daf9d14610907578063df136d651461091c578063e89c31691461093257600080fd5b8063bd994fc81461088e578063bf6d63da146108a4578063c3f344a8146108c457600080fd5b80638da5cb5b1161016f578063a1ec508a11610149578063a1ec508a14610828578063a68ca7111461083e578063a8d598a41461085e578063b147f40c1461087457600080fd5b80638da5cb5b146107da5780638f864bb0146107f8578063a1568c6e1461081257600080fd5b80638698c211116101ab5780638698c211146107565780638a75317b146107775780638afdd6691461078d5780638b876347146107ad57600080fd5b8063715018a6146107165780637b0a47ee1461072b57806380faa57d1461074157600080fd5b80633ed38cc6116102ab57806357e885b911610249578063674d83c211610223578063674d83c2146106735780636a231b03146106935780636f28d688146106c057806370a08231146106e057600080fd5b806357e885b9146106285780635fcbd2851461063e5780636426f1341461065e57600080fd5b80634e8b0137116102855780634e8b01371461059b5780634f49e655146105bb578063538a85a1146105db57806354df47ce146105fb57600080fd5b80633ed38cc61461055057806345bde80014610566578063462de1c61461057b57600080fd5b806322ff6acd116103185780632e1a7d4d116102f25780632e1a7d4d146104db5780632f3fadea146104fb57806331c2b53d1461051b5780633d18b9121461053b57600080fd5b806322ff6acd1461045f578063295707781461048e5780632a9d84af146104c657600080fd5b806318160ddd1161035457806318160ddd146103fe578063196dc32e146104135780631a77398f1461042a578063200681391461043f57600080fd5b80628cc262146103885780630700037d146103bb5780630fb5a6b4146103e857600080fd5b3661038357600080fd5b600080fd5b34801561039457600080fd5b506103a86103a33660046126be565b610a35565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103a86103d63660046126be565b60116020526000908152604090205481565b3480156103f457600080fd5b506103a860095481565b34801561040a57600080fd5b50601a546103a8565b34801561041f57600080fd5b50610428610ab0565b005b34801561043657600080fd5b506103a8610b34565b34801561044b57600080fd5b5061042861045a3660046126be565b610b87565b34801561046b57600080fd5b5060195461047e90610100900460ff1681565b60405190151581526020016103b2565b34801561049a57600080fd5b506006546104ae906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b3480156104d257600080fd5b506103a8610d1c565b3480156104e757600080fd5b506104286104f636600461275a565b610d2a565b34801561050757600080fd5b506104286105163660046126be565b610f90565b34801561052757600080fd5b5061042861053636600461273d565b611043565b34801561054757600080fd5b506104286110e8565b34801561055c57600080fd5b506103a860085481565b34801561057257600080fd5b50610428611230565b34801561058757600080fd5b506103a86105963660046126be565b6113f7565b3480156105a757600080fd5b506104286105b636600461278a565b61143e565b3480156105c757600080fd5b506104286105d63660046126da565b611761565b3480156105e757600080fd5b506104286105f636600461275a565b61179e565b34801561060757600080fd5b506103a86106163660046126be565b601c6020526000908152604090205481565b34801561063457600080fd5b506103a860075481565b34801561064a57600080fd5b506005546104ae906001600160a01b031681565b34801561066a57600080fd5b50610428611a3f565b34801561067f57600080fd5b5061042861068e366004612712565b611a71565b34801561069f57600080fd5b506103a86106ae3660046126be565b60176020526000908152604090205481565b3480156106cc57600080fd5b506004546104ae906001600160a01b031681565b3480156106ec57600080fd5b506103a86106fb3660046126be565b6001600160a01b03166000908152601b602052604090205490565b34801561072257600080fd5b50610428611b20565b34801561073757600080fd5b506103a8600d5481565b34801561074d57600080fd5b506103a8611b94565b34801561076257600080fd5b5060195461047e906301000000900460ff1681565b34801561078357600080fd5b506103a860145481565b34801561079957600080fd5b506104ae6107a836600461275a565b611ba2565b3480156107b957600080fd5b506103a86107c83660046126be565b60106020526000908152604090205481565b3480156107e657600080fd5b506000546001600160a01b03166104ae565b34801561080457600080fd5b5060195461047e9060ff1681565b34801561081e57600080fd5b506103a860125481565b34801561083457600080fd5b506103a860135481565b34801561084a57600080fd5b5061042861085936600461278a565b611bcc565b34801561086a57600080fd5b506103a860155481565b34801561088057600080fd5b50600b5461047e9060ff1681565b34801561089a57600080fd5b506103a8600a5481565b3480156108b057600080fd5b506104286108bf3660046126be565b611e6b565b3480156108d057600080fd5b506103a86108df3660046126be565b60186020526000908152604090205481565b3480156108fd57600080fd5b506103a8600e5481565b34801561091357600080fd5b506103a8611f03565b34801561092857600080fd5b506103a8600f5481565b34801561093e57600080fd5b506103a8601f5481565b34801561095457600080fd5b50610428611f4d565b34801561096957600080fd5b50610428611f7a565b34801561097e57600080fd5b506103a8600c5481565b34801561099457600080fd5b5060195461047e9062010000900460ff1681565b3480156109b457600080fd5b5061047e6109c33660046126be565b612088565b3480156109d457600080fd5b506104286109e33660046126be565b6120b9565b3480156109f457600080fd5b506003546104ae906001600160a01b031681565b348015610a1457600080fd5b506103a8610a233660046126be565b60166020526000908152604090205481565b6001600160a01b0381166000908152601160209081526040808320546010909252822054610aaa9190610aa490633b9aca0090610a9e90610a7e90610a78611f03565b906121a3565b6001600160a01b0388166000908152601b60205260409020545b906121ec565b9061226b565b906122ad565b92915050565b336000818152601c602052604090205415610b31576001600160a01b0381166000908152601c6020526040902054601f54610aea916121a3565b601f556001600160a01b038082166000908152601c6020526040902054600554610b17921690339061230c565b6001600160a01b0381166000908152601c60205260408120555b50565b6000610b3f601a5490565b610b4a575060155490565b610b82610b79610b59601a5490565b610a9e670de0b6b3a7640000610a98601354610a98601454610a78610d1c565b601554906122ad565b905090565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610bb1906127fa565b60405180910390fd5b806001600160a01b031663a9059cbb610bdb6000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b158015610c1a57600080fd5b505afa158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c529190612772565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd091906126f6565b610b315760405162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e730000000000006044820152606401610bb1565b6000610b824260125461236f565b33610d33611f03565b600f55610d3e611b94565b600e556001600160a01b03811615610d8557610d5981610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33610d8e610b34565b601555610d99610d1c565b6014556001600160a01b03811615610de057610db4816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b15610e005760405162461bcd60e51b8152600401610bb19061282f565b600280541415610e225760405162461bcd60e51b8152600401610bb1906128c3565b600280556019546301000000900460ff1615610e7e5760405162461bcd60e51b815260206004820152602760248201526000805160206129e98339815191526044820152666172696c79203360c81b6064820152608401610bb1565b60008411610ece5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207769746864726177206e6f7468696e670000000000000000006044820152606401610bb1565b601a54610edb90856121a3565b601a55336000908152601b6020526040902054610ef890856121a3565b336000818152601b6020526040902091909155600554610f24916001600160a01b03909116908661230c565b336000908152601b6020526040902054610f5057336000908152601e60205260409020805460ff191690555b60405184815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a2505060016002555050565b6000546001600160a01b03163314610fba5760405162461bcd60e51b8152600401610bb1906127fa565b6001546001600160a01b0316156110215760405162461bcd60e51b815260206004820152602560248201527f52657761726420646973747269627574696f6e2041646d696e20616c726561646044820152641e481cd95d60da1b6064820152608401610bb1565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461106d5760405162461bcd60e51b8152600401610bb1906127fa565b42600954106110be5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420757365206966206661726d206973206c6976650000000000006044820152606401610bb1565b6110e46110d36000546001600160a01b031690565b6001600160a01b038416908361230c565b5050565b336110f1611f03565b600f556110fc611b94565b600e556001600160a01b038116156111435761111781610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33803b156111635760405162461bcd60e51b8152600401610bb19061282f565b601954610100900460ff16156111b95760405162461bcd60e51b815260206004820152602760248201526000805160206129e98339815191526044820152666172696c79203160c81b6064820152608401610bb1565b60006111c433610a35565b9050801561122b57336000818152601160205260408120556003546111f5916001600160a01b03909116908361230c565b60405181815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a25b505050565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561127457600080fd5b505afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190612772565b905060006112d16112ca601f54601a546122ad90919063ffffffff16565b83906121a3565b601f549091506112e190826122ad565b601f5580156110e45760005b601d5481101561122b576000601d828154811061131a57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546001600160a01b0316915061134f826001600160a01b03166000908152601b602052604090205490565b905080156113e257601a5460009061136b90610a9e87856121ec565b6001600160a01b0384166000908152601c602052604090205490915061139190826122ad565b6001600160a01b0384166000908152601c602090815260409182902092909255518281527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d910160405180910390a1505b505080806113ef90612994565b9150506112ed565b6001600160a01b0381166000908152601760209081526040808320546016909252822054610aaa9190610aa490670de0b6b3a764000090610a9e90610a7e90610a78610b34565b6001546001600160a01b0316336001600160a01b0316146114715760405162461bcd60e51b8152600401610bb190612882565b6002805414156114935760405162461bcd60e51b8152600401610bb1906128c3565b6002805560006114a1610b34565b6015556114ac610d1c565b6014556001600160a01b038116156114f3576114c7816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b6000821161153c5760405162461bcd60e51b815260206004820152601660248201527504475726174696f6e206d757374206e6f7420626520360541b6044820152606401610bb1565b600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a082319060240160206040518083038186803b15801561158057600080fd5b505afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190612772565b600a546013546115c7916121ec565b11611757576115d982620151806121ec565b600a5560125442106115fb57600a546115f390849061226b565b60135561163e565b60125460009061160b90426121a3565b90506000611624601354836121ec90919063ffffffff16565b600a5490915061163890610a9e87846122ad565b60135550505b426014819055600a5461165191906122ad565b601255600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a082319060240160206040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190612772565b600a546013546116df916121ec565b11156117235760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081c995dd85c99606a1b6044820152606401610bb1565b6040518381527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9060200160405180910390a15b5050600160025550565b6000546001600160a01b0316331461178b5760405162461bcd60e51b8152600401610bb1906127fa565b600b805460ff1916911515919091179055565b336117a7611f03565b600f556117b2611b94565b600e556001600160a01b038116156117f9576117cd81610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b33611802610b34565b60155561180d610d1c565b6014556001600160a01b0381161561185457611828816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b156118745760405162461bcd60e51b8152600401610bb19061282f565b6002805414156118965760405162461bcd60e51b8152600401610bb1906128c3565b6002805560195460ff16156118eb5760405162461bcd60e51b815260206004820152602760248201526000805160206129e983398151915260448201526606172696c7920360cc1b6064820152608401610bb1565b600084116119315760405162461bcd60e51b815260206004820152601360248201527243616e6e6f74206661726d206e6f7468696e6760681b6044820152606401610bb1565b600554611949906001600160a01b0316333087612385565b60006119656064610a9e600754886121ec90919063ffffffff16565b905060006119836064610a9e600854896121ec90919063ffffffff16565b6006546005549192506119a3916001600160a01b0390811691168461230c565b60006119b383610a7889856121a3565b601a549091506119c390826122ad565b601a55336000908152601b60205260409020546119e090826122ad565b336000818152601b60205260409020919091556119fc906123c3565b60405181815233907f78b5171f3125ee7fa9cda18c8fa6bdfdd147883c0abd8cae698c883b49a192bb9060200160405180910390a2505060016002555050505050565b611a47610ab0565b611a4f6110e8565b611a57611f7a565b600b5460ff16151560011415611a6f57611a6f611230565b565b6000546001600160a01b03163314611a9b5760405162461bcd60e51b8152600401610bb1906127fa565b80611ab4576019805483151560ff199091161790555050565b8060011415611ad657601980548315156101000261ff00199091161790555050565b8060021415611afa5760198054831515620100000262ff0000199091161790555050565b80600314156110e4576019805483151563010000000263ff000000199091161790555050565b6000546001600160a01b03163314611b4a5760405162461bcd60e51b8152600401610bb1906127fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610b8242600c5461236f565b601d8181548110611bb257600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b0316336001600160a01b031614611bff5760405162461bcd60e51b8152600401610bb190612882565b600280541415611c215760405162461bcd60e51b8152600401610bb1906128c3565b600280556000611c2f611f03565b600f55611c3a611b94565b600e556001600160a01b03811615611c8157611c5581610a35565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b60008211611cca5760405162461bcd60e51b815260206004820152601660248201527504475726174696f6e206d757374206e6f7420626520360541b6044820152606401610bb1565b6003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612772565b600954600d54611d54916121ec565b1161175757611d6682620151806121ec565b600955600c544210611d8857600954611d8090849061226b565b600d55611dcb565b600c54600090611d9890426121a3565b90506000611db1600d54836121ec90919063ffffffff16565b600954909150611dc590610a9e87846122ad565b600d5550505b42600e819055600954611dde91906122ad565b600c556003546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611e2457600080fd5b505afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190612772565b600954600d546116df916121ec565b6000546001600160a01b03163314611e955760405162461bcd60e51b8152600401610bb1906127fa565b6001600160a01b038116611ee15760405162461bcd60e51b815260206004820152601360248201527201029b2ba3a34b73390181030b99020b2323c9606d1b6044820152606401610bb1565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000611f0e601a5490565b611f195750600f5490565b610b82611f44611f28601a5490565b610a9e633b9aca00610a98600d54610a98600e54610a78611b94565b600f54906122ad565b336000908152601b6020526040902054611f6690610d2a565b611f6e610ab0565b611f766110e8565b611a6f5b33611f83610b34565b601555611f8e610d1c565b6014556001600160a01b03811615611fd557611fa9816113f7565b6001600160a01b0382166000908152601760209081526040808320939093556015546016909152919020555b33803b15611ff55760405162461bcd60e51b8152600401610bb19061282f565b60195462010000900460ff161561204c5760405162461bcd60e51b815260206004820152602760248201526000805160206129e983398151915260448201526630b934b63c901960c91b6064820152608401610bb1565b6000612057336113f7565b9050801561122b57336000818152601760205260408120556004546111f5916001600160a01b03909116908361230c565b6001600160a01b0381166000908152601e602052604081205460ff16156120b157506001919050565b506000919050565b6000546001600160a01b031633146120e35760405162461bcd60e51b8152600401610bb1906127fa565b6001600160a01b0381166121485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006121e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061240c565b9392505050565b6000826121fb57506000610aaa565b60006122078385612932565b9050826122148583612912565b146121e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb1565b60006121e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612446565b6000806122ba83856128fa565b9050838110156121e55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb1565b6040516001600160a01b03831660248201526044810182905261122b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612474565b600081831061237e57816121e5565b5090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526123bd9085906323b872dd60e01b90608401612338565b50505050565b60006123ce82612088565b9050806110e4573360009081526018602090815260408083204290556001600160a01b0385168352601e9091529020805460ff191660011790555050565b600081848411156124305760405162461bcd60e51b8152600401610bb191906127c7565b50600061243d8486612951565b95945050505050565b600081836124675760405162461bcd60e51b8152600401610bb191906127c7565b50600061243d8486612912565b60006124c9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125469092919063ffffffff16565b80519091501561122b57808060200190518101906124e791906126f6565b61122b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bb1565b6060612555848460008561255d565b949350505050565b6060824710156125be5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bb1565b843b61260c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bb1565b600080866001600160a01b0316858760405161262891906127ab565b60006040518083038185875af1925050503d8060008114612665576040519150601f19603f3d011682016040523d82523d6000602084013e61266a565b606091505b509150915061267a828286612685565b979650505050505050565b606083156126945750816121e5565b8251156126a45782518084602001fd5b8160405162461bcd60e51b8152600401610bb191906127c7565b6000602082840312156126cf578081fd5b81356121e5816129c5565b6000602082840312156126eb578081fd5b81356121e5816129da565b600060208284031215612707578081fd5b81516121e5816129da565b60008060408385031215612724578081fd5b823561272f816129da565b946020939093013593505050565b6000806040838503121561274f578182fd5b823561272f816129c5565b60006020828403121561276b578081fd5b5035919050565b600060208284031215612783578081fd5b5051919050565b6000806040838503121561279c578182fd5b50508035926020909101359150565b600082516127bd818460208701612968565b9190910192915050565b60208152600082518060208401526127e6816040850160208701612968565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526033908201527f436f6e74726163747320617265206e6f7420616c6c6f77656420746f20696e746040820152726572616374207769746820746865206661726d60681b606082015260800190565b60208082526021908201527f43616c6c6572206973206e6f742072657761726420646973747269627574696f6040820152603760f91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000821982111561290d5761290d6129af565b500190565b60008261292d57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561294c5761294c6129af565b500290565b600082821015612963576129636129af565b500390565b60005b8381101561298357818101518382015260200161296b565b838111156123bd5750506000910152565b60006000198214156129a8576129a86129af565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b3157600080fd5b8015158114610b3157600080fdfe41646d696e20526573747269637465642066756e6374696f6e2074656d706f72a26469706673582212200222fcdc36b84cdab5286191ccd858741b61fb8159b4cc13af3d34269189e43464736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bdea5bb640dbfc4593809deec5cdb8f99b704cd2000000000000000000000000389999216860ab8e0175387a0c90e5c52522c945000000000000000000000000f1b8762a7fa8c244e36f7234edf40cfae24394e3
-----Decoded View---------------
Arg [0] : _lpToken (address): 0xBdea5bB640DBFC4593809DEeC5CdB8F99b704Cd2
Arg [1] : _rewardToken (address): 0x389999216860AB8E0175387A0c90E5c52522C945
Arg [2] : _rewardToken1 (address): 0xf1b8762a7fa8C244e36F7234EDF40cFaE24394e3
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000bdea5bb640dbfc4593809deec5cdb8f99b704cd2
Arg [1] : 000000000000000000000000389999216860ab8e0175387a0c90e5c52522c945
Arg [2] : 000000000000000000000000f1b8762a7fa8c244e36f7234edf40cfae24394e3
Deployed Bytecode Sourcemap
23970:13390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28590:8;;;23970:13390;;;;29775:264;;;;;;;;;;-1:-1:-1;29775:264:0;;;;;:::i;:::-;;:::i;:::-;;;12590:25:1;;;12578:2;12563:18;29775:264:0;;;;;;;;24924:42;;;;;;;;;;-1:-1:-1;24924:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;24588:33;;;;;;;;;;;;;;;;27951:91;;;;;;;;;;-1:-1:-1;28022:12:0;;27951:91;;36938:320;;;;;;;;;;;;;:::i;:::-;;29335:428;;;;;;;;;;;;;:::i;36727:199::-;;;;;;;;;;-1:-1:-1;36727:199:0;;;;;:::i;:::-;;:::i;25397:33::-;;;;;;;;;;-1:-1:-1;25397:33:0;;;;;;;;;;;;;;3428:14:1;;3421:22;3403:41;;3391:2;3376:18;25397:33:0;3358:92:1;24324:67:0;;;;;;;;;;-1:-1:-1;24324:67:0;;;;-1:-1:-1;;;;;24324:67:0;;;;;;-1:-1:-1;;;;;2560:32:1;;;2542:51;;2530:2;2515:18;24324:67:0;2497:102:1;28757:133:0;;;;;;;;;;;;;:::i;31677:632::-;;;;;;;;;;-1:-1:-1;31677:632:0;;;;;:::i;:::-;;:::i;23720:237::-;;;;;;;;;;-1:-1:-1;23720:237:0;;;;;:::i;:::-;;:::i;28172:304::-;;;;;;;;;;-1:-1:-1;28172:304:0;;;;;:::i;:::-;;:::i;32476:400::-;;;;;;;;;;;;;:::i;24501:24::-;;;;;;;;;;;;;;;;35348:924;;;;;;;;;;;;;:::i;30051:269::-;;;;;;;;;;-1:-1:-1;30051:269:0;;;;;:::i;:::-;;:::i;34292:1004::-;;;;;;;;;;-1:-1:-1;34292:1004:0;;;;;:::i;:::-;;:::i;37270:87::-;;;;;;;;;;-1:-1:-1;37270:87:0;;;;;:::i;:::-;;:::i;30825:844::-;;;;;;;;;;-1:-1:-1;30825:844:0;;;;;:::i;:::-;;:::i;25799:48::-;;;;;;;;;;-1:-1:-1;25799:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;24421:27;;;;;;;;;;;;;;;;24263:21;;;;;;;;;;-1:-1:-1;24263:21:0;;;;-1:-1:-1;;;;;24263:21:0;;;36284:174;;;;;;;;;;;;;:::i;27519:424::-;;;;;;;;;;-1:-1:-1;27519:424:0;;;;;:::i;:::-;;:::i;25200:43::-;;;;;;;;;;-1:-1:-1;25200:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;24207:26;;;;;;;;;;-1:-1:-1;24207:26:0;;;;-1:-1:-1;;;;;24207:26:0;;;28050:110;;;;;;;;;;-1:-1:-1;28050:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;28134:18:0;28107:7;28134:18;;;:9;:18;;;;;;;28050:110;7160:148;;;;;;;;;;;;;:::i;24746:29::-;;;;;;;;;;;;;;;;28614:131;;;;;;;;;;;;;:::i;25599:35::-;;;;;;;;;;-1:-1:-1;25599:35:0;;;;;;;;;;;25055:30;;;;;;;;;;;;;;;;26080:24;;;;;;;;;;-1:-1:-1;26080:24:0;;;;;:::i;:::-;;:::i;24860:57::-;;;;;;;;;;-1:-1:-1;24860:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;6518:79;;;;;;;;;;-1:-1:-1;6556:7:0;6583:6;-1:-1:-1;;;;;6583:6:0;6518:79;;25304:31;;;;;;;;;;-1:-1:-1;25304:31:0;;;;;;;;24979:32;;;;;;;;;;;;;;;;25018:30;;;;;;;;;;;;;;;;33310:970;;;;;;;;;;-1:-1:-1;33310:970:0;;;;;:::i;:::-;;:::i;25092:36::-;;;;;;;;;;;;;;;;24669:26;;;;;;;;;;-1:-1:-1;24669:26:0;;;;;;;;24628:34;;;;;;;;;;;;;;;;27358:149;;;;;;;;;;-1:-1:-1;27358:149:0;;;;;:::i;:::-;;:::i;25256:40::-;;;;;;;;;;-1:-1:-1;25256:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;24782:29;;;;;;;;;;;;;;;;28902:421;;;;;;;;;;;;;:::i;24818:35::-;;;;;;;;;;;;;;;;35308:27;;;;;;;;;;;;;;;;32317:151;;;;;;;;;;;;;:::i;32888:410::-;;;;;;;;;;;;;:::i;24708:31::-;;;;;;;;;;;;;;;;25497:34;;;;;;;;;;-1:-1:-1;25497:34:0;;;;;;;;;;;30332:193;;;;;;;;;;-1:-1:-1;30332:193:0;;;;;:::i;:::-;;:::i;7463:244::-;;;;;;;;;;-1:-1:-1;7463:244:0;;;;;:::i;:::-;;:::i;24152:25::-;;;;;;;;;;-1:-1:-1;24152:25:0;;;;-1:-1:-1;;;;;24152:25:0;;;25135:58;;;;;;;;;;-1:-1:-1;25135:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;29775:264;-1:-1:-1;;;;;30014:16:0;;29829:7;30014:16;;;:7;:16;;;;;;;;;29931:22;:31;;;;;;29869:162;;30014:16;29869:122;;29987:3;;29869:95;;29910:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;-1:-1:-1;;;;;28134:18:0;;28107:7;28134:18;;;:9;:18;;;;;;29869;:40;;:95::i;:::-;:117;;:122::i;:::-;:144;;:162::i;:::-;29849:182;29775:264;-1:-1:-1;;29775:264:0:o;36938:320::-;36997:10;36981:13;37031:20;;;:13;:20;;;;;;:24;37028:223;;-1:-1:-1;;;;;37096:20:0;;;;;;:13;:20;;;;;;37083:8;;:34;;:12;:34::i;:::-;37072:8;:45;-1:-1:-1;;;;;37179:20:0;;;;;;;:13;:20;;;;;;37146:7;;:54;;:7;;37167:10;;37146:20;:54::i;:::-;-1:-1:-1;;;;;37215:20:0;;37238:1;37215:20;;;:13;:20;;;;;:24;37028:223;36938:320;:::o;29335:428::-;29383:7;29407:13;28022:12;;;27951:91;29407:13;29403:79;;-1:-1:-1;29449:21:0;;;29335:428::o;29403:79::-;29514:241;29558:182;29726:13;28022:12;;;27951:91;29726:13;29558:141;29694:4;29558:109;29655:11;;29558:70;29612:15;;29558:27;:25;:27::i;:182::-;29514:21;;;:25;:241::i;:::-;29494:261;;29335:428;:::o;36727:199::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;;;;;;;;;36821:6:::1;-1:-1:-1::0;;;;;36814:23:0::1;;36838:7;6556::::0;6583:6;-1:-1:-1;;;;;6583:6:0;;6518:79;36838:7:::1;36847:39;::::0;-1:-1:-1;;;36847:39:0;;36880:4:::1;36847:39;::::0;::::1;2542:51:1::0;-1:-1:-1;;;;;36847:24:0;::::1;::::0;::::1;::::0;2515:18:1;;36847:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36814:73;::::0;-1:-1:-1;;;;;;36814:73:0::1;::::0;;;;;;-1:-1:-1;;;;;3176:32:1;;;36814:73:0::1;::::0;::::1;3158:51:1::0;3225:18;;;3218:34;3131:18;;36814:73:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36806:112;;;::::0;-1:-1:-1;;;36806:112:0;;7765:2:1;36806:112:0::1;::::0;::::1;7747:21:1::0;7804:2;7784:18;;;7777:30;7843:28;7823:18;;;7816:56;7889:18;;36806:112:0::1;7737:176:1::0;28757:133:0;28815:7;28842:40;28851:15;28868:13;;28842:8;:40::i;31677:632::-;31731:10;26560:16;:14;:16::i;:::-;26537:20;:39;26604:26;:24;:26::i;:::-;26587:14;:43;-1:-1:-1;;;;;26645:21:0;;;26641:157;;26702:15;26709:7;26702:6;:15::i;:::-;-1:-1:-1;;;;;26683:16:0;;;;;;:7;:16;;;;;;;;:34;;;;26766:20;;26732:22;:31;;;;;;:54;26641:157;31757:10:::1;26904:17;:15;:17::i;:::-;26880:21;:41:::0;26950:27:::1;:25;:27::i;:::-;26932:15;:45:::0;-1:-1:-1;;;;;26992:21:0;::::1;::::0;26988:161:::1;;27050:16;27058:7;27050;:16::i;:::-;-1:-1:-1::0;;;;;27030:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;;;:36;;;;27116:21:::1;::::0;27081:23:::1;:32:::0;;;;;;:56;26988:161:::1;31780:10:::2;14495:20:::0;;14534:8;27226:100:::2;;;;-1:-1:-1::0;;;27226:100:0::2;;;;;;;:::i;:::-;22269:1:::3;22866:7:::0;::::3;:19;;22858:63;;;;-1:-1:-1::0;;;22858:63:0::3;;;;;;;:::i;:::-;22269:1;22999:18:::0;;31824:15:::4;::::0;;;::::4;;;:24;31816:76;;;::::0;-1:-1:-1;;;31816:76:0;;4675:2:1;31816:76:0::4;::::0;::::4;4657:21:1::0;4714:2;4694:18;;;4687:30;-1:-1:-1;;;;;;;;;;;4733:18:1;;;4726:62;-1:-1:-1;;;4804:18:1;;;4797:37;4851:19;;31816:76:0::4;4647:229:1::0;31816:76:0::4;31920:1;31911:6;:10;31903:46;;;::::0;-1:-1:-1;;;31903:46:0;;11946:2:1;31903:46:0::4;::::0;::::4;11928:21:1::0;11985:2;11965:18;;;11958:30;12024:25;12004:18;;;11997:53;12067:18;;31903:46:0::4;11918:173:1::0;31903:46:0::4;31985:12;::::0;:24:::4;::::0;32002:6;31985:16:::4;:24::i;:::-;31970:12;:39:::0;32054:10:::4;32044:21;::::0;;;:9:::4;:21;::::0;;;;;:33:::4;::::0;32070:6;32044:25:::4;:33::i;:::-;32030:10;32020:21;::::0;;;:9:::4;:21;::::0;;;;:57;;;;32088:7:::4;::::0;:40:::4;::::0;-1:-1:-1;;;;;32088:7:0;;::::4;::::0;32121:6;32088:20:::4;:40::i;:::-;32163:10;32153:21;::::0;;;:9:::4;:21;::::0;;;;;32149:98:::4;;32204:10;32230:5;32196:19:::0;;;:7:::4;:19;::::0;;;;:39;;-1:-1:-1;;32196:39:0::4;::::0;;32149:98:::4;32262:29;::::0;12590:25:1;;;32272:10:0::4;::::0;32262:29:::4;::::0;12578:2:1;12563:18;32262:29:0::4;;;;;;;-1:-1:-1::0;;22225:1:0::3;23178:7;:22:::0;-1:-1:-1;;31677:632:0:o;23720:237::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;23824:18:::1;::::0;-1:-1:-1;;;;;23824:18:0::1;:32:::0;23816:82:::1;;;::::0;-1:-1:-1;;;23816:82:0;;9705:2:1;23816:82:0::1;::::0;::::1;9687:21:1::0;9744:2;9724:18;;;9717:30;9783:34;9763:18;;;9756:62;-1:-1:-1;;;9834:18:1;;;9827:35;9879:19;;23816:82:0::1;9677:227:1::0;23816:82:0::1;23909:18;:40:::0;;-1:-1:-1;;;;;;23909:40:0::1;-1:-1:-1::0;;;;;23909:40:0;;;::::1;::::0;;;::::1;::::0;;23720:237::o;28172:304::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;28375:15:::1;28364:8;;:26;28356:65;;;::::0;-1:-1:-1;;;28356:65:0;;11231:2:1;28356:65:0::1;::::0;::::1;11213:21:1::0;11270:2;11250:18;;;11243:30;11309:28;11289:18;;;11282:56;11355:18;;28356:65:0::1;11203:176:1::0;28356:65:0::1;28432:36;28452:7;6556::::0;6583:6;-1:-1:-1;;;;;6583:6:0;;6518:79;28452:7:::1;-1:-1:-1::0;;;;;28432:19:0;::::1;::::0;28461:6;28432:19:::1;:36::i;:::-;28172:304:::0;;:::o;32476:400::-;32517:10;26560:16;:14;:16::i;:::-;26537:20;:39;26604:26;:24;:26::i;:::-;26587:14;:43;-1:-1:-1;;;;;26645:21:0;;;26641:157;;26702:15;26709:7;26702:6;:15::i;:::-;-1:-1:-1;;;;;26683:16:0;;;;;;:7;:16;;;;;;;;:34;;;;26766:20;;26732:22;:31;;;;;;:54;26641:157;32540:10:::1;14495:20:::0;;14534:8;27226:100:::1;;;;-1:-1:-1::0;;;27226:100:0::1;;;;;;;:::i;:::-;32571:13:::2;::::0;::::2;::::0;::::2;;;:22;32563:74;;;::::0;-1:-1:-1;;;32563:74:0;;5083:2:1;32563:74:0::2;::::0;::::2;5065:21:1::0;5122:2;5102:18;;;5095:30;-1:-1:-1;;;;;;;;;;;5141:18:1;;;5134:62;-1:-1:-1;;;5212:18:1;;;5205:37;5259:19;;32563:74:0::2;5055:229:1::0;32563:74:0::2;32648:14;32665:18;32672:10;32665:6;:18::i;:::-;32648:35:::0;-1:-1:-1;32698:10:0;;32694:175:::2;;32733:10;32747:1;32725:19:::0;;;:7:::2;:19;::::0;;;;:23;32763:11:::2;::::0;:44:::2;::::0;-1:-1:-1;;;;;32763:11:0;;::::2;::::0;32800:6;32763:24:::2;:44::i;:::-;32827:30;::::0;12590:25:1;;;32838:10:0::2;::::0;32827:30:::2;::::0;12578:2:1;12563:18;32827:30:0::2;;;;;;;32694:175;27337:1;26808::::1;32476:400:::0;:::o;35348:924::-;35521:7;;:32;;-1:-1:-1;;;35521:32:0;;35547:4;35521:32;;;2542:51:1;35493:25:0;;-1:-1:-1;;;;;35521:7:0;;:17;;2515:18:1;;35521:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35493:60;;35564:24;35591:49;35613:26;35630:8;;35613:12;;:16;;:26;;;;:::i;:::-;35591:17;;:21;:49::i;:::-;35672:8;;35564:76;;-1:-1:-1;35672:30:0;;35564:76;35672:12;:30::i;:::-;35661:8;:41;35737:20;;35734:531;;35779:9;35774:480;35798:7;:14;35794:18;;35774:480;;;35838:11;35852:7;35860:1;35852:10;;;;;;-1:-1:-1;;;35852:10:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35852:10:0;;-1:-1:-1;35897:14:0;35852:10;-1:-1:-1;;;;;28134:18:0;28107:7;28134:18;;;:9;:18;;;;;;;28050:110;35897:14;35882:29;-1:-1:-1;35934:8:0;;35931:309;;36022:12;;35968:17;;35989:46;;:28;35990:16;36012:4;35989:22;:28::i;:46::-;-1:-1:-1;;;;;36108:18:0;;;;;;:13;:18;;;;;;35968:67;;-1:-1:-1;36108:33:0;;35968:67;36108:22;:33::i;:::-;-1:-1:-1;;;;;36087:18:0;;;;;;:13;:18;;;;;;;;;:54;;;;36197:22;12590:25:1;;;36197:22:0;;12563:18:1;36197:22:0;;;;;;;35931:309;;35774:480;;35814:3;;;;;:::i;:::-;;;;35774:480;;30051:269;-1:-1:-1;;;;;30294:17:0;;30106:7;30294:17;;;:8;:17;;;;;;;;;30209:23;:32;;;;;;30146:166;;30294:17;30146:125;;30266:4;;30146:97;;30187:55;;:17;:15;:17::i;34292:1004::-;23384:18;;-1:-1:-1;;;;;23384:18:0;5796:10;-1:-1:-1;;;;;23368:34:0;;23360:80;;;;-1:-1:-1;;;23360:80:0;;;;;;;:::i;:::-;22269:1:::1;22866:7:::0;::::1;:19;;22858:63;;;;-1:-1:-1::0;;;22858:63:0::1;;;;;;;:::i;:::-;22269:1;22999:18:::0;;34456:1:::2;26904:17;:15;:17::i;:::-;26880:21;:41:::0;26950:27:::2;:25;:27::i;:::-;26932:15;:45:::0;-1:-1:-1;;;;;26992:21:0;::::2;::::0;26988:161:::2;;27050:16;27058:7;27050;:16::i;:::-;-1:-1:-1::0;;;;;27030:17:0;::::2;;::::0;;;:8:::2;:17;::::0;;;;;;;:36;;;;27116:21:::2;::::0;27081:23:::2;:32:::0;;;;;;:56;26988:161:::2;34497:1:::3;34484:10;:14;34476:49;;;::::0;-1:-1:-1;;;34476:49:0;;10111:2:1;34476:49:0::3;::::0;::::3;10093:21:1::0;10150:2;10130:18;;;10123:30;-1:-1:-1;;;10169:18:1;;;10162:52;10231:18;;34476:49:0::3;10083:172:1::0;34476:49:0::3;34569:12;::::0;;:37:::3;::::0;-1:-1:-1;;;34569:37:0;;34600:4:::3;34569:37:::0;;::::3;2542:51:1::0;;;;-1:-1:-1;;;;;34569:12:0::3;::::0;:22:::3;::::0;2515:18:1;;34569:37:0::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34555:9;::::0;34539:11:::3;::::0;:26:::3;::::0;:15:::3;:26::i;:::-;:67;34536:753;;34634:22;:10:::0;34649:6:::3;34634:14;:22::i;:::-;34622:9;:34:::0;34694:13:::3;::::0;34675:15:::3;:32;34671:343;;34755:9;::::0;34742:23:::3;::::0;:8;;:12:::3;:23::i;:::-;34728:11;:37:::0;34671:343:::3;;;34827:13;::::0;34806:18:::3;::::0;34827:34:::3;::::0;34845:15:::3;34827:17;:34::i;:::-;34806:55;;34880:17;34900:27;34915:11;;34900:10;:14;;:27;;;;:::i;:::-;34988:9;::::0;34880:47;;-1:-1:-1;34960:38:0::3;::::0;:23:::3;:8:::0;34880:47;34960:12:::3;:23::i;:38::-;34946:11;:52:::0;-1:-1:-1;;34671:343:0::3;35046:15;35028;:33:::0;;;35112:9:::3;::::0;35092:30:::3;::::0;35046:15;35092:19:::3;:30::i;:::-;35076:13;:46:::0;35175:12:::3;::::0;;:37:::3;::::0;-1:-1:-1;;;35175:37:0;;35206:4:::3;35175:37:::0;;::::3;2542:51:1::0;;;;-1:-1:-1;;;;;35175:12:0::3;::::0;:22:::3;::::0;2515:18:1;;35175:37:0::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35161:9;::::0;35145:11:::3;::::0;:26:::3;::::0;:15:::3;:26::i;:::-;:67;;35137:99;;;::::0;-1:-1:-1;;;35137:99:0;;12298:2:1;35137:99:0::3;::::0;::::3;12280:21:1::0;12337:2;12317:18;;;12310:30;-1:-1:-1;;;12356:18:1;;;12349:49;12415:18;;35137:99:0::3;12270:169:1::0;35137:99:0::3;35256:21;::::0;12590:25:1;;;35256:21:0::3;::::0;12578:2:1;12563:18;35256:21:0::3;;;;;;;34536:753;-1:-1:-1::0;;22225:1:0::1;23178:7;:22:::0;-1:-1:-1;34292:1004:0:o;37270:87::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;37334:7:::1;:15:::0;;-1:-1:-1;;37334:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37270:87::o;30825:844::-;30877:10;26560:16;:14;:16::i;:::-;26537:20;:39;26604:26;:24;:26::i;:::-;26587:14;:43;-1:-1:-1;;;;;26645:21:0;;;26641:157;;26702:15;26709:7;26702:6;:15::i;:::-;-1:-1:-1;;;;;26683:16:0;;;;;;:7;:16;;;;;;;;:34;;;;26766:20;;26732:22;:31;;;;;;:54;26641:157;30903:10:::1;26904:17;:15;:17::i;:::-;26880:21;:41:::0;26950:27:::1;:25;:27::i;:::-;26932:15;:45:::0;-1:-1:-1;;;;;26992:21:0;::::1;::::0;26988:161:::1;;27050:16;27058:7;27050;:16::i;:::-;-1:-1:-1::0;;;;;27030:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;;;:36;;;;27116:21:::1;::::0;27081:23:::1;:32:::0;;;;;;:56;26988:161:::1;30926:10:::2;14495:20:::0;;14534:8;27226:100:::2;;;;-1:-1:-1::0;;;27226:100:0::2;;;;;;;:::i;:::-;22269:1:::3;22866:7:::0;::::3;:19;;22858:63;;;;-1:-1:-1::0;;;22858:63:0::3;;;;;;;:::i;:::-;22269:1;22999:18:::0;;30970:11:::4;::::0;::::4;;:20;30962:72;;;::::0;-1:-1:-1;;;30962:72:0;;7357:2:1;30962:72:0::4;::::0;::::4;7339:21:1::0;7396:2;7376:18;;;7369:30;-1:-1:-1;;;;;;;;;;;7415:18:1;;;7408:62;-1:-1:-1;;;7486:18:1;;;7479:37;7533:19;;30962:72:0::4;7329:229:1::0;30962:72:0::4;31062:1;31053:6;:10;31045:42;;;::::0;-1:-1:-1;;;31045:42:0;;6602:2:1;31045:42:0::4;::::0;::::4;6584:21:1::0;6641:2;6621:18;;;6614:30;-1:-1:-1;;;6660:18:1;;;6653:49;6719:18;;31045:42:0::4;6574:169:1::0;31045:42:0::4;31100:7;::::0;:59:::4;::::0;-1:-1:-1;;;;;31100:7:0::4;31125:10;31145:4;31152:6:::0;31100:24:::4;:59::i;:::-;31180:14;31197:29;31222:3;31197:20;31208:8;;31197:6;:10;;:20;;;;:::i;:29::-;31180:46;;31237:14;31254:26;31276:3;31254:17;31265:5;;31254:6;:10;;:17;;;;:::i;:26::-;31330:7;::::0;31301::::4;::::0;31237:43;;-1:-1:-1;31301:46:0::4;::::0;-1:-1:-1;;;;;31301:7:0;;::::4;::::0;31330::::4;31340:6:::0;31301:20:::4;:46::i;:::-;31368:19;31390:30;31413:6:::0;31390:18:::4;:6:::0;31401;31390:10:::4;:18::i;:30::-;31456:12;::::0;31368:52;;-1:-1:-1;31456:29:0::4;::::0;31368:52;31456:16:::4;:29::i;:::-;31441:12;:44:::0;31530:10:::4;31520:21;::::0;;;:9:::4;:21;::::0;;;;;:38:::4;::::0;31546:11;31520:25:::4;:38::i;:::-;31506:10;31496:21;::::0;;;:9:::4;:21;::::0;;;;:62;;;;31579:26:::4;::::0;:14:::4;:26::i;:::-;31631:30;::::0;12590:25:1;;;31638:10:0::4;::::0;31631:30:::4;::::0;12578:2:1;12563:18;31631:30:0::4;;;;;;;-1:-1:-1::0;;22225:1:0::3;23178:7;:22:::0;-1:-1:-1;;;;;30825:844:0:o;36284:174::-;36329:15;:13;:15::i;:::-;36355:11;:9;:11::i;:::-;36377:12;:10;:12::i;:::-;36403:7;;;;:13;;:7;:13;36400:51;;;36428:21;:19;:21::i;:::-;36284:174::o;27519:424::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;27602:8;27599:337:::1;;27626:11;:21:::0;;;::::1;;-1:-1:-1::0;;27626:21:0;;::::1;;::::0;;28172:304;;:::o;27599:337::-:1;27691:5;27698:1;27691:8;27688:248;;;27715:13;:22:::0;;;::::1;;;;-1:-1:-1::0;;27715:22:0;;::::1;;::::0;;28172:304;;:::o;27688:248::-:1;27781:5;27788:1;27781:8;27778:158;;;27805:14;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27805:23:0;;::::1;;::::0;;28172:304;;:::o;27778:158::-:1;27862:5;27869:1;27862:8;27859:77;;;27886:15;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27886:24:0;;::::1;;::::0;;27519:424;;:::o;7160:148::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;7267:1:::1;7251:6:::0;;7230:40:::1;::::0;-1:-1:-1;;;;;7251:6:0;;::::1;::::0;7230:40:::1;::::0;7267:1;;7230:40:::1;7298:1;7281:19:::0;;-1:-1:-1;;;;;;7281:19:0::1;::::0;;7160:148::o;28614:131::-;28671:7;28698:39;28707:15;28724:12;;28698:8;:39::i;26080:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26080:24:0;;-1:-1:-1;26080:24:0;:::o;33310:970::-;23384:18;;-1:-1:-1;;;;;23384:18:0;5796:10;-1:-1:-1;;;;;23368:34:0;;23360:80;;;;-1:-1:-1;;;23360:80:0;;;;;;;:::i;:::-;22269:1:::1;22866:7:::0;::::1;:19;;22858:63;;;;-1:-1:-1::0;;;22858:63:0::1;;;;;;;:::i;:::-;22269:1;22999:18:::0;;33469:1:::2;26560:16;:14;:16::i;:::-;26537:20;:39:::0;26604:26:::2;:24;:26::i;:::-;26587:14;:43:::0;-1:-1:-1;;;;;26645:21:0;::::2;::::0;26641:157:::2;;26702:15;26709:7;26702:6;:15::i;:::-;-1:-1:-1::0;;;;;26683:16:0;::::2;;::::0;;;:7:::2;:16;::::0;;;;;;;:34;;;;26766:20:::2;::::0;26732:22:::2;:31:::0;;;;;;:54;26641:157:::2;33509:1:::3;33497:9;:13;33489:48;;;::::0;-1:-1:-1;;;33489:48:0;;10111:2:1;33489:48:0::3;::::0;::::3;10093:21:1::0;10150:2;10130:18;;;10123:30;-1:-1:-1;;;10169:18:1;;;10162:52;10231:18;;33489:48:0::3;10083:172:1::0;33489:48:0::3;33579:11;::::0;:36:::3;::::0;-1:-1:-1;;;33579:36:0;;33609:4:::3;33579:36;::::0;::::3;2542:51:1::0;-1:-1:-1;;;;;33579:11:0;;::::3;::::0;:21:::3;::::0;2515:18:1;;33579:36:0::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33566:8;::::0;33551:10:::3;::::0;:24:::3;::::0;:14:::3;:24::i;:::-;:64;33548:725;;33642:21;:9:::0;33656:6:::3;33642:13;:21::i;:::-;33631:8;:32:::0;33701:12:::3;::::0;33682:15:::3;:31;33678:328;;33758:8;::::0;33747:20:::3;::::0;:6;;:10:::3;:20::i;:::-;33734:10;:33:::0;33678:328:::3;;;33828:12;::::0;33808:17:::3;::::0;33828:33:::3;::::0;33845:15:::3;33828:16;:33::i;:::-;33808:53;;33880:16;33899:25;33913:10;;33899:9;:13;;:25;;;;:::i;:::-;33981:8;::::0;33880:44;;-1:-1:-1;33956:34:0::3;::::0;:20:::3;:6:::0;33880:44;33956:10:::3;:20::i;:34::-;33943:10;:47:::0;-1:-1:-1;;33678:328:0::3;34037:15;34020:14;:32:::0;;;34102:8:::3;::::0;34082:29:::3;::::0;34037:15;34082:19:::3;:29::i;:::-;34067:12;:44:::0;34162:11:::3;::::0;:36:::3;::::0;-1:-1:-1;;;34162:36:0;;34192:4:::3;34162:36;::::0;::::3;2542:51:1::0;-1:-1:-1;;;;;34162:11:0;;::::3;::::0;:21:::3;::::0;2515:18:1;;34162:36:0::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34149:8;::::0;34134:10:::3;::::0;:24:::3;::::0;:14:::3;:24::i;27358:149::-:0;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27429:19:0;::::1;27421:51;;;::::0;-1:-1:-1;;;27421:51:0;;6254:2:1;27421:51:0::1;::::0;::::1;6236:21:1::0;6293:2;6273:18;;;6266:30;-1:-1:-1;;;6312:18:1;;;6305:49;6371:18;;27421:51:0::1;6226:169:1::0;27421:51:0::1;27484:7;:15:::0;;-1:-1:-1;;;;;;27484:15:0::1;-1:-1:-1::0;;;;;27484:15:0;;;::::1;::::0;;;::::1;::::0;;27358:149::o;28902:421::-;28949:7;28973:13;28022:12;;;27951:91;28973:13;28969:78;;-1:-1:-1;29015:20:0;;;28902:421::o;28969:78::-;29079:236;29122:178;29286:13;28022:12;;;27951:91;29286:13;29122:137;29255:3;29122:106;29217:10;;29122:68;29175:14;;29122:26;:24;:26::i;:178::-;29079:20;;;:24;:236::i;32317:151::-;32372:10;28107:7;28134:18;;;:9;:18;;;;;;32353:31;;31677:632;:::i;32353:31::-;32395:15;:13;:15::i;:::-;32422:11;:9;:11::i;:::-;32444:12;32888:410;32931:10;26904:17;:15;:17::i;:::-;26880:21;:41;26950:27;:25;:27::i;:::-;26932:15;:45;-1:-1:-1;;;;;26992:21:0;;;26988:161;;27050:16;27058:7;27050;:16::i;:::-;-1:-1:-1;;;;;27030:17:0;;;;;;:8;:17;;;;;;;;:36;;;;27116:21;;27081:23;:32;;;;;;:56;26988:161;32954:10:::1;14495:20:::0;;14534:8;27226:100:::1;;;;-1:-1:-1::0;;;27226:100:0::1;;;;;;;:::i;:::-;32985:14:::2;::::0;;;::::2;;;:23;32977:75;;;::::0;-1:-1:-1;;;32977:75:0;;4267:2:1;32977:75:0::2;::::0;::::2;4249:21:1::0;4306:2;4286:18;;;4279:30;-1:-1:-1;;;;;;;;;;;4325:18:1;;;4318:62;-1:-1:-1;;;4396:18:1;;;4389:37;4443:19;;32977:75:0::2;4239:229:1::0;32977:75:0::2;33063:15;33081:19;33089:10;33081:7;:19::i;:::-;33063:37:::0;-1:-1:-1;33115:11:0;;33111:180:::2;;33152:10;33166:1;33143:20:::0;;;:8:::2;:20;::::0;;;;:24;33182:12:::2;::::0;:46:::2;::::0;-1:-1:-1;;;;;33182:12:0;;::::2;::::0;33220:7;33182:25:::2;:46::i;30332:193::-:0;-1:-1:-1;;;;;30449:17:0;;30417:4;30449:17;;;:7;:17;;;;;:29;;;30446:72;;;-1:-1:-1;30487:4:0;;30332:193;-1:-1:-1;30332:193:0:o;30446:72::-;-1:-1:-1;30513:5:0;;30332:193;-1:-1:-1;30332:193:0:o;7463:244::-;6730:6;;-1:-1:-1;;;;;6730:6:0;5796:10;6730:22;6722:67;;;;-1:-1:-1;;;6722:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7552:22:0;::::1;7544:73;;;::::0;-1:-1:-1;;;7544:73:0;;5491:2:1;7544:73:0::1;::::0;::::1;5473:21:1::0;5530:2;5510:18;;;5503:30;5569:34;5549:18;;;5542:62;-1:-1:-1;;;5620:18:1;;;5613:36;5666:19;;7544:73:0::1;5463:228:1::0;7544:73:0::1;7654:6;::::0;;7633:38:::1;::::0;-1:-1:-1;;;;;7633:38:0;;::::1;::::0;7654:6;::::1;::::0;7633:38:::1;::::0;::::1;7682:6;:17:::0;;-1:-1:-1;;;;;;7682:17:0::1;-1:-1:-1::0;;;;;7682:17:0;;;::::1;::::0;;;::::1;::::0;;7463:244::o;1569:136::-;1627:7;1654:43;1658:1;1661;1654:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1647:50;1569:136;-1:-1:-1;;;1569:136:0:o;2459:471::-;2517:7;2762:6;2758:47;;-1:-1:-1;2792:1:0;2785:8;;2758:47;2817:9;2829:5;2833:1;2829;:5;:::i;:::-;2817:17;-1:-1:-1;2862:1:0;2853:5;2857:1;2817:17;2853:5;:::i;:::-;:10;2845:56;;;;-1:-1:-1;;;2845:56:0;;8120:2:1;2845:56:0;;;8102:21:1;8159:2;8139:18;;;8132:30;8198:34;8178:18;;;8171:62;-1:-1:-1;;;8249:18:1;;;8242:31;8290:19;;2845:56:0;8092:223:1;3406:132:0;3464:7;3491:39;3495:1;3498;3491:39;;;;;;;;;;;;;;;;;:3;:39::i;1105:181::-;1163:7;;1195:5;1199:1;1195;:5;:::i;:::-;1183:17;;1224:1;1219;:6;;1211:46;;;;-1:-1:-1;;;1211:46:0;;5898:2:1;1211:46:0;;;5880:21:1;5937:2;5917:18;;;5910:30;5976:29;5956:18;;;5949:57;6023:18;;1211:46:0;5870:177:1;10447::0;10557:58;;-1:-1:-1;;;;;3176:32:1;;10557:58:0;;;3158:51:1;3225:18;;;3218:34;;;10530:86:0;;10550:5;;-1:-1:-1;;;10580:23:0;3131:18:1;;10557:58:0;;;;-1:-1:-1;;10557:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10557:58:0;-1:-1:-1;;;;;;10557:58:0;;;;;;;;;;10530:19;:86::i;417:106::-;475:7;506:1;502;:5;:13;;514:1;502:13;;;-1:-1:-1;510:1:0;;417:106;-1:-1:-1;417:106:0:o;10632:205::-;10760:68;;-1:-1:-1;;;;;2862:15:1;;;10760:68:0;;;2844:34:1;2914:15;;2894:18;;;2887:43;2946:18;;;2939:34;;;10733:96:0;;10753:5;;-1:-1:-1;;;10783:27:0;2779:18:1;;10760:68:0;2761:218:1;10733:96:0;10632:205;;;;:::o;30535:282::-;30613:19;30636:27;30650:12;30636:13;:27::i;:::-;30612:51;;30677:14;30673:138;;30716:10;30707:20;;;;:8;:20;;;;;;;;30731:15;30707:39;;-1:-1:-1;;;;;30760:21:0;;;;:7;:21;;;;;:40;;-1:-1:-1;;30760:40:0;30796:4;30760:40;;;30535:282;;:::o;2008:192::-;2094:7;2130:12;2122:6;;;;2114:29;;;;-1:-1:-1;;;2114:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2154:9:0;2166:5;2170:1;2166;:5;:::i;:::-;2154:17;2008:192;-1:-1:-1;;;;;2008:192:0:o;4034:278::-;4120:7;4155:12;4148:5;4140:28;;;;-1:-1:-1;;;4140:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4179:9:0;4191:5;4195:1;4191;:5;:::i;12752:761::-;13176:23;13202:69;13230:4;13202:69;;;;;;;;;;;;;;;;;13210:5;-1:-1:-1;;;;;13202:27:0;;;:69;;;;;:::i;:::-;13286:17;;13176:95;;-1:-1:-1;13286:21:0;13282:224;;13428:10;13417:30;;;;;;;;;;;;:::i;:::-;13409:85;;;;-1:-1:-1;;;13409:85:0;;10820:2:1;13409:85:0;;;10802:21:1;10859:2;10839:18;;;10832:30;10898:34;10878:18;;;10871:62;-1:-1:-1;;;10949:18:1;;;10942:40;10999:19;;13409:85:0;10792:232:1;17046:195:0;17149:12;17181:52;17203:6;17211:4;17217:1;17220:12;17181:21;:52::i;:::-;17174:59;17046:195;-1:-1:-1;;;;17046:195:0:o;18098:530::-;18225:12;18283:5;18258:21;:30;;18250:81;;;;-1:-1:-1;;;18250:81:0;;6950:2:1;18250:81:0;;;6932:21:1;6989:2;6969:18;;;6962:30;7028:34;7008:18;;;7001:62;-1:-1:-1;;;7079:18:1;;;7072:36;7125:19;;18250:81:0;6922:228:1;18250:81:0;14495:20;;18342:60;;;;-1:-1:-1;;;18342:60:0;;10462:2:1;18342:60:0;;;10444:21:1;10501:2;10481:18;;;10474:30;10540:31;10520:18;;;10513:59;10589:18;;18342:60:0;10434:179:1;18342:60:0;18476:12;18490:23;18517:6;-1:-1:-1;;;;;18517:11:0;18537:5;18545:4;18517:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18475:75;;;;18568:52;18586:7;18595:10;18607:12;18568:17;:52::i;:::-;18561:59;18098:530;-1:-1:-1;;;;;;;18098:530:0:o;20638:742::-;20753:12;20782:7;20778:595;;;-1:-1:-1;20813:10:0;20806:17;;20778:595;20927:17;;:21;20923:439;;21190:10;21184:17;21251:15;21238:10;21234:2;21230:19;21223:44;21138:148;21333:12;21326:20;;-1:-1:-1;;;21326:20:0;;;;;;;;:::i;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:251::-;332:6;385:2;373:9;364:7;360:23;356:32;353:2;;;406:6;398;391:22;353:2;450:9;437:23;469:28;491:5;469:28;:::i;532:255::-;599:6;652:2;640:9;631:7;627:23;623:32;620:2;;;673:6;665;658:22;620:2;710:9;704:16;729:28;751:5;729:28;:::i;792:319::-;857:6;865;918:2;906:9;897:7;893:23;889:32;886:2;;;939:6;931;924:22;886:2;983:9;970:23;1002:28;1024:5;1002:28;:::i;:::-;1049:5;1101:2;1086:18;;;;1073:32;;-1:-1:-1;;;876:235:1:o;1116:339::-;1198:6;1206;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1280:6;1272;1265:22;1227:2;1324:9;1311:23;1343:31;1368:5;1343:31;:::i;1460:190::-;1519:6;1572:2;1560:9;1551:7;1547:23;1543:32;1540:2;;;1593:6;1585;1578:22;1540:2;-1:-1:-1;1621:23:1;;1530:120;-1:-1:-1;1530:120:1:o;1655:194::-;1725:6;1778:2;1766:9;1757:7;1753:23;1749:32;1746:2;;;1799:6;1791;1784:22;1746:2;-1:-1:-1;1827:16:1;;1736:113;-1:-1:-1;1736:113:1:o;1854:258::-;1922:6;1930;1983:2;1971:9;1962:7;1958:23;1954:32;1951:2;;;2004:6;1996;1989:22;1951:2;-1:-1:-1;;2032:23:1;;;2102:2;2087:18;;;2074:32;;-1:-1:-1;1941:171:1:o;2117:274::-;2246:3;2284:6;2278:13;2300:53;2346:6;2341:3;2334:4;2326:6;2322:17;2300:53;:::i;:::-;2369:16;;;;;2254:137;-1:-1:-1;;2254:137:1:o;3677:383::-;3826:2;3815:9;3808:21;3789:4;3858:6;3852:13;3901:6;3896:2;3885:9;3881:18;3874:34;3917:66;3976:6;3971:2;3960:9;3956:18;3951:2;3943:6;3939:15;3917:66;:::i;:::-;4044:2;4023:15;-1:-1:-1;;4019:29:1;4004:45;;;;4051:2;4000:54;;3798:262;-1:-1:-1;;3798:262:1:o;8320:356::-;8522:2;8504:21;;;8541:18;;;8534:30;8600:34;8595:2;8580:18;;8573:62;8667:2;8652:18;;8494:182::o;8681:415::-;8883:2;8865:21;;;8922:2;8902:18;;;8895:30;8961:34;8956:2;8941:18;;8934:62;-1:-1:-1;;;9027:2:1;9012:18;;9005:49;9086:3;9071:19;;8855:241::o;9101:397::-;9303:2;9285:21;;;9342:2;9322:18;;;9315:30;9381:34;9376:2;9361:18;;9354:62;-1:-1:-1;;;9447:2:1;9432:18;;9425:31;9488:3;9473:19;;9275:223::o;11384:355::-;11586:2;11568:21;;;11625:2;11605:18;;;11598:30;11664:33;11659:2;11644:18;;11637:61;11730:2;11715:18;;11558:181::o;12626:128::-;12666:3;12697:1;12693:6;12690:1;12687:13;12684:2;;;12703:18;;:::i;:::-;-1:-1:-1;12739:9:1;;12674:80::o;12759:217::-;12799:1;12825;12815:2;;-1:-1:-1;;;12850:31:1;;12904:4;12901:1;12894:15;12932:4;12857:1;12922:15;12815:2;-1:-1:-1;12961:9:1;;12805:171::o;12981:168::-;13021:7;13087:1;13083;13079:6;13075:14;13072:1;13069:21;13064:1;13057:9;13050:17;13046:45;13043:2;;;13094:18;;:::i;:::-;-1:-1:-1;13134:9:1;;13033:116::o;13154:125::-;13194:4;13222:1;13219;13216:8;13213:2;;;13227:18;;:::i;:::-;-1:-1:-1;13264:9:1;;13203:76::o;13284:258::-;13356:1;13366:113;13380:6;13377:1;13374:13;13366:113;;;13456:11;;;13450:18;13437:11;;;13430:39;13402:2;13395:10;13366:113;;;13497:6;13494:1;13491:13;13488:2;;;-1:-1:-1;;13532:1:1;13514:16;;13507:27;13337:205::o;13547:135::-;13586:3;-1:-1:-1;;13607:17:1;;13604:2;;;13627:18;;:::i;:::-;-1:-1:-1;13674:1:1;13663:13;;13594:88::o;13687:127::-;13748:10;13743:3;13739:20;13736:1;13729:31;13779:4;13776:1;13769:15;13803:4;13800:1;13793:15;13819:131;-1:-1:-1;;;;;13894:31:1;;13884:42;;13874:2;;13940:1;13937;13930:12;13955:118;14041:5;14034:13;14027:21;14020:5;14017:32;14007:2;;14063:1;14060;14053:12
Swarm Source
ipfs://0222fcdc36b84cdab5286191ccd858741b61fb8159b4cc13af3d34269189e434
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,466.75 | 0.6 | $1,480.05 |
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.