More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 582 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 19738584 | 250 days ago | IN | 0 ETH | 0.0113992 | ||||
Claim_rewards | 16451450 | 711 days ago | IN | 0 ETH | 0.0019307 | ||||
Withdraw | 15716527 | 814 days ago | IN | 0 ETH | 0.01781885 | ||||
Claim_rewards | 15337171 | 871 days ago | IN | 0 ETH | 0.00050276 | ||||
Claim_rewards | 15312798 | 875 days ago | IN | 0 ETH | 0.00060897 | ||||
Claim_rewards | 15306352 | 876 days ago | IN | 0 ETH | 0.00082015 | ||||
Claim_rewards | 15305797 | 876 days ago | IN | 0 ETH | 0.00106917 | ||||
Claim_rewards | 15305767 | 876 days ago | IN | 0 ETH | 0.0008909 | ||||
Withdraw | 15305741 | 876 days ago | IN | 0 ETH | 0.00444996 | ||||
Withdraw | 15291825 | 878 days ago | IN | 0 ETH | 0.00203802 | ||||
Withdraw | 15120833 | 905 days ago | IN | 0 ETH | 0.00745825 | ||||
Withdraw | 14916238 | 939 days ago | IN | 0 ETH | 0.02378476 | ||||
Claim_rewards | 13883464 | 1101 days ago | IN | 0 ETH | 0.0100778 | ||||
Withdraw | 13883300 | 1101 days ago | IN | 0 ETH | 0.0390465 | ||||
Withdraw | 13809067 | 1113 days ago | IN | 0 ETH | 0.01709673 | ||||
Withdraw | 13796331 | 1115 days ago | IN | 0 ETH | 0.01689368 | ||||
Withdraw | 13775804 | 1118 days ago | IN | 0 ETH | 0.02629372 | ||||
Claim_rewards | 13775804 | 1118 days ago | IN | 0 ETH | 0.0102298 | ||||
Withdraw | 13775792 | 1118 days ago | IN | 0 ETH | 0.03530869 | ||||
Claim_rewards | 13695906 | 1130 days ago | IN | 0 ETH | 0.00992907 | ||||
Claim_rewards | 13613286 | 1144 days ago | IN | 0 ETH | 0.01899002 | ||||
Withdraw | 13613278 | 1144 days ago | IN | 0 ETH | 0.05215626 | ||||
Claim_rewards | 13435503 | 1171 days ago | IN | 0 ETH | 0.00903956 | ||||
Withdraw | 13383618 | 1180 days ago | IN | 0 ETH | 0.02668455 | ||||
Withdraw | 13294377 | 1194 days ago | IN | 0 ETH | 0.01397247 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.5
Contract Source Code (Vyper language format)
# @version 0.2.5 """ @title Staking Liquidity Gauge @author Curve Finance @license MIT @notice Simultaneously stakes using Synthetix (== YFI) rewards contract """ from vyper.interfaces import ERC20 interface CRV20: def future_epoch_time_write() -> uint256: nonpayable def rate() -> uint256: view interface Controller: def period() -> int128: view def period_write() -> int128: nonpayable def period_timestamp(p: int128) -> uint256: view def gauge_relative_weight(addr: address, time: uint256) -> uint256: view def voting_escrow() -> address: view def checkpoint(): nonpayable def checkpoint_gauge(addr: address): nonpayable interface Minter: def token() -> address: view def controller() -> address: view def minted(user: address, gauge: address) -> uint256: view interface VotingEscrow: def user_point_epoch(addr: address) -> uint256: view def user_point_history__ts(addr: address, epoch: uint256) -> uint256: view interface CurveRewards: def stake(amount: uint256): nonpayable def withdraw(amount: uint256): nonpayable def getReward(): nonpayable def earned(addr: address) -> uint256: view event Deposit: provider: indexed(address) value: uint256 event Withdraw: provider: indexed(address) value: uint256 event UpdateLiquidityLimit: user: address original_balance: uint256 original_supply: uint256 working_balance: uint256 working_supply: uint256 event CommitOwnership: admin: address event ApplyOwnership: admin: address TOKENLESS_PRODUCTION: constant(uint256) = 40 BOOST_WARMUP: constant(uint256) = 2 * 7 * 86400 WEEK: constant(uint256) = 604800 minter: public(address) crv_token: public(address) lp_token: public(address) controller: public(address) voting_escrow: public(address) balanceOf: public(HashMap[address, uint256]) totalSupply: public(uint256) future_epoch_time: public(uint256) # caller -> recipient -> can deposit? approved_to_deposit: public(HashMap[address, HashMap[address, bool]]) working_balances: public(HashMap[address, uint256]) working_supply: public(uint256) # The goal is to be able to calculate ∫(rate * balance / totalSupply dt) from 0 till checkpoint # All values are kept in units of being multiplied by 1e18 period: public(int128) period_timestamp: public(uint256[100000000000000000000000000000]) # 1e18 * ∫(rate(t) / totalSupply(t) dt) from 0 till checkpoint integrate_inv_supply: public(uint256[100000000000000000000000000000]) # bump epoch when rate() changes # 1e18 * ∫(rate(t) / totalSupply(t) dt) from (last_action) till checkpoint integrate_inv_supply_of: public(HashMap[address, uint256]) integrate_checkpoint_of: public(HashMap[address, uint256]) # ∫(balance * rate(t) / totalSupply(t) dt) from 0 till checkpoint # Units: rate * t = already number of coins per address to issue integrate_fraction: public(HashMap[address, uint256]) inflation_rate: public(uint256) # For tracking external rewards reward_contract: public(address) rewarded_token: public(address) reward_integral: public(uint256) reward_integral_for: public(HashMap[address, uint256]) rewards_for: public(HashMap[address, uint256]) claimed_rewards_for: public(HashMap[address, uint256]) admin: public(address) future_admin: public(address) # Can and will be a smart contract is_killed: public(bool) @external def __init__(lp_addr: address, _minter: address, _reward_contract: address, _rewarded_token: address, _admin: address): """ @notice Contract constructor @param lp_addr Liquidity Pool contract address @param _minter Minter contract address @param _reward_contract Synthetix reward contract address @param _rewarded_token Received synthetix token contract address @param _admin Admin who can kill the gauge """ assert lp_addr != ZERO_ADDRESS assert _minter != ZERO_ADDRESS assert _reward_contract != ZERO_ADDRESS self.lp_token = lp_addr self.minter = _minter crv_addr: address = Minter(_minter).token() self.crv_token = crv_addr controller_addr: address = Minter(_minter).controller() self.controller = controller_addr self.voting_escrow = Controller(controller_addr).voting_escrow() self.period_timestamp[0] = block.timestamp self.inflation_rate = CRV20(crv_addr).rate() self.future_epoch_time = CRV20(crv_addr).future_epoch_time_write() self.reward_contract = _reward_contract assert ERC20(lp_addr).approve(_reward_contract, MAX_UINT256) self.rewarded_token = _rewarded_token self.admin = _admin @internal def _update_liquidity_limit(addr: address, l: uint256, L: uint256): """ @notice Calculate limits which depend on the amount of CRV token per-user. Effectively it calculates working balances to apply amplification of CRV production by CRV @param addr User address @param l User's amount of liquidity (LP tokens) @param L Total amount of liquidity (LP tokens) """ # To be called after totalSupply is updated _voting_escrow: address = self.voting_escrow voting_balance: uint256 = ERC20(_voting_escrow).balanceOf(addr) voting_total: uint256 = ERC20(_voting_escrow).totalSupply() lim: uint256 = l * TOKENLESS_PRODUCTION / 100 if (voting_total > 0) and (block.timestamp > self.period_timestamp[0] + BOOST_WARMUP): lim += L * voting_balance / voting_total * (100 - TOKENLESS_PRODUCTION) / 100 lim = min(l, lim) old_bal: uint256 = self.working_balances[addr] self.working_balances[addr] = lim _working_supply: uint256 = self.working_supply + lim - old_bal self.working_supply = _working_supply log UpdateLiquidityLimit(addr, l, L, lim, _working_supply) @internal def _checkpoint_rewards(addr: address, claim_rewards: bool): # Update reward integrals (no gauge weights involved: easy) _rewarded_token: address = self.rewarded_token d_reward: uint256 = 0 if claim_rewards: d_reward = ERC20(_rewarded_token).balanceOf(self) CurveRewards(self.reward_contract).getReward() d_reward = ERC20(_rewarded_token).balanceOf(self) - d_reward user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI self.reward_integral = I self.rewards_for[addr] += user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 self.reward_integral_for[addr] = I @internal def _checkpoint(addr: address, claim_rewards: bool): """ @notice Checkpoint for a user @param addr User address """ _token: address = self.crv_token _controller: address = self.controller _period: int128 = self.period _period_time: uint256 = self.period_timestamp[_period] _integrate_inv_supply: uint256 = self.integrate_inv_supply[_period] rate: uint256 = self.inflation_rate new_rate: uint256 = rate prev_future_epoch: uint256 = self.future_epoch_time if prev_future_epoch >= _period_time: self.future_epoch_time = CRV20(_token).future_epoch_time_write() new_rate = CRV20(_token).rate() self.inflation_rate = new_rate Controller(_controller).checkpoint_gauge(self) _working_balance: uint256 = self.working_balances[addr] _working_supply: uint256 = self.working_supply if self.is_killed: # Stop distributing inflation as soon as killed rate = 0 # Update integral of 1/supply if block.timestamp > _period_time: prev_week_time: uint256 = _period_time week_time: uint256 = min((_period_time + WEEK) / WEEK * WEEK, block.timestamp) for i in range(500): dt: uint256 = week_time - prev_week_time w: uint256 = Controller(_controller).gauge_relative_weight(self, prev_week_time / WEEK * WEEK) if _working_supply > 0: if prev_future_epoch >= prev_week_time and prev_future_epoch < week_time: # If we went across one or multiple epochs, apply the rate # of the first epoch until it ends, and then the rate of # the last epoch. # If more than one epoch is crossed - the gauge gets less, # but that'd meen it wasn't called for more than 1 year _integrate_inv_supply += rate * w * (prev_future_epoch - prev_week_time) / _working_supply rate = new_rate _integrate_inv_supply += rate * w * (week_time - prev_future_epoch) / _working_supply else: _integrate_inv_supply += rate * w * dt / _working_supply # On precisions of the calculation # rate ~= 10e18 # last_weight > 0.01 * 1e18 = 1e16 (if pool weight is 1%) # _working_supply ~= TVL * 1e18 ~= 1e26 ($100M for example) # The largest loss is at dt = 1 # Loss is 1e-9 - acceptable if week_time == block.timestamp: break prev_week_time = week_time week_time = min(week_time + WEEK, block.timestamp) _period += 1 self.period = _period self.period_timestamp[_period] = block.timestamp self.integrate_inv_supply[_period] = _integrate_inv_supply # Update user-specific integrals self.integrate_fraction[addr] += _working_balance * (_integrate_inv_supply - self.integrate_inv_supply_of[addr]) / 10 ** 18 self.integrate_inv_supply_of[addr] = _integrate_inv_supply self.integrate_checkpoint_of[addr] = block.timestamp self._checkpoint_rewards(addr, claim_rewards) @external def user_checkpoint(addr: address) -> bool: """ @notice Record a checkpoint for `addr` @param addr User address @return bool success """ assert (msg.sender == addr) or (msg.sender == self.minter) # dev: unauthorized self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) return True @external def claimable_tokens(addr: address) -> uint256: """ @notice Get the number of claimable tokens per user @dev This function should be manually changed to "view" in the ABI @return uint256 number of claimable tokens per user """ self._checkpoint(addr, True) return self.integrate_fraction[addr] - Minter(self.minter).minted(addr, self) @external @view def claimable_reward(addr: address) -> uint256: """ @notice Get the number of claimable reward tokens for a user @param addr Account to get reward amount for @return uint256 Claimable reward token amount """ d_reward: uint256 = CurveRewards(self.reward_contract).earned(self) user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI return self.rewards_for[addr] + user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 @external def kick(addr: address): """ @notice Kick `addr` for abusing their boost @dev Only if either they had another voting event, or their voting escrow lock expired @param addr Address to kick """ _voting_escrow: address = self.voting_escrow t_last: uint256 = self.integrate_checkpoint_of[addr] t_ve: uint256 = VotingEscrow(_voting_escrow).user_point_history__ts( addr, VotingEscrow(_voting_escrow).user_point_epoch(addr) ) _balance: uint256 = self.balanceOf[addr] assert ERC20(self.voting_escrow).balanceOf(addr) == 0 or t_ve > t_last # dev: kick not allowed assert self.working_balances[addr] > _balance * TOKENLESS_PRODUCTION / 100 # dev: kick not needed self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) @external def set_approve_deposit(addr: address, can_deposit: bool): """ @notice Set whether `addr` can deposit tokens for `msg.sender` @param addr Address to set approval on @param can_deposit bool - can this account deposit for `msg.sender`? """ self.approved_to_deposit[addr][msg.sender] = can_deposit @external @nonreentrant('lock') def deposit(_value: uint256, addr: address = msg.sender): """ @notice Deposit `_value` LP tokens @param _value Number of tokens to deposit @param addr Address to deposit for """ if addr != msg.sender: assert self.approved_to_deposit[msg.sender][addr], "Not approved" self._checkpoint(addr, True) if _value != 0: _balance: uint256 = self.balanceOf[addr] + _value _supply: uint256 = self.totalSupply + _value self.balanceOf[addr] = _balance self.totalSupply = _supply self._update_liquidity_limit(addr, _balance, _supply) assert ERC20(self.lp_token).transferFrom(msg.sender, self, _value) CurveRewards(self.reward_contract).stake(_value) log Deposit(addr, _value) @external @nonreentrant('lock') def withdraw(_value: uint256, claim_rewards: bool = True): """ @notice Withdraw `_value` LP tokens @param _value Number of tokens to withdraw """ self._checkpoint(msg.sender, claim_rewards) _balance: uint256 = self.balanceOf[msg.sender] - _value _supply: uint256 = self.totalSupply - _value self.balanceOf[msg.sender] = _balance self.totalSupply = _supply self._update_liquidity_limit(msg.sender, _balance, _supply) if _value > 0: CurveRewards(self.reward_contract).withdraw(_value) assert ERC20(self.lp_token).transfer(msg.sender, _value) log Withdraw(msg.sender, _value) @external @nonreentrant('lock') def claim_rewards(addr: address = msg.sender): self._checkpoint_rewards(addr, True) _rewards_for: uint256 = self.rewards_for[addr] assert ERC20(self.rewarded_token).transfer( addr, _rewards_for - self.claimed_rewards_for[addr]) self.claimed_rewards_for[addr] = _rewards_for @external @view def integrate_checkpoint() -> uint256: return self.period_timestamp[self.period] @external def kill_me(): assert msg.sender == self.admin self.is_killed = not self.is_killed @external def commit_transfer_ownership(addr: address): """ @notice Transfer ownership of GaugeController to `addr` @param addr Address to have ownership transferred to """ assert msg.sender == self.admin # dev: admin only self.future_admin = addr log CommitOwnership(addr) @external def apply_transfer_ownership(): """ @notice Apply pending ownership transfer """ assert msg.sender == self.admin # dev: admin only _admin: address = self.future_admin assert _admin != ZERO_ADDRESS # dev: admin not set self.admin = _admin log ApplyOwnership(_admin)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Deposit","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateLiquidityLimit","inputs":[{"type":"address","name":"user","indexed":false},{"type":"uint256","name":"original_balance","indexed":false},{"type":"uint256","name":"original_supply","indexed":false},{"type":"uint256","name":"working_balance","indexed":false},{"type":"uint256","name":"working_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"lp_addr"},{"type":"address","name":"_minter"},{"type":"address","name":"_reward_contract"},{"type":"address","name":"_rewarded_token"},{"type":"address","name":"_admin"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"user_checkpoint","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2303202},{"name":"claimable_tokens","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2222394},{"name":"claimable_reward","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":7252},{"name":"kick","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2308582},{"name":"set_approve_deposit","outputs":[],"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"can_deposit"}],"stateMutability":"nonpayable","type":"function","gas":35861},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"bool","name":"claim_rewards"}],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"integrate_checkpoint","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2297},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37278},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37958},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38797},{"name":"minter","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1511},{"name":"crv_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1541},{"name":"lp_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1571},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1601},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1876},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1691},{"name":"future_epoch_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1721},{"name":"approved_to_deposit","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"stateMutability":"view","type":"function","gas":2181},{"name":"working_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1996},{"name":"working_supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1811},{"name":"period","outputs":[{"type":"int128","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1841},{"name":"period_timestamp","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1980},{"name":"integrate_inv_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2010},{"name":"integrate_inv_supply_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2146},{"name":"integrate_checkpoint_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2176},{"name":"integrate_fraction","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2206},{"name":"inflation_rate","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021},{"name":"reward_contract","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"rewarded_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2081},{"name":"reward_integral","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"reward_integral_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2356},{"name":"rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2386},{"name":"claimed_rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2416},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2231},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291}]
Contract Creation Code
6f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605260a0611fc5610140396020611fc560c03960c05160a01c1561005857600080fd5b60206020611fc50160c03960c05160a01c1561007357600080fd5b60206040611fc50160c03960c05160a01c1561008e57600080fd5b60206060611fc50160c03960c05160a01c156100a957600080fd5b60206080611fc50160c03960c05160a01c156100c457600080fd5b600061014051186100d457600080fd5b600061016051186100e457600080fd5b600061018051186100f457600080fd5b61014051600255610160516000556020610260600463fc0c546a6102005261021c610160515afa61012457600080fd5b601f3d1161013157600080fd5b600050610260516101e0526101e0516001556020610300600463f77c47916102a0526102bc610160515afa61016557600080fd5b601f3d1161017257600080fd5b6000506103005161028052610280516003556020610380600463dfe050316103205261033c610280515afa6101a657600080fd5b601f3d116101b357600080fd5b6000506103805160045542600c60c052602060c0205560206104006004632c4e722e6103a0526103bc6101e0515afa6101eb57600080fd5b601f3d116101f857600080fd5b600050610400516011556020610480600463b26b238e6104205261043c60006101e0515af161022657600080fd5b601f3d1161023357600080fd5b60005061048051600755610180516012556020610540604463095ea7b36104a052610180516104c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104e0526104bc6000610140515af161029557600080fd5b601f3d116102a257600080fd5b600050610540516102b257600080fd5b6101a0516013556101c051601855611fad56341561000a57600080fd5b600436101561001857611ce2565b600035601c526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff800000000000000000000000000000006060526000156102bd575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa61009f57600080fd5b601f3d116100ac57600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa6100d957600080fd5b601f3d116100e657600080fd5b600050610320516102a052610160516028808202821582848304141761010b57600080fd5b809050905090506064808204905090506103405260006102a051111561015757600c60c052602060c020546212750081818301101561014957600080fd5b80820190509050421161015a565b60005b156101dc576103408051610180516101e051808202821582848304141761018057600080fd5b809050905090506102a051808061019657600080fd5b820490509050603c80820282158284830414176101b257600080fd5b809050905090506064808204905090508181830110156101d157600080fd5b808201905090508152505b6101605161034051808211156101f257806101f4565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561023e57600080fd5b80820190509050610360518082101561025657600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b6000156104e7575b6101805261014052610160526013546101a05260006101c05261016051156103ad57602061026060246370a082316101e05230610200526101fc6101a0515afa61030e57600080fd5b601f3d1161031b57600080fd5b600050610260516101c0526012543b61033357600080fd5b600060006004633d18b9126102805261029c60006012545af161035557600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa61037c57600080fd5b601f3d1161038957600080fd5b600050610360516101c051808210156103a157600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561041e57670de0b6b3a76400006101c05180820282158284830414176103fd57600080fd5b809050905090506103a051808061041357600080fd5b8204905090506103c0525b6014546103c05181818301101561043457600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c020548082101561048057600080fd5b80820390509050808202821582848304141761049b57600080fd5b80905090509050670de0b6b3a7640000808204905090508181830110156104c157600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610b6f575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061052d57600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa0000000811061055a57600080fd5b600d60c052602060c02001546102205260115461024052610240516102605260075461028052610200516102805110151561060c576020610300600463b26b238e6102a0526102bc60006101a0515af16105b357600080fd5b601f3d116105c057600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa6105ec57600080fd5b601f3d116105f957600080fd5b6000506103805161026052610260516011555b6101c0513b61061a57600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af161064257600080fd5b60096101405160e05260c052604060c0205461042052600a5461044052601a541561066e576000610240525b610200514211156109b25761020051610460526102005162093a8081818301101561069857600080fd5b8082019050905062093a808082049050905062093a8080820282158284830414176106c257600080fd5b8090509050905042808211156106d857806106da565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561070457600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a808082049050905062093a80808202821582848304141761074b57600080fd5b809050905090506105405261051c6101c0515afa61076857600080fd5b601f3d1161077557600080fd5b6000506105a0516104e052600061044051111561094f5761046051610280511015156107a9576104805161028051106107ac565b60005b156108d8576102208051610240516104e05180820282158284830414176107d257600080fd5b809050905090506102805161046051808210156107ee57600080fd5b80820390509050808202821582848304141761080957600080fd5b8090509050905061044051808061081f57600080fd5b82049050905081818301101561083457600080fd5b8082019050905081525061026051610240526102208051610240516104e051808202821582848304141761086757600080fd5b8090509050905061048051610280518082101561088357600080fd5b80820390509050808202821582848304141761089e57600080fd5b809050905090506104405180806108b457600080fd5b8204905090508181830110156108c957600080fd5b8082019050905081525061094e565b6102208051610240516104e05180820282158284830414176108f957600080fd5b809050905090506104c051808202821582848304141761091857600080fd5b8090509050905061044051808061092e57600080fd5b82049050905081818301101561094357600080fd5b808201905090508152505b5b4261048051141561095f576109af565b61048051610460526104805162093a8081818301101561097e57600080fd5b8082019050905042808211156109945780610996565b815b90509050610480525b81516001018083528114156106ef575b50505b6101e080516001606051818301806040519013156109cf57600080fd5b80919012156109dd57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a0957600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610a3657600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610a7c57600080fd5b808203905090508082028215828483041417610a9757600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610abd57600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610b1a57610af8565b610140516105e0526101605161060052610600516105e051600658016102c5565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610b6657610b43565b60005061018051565b634b8200936000511415610c375760043560a01c15610b8d57600080fd5b600435331415610b9e576001610ba4565b60005433145b5b610bae57600080fd5b600435610140526001610160526101605161014051600658016104ef565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e0516006580161005e565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610ce75760043560a01c15610c5557600080fd5b600435610140526001610160526101605161014051600658016104ef565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610cb457600080fd5b601f3d11610cc157600080fd5b6000506102605180821015610cd557600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610e5d5760043560a01c15610d0557600080fd5b60206101e06024628cc26261016052306101805261017c6012545afa610d2a57600080fd5b601f3d11610d3757600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610db257670de0b6b3a7640000610140518082028215828483041417610d9157600080fd5b80905090509050610220518080610da757600080fd5b820490509050610240525b60145461024051818183011015610dc857600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610e0a57600080fd5b808203905090508082028215828483041417610e2557600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610e4b57600080fd5b8082019050905060005260206000f350005b6396c5517560005114156110d85760043560a01c15610e7b57600080fd5b60045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610ed757600080fd5b601f3d11610ee457600080fd5b600050610220516102805261025c610140515afa610f0157600080fd5b601f3d11610f0e57600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa610f5657600080fd5b601f3d11610f6357600080fd5b600050610440511515610f77576001610f81565b6101605161018051115b5b610f8b57600080fd5b6103005160288082028215828483041417610fa557600080fd5b80905090509050606480820490509050600960043560e05260c052604060c0205411610fd057600080fd5b610140610460525b61046051516020610460510161046052610460610460511015610ffa57610fd8565b6004356104805260016104a0526104a05161048051600658016104ef565b610440610460525b610460515260206104605103610460526101406104605110151561104357611020565b600050610140610500525b610500515160206105005101610500526105006105005110156110705761104e565b60043561052052600560043560e05260c052604060c0205461054052600654610560526105605161054051610520516006580161005e565b6104e0610500525b61050051526020610500510361050052610140610500511015156110d3576110b0565b600050005b631d2747d460005114156111285760043560a01c156110f657600080fd5b60243560011c1561110657600080fd5b602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f256000511415611140573361014052611176565b636e553f65600051141561116e5760243560a01c1561115e57600080fd5b6020602461014037600050611176565b6000156113e8575b62ffffff541561118557600080fd5b600162ffffff55336101405118156111ff576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546111fe57606461017cfd5b5b6101405161014051610220526001610240526102405161022051600658016104ef565b61014052600050600060043518156113ad5760056101405160e05260c052604060c0205460043581818301101561125857600080fd5b808201905090506102a05260065460043581818301101561127857600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156112ca576112a8565b61014051610300526102a051610320526102c051610340526103405161032051610300516006580161005e565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e051101515611322576112ff565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161135957600080fd5b601f3d1161136657600080fd5b6000506104605161137657600080fd5b6012543b61138357600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af16113ac57600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d600051141561140157600161014052611437565b6338d07436600051141561142f5760243560011c1561141f57600080fd5b6020602461014037600050611437565b60001561160b575b62ffffff541561144657600080fd5b600162ffffff55610140513361018052610140516101a0526101a05161018051600658016104ef565b6101405260005060053360e05260c052604060c020546004358082101561149557600080fd5b8082039050905061020052600654600435808210156114b357600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a05161028051610260516006580161005e565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156115d3576012543b61155d57600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161158657600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af16115b557600080fd5b601f3d116115c257600080fd5b600050610420516115d257600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf26000511415611623573361014052611659565b6384e9bd7e60005114156116515760043560a01c1561164157600080fd5b6020600461014037600050611659565b600015611744575b62ffffff541561166857600080fd5b600162ffffff5561014051610140516101805260016101a0526101a05161018051600658016102c5565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156116ea57600080fd5b808203905090506102605261023c60006013545af161170857600080fd5b601f3d1161171557600080fd5b6000506102c05161172557600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561178557600b546c01431e0fae6d7217caa0000000811061176e57600080fd5b600c60c052602060c020015460005260206000f350005b63e369885360005114156117aa5760185433146117a157600080fd5b601a5415601a55005b636b441a40600051141561180c5760043560a01c156117c857600080fd5b60185433146117d657600080fd5b600435601955600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561187757601854331461182857600080fd5b601954610140526000610140511861183f57600080fd5b6101405160185561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156118935760005460005260206000f350005b6376d8b11760005114156118af5760015460005260206000f350005b6382c6306660005114156118cb5760025460005260206000f350005b63f77c479160005114156118e75760035460005260206000f350005b63dfe0503160005114156119035760045460005260206000f350005b6370a08231600051141561193d5760043560a01c1561192157600080fd5b600560043560e05260c052604060c0205460005260206000f350005b6318160ddd60005114156119595760065460005260206000f350005b63be5d1be960005114156119755760075460005260206000f350005b63e152253660005114156119cd5760043560a01c1561199357600080fd5b60243560a01c156119a357600080fd5b600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611a075760043560a01c156119eb57600080fd5b600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611a2357600a5460005260206000f350005b63ef78d4fd6000511415611a3f57600b5460005260206000f350005b637598108c6000511415611a80576004356c01431e0fae6d7217caa00000008110611a6957600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611ac1576004356c01431e0fae6d7217caa00000008110611aaa57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611afb5760043560a01c15611adf57600080fd5b600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611b355760043560a01c15611b1957600080fd5b600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611b6f5760043560a01c15611b5357600080fd5b601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611b8b5760115460005260206000f350005b63bf88a6ff6000511415611ba75760125460005260206000f350005b6316fa50b16000511415611bc35760135460005260206000f350005b63aaa626b66000511415611bdf5760145460005260206000f350005b6313fa13686000511415611c195760043560a01c15611bfd57600080fd5b601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611c535760043560a01c15611c3757600080fd5b601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611c8d5760043560a01c15611c7157600080fd5b601760043560e05260c052604060c0205460005260206000f350005b63f851a4406000511415611ca95760185460005260206000f350005b6317f7182a6000511415611cc55760195460005260206000f350005b639c868ac06000511415611ce157601a5460005260206000f350005b5b60006000fd5b6102c5611fad036102c56000396102c5611fad036000f3000000000000000000000000c2ee6b0334c261ed60c72f6054450b61b8f18e35000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0000000000000000000000000ad4768f408dd170e62e074188d81a29ae31b8fd80000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e80000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
Deployed Bytecode
0x341561000a57600080fd5b600436101561001857611ce2565b600035601c526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff800000000000000000000000000000006060526000156102bd575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa61009f57600080fd5b601f3d116100ac57600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa6100d957600080fd5b601f3d116100e657600080fd5b600050610320516102a052610160516028808202821582848304141761010b57600080fd5b809050905090506064808204905090506103405260006102a051111561015757600c60c052602060c020546212750081818301101561014957600080fd5b80820190509050421161015a565b60005b156101dc576103408051610180516101e051808202821582848304141761018057600080fd5b809050905090506102a051808061019657600080fd5b820490509050603c80820282158284830414176101b257600080fd5b809050905090506064808204905090508181830110156101d157600080fd5b808201905090508152505b6101605161034051808211156101f257806101f4565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561023e57600080fd5b80820190509050610360518082101561025657600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b6000156104e7575b6101805261014052610160526013546101a05260006101c05261016051156103ad57602061026060246370a082316101e05230610200526101fc6101a0515afa61030e57600080fd5b601f3d1161031b57600080fd5b600050610260516101c0526012543b61033357600080fd5b600060006004633d18b9126102805261029c60006012545af161035557600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa61037c57600080fd5b601f3d1161038957600080fd5b600050610360516101c051808210156103a157600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561041e57670de0b6b3a76400006101c05180820282158284830414176103fd57600080fd5b809050905090506103a051808061041357600080fd5b8204905090506103c0525b6014546103c05181818301101561043457600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c020548082101561048057600080fd5b80820390509050808202821582848304141761049b57600080fd5b80905090509050670de0b6b3a7640000808204905090508181830110156104c157600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610b6f575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061052d57600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa0000000811061055a57600080fd5b600d60c052602060c02001546102205260115461024052610240516102605260075461028052610200516102805110151561060c576020610300600463b26b238e6102a0526102bc60006101a0515af16105b357600080fd5b601f3d116105c057600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa6105ec57600080fd5b601f3d116105f957600080fd5b6000506103805161026052610260516011555b6101c0513b61061a57600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af161064257600080fd5b60096101405160e05260c052604060c0205461042052600a5461044052601a541561066e576000610240525b610200514211156109b25761020051610460526102005162093a8081818301101561069857600080fd5b8082019050905062093a808082049050905062093a8080820282158284830414176106c257600080fd5b8090509050905042808211156106d857806106da565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561070457600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a808082049050905062093a80808202821582848304141761074b57600080fd5b809050905090506105405261051c6101c0515afa61076857600080fd5b601f3d1161077557600080fd5b6000506105a0516104e052600061044051111561094f5761046051610280511015156107a9576104805161028051106107ac565b60005b156108d8576102208051610240516104e05180820282158284830414176107d257600080fd5b809050905090506102805161046051808210156107ee57600080fd5b80820390509050808202821582848304141761080957600080fd5b8090509050905061044051808061081f57600080fd5b82049050905081818301101561083457600080fd5b8082019050905081525061026051610240526102208051610240516104e051808202821582848304141761086757600080fd5b8090509050905061048051610280518082101561088357600080fd5b80820390509050808202821582848304141761089e57600080fd5b809050905090506104405180806108b457600080fd5b8204905090508181830110156108c957600080fd5b8082019050905081525061094e565b6102208051610240516104e05180820282158284830414176108f957600080fd5b809050905090506104c051808202821582848304141761091857600080fd5b8090509050905061044051808061092e57600080fd5b82049050905081818301101561094357600080fd5b808201905090508152505b5b4261048051141561095f576109af565b61048051610460526104805162093a8081818301101561097e57600080fd5b8082019050905042808211156109945780610996565b815b90509050610480525b81516001018083528114156106ef575b50505b6101e080516001606051818301806040519013156109cf57600080fd5b80919012156109dd57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a0957600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610a3657600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610a7c57600080fd5b808203905090508082028215828483041417610a9757600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610abd57600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610b1a57610af8565b610140516105e0526101605161060052610600516105e051600658016102c5565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610b6657610b43565b60005061018051565b634b8200936000511415610c375760043560a01c15610b8d57600080fd5b600435331415610b9e576001610ba4565b60005433145b5b610bae57600080fd5b600435610140526001610160526101605161014051600658016104ef565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e0516006580161005e565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610ce75760043560a01c15610c5557600080fd5b600435610140526001610160526101605161014051600658016104ef565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610cb457600080fd5b601f3d11610cc157600080fd5b6000506102605180821015610cd557600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610e5d5760043560a01c15610d0557600080fd5b60206101e06024628cc26261016052306101805261017c6012545afa610d2a57600080fd5b601f3d11610d3757600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610db257670de0b6b3a7640000610140518082028215828483041417610d9157600080fd5b80905090509050610220518080610da757600080fd5b820490509050610240525b60145461024051818183011015610dc857600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610e0a57600080fd5b808203905090508082028215828483041417610e2557600080fd5b80905090509050670de0b6b3a764000080820490509050818183011015610e4b57600080fd5b8082019050905060005260206000f350005b6396c5517560005114156110d85760043560a01c15610e7b57600080fd5b60045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610ed757600080fd5b601f3d11610ee457600080fd5b600050610220516102805261025c610140515afa610f0157600080fd5b601f3d11610f0e57600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa610f5657600080fd5b601f3d11610f6357600080fd5b600050610440511515610f77576001610f81565b6101605161018051115b5b610f8b57600080fd5b6103005160288082028215828483041417610fa557600080fd5b80905090509050606480820490509050600960043560e05260c052604060c0205411610fd057600080fd5b610140610460525b61046051516020610460510161046052610460610460511015610ffa57610fd8565b6004356104805260016104a0526104a05161048051600658016104ef565b610440610460525b610460515260206104605103610460526101406104605110151561104357611020565b600050610140610500525b610500515160206105005101610500526105006105005110156110705761104e565b60043561052052600560043560e05260c052604060c0205461054052600654610560526105605161054051610520516006580161005e565b6104e0610500525b61050051526020610500510361050052610140610500511015156110d3576110b0565b600050005b631d2747d460005114156111285760043560a01c156110f657600080fd5b60243560011c1561110657600080fd5b602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f256000511415611140573361014052611176565b636e553f65600051141561116e5760243560a01c1561115e57600080fd5b6020602461014037600050611176565b6000156113e8575b62ffffff541561118557600080fd5b600162ffffff55336101405118156111ff576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546111fe57606461017cfd5b5b6101405161014051610220526001610240526102405161022051600658016104ef565b61014052600050600060043518156113ad5760056101405160e05260c052604060c0205460043581818301101561125857600080fd5b808201905090506102a05260065460043581818301101561127857600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156112ca576112a8565b61014051610300526102a051610320526102c051610340526103405161032051610300516006580161005e565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e051101515611322576112ff565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161135957600080fd5b601f3d1161136657600080fd5b6000506104605161137657600080fd5b6012543b61138357600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af16113ac57600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d600051141561140157600161014052611437565b6338d07436600051141561142f5760243560011c1561141f57600080fd5b6020602461014037600050611437565b60001561160b575b62ffffff541561144657600080fd5b600162ffffff55610140513361018052610140516101a0526101a05161018051600658016104ef565b6101405260005060053360e05260c052604060c020546004358082101561149557600080fd5b8082039050905061020052600654600435808210156114b357600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a05161028051610260516006580161005e565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156115d3576012543b61155d57600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161158657600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af16115b557600080fd5b601f3d116115c257600080fd5b600050610420516115d257600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf26000511415611623573361014052611659565b6384e9bd7e60005114156116515760043560a01c1561164157600080fd5b6020600461014037600050611659565b600015611744575b62ffffff541561166857600080fd5b600162ffffff5561014051610140516101805260016101a0526101a05161018051600658016102c5565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156116ea57600080fd5b808203905090506102605261023c60006013545af161170857600080fd5b601f3d1161171557600080fd5b6000506102c05161172557600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561178557600b546c01431e0fae6d7217caa0000000811061176e57600080fd5b600c60c052602060c020015460005260206000f350005b63e369885360005114156117aa5760185433146117a157600080fd5b601a5415601a55005b636b441a40600051141561180c5760043560a01c156117c857600080fd5b60185433146117d657600080fd5b600435601955600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561187757601854331461182857600080fd5b601954610140526000610140511861183f57600080fd5b6101405160185561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156118935760005460005260206000f350005b6376d8b11760005114156118af5760015460005260206000f350005b6382c6306660005114156118cb5760025460005260206000f350005b63f77c479160005114156118e75760035460005260206000f350005b63dfe0503160005114156119035760045460005260206000f350005b6370a08231600051141561193d5760043560a01c1561192157600080fd5b600560043560e05260c052604060c0205460005260206000f350005b6318160ddd60005114156119595760065460005260206000f350005b63be5d1be960005114156119755760075460005260206000f350005b63e152253660005114156119cd5760043560a01c1561199357600080fd5b60243560a01c156119a357600080fd5b600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611a075760043560a01c156119eb57600080fd5b600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611a2357600a5460005260206000f350005b63ef78d4fd6000511415611a3f57600b5460005260206000f350005b637598108c6000511415611a80576004356c01431e0fae6d7217caa00000008110611a6957600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611ac1576004356c01431e0fae6d7217caa00000008110611aaa57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611afb5760043560a01c15611adf57600080fd5b600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611b355760043560a01c15611b1957600080fd5b600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611b6f5760043560a01c15611b5357600080fd5b601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611b8b5760115460005260206000f350005b63bf88a6ff6000511415611ba75760125460005260206000f350005b6316fa50b16000511415611bc35760135460005260206000f350005b63aaa626b66000511415611bdf5760145460005260206000f350005b6313fa13686000511415611c195760043560a01c15611bfd57600080fd5b601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611c535760043560a01c15611c3757600080fd5b601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611c8d5760043560a01c15611c7157600080fd5b601760043560e05260c052604060c0205460005260206000f350005b63f851a4406000511415611ca95760185460005260206000f350005b6317f7182a6000511415611cc55760195460005260206000f350005b639c868ac06000511415611ce157601a5460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c2ee6b0334c261ed60c72f6054450b61b8f18e35000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0000000000000000000000000ad4768f408dd170e62e074188d81a29ae31b8fd80000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e80000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
-----Decoded View---------------
Arg [0] : lp_addr (address): 0xC2Ee6b0334C261ED60C72f6054450b61B8f18E35
Arg [1] : _minter (address): 0xd061D61a4d941c39E5453435B6345Dc261C2fcE0
Arg [2] : _reward_contract (address): 0xAD4768F408dD170e62E074188D81A29AE31B8Fd8
Arg [3] : _rewarded_token (address): 0x8762db106B2c2A0bccB3A80d1Ed41273552616E8
Arg [4] : _admin (address): 0x7EeAC6CDdbd1D0B8aF061742D41877D7F707289a
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000c2ee6b0334c261ed60c72f6054450b61b8f18e35
Arg [1] : 000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0
Arg [2] : 000000000000000000000000ad4768f408dd170e62e074188d81a29ae31b8fd8
Arg [3] : 0000000000000000000000008762db106b2c2a0bccb3a80d1ed41273552616e8
Arg [4] : 0000000000000000000000007eeac6cddbd1d0b8af061742d41877d7f707289a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.