More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 612 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create_lock | 21610689 | 3 days ago | IN | 0 ETH | 0.00082428 | ||||
Create_lock | 21610632 | 3 days ago | IN | 0 ETH | 0.00081944 | ||||
Create_lock | 21588863 | 6 days ago | IN | 0 ETH | 0.00373252 | ||||
Create_lock | 21582992 | 7 days ago | IN | 0 ETH | 0.00192828 | ||||
Create_lock | 21582945 | 7 days ago | IN | 0 ETH | 0.00200576 | ||||
Increase_amount | 21582634 | 7 days ago | IN | 0 ETH | 0.00231806 | ||||
Increase_unlock_... | 21582627 | 7 days ago | IN | 0 ETH | 0.00169772 | ||||
Increase_unlock_... | 21582591 | 7 days ago | IN | 0 ETH | 0.0016618 | ||||
Increase_amount | 21582585 | 7 days ago | IN | 0 ETH | 0.0021649 | ||||
Create_lock | 21578553 | 7 days ago | IN | 0 ETH | 0.00253315 | ||||
Create_lock | 21578320 | 7 days ago | IN | 0 ETH | 0.00203998 | ||||
Withdraw | 21578288 | 7 days ago | IN | 0 ETH | 0.0016904 | ||||
Create_lock | 21578210 | 7 days ago | IN | 0 ETH | 0.00212705 | ||||
Create_lock | 21578012 | 7 days ago | IN | 0 ETH | 0.00212308 | ||||
Create_lock | 21577888 | 7 days ago | IN | 0 ETH | 0.00159473 | ||||
Withdraw | 21489934 | 20 days ago | IN | 0 ETH | 0.00094808 | ||||
Withdraw | 21489933 | 20 days ago | IN | 0 ETH | 0.00093471 | ||||
Withdraw | 21489933 | 20 days ago | IN | 0 ETH | 0.00167648 | ||||
Withdraw | 21481081 | 21 days ago | IN | 0 ETH | 0.00172516 | ||||
Withdraw | 21329482 | 42 days ago | IN | 0 ETH | 0.00427449 | ||||
Withdraw | 21329479 | 42 days ago | IN | 0 ETH | 0.00604284 | ||||
Withdraw | 21307360 | 45 days ago | IN | 0 ETH | 0.00332873 | ||||
Create_lock | 21259147 | 52 days ago | IN | 0 ETH | 0.00483215 | ||||
Withdraw | 21259128 | 52 days ago | IN | 0 ETH | 0.00473487 | ||||
Withdraw | 21257060 | 52 days ago | IN | 0 ETH | 0.00546554 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.7
Contract Source Code (Vyper language format)
# @version 0.2.7 """ @title Voting Escrow @author Curve Finance @license MIT @notice Votes have a weight depending on time, so that users are committed to the future of (whatever they are voting for) @dev Vote weight decays linearly over time. Lock time cannot be more than `MAXTIME` (4 years). """ # Voting escrow to have time-weighted votes # Votes have a weight depending on time, so that users are committed # to the future of (whatever they are voting for). # The weight in this implementation is linear, and lock cannot be more than maxtime: # w ^ # 1 + / # | / # | / # | / # |/ # 0 +--------+------> time # maxtime (4 years?) struct Point: bias: int128 slope: int128 # - dweight / dt ts: uint256 blk: uint256 # block # We cannot really do block numbers per se b/c slope is per time, not per block # and per block could be fairly bad b/c Ethereum changes blocktimes. # What we can do is to extrapolate ***At functions struct LockedBalance: amount: int128 end: uint256 interface ERC20: def decimals() -> uint256: view def name() -> String[64]: view def symbol() -> String[32]: view def transfer(to: address, amount: uint256) -> bool: nonpayable def transferFrom(spender: address, to: address, amount: uint256) -> bool: nonpayable interface IIdle: def delegate(delegatee: address): nonpayable # Interface for checking whether address belongs to a whitelisted # type of a smart wallet. # When new types are added - the whole contract is changed # The check() method is modifying to be able to use caching # for individual wallet addresses interface SmartWalletChecker: def check(addr: address) -> bool: nonpayable DEPOSIT_FOR_TYPE: constant(int128) = 0 CREATE_LOCK_TYPE: constant(int128) = 1 INCREASE_LOCK_AMOUNT: constant(int128) = 2 INCREASE_UNLOCK_TIME: constant(int128) = 3 event CommitOwnership: admin: address event ApplyOwnership: admin: address event Deposit: provider: indexed(address) value: uint256 locktime: indexed(uint256) type: int128 ts: uint256 event Withdraw: provider: indexed(address) value: uint256 ts: uint256 event Supply: prevSupply: uint256 supply: uint256 WEEK: constant(uint256) = 7 * 86400 # all future times are rounded by week MAXTIME: constant(uint256) = 4 * 365 * 86400 # 4 years MULTIPLIER: constant(uint256) = 10 ** 18 token: public(address) supply: public(uint256) locked: public(HashMap[address, LockedBalance]) epoch: public(uint256) point_history: public(Point[100000000000000000000000000000]) # epoch -> unsigned point user_point_history: public(HashMap[address, Point[1000000000]]) # user -> Point[user_epoch] user_point_epoch: public(HashMap[address, uint256]) slope_changes: public(HashMap[uint256, int128]) # time -> signed slope change # Aragon's view methods for compatibility controller: public(address) transfersEnabled: public(bool) name: public(String[64]) symbol: public(String[32]) version: public(String[32]) decimals: public(uint256) # Checker for whitelisted (smart contract) wallets which are allowed to deposit # The goal is to prevent tokenizing the escrow future_smart_wallet_checker: public(address) smart_wallet_checker: public(address) admin: public(address) # Can and will be a smart contract future_admin: public(address) vote_delegatee: public(address) # address of idle delegated votes @external def __init__(token_addr: address, _name: String[64], _symbol: String[32], _version: String[32], _vote_delegate: address): """ @notice Contract constructor @param token_addr `ERC20CRV` token address @param _name Token name @param _symbol Token symbol @param _version Contract version - required for Aragon compatibility """ self.admin = msg.sender self.token = token_addr self.point_history[0].blk = block.number self.point_history[0].ts = block.timestamp self.controller = msg.sender self.transfersEnabled = True _decimals: uint256 = ERC20(token_addr).decimals() assert _decimals <= 255 self.decimals = _decimals self.name = _name self.symbol = _symbol self.version = _version # Delegate governance votes to address self.vote_delegatee = _vote_delegate IIdle(token_addr).delegate(_vote_delegate) @external def update_delegate(_new_delegatee: address): assert msg.sender == self.admin # dev: admin only self.vote_delegatee = _new_delegatee IIdle(self.token).delegate(_new_delegatee) @external def commit_transfer_ownership(addr: address): """ @notice Transfer ownership of VotingEscrow contract 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 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) @external def commit_smart_wallet_checker(addr: address): """ @notice Set an external contract to check for approved smart contract wallets @param addr Address of Smart contract checker """ assert msg.sender == self.admin self.future_smart_wallet_checker = addr @external def apply_smart_wallet_checker(): """ @notice Apply setting external contract to check approved smart contract wallets """ assert msg.sender == self.admin self.smart_wallet_checker = self.future_smart_wallet_checker @internal def assert_not_contract(addr: address): """ @notice Check if the call is from a whitelisted smart contract, revert if not @param addr Address to be checked """ if addr != tx.origin: checker: address = self.smart_wallet_checker if checker != ZERO_ADDRESS: if SmartWalletChecker(checker).check(addr): return raise "Smart contract depositors not allowed" @external @view def get_last_user_slope(addr: address) -> int128: """ @notice Get the most recently recorded rate of voting power decrease for `addr` @param addr Address of the user wallet @return Value of the slope """ uepoch: uint256 = self.user_point_epoch[addr] return self.user_point_history[addr][uepoch].slope @external @view def user_point_history__ts(_addr: address, _idx: uint256) -> uint256: """ @notice Get the timestamp for checkpoint `_idx` for `_addr` @param _addr User wallet address @param _idx User epoch number @return Epoch time of the checkpoint """ return self.user_point_history[_addr][_idx].ts @external @view def locked__end(_addr: address) -> uint256: """ @notice Get timestamp when `_addr`'s lock finishes @param _addr User wallet @return Epoch time of the lock end """ return self.locked[_addr].end @internal def _checkpoint(addr: address, old_locked: LockedBalance, new_locked: LockedBalance): """ @notice Record global and per-user data to checkpoint @param addr User's wallet address. No user checkpoint if 0x0 @param old_locked Pevious locked amount / end lock time for the user @param new_locked New locked amount / end lock time for the user """ u_old: Point = empty(Point) u_new: Point = empty(Point) old_dslope: int128 = 0 new_dslope: int128 = 0 _epoch: uint256 = self.epoch if addr != ZERO_ADDRESS: # Calculate slopes and biases # Kept at zero when they have to if old_locked.end > block.timestamp and old_locked.amount > 0: u_old.slope = old_locked.amount / MAXTIME u_old.bias = u_old.slope * convert(old_locked.end - block.timestamp, int128) if new_locked.end > block.timestamp and new_locked.amount > 0: u_new.slope = new_locked.amount / MAXTIME u_new.bias = u_new.slope * convert(new_locked.end - block.timestamp, int128) # Read values of scheduled changes in the slope # old_locked.end can be in the past and in the future # new_locked.end can ONLY by in the FUTURE unless everything expired: than zeros old_dslope = self.slope_changes[old_locked.end] if new_locked.end != 0: if new_locked.end == old_locked.end: new_dslope = old_dslope else: new_dslope = self.slope_changes[new_locked.end] last_point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number}) if _epoch > 0: last_point = self.point_history[_epoch] last_checkpoint: uint256 = last_point.ts # initial_last_point is used for extrapolation to calculate block number # (approximately, for *At methods) and save them # as we cannot figure that out exactly from inside the contract initial_last_point: Point = last_point block_slope: uint256 = 0 # dblock/dt if block.timestamp > last_point.ts: block_slope = MULTIPLIER * (block.number - last_point.blk) / (block.timestamp - last_point.ts) # If last point is already recorded in this block, slope=0 # But that's ok b/c we know the block in such case # Go over weeks to fill history and calculate what the current point is t_i: uint256 = (last_checkpoint / WEEK) * WEEK for i in range(255): # Hopefully it won't happen that this won't get used in 5 years! # If it does, users will be able to withdraw but vote weight will be broken t_i += WEEK d_slope: int128 = 0 if t_i > block.timestamp: t_i = block.timestamp else: d_slope = self.slope_changes[t_i] last_point.bias -= last_point.slope * convert(t_i - last_checkpoint, int128) last_point.slope += d_slope if last_point.bias < 0: # This can happen last_point.bias = 0 if last_point.slope < 0: # This cannot happen - just in case last_point.slope = 0 last_checkpoint = t_i last_point.ts = t_i last_point.blk = initial_last_point.blk + block_slope * (t_i - initial_last_point.ts) / MULTIPLIER _epoch += 1 if t_i == block.timestamp: last_point.blk = block.number break else: self.point_history[_epoch] = last_point self.epoch = _epoch # Now point_history is filled until t=now if addr != ZERO_ADDRESS: # If last point was in this block, the slope change has been applied already # But in such case we have 0 slope(s) last_point.slope += (u_new.slope - u_old.slope) last_point.bias += (u_new.bias - u_old.bias) if last_point.slope < 0: last_point.slope = 0 if last_point.bias < 0: last_point.bias = 0 # Record the changed point into history self.point_history[_epoch] = last_point if addr != ZERO_ADDRESS: # Schedule the slope changes (slope is going down) # We subtract new_user_slope from [new_locked.end] # and add old_user_slope to [old_locked.end] if old_locked.end > block.timestamp: # old_dslope was <something> - u_old.slope, so we cancel that old_dslope += u_old.slope if new_locked.end == old_locked.end: old_dslope -= u_new.slope # It was a new deposit, not extension self.slope_changes[old_locked.end] = old_dslope if new_locked.end > block.timestamp: if new_locked.end > old_locked.end: new_dslope -= u_new.slope # old slope disappeared at this point self.slope_changes[new_locked.end] = new_dslope # else: we recorded it already in old_dslope # Now handle user history user_epoch: uint256 = self.user_point_epoch[addr] + 1 self.user_point_epoch[addr] = user_epoch u_new.ts = block.timestamp u_new.blk = block.number self.user_point_history[addr][user_epoch] = u_new @internal def _deposit_for(_addr: address, _value: uint256, unlock_time: uint256, locked_balance: LockedBalance, type: int128): """ @notice Deposit and lock tokens for a user @param _addr User's wallet address @param _value Amount to deposit @param unlock_time New time when to unlock the tokens, or 0 if unchanged @param locked_balance Previous locked amount / timestamp """ _locked: LockedBalance = locked_balance supply_before: uint256 = self.supply self.supply = supply_before + _value old_locked: LockedBalance = _locked # Adding to existing lock, or if a lock is expired - creating a new one _locked.amount += convert(_value, int128) if unlock_time != 0: _locked.end = unlock_time self.locked[_addr] = _locked # Possibilities: # Both old_locked.end could be current or expired (>/< block.timestamp) # value == 0 (extend lock) or value > 0 (add to lock or extend lock) # _locked.end > block.timestamp (always) self._checkpoint(_addr, old_locked, _locked) if _value != 0: assert ERC20(self.token).transferFrom(_addr, self, _value) log Deposit(_addr, _value, _locked.end, type, block.timestamp) log Supply(supply_before, supply_before + _value) @external def checkpoint(): """ @notice Record global data to checkpoint """ self._checkpoint(ZERO_ADDRESS, empty(LockedBalance), empty(LockedBalance)) @external @nonreentrant('lock') def deposit_for(_addr: address, _value: uint256): """ @notice Deposit `_value` tokens for `_addr` and add to the lock @dev Anyone (even a smart contract) can deposit for someone else, but cannot extend their locktime and deposit for a brand new user @param _addr User's wallet address @param _value Amount to add to user's lock """ _locked: LockedBalance = self.locked[_addr] assert _value > 0 # dev: need non-zero value assert _locked.amount > 0, "No existing lock found" assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw" self._deposit_for(_addr, _value, 0, self.locked[_addr], DEPOSIT_FOR_TYPE) @external @nonreentrant('lock') def create_lock(_value: uint256, _unlock_time: uint256): """ @notice Deposit `_value` tokens for `msg.sender` and lock until `_unlock_time` @param _value Amount to deposit @param _unlock_time Epoch time when tokens unlock, rounded down to whole weeks """ self.assert_not_contract(msg.sender) unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks _locked: LockedBalance = self.locked[msg.sender] assert _value > 0 # dev: need non-zero value assert _locked.amount == 0, "Withdraw old tokens first" assert unlock_time > block.timestamp, "Can only lock until time in the future" assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max" self._deposit_for(msg.sender, _value, unlock_time, _locked, CREATE_LOCK_TYPE) @external @nonreentrant('lock') def increase_amount(_value: uint256): """ @notice Deposit `_value` additional tokens for `msg.sender` without modifying the unlock time @param _value Amount of tokens to deposit and add to the lock """ self.assert_not_contract(msg.sender) _locked: LockedBalance = self.locked[msg.sender] assert _value > 0 # dev: need non-zero value assert _locked.amount > 0, "No existing lock found" assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw" self._deposit_for(msg.sender, _value, 0, _locked, INCREASE_LOCK_AMOUNT) @external @nonreentrant('lock') def increase_unlock_time(_unlock_time: uint256): """ @notice Extend the unlock time for `msg.sender` to `_unlock_time` @param _unlock_time New epoch time for unlocking """ self.assert_not_contract(msg.sender) _locked: LockedBalance = self.locked[msg.sender] unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks assert _locked.end > block.timestamp, "Lock expired" assert _locked.amount > 0, "Nothing is locked" assert unlock_time > _locked.end, "Can only increase lock duration" assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max" self._deposit_for(msg.sender, 0, unlock_time, _locked, INCREASE_UNLOCK_TIME) @external @nonreentrant('lock') def withdraw(): """ @notice Withdraw all tokens for `msg.sender` @dev Only possible if the lock has expired """ _locked: LockedBalance = self.locked[msg.sender] assert block.timestamp >= _locked.end, "The lock didn't expire" value: uint256 = convert(_locked.amount, uint256) old_locked: LockedBalance = _locked _locked.end = 0 _locked.amount = 0 self.locked[msg.sender] = _locked supply_before: uint256 = self.supply self.supply = supply_before - value # old_locked can have either expired <= timestamp or zero end # _locked has only 0 end # Both can have >= 0 amount self._checkpoint(msg.sender, old_locked, _locked) assert ERC20(self.token).transfer(msg.sender, value) log Withdraw(msg.sender, value, block.timestamp) log Supply(supply_before, supply_before - value) # The following ERC20/minime-compatible methods are not real balanceOf and supply! # They measure the weights for the purpose of voting, so they don't represent # real coins. @internal @view def find_block_epoch(_block: uint256, max_epoch: uint256) -> uint256: """ @notice Binary search to estimate timestamp for block number @param _block Block to find @param max_epoch Don't go beyond this epoch @return Approximate timestamp for block """ # Binary search _min: uint256 = 0 _max: uint256 = max_epoch for i in range(128): # Will be always enough for 128-bit numbers if _min >= _max: break _mid: uint256 = (_min + _max + 1) / 2 if self.point_history[_mid].blk <= _block: _min = _mid else: _max = _mid - 1 return _min @external @view def balanceOf(addr: address, _t: uint256 = block.timestamp) -> uint256: """ @notice Get the current voting power for `msg.sender` @dev Adheres to the ERC20 `balanceOf` interface for Aragon compatibility @param addr User wallet address @param _t Epoch time to return voting power at @return User voting power """ _epoch: uint256 = self.user_point_epoch[addr] if _epoch == 0: return 0 else: last_point: Point = self.user_point_history[addr][_epoch] last_point.bias -= last_point.slope * convert(_t - last_point.ts, int128) if last_point.bias < 0: last_point.bias = 0 return convert(last_point.bias, uint256) @external @view def balanceOfAt(addr: address, _block: uint256) -> uint256: """ @notice Measure voting power of `addr` at block height `_block` @dev Adheres to MiniMe `balanceOfAt` interface: https://github.com/Giveth/minime @param addr User's wallet address @param _block Block to calculate the voting power at @return Voting power """ # Copying and pasting totalSupply code because Vyper cannot pass by # reference yet assert _block <= block.number # Binary search _min: uint256 = 0 _max: uint256 = self.user_point_epoch[addr] for i in range(128): # Will be always enough for 128-bit numbers if _min >= _max: break _mid: uint256 = (_min + _max + 1) / 2 if self.user_point_history[addr][_mid].blk <= _block: _min = _mid else: _max = _mid - 1 upoint: Point = self.user_point_history[addr][_min] max_epoch: uint256 = self.epoch _epoch: uint256 = self.find_block_epoch(_block, max_epoch) point_0: Point = self.point_history[_epoch] d_block: uint256 = 0 d_t: uint256 = 0 if _epoch < max_epoch: point_1: Point = self.point_history[_epoch + 1] d_block = point_1.blk - point_0.blk d_t = point_1.ts - point_0.ts else: d_block = block.number - point_0.blk d_t = block.timestamp - point_0.ts block_time: uint256 = point_0.ts if d_block != 0: block_time += d_t * (_block - point_0.blk) / d_block upoint.bias -= upoint.slope * convert(block_time - upoint.ts, int128) if upoint.bias >= 0: return convert(upoint.bias, uint256) else: return 0 @internal @view def supply_at(point: Point, t: uint256) -> uint256: """ @notice Calculate total voting power at some point in the past @param point The point (bias/slope) to start search from @param t Time to calculate the total voting power at @return Total voting power at that time """ last_point: Point = point t_i: uint256 = (last_point.ts / WEEK) * WEEK for i in range(255): t_i += WEEK d_slope: int128 = 0 if t_i > t: t_i = t else: d_slope = self.slope_changes[t_i] last_point.bias -= last_point.slope * convert(t_i - last_point.ts, int128) if t_i == t: break last_point.slope += d_slope last_point.ts = t_i if last_point.bias < 0: last_point.bias = 0 return convert(last_point.bias, uint256) @external @view def totalSupply(t: uint256 = block.timestamp) -> uint256: """ @notice Calculate total voting power @dev Adheres to the ERC20 `totalSupply` interface for Aragon compatibility @return Total voting power """ _epoch: uint256 = self.epoch last_point: Point = self.point_history[_epoch] return self.supply_at(last_point, t) @external @view def totalSupplyAt(_block: uint256) -> uint256: """ @notice Calculate total voting power at some point in the past @param _block Block to calculate the total voting power at @return Total voting power at `_block` """ assert _block <= block.number _epoch: uint256 = self.epoch target_epoch: uint256 = self.find_block_epoch(_block, _epoch) point: Point = self.point_history[target_epoch] dt: uint256 = 0 if target_epoch < _epoch: point_next: Point = self.point_history[target_epoch + 1] if point.blk != point_next.blk: dt = (_block - point.blk) * (point_next.ts - point.ts) / (point_next.blk - point.blk) else: if point.blk != block.number: dt = (_block - point.blk) * (block.timestamp - point.ts) / (block.number - point.blk) # Now dt contains info on how far are we beyond point return self.supply_at(point, point.ts + dt) # Dummy methods for compatibility with Aragon @external def changeController(_newController: address): """ @dev Dummy method required for Aragon compatibility """ assert msg.sender == self.controller self.controller = _newController
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"},{"name":"Deposit","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false},{"type":"uint256","name":"locktime","indexed":true},{"type":"int128","name":"type","indexed":false},{"type":"uint256","name":"ts","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false},{"type":"uint256","name":"ts","indexed":false}],"anonymous":false,"type":"event"},{"name":"Supply","inputs":[{"type":"uint256","name":"prevSupply","indexed":false},{"type":"uint256","name":"supply","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"token_addr"},{"type":"string","name":"_name"},{"type":"string","name":"_symbol"},{"type":"string","name":"_version"},{"type":"address","name":"_vote_delegate"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"update_delegate","outputs":[],"inputs":[{"type":"address","name":"_new_delegatee"}],"stateMutability":"nonpayable","type":"function","gas":39474},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37598},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38437},{"name":"commit_smart_wallet_checker","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":36308},{"name":"apply_smart_wallet_checker","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37035},{"name":"get_last_user_slope","outputs":[{"type":"int128","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":2570},{"name":"user_point_history__ts","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_addr"},{"type":"uint256","name":"_idx"}],"stateMutability":"view","type":"function","gas":1673},{"name":"locked__end","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"view","type":"function","gas":1594},{"name":"checkpoint","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37118275},{"name":"deposit_for","outputs":[],"inputs":[{"type":"address","name":"_addr"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":74411176},{"name":"create_lock","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"uint256","name":"_unlock_time"}],"stateMutability":"nonpayable","type":"function","gas":74412547},{"name":"increase_amount","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":74411968},{"name":"increase_unlock_time","outputs":[],"inputs":[{"type":"uint256","name":"_unlock_time"}],"stateMutability":"nonpayable","type":"function","gas":74412615},{"name":"withdraw","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37289066},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function"},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"},{"type":"uint256","name":"_t"}],"stateMutability":"view","type":"function"},{"name":"balanceOfAt","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"},{"type":"uint256","name":"_block"}],"stateMutability":"view","type":"function","gas":509626},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function"},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"t"}],"stateMutability":"view","type":"function"},{"name":"totalSupplyAt","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_block"}],"stateMutability":"view","type":"function","gas":879597},{"name":"changeController","outputs":[],"inputs":[{"type":"address","name":"_newController"}],"stateMutability":"nonpayable","type":"function","gas":36908},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1781},{"name":"supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1811},{"name":"locked","outputs":[{"type":"int128","name":"amount"},{"type":"uint256","name":"end"}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":3290},{"name":"epoch","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1871},{"name":"point_history","outputs":[{"type":"int128","name":"bias"},{"type":"int128","name":"slope"},{"type":"uint256","name":"ts"},{"type":"uint256","name":"blk"}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":5208},{"name":"user_point_history","outputs":[{"type":"int128","name":"bias"},{"type":"int128","name":"slope"},{"type":"uint256","name":"ts"},{"type":"uint256","name":"blk"}],"inputs":[{"type":"address","name":"arg0"},{"type":"uint256","name":"arg1"}],"stateMutability":"view","type":"function","gas":5453},{"name":"user_point_epoch","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2176},{"name":"slope_changes","outputs":[{"type":"int128","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2106},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021},{"name":"transfersEnabled","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"name","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":8483},{"name":"symbol","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7536},{"name":"version","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7566},{"name":"decimals","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2171},{"name":"future_smart_wallet_checker","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2201},{"name":"smart_wallet_checker","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2231},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291},{"name":"vote_delegatee","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2321}]
Contract Creation Code
6f7fffffffffffffffffffffffffffffff60405260a06130df6101403960206130df60c03960c05160a01c1561003457600080fd5b6060602060206130df0160c03960c0516130df016101e0396040602060206130df0160c03960c05160040135111561006b57600080fd5b6040602060406130df0160c03960c0516130df01610260396020602060406130df0160c03960c0516004013511156100a257600080fd5b6040602060606130df0160c03960c0516130df016102c0396020602060606130df0160c03960c0516004013511156100d957600080fd5b602060806130df0160c03960c05160a01c156100f457600080fd5b3360105561014051600055436003600460c052602060c02060c052602060c0200155426002600460c052602060c02060c052602060c020015533600855600160095560206103a0600463313ce5676103405261035c610140515afa61015857600080fd5b601f3d1161016557600080fd5b6000506103a0516103205260ff61032051111561018157600080fd5b61032051600d556101e080600a60c052602060c020602082510161012060006003818352015b826101205160200211156101ba576101dc565b61012051602002850151610120518501555b81516001018083528114156101a7575b50505050505061026080600b60c052602060c020602082510161012060006002818352015b8261012051602002111561021457610236565b61012051602002850151610120518501555b8151600101808352811415610201575b5050505050506102c080600c60c052602060c020602082510161012060006002818352015b8261012051602002111561026e57610290565b61012051602002850151610120518501555b815160010180835281141561025b575b5050505050506101c051601255610140513b6102ab57600080fd5b600060006024635c19a95c610340526101c0516103605261035c6000610140515af16102d657600080fd5b6130c756341561000a57600080fd5b600436101561001857612de6565b600035601c526f7fffffffffffffffffffffffffffffff604052634a03bbce600051141561009c5760043560a01c1561005057600080fd5b601054331461005e57600080fd5b6004356012556000543b61007157600080fd5b600060006024635c19a95c610140526004356101605261015c60006000545af161009a57600080fd5b005b636b441a4060005114156100fe5760043560a01c156100ba57600080fd5b60105433146100c857600080fd5b600435601155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561016957601054331461011a57600080fd5b601154610140526000610140511861013157600080fd5b6101405160105561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e2600051141561019d5760043560a01c1561018757600080fd5b601054331461019557600080fd5b600435600e55005b638e5b490f60005114156101c15760105433146101b957600080fd5b600e54600f55005b6000156102ab575b6101605261014052326101405118156102a557600f5461018052600061018051181561023b576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af161021b57600080fd5b601f3d1161022857600080fd5b600050610220511561023a5761016051565b5b6308c379a06101a05260206101c05260256101e0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c610200527f6c6f776564000000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b61016051565b637c74a17460005114156103225760043560a01c156102c957600080fd5b600660043560e05260c052604060c0205461014052600161014051633b9aca0081106102f457600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63da020a1860005114156103835760043560a01c1561034057600080fd5b6002602435633b9aca00811061035557600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63adc6358960005114156103c85760043560a01c156103a157600080fd5b6001600260043560e05260c052604060c02060c052602060c020015460005260206000f350005b600015610c50575b6101e0526101405261016052610180526101a0526101c052610140366102003760035461034052600061014051181561059f574261018051111561041a576000610160511361041d565b60005b156104a65761016051630784ce008082058080600081121561043b57195b607f1c1561044857600080fd5b905090509050610220526102205161018051428082101561046857600080fd5b8082039050905060405181111561047e57600080fd5b8082028080600081121561048e57195b607f1c1561049b57600080fd5b905090509050610200525b426101c05111156104bd5760006101a051136104c0565b60005b15610549576101a051630784ce00808205808060008112156104de57195b607f1c156104eb57600080fd5b9050905090506102a0526102a0516101c051428082101561050b57600080fd5b8082039050905060405181111561052157600080fd5b8082028080600081121561053157195b607f1c1561053e57600080fd5b905090509050610280525b60076101805160e05260c052604060c020546103005260006101c051181561059e57610180516101c051141561058657610300516103205261059d565b60076101c05160e05260c052604060c02054610320525b5b5b610360600081526000816020015242816040015243816060015250600061034051111561063657610360610340516c01431e0fae6d7217caa000000081106105e657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a0514211156106e557670de0b6b3a7640000436103c0518082101561069457600080fd5b8082039050905080820282158284830414176106af57600080fd5b80905090509050426103a051808210156106c857600080fd5b8082039050905080806106da57600080fd5b820490509050610480525b6103e05162093a808082049050905062093a80808202821582848304141761070c57600080fd5b809050905090506104a0526104c0600060ff818352015b6104a0805162093a8081818301101561073b57600080fd5b8082019050905081525060006104e052426104a051111561076057426104a052610777565b60076104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e0518082101561079557600080fd5b808203905090506040518111156107ab57600080fd5b808202808060008112156107bb57195b607f1c156107c857600080fd5b905090509050808203808060008112156107de57195b607f1c156107eb57600080fd5b90509050905081525061038080516104e0518082018080600081121561080d57195b607f1c1561081a57600080fd5b9050905090508152506000610360511215610836576000610360525b6000610380511215610849576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a051610440518082101561087657600080fd5b80820390509050808202821582848304141761089157600080fd5b80905090509050670de0b6b3a7640000808204905090508181830110156108b757600080fd5b808201905090506103c052610340805160018181830110156108d857600080fd5b80820190509050815250426104a05114156108fb57436103c05261096456610953565b610340516c01431e0fae6d7217caa0000000811061091857600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415610723575b5050610340516003556000610140511815610a4c5761038080516102a051610220518082038080600081121561099657195b607f1c156109a357600080fd5b905090509050808201808060008112156109b957195b607f1c156109c657600080fd5b90509050905081525061036080516102805161020051808203808060008112156109ec57195b607f1c156109f957600080fd5b90509050905080820180806000811215610a0f57195b607f1c15610a1c57600080fd5b9050905090508152506000610380511215610a38576000610380525b6000610360511215610a4b576000610360525b5b610340516c01431e0fae6d7217caa00000008110610a6957600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550506000610140511815610c4a5742610180511115610b3e5761030080516102205180820180806000811215610ad357195b607f1c15610ae057600080fd5b905090509050815250610180516101c0511415610b275761030080516102a05180820380806000811215610b1057195b607f1c15610b1d57600080fd5b9050905090508152505b6103005160076101805160e05260c052604060c020555b426101c0511115610b9e57610180516101c0511115610b9d5761032080516102a05180820380806000811215610b7057195b607f1c15610b7d57600080fd5b9050905090508152506103205160076101c05160e05260c052604060c020555b5b60066101405160e05260c052604060c020546001818183011015610bc157600080fd5b808201905090506104c0526104c05160066101405160e05260c052604060c02055426102c052436102e0526104c051633b9aca008110610c0057600080fd5b60056101405160e05260c052604060c02060c052602060c0200160c052602060c0206102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b600015610ef8575b610200526101405261016052610180526101a0526101c0526101e0526102206101a080518252806020015182602001525050600154610260526102605161016051818183011015610ca857600080fd5b8082019050905060015561028061022080518252806020015182602001525050610220805161016051604051811115610ce057600080fd5b80820180806000811215610cf057195b607f1c15610cfd57600080fd5b9050905090508152506000610180511815610d1b5761018051610240525b60026101405160e05260c052604060c02060c052602060c020610220805182558060200151600183015550506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051610140516102c0526102e061028080518252806020015182602001525050610320610220805182528060200151826020015250506103405161032051610300516102e0516102c051600658016103d0565b6102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506000610160511815610e5d57602061038060646323b872dd6102c052610140516102e052306103005261016051610320526102dc60006000545af1610e3f57600080fd5b601f3d11610e4c57600080fd5b60005061038051610e5c57600080fd5b5b610160516102c0526101e0516102e052426103005261024051610140517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606102c0a3610260516102c0526102605161016051818183011015610ec057600080fd5b808201905090506102e0527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406102c0a161020051565b63c2c4c5c16000511415610f885760403661014037604036610180376101405161016051610180516101a05160006101c0526101e061014080518252806020015182602001525050610220610180805182528060200151826020015250506102405161022051610200516101e0516101c051600658016103d0565b6101a052610180526101605261014052600050005b633a46273e60005114156111505762ffffff5415610fa557600080fd5b600162ffffff5560043560a01c15610fbc57600080fd5b610140600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c020015482602001525050600060243511610ffe57600080fd5b600061014051131515611050576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511115156110c6576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b6101405161016051600435610180526024356101a05260006101c0526101e0600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060006102205261022051610200516101e0516101c0516101a0516101805160065801610c58565b6101605261014052600050600062ffffff55005b6365fc387360005114156113a25762ffffff541561116d57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005060243562093a808082049050905062093a8080820282158284830414176111af57600080fd5b809050905090506101405261016060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506000600435116111fa57600080fd5b6101605115151561124a576308c379a06101a05260206101c05260196101e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610200526101e05060646101bcfd5b42610140511115156112c0576308c379a06101a05260206101c05260266101e0527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610200527f6675747572650000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b42630784ce008181830110156112d557600080fd5b80820190509050610140511115151561132d576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a0526004356101c052610140516101e052610200610160805182528060200151826020015250506001610240526102405161022051610200516101e0516101c0516101a05160065801610c58565b610180526101605261014052600050600062ffffff55005b634957677c600051141561154e5762ffffff54156113bf57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005061014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060006004351161141b57600080fd5b60006101405113151561146d576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511115156114e3576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b610140516101605133610180526004356101a05260006101c0526101e06101408051825280602001518260200152505060026102205261022051610200516101e0516101c0516101a0516101805160065801610c58565b6101605261014052600050600062ffffff55005b63eff7a61260005114156117c15762ffffff541561156b57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005061014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060043562093a808082049050905062093a8080820282158284830414176115de57600080fd5b8090509050905061018052426101605111151561163a576308c379a06101a05260206101c052600c6101e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610200526101e05060646101bcfd5b60006101405113151561168c576308c379a06101a05260206101c05260116101e0527f4e6f7468696e67206973206c6f636b6564000000000000000000000000000000610200526101e05060646101bcfd5b61016051610180511115156116e0576308c379a06101a05260206101c052601f6101e0527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e00610200526101e05060646101bcfd5b42630784ce008181830110156116f557600080fd5b80820190509050610180511115151561174d576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a05260006101c052610180516101e052610200610140805182528060200151826020015250506003610240526102405161022051610200516101e0516101c0516101a05160065801610c58565b610180526101605261014052600050600062ffffff55005b633ccfd60b6000511415611a4a5762ffffff54156117de57600080fd5b600162ffffff5561014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c020015482602001525050610160514210151515611868576308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c050606461019cfd5b61014051600081121561187a57600080fd5b610180526101a06101408051825280602001518260200152505060006101605260006101405260023360e05260c052604060c02060c052602060c020610140805182558060200151600183015550506001546101e0526101e05161018051808210156118e557600080fd5b808203905090506001556101405161016051610180516101a0516101c0516101e05133610200526102206101a080518252806020015182602001525050610260610140805182528060200151826020015250506102805161026051610240516102205161020051600658016103d0565b6101e0526101c0526101a05261018052610160526101405260005060206102a0604463a9059cbb610200523361022052610180516102405261021c60006000545af16119a057600080fd5b601f3d116119ad57600080fd5b6000506102a0516119bd57600080fd5b61018051610200524261022052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610200a26101e051610200526101e0516101805180821015611a0f57600080fd5b80820390509050610220527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610200a1600062ffffff55005b600015611b5f575b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051101515611a8c57611b4b565b6101a0516101c051818183011015611aa357600080fd5b808201905090506001818183011015611abb57600080fd5b8082019050905060028082049050905061020052610140516003610200516c01431e0fae6d7217caa00000008110611af257600080fd5b600460c052602060c0200160c052602060c0200154111515611b1b57610200516101a052611b3a565b61020051600180821015611b2e57600080fd5b808203905090506101c0525b5b8151600101808352811415611a78575b50506101a051600052600051610180515650005b6370a082316000511415611b77574261014052611b9c565b62fdd58e6000511415611b94576020602461014037600050611b9c565b600015611cfd575b60043560a01c15611bac57600080fd5b600660043560e05260c052604060c0205461016052610160511515611bdb57600060005260206000f350611cfb565b61018061016051633b9aca008110611bf257600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505061018080516101a051610140516101c05180821015611c6d57600080fd5b80820390509050604051811115611c8357600080fd5b80820280806000811215611c9357195b607f1c15611ca057600080fd5b90509050905080820380806000811215611cb657195b607f1c15611cc357600080fd5b9050905090508152506000610180511215611cdf576000610180525b610180516000811215611cf157600080fd5b60005260206000f3505b005b634ee2cd7e60005114156121d65760043560a01c15611d1b57600080fd5b436024351115611d2a57600080fd5b600061014052600660043560e05260c052604060c020546101605261018060006080818352015b6101605161014051101515611d6557611e28565b6101405161016051818183011015611d7c57600080fd5b808201905090506001818183011015611d9457600080fd5b808201905090506002808204905090506101a05260243560036101a051633b9aca008110611dc157600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c0200154111515611df8576101a05161014052611e17565b6101a051600180821015611e0b57600080fd5b80820390509050610160525b5b8151600101808352811415611d51575b505061018061014051633b9aca008110611e4157600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050600354610200526101405161016051610180516101a0516101c0516101e0516102005161022051602435610240526102005161026052610260516102405160065801611a52565b6102c05261022052610200526101e0526101c0526101a0526101805261016052610140526102c05161022052610240610220516c01431e0fae6d7217caa00000008110611f3157600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506040366102c0376102005161022051101561206157610300610220516001818183011015611fad57600080fd5b808201905090506c01431e0fae6d7217caa00000008110611fcd57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610360516102a0518082101561203157600080fd5b808203905090506102c05261034051610280518082101561205157600080fd5b808203905090506102e05261209c565b436102a0518082101561207357600080fd5b808203905090506102c05242610280518082101561209057600080fd5b808203905090506102e0525b610280516103005260006102c051181561211e5761030080516102e0516024356102a051808210156120cd57600080fd5b8082039050905080820282158284830414176120e857600080fd5b809050905090506102c05180806120fe57600080fd5b82049050905081818301101561211357600080fd5b808201905090508152505b61018080516101a051610300516101c0518082101561213c57600080fd5b8082039050905060405181111561215257600080fd5b8082028080600081121561216257195b607f1c1561216f57600080fd5b9050905090508082038080600081121561218557195b607f1c1561219257600080fd5b9050905090508152506000610180511215156121c8576101805160008112156121ba57600080fd5b60005260206000f3506121d4565b600060005260206000f3505b005b6000156123c5575b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a80808202821582848304141761224757600080fd5b80905090509050610280526102a0600060ff818352015b610280805162093a8081818301101561227657600080fd5b8082019050905081525060006102c0526101c0516102805111156122a1576101c051610280526122b8565b60076102805160e05260c052604060c020546102c0525b6102008051610220516102805161024051808210156122d657600080fd5b808203905090506040518111156122ec57600080fd5b808202808060008112156122fc57195b607f1c1561230957600080fd5b9050905090508082038080600081121561231f57195b607f1c1561232c57600080fd5b9050905090508152506101c05161028051141561234857612390565b61022080516102c0518082018080600081121561236157195b607f1c1561236e57600080fd5b90509050905081525061028051610240525b815160010180835281141561225e575b505060006102005112156123a5576000610200525b6102005160008112156123b757600080fd5b6000526000516101e0515650005b6318160ddd60005114156123dd574261014052612403565b63bd85b03960005114156123fb576020600461014037600050612403565b60001561250b575b60035461016052610180610160516c01431e0fae6d7217caa0000000811061242a57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506101405161016051610180516101a0516101c0516101e05161020061018080518252806020015182602001528060400151826040015280606001518260600152505061014051610280526102805161026051610240516102205161020051600658016121de565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f350005b63981b24d0600051141561284a5743600435111561252857600080fd5b60035461014052610140516101605160043561018052610140516101a0526101a0516101805160065801611a52565b6102005261016052610140526102005161016052610180610160516c01431e0fae6d7217caa0000000811061258b57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506000610200526101405161016051101561270c5761022061016051600181818301101561260657600080fd5b808201905090506c01431e0fae6d7217caa0000000811061262657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610280516101e0511815612707576004356101e0518082101561269757600080fd5b80820390509050610260516101c051808210156126b357600080fd5b8082039050905080820282158284830414176126ce57600080fd5b80905090509050610280516101e051808210156126ea57600080fd5b8082039050905080806126fc57600080fd5b820490509050610200525b612796565b436101e0511815612795576004356101e0518082101561272b57600080fd5b80820390509050426101c0518082101561274457600080fd5b80820390509050808202821582848304141761275f57600080fd5b80905090509050436101e0518082101561277857600080fd5b80820390509050808061278a57600080fd5b820490509050610200525b5b6101405161016051610180516101a0516101c0516101e051610200516102206101808051825280602001518260200152806040015182604001528060600151826060015250506101c051610200518181830110156127f357600080fd5b808201905090506102a0526102a05161028051610260516102405161022051600658016121de565b61030052610200526101e0526101c0526101a0526101805261016052610140526103005160005260206000f350005b633cebb823600051141561287e5760043560a01c1561286857600080fd5b600854331461287657600080fd5b600435600855005b63fc0c546a600051141561289a5760005460005260206000f350005b63047fc9aa60005114156128b65760015460005260206000f350005b63cbf9fe5f60005114156129255760043560a01c156128d457600080fd5b600260043560e05260c052604060c0206101408080808460c052602060c0205481525050602081019050808060018560c052602060c02001548152505060409050905060c05260c051610140f39050005b63900cf0cf60005114156129415760035460005260206000f350005b63d1febfb960005114156129e9576004356c01431e0fae6d7217caa0000000811061296b57600080fd5b600460c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b6328d09d476000511415612aa65760043560a01c15612a0757600080fd5b602435633b9aca008110612a1a57600080fd5b600560043560e05260c052604060c02060c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b63010ae7576000511415612ae05760043560a01c15612ac457600080fd5b600660043560e05260c052604060c0205460005260206000f350005b63711974846000511415612b0a57600760043560e05260c052604060c0205460005260206000f350005b63f77c47916000511415612b265760085460005260206000f350005b63bef97c876000511415612b425760095460005260206000f350005b6306fdde036000511415612beb57600a8060c052602060c020610180602082540161012060006003818352015b82610120516020021115612b8257612ba4565b61012051850154610120516020028501525b8151600101808352811415612b6f575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b416000511415612c9457600b8060c052602060c020610180602082540161012060006002818352015b82610120516020021115612c2b57612c4d565b61012051850154610120516020028501525b8151600101808352811415612c18575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6354fd4d506000511415612d3d57600c8060c052602060c020610180602082540161012060006002818352015b82610120516020021115612cd457612cf6565b61012051850154610120516020028501525b8151600101808352811415612cc1575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce5676000511415612d5957600d5460005260206000f350005b638ff36fd16000511415612d7557600e5460005260206000f350005b637175d4f76000511415612d9157600f5460005260206000f350005b63f851a4406000511415612dad5760105460005260206000f350005b6317f7182a6000511415612dc95760115460005260206000f350005b639985dcce6000511415612de55760125460005260206000f350005b5b60006000fd5b6102db6130c7036102db6000396102db6130c7036000f3000000000000000000000000875773784af8135ea0ef43b5a374aad105c5d39e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000fb3bd022d5dacf95ee28a6b07825d4ff9c5b3814000000000000000000000000000000000000000000000000000000000000000b5374616b65642049444c45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773746b49444c45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003312e300000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x341561000a57600080fd5b600436101561001857612de6565b600035601c526f7fffffffffffffffffffffffffffffff604052634a03bbce600051141561009c5760043560a01c1561005057600080fd5b601054331461005e57600080fd5b6004356012556000543b61007157600080fd5b600060006024635c19a95c610140526004356101605261015c60006000545af161009a57600080fd5b005b636b441a4060005114156100fe5760043560a01c156100ba57600080fd5b60105433146100c857600080fd5b600435601155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae600051141561016957601054331461011a57600080fd5b601154610140526000610140511861013157600080fd5b6101405160105561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b6357f901e2600051141561019d5760043560a01c1561018757600080fd5b601054331461019557600080fd5b600435600e55005b638e5b490f60005114156101c15760105433146101b957600080fd5b600e54600f55005b6000156102ab575b6101605261014052326101405118156102a557600f5461018052600061018051181561023b576020610220602463c23697a86101a052610140516101c0526101bc6000610180515af161021b57600080fd5b601f3d1161022857600080fd5b600050610220511561023a5761016051565b5b6308c379a06101a05260206101c05260256101e0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c610200527f6c6f776564000000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b61016051565b637c74a17460005114156103225760043560a01c156102c957600080fd5b600660043560e05260c052604060c0205461014052600161014051633b9aca0081106102f457600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63da020a1860005114156103835760043560a01c1561034057600080fd5b6002602435633b9aca00811061035557600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c020015460005260206000f350005b63adc6358960005114156103c85760043560a01c156103a157600080fd5b6001600260043560e05260c052604060c02060c052602060c020015460005260206000f350005b600015610c50575b6101e0526101405261016052610180526101a0526101c052610140366102003760035461034052600061014051181561059f574261018051111561041a576000610160511361041d565b60005b156104a65761016051630784ce008082058080600081121561043b57195b607f1c1561044857600080fd5b905090509050610220526102205161018051428082101561046857600080fd5b8082039050905060405181111561047e57600080fd5b8082028080600081121561048e57195b607f1c1561049b57600080fd5b905090509050610200525b426101c05111156104bd5760006101a051136104c0565b60005b15610549576101a051630784ce00808205808060008112156104de57195b607f1c156104eb57600080fd5b9050905090506102a0526102a0516101c051428082101561050b57600080fd5b8082039050905060405181111561052157600080fd5b8082028080600081121561053157195b607f1c1561053e57600080fd5b905090509050610280525b60076101805160e05260c052604060c020546103005260006101c051181561059e57610180516101c051141561058657610300516103205261059d565b60076101c05160e05260c052604060c02054610320525b5b5b610360600081526000816020015242816040015243816060015250600061034051111561063657610360610340516c01431e0fae6d7217caa000000081106105e657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250505b6103a0516103e0526104006103608051825280602001518260200152806040015182604001528060600151826060015250506000610480526103a0514211156106e557670de0b6b3a7640000436103c0518082101561069457600080fd5b8082039050905080820282158284830414176106af57600080fd5b80905090509050426103a051808210156106c857600080fd5b8082039050905080806106da57600080fd5b820490509050610480525b6103e05162093a808082049050905062093a80808202821582848304141761070c57600080fd5b809050905090506104a0526104c0600060ff818352015b6104a0805162093a8081818301101561073b57600080fd5b8082019050905081525060006104e052426104a051111561076057426104a052610777565b60076104a05160e05260c052604060c020546104e0525b6103608051610380516104a0516103e0518082101561079557600080fd5b808203905090506040518111156107ab57600080fd5b808202808060008112156107bb57195b607f1c156107c857600080fd5b905090509050808203808060008112156107de57195b607f1c156107eb57600080fd5b90509050905081525061038080516104e0518082018080600081121561080d57195b607f1c1561081a57600080fd5b9050905090508152506000610360511215610836576000610360525b6000610380511215610849576000610380525b6104a0516103e0526104a0516103a05261046051610480516104a051610440518082101561087657600080fd5b80820390509050808202821582848304141761089157600080fd5b80905090509050670de0b6b3a7640000808204905090508181830110156108b757600080fd5b808201905090506103c052610340805160018181830110156108d857600080fd5b80820190509050815250426104a05114156108fb57436103c05261096456610953565b610340516c01431e0fae6d7217caa0000000811061091857600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415610723575b5050610340516003556000610140511815610a4c5761038080516102a051610220518082038080600081121561099657195b607f1c156109a357600080fd5b905090509050808201808060008112156109b957195b607f1c156109c657600080fd5b90509050905081525061036080516102805161020051808203808060008112156109ec57195b607f1c156109f957600080fd5b90509050905080820180806000811215610a0f57195b607f1c15610a1c57600080fd5b9050905090508152506000610380511215610a38576000610380525b6000610360511215610a4b576000610360525b5b610340516c01431e0fae6d7217caa00000008110610a6957600080fd5b600460c052602060c0200160c052602060c0206103608051825580602001516001830155806040015160028301558060600151600383015550506000610140511815610c4a5742610180511115610b3e5761030080516102205180820180806000811215610ad357195b607f1c15610ae057600080fd5b905090509050815250610180516101c0511415610b275761030080516102a05180820380806000811215610b1057195b607f1c15610b1d57600080fd5b9050905090508152505b6103005160076101805160e05260c052604060c020555b426101c0511115610b9e57610180516101c0511115610b9d5761032080516102a05180820380806000811215610b7057195b607f1c15610b7d57600080fd5b9050905090508152506103205160076101c05160e05260c052604060c020555b5b60066101405160e05260c052604060c020546001818183011015610bc157600080fd5b808201905090506104c0526104c05160066101405160e05260c052604060c02055426102c052436102e0526104c051633b9aca008110610c0057600080fd5b60056101405160e05260c052604060c02060c052602060c0200160c052602060c0206102808051825580602001516001830155806040015160028301558060600151600383015550505b6101e051565b600015610ef8575b610200526101405261016052610180526101a0526101c0526101e0526102206101a080518252806020015182602001525050600154610260526102605161016051818183011015610ca857600080fd5b8082019050905060015561028061022080518252806020015182602001525050610220805161016051604051811115610ce057600080fd5b80820180806000811215610cf057195b607f1c15610cfd57600080fd5b9050905090508152506000610180511815610d1b5761018051610240525b60026101405160e05260c052604060c02060c052602060c020610220805182558060200151600183015550506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051610140516102c0526102e061028080518252806020015182602001525050610320610220805182528060200151826020015250506103405161032051610300516102e0516102c051600658016103d0565b6102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506000610160511815610e5d57602061038060646323b872dd6102c052610140516102e052306103005261016051610320526102dc60006000545af1610e3f57600080fd5b601f3d11610e4c57600080fd5b60005061038051610e5c57600080fd5b5b610160516102c0526101e0516102e052426103005261024051610140517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d5960606102c0a3610260516102c0526102605161016051818183011015610ec057600080fd5b808201905090506102e0527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c60406102c0a161020051565b63c2c4c5c16000511415610f885760403661014037604036610180376101405161016051610180516101a05160006101c0526101e061014080518252806020015182602001525050610220610180805182528060200151826020015250506102405161022051610200516101e0516101c051600658016103d0565b6101a052610180526101605261014052600050005b633a46273e60005114156111505762ffffff5415610fa557600080fd5b600162ffffff5560043560a01c15610fbc57600080fd5b610140600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c020015482602001525050600060243511610ffe57600080fd5b600061014051131515611050576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511115156110c6576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b6101405161016051600435610180526024356101a05260006101c0526101e0600260043560e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060006102205261022051610200516101e0516101c0516101a0516101805160065801610c58565b6101605261014052600050600062ffffff55005b6365fc387360005114156113a25762ffffff541561116d57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005060243562093a808082049050905062093a8080820282158284830414176111af57600080fd5b809050905090506101405261016060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015250506000600435116111fa57600080fd5b6101605115151561124a576308c379a06101a05260206101c05260196101e0527f5769746864726177206f6c6420746f6b656e7320666972737400000000000000610200526101e05060646101bcfd5b42610140511115156112c0576308c379a06101a05260206101c05260266101e0527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610200527f6675747572650000000000000000000000000000000000000000000000000000610220526101e05060846101bcfd5b42630784ce008181830110156112d557600080fd5b80820190509050610140511115151561132d576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a0526004356101c052610140516101e052610200610160805182528060200151826020015250506001610240526102405161022051610200516101e0516101c0516101a05160065801610c58565b610180526101605261014052600050600062ffffff55005b634957677c600051141561154e5762ffffff54156113bf57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005061014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060006004351161141b57600080fd5b60006101405113151561146d576308c379a06101805260206101a05260166101c0527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006101e0526101c050606461019cfd5b42610160511115156114e3576308c379a06101805260206101a05260246101c0527f43616e6e6f742061646420746f2065787069726564206c6f636b2e20576974686101e0527f6472617700000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b610140516101605133610180526004356101a05260006101c0526101e06101408051825280602001518260200152505060026102205261022051610200516101e0516101c0516101a0516101805160065801610c58565b6101605261014052600050600062ffffff55005b63eff7a61260005114156117c15762ffffff541561156b57600080fd5b600162ffffff55336101405261014051600658016101c9565b60005061014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c02001548260200152505060043562093a808082049050905062093a8080820282158284830414176115de57600080fd5b8090509050905061018052426101605111151561163a576308c379a06101a05260206101c052600c6101e0527f4c6f636b20657870697265640000000000000000000000000000000000000000610200526101e05060646101bcfd5b60006101405113151561168c576308c379a06101a05260206101c05260116101e0527f4e6f7468696e67206973206c6f636b6564000000000000000000000000000000610200526101e05060646101bcfd5b61016051610180511115156116e0576308c379a06101a05260206101c052601f6101e0527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e00610200526101e05060646101bcfd5b42630784ce008181830110156116f557600080fd5b80820190509050610180511115151561174d576308c379a06101a05260206101c052601e6101e0527f566f74696e67206c6f636b2063616e2062652034207965617273206d61780000610200526101e05060646101bcfd5b610140516101605161018051336101a05260006101c052610180516101e052610200610140805182528060200151826020015250506003610240526102405161022051610200516101e0516101c0516101a05160065801610c58565b610180526101605261014052600050600062ffffff55005b633ccfd60b6000511415611a4a5762ffffff54156117de57600080fd5b600162ffffff5561014060023360e05260c052604060c0208060c052602060c02054825260018160c052602060c020015482602001525050610160514210151515611868576308c379a06101805260206101a05260166101c0527f546865206c6f636b206469646e277420657870697265000000000000000000006101e0526101c050606461019cfd5b61014051600081121561187a57600080fd5b610180526101a06101408051825280602001518260200152505060006101605260006101405260023360e05260c052604060c02060c052602060c020610140805182558060200151600183015550506001546101e0526101e05161018051808210156118e557600080fd5b808203905090506001556101405161016051610180516101a0516101c0516101e05133610200526102206101a080518252806020015182602001525050610260610140805182528060200151826020015250506102805161026051610240516102205161020051600658016103d0565b6101e0526101c0526101a05261018052610160526101405260005060206102a0604463a9059cbb610200523361022052610180516102405261021c60006000545af16119a057600080fd5b601f3d116119ad57600080fd5b6000506102a0516119bd57600080fd5b61018051610200524261022052337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686040610200a26101e051610200526101e0516101805180821015611a0f57600080fd5b80820390509050610220527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6040610200a1600062ffffff55005b600015611b5f575b61018052610140526101605260006101a052610160516101c0526101e060006080818352015b6101c0516101a051101515611a8c57611b4b565b6101a0516101c051818183011015611aa357600080fd5b808201905090506001818183011015611abb57600080fd5b8082019050905060028082049050905061020052610140516003610200516c01431e0fae6d7217caa00000008110611af257600080fd5b600460c052602060c0200160c052602060c0200154111515611b1b57610200516101a052611b3a565b61020051600180821015611b2e57600080fd5b808203905090506101c0525b5b8151600101808352811415611a78575b50506101a051600052600051610180515650005b6370a082316000511415611b77574261014052611b9c565b62fdd58e6000511415611b94576020602461014037600050611b9c565b600015611cfd575b60043560a01c15611bac57600080fd5b600660043560e05260c052604060c0205461016052610160511515611bdb57600060005260206000f350611cfb565b61018061016051633b9aca008110611bf257600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c02001548260600152505061018080516101a051610140516101c05180821015611c6d57600080fd5b80820390509050604051811115611c8357600080fd5b80820280806000811215611c9357195b607f1c15611ca057600080fd5b90509050905080820380806000811215611cb657195b607f1c15611cc357600080fd5b9050905090508152506000610180511215611cdf576000610180525b610180516000811215611cf157600080fd5b60005260206000f3505b005b634ee2cd7e60005114156121d65760043560a01c15611d1b57600080fd5b436024351115611d2a57600080fd5b600061014052600660043560e05260c052604060c020546101605261018060006080818352015b6101605161014051101515611d6557611e28565b6101405161016051818183011015611d7c57600080fd5b808201905090506001818183011015611d9457600080fd5b808201905090506002808204905090506101a05260243560036101a051633b9aca008110611dc157600080fd5b600560043560e05260c052604060c02060c052602060c0200160c052602060c0200154111515611df8576101a05161014052611e17565b6101a051600180821015611e0b57600080fd5b80820390509050610160525b5b8151600101808352811415611d51575b505061018061014051633b9aca008110611e4157600080fd5b600560043560e05260c052604060c02060c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050600354610200526101405161016051610180516101a0516101c0516101e0516102005161022051602435610240526102005161026052610260516102405160065801611a52565b6102c05261022052610200526101e0526101c0526101a0526101805261016052610140526102c05161022052610240610220516c01431e0fae6d7217caa00000008110611f3157600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506040366102c0376102005161022051101561206157610300610220516001818183011015611fad57600080fd5b808201905090506c01431e0fae6d7217caa00000008110611fcd57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610360516102a0518082101561203157600080fd5b808203905090506102c05261034051610280518082101561205157600080fd5b808203905090506102e05261209c565b436102a0518082101561207357600080fd5b808203905090506102c05242610280518082101561209057600080fd5b808203905090506102e0525b610280516103005260006102c051181561211e5761030080516102e0516024356102a051808210156120cd57600080fd5b8082039050905080820282158284830414176120e857600080fd5b809050905090506102c05180806120fe57600080fd5b82049050905081818301101561211357600080fd5b808201905090508152505b61018080516101a051610300516101c0518082101561213c57600080fd5b8082039050905060405181111561215257600080fd5b8082028080600081121561216257195b607f1c1561216f57600080fd5b9050905090508082038080600081121561218557195b607f1c1561219257600080fd5b9050905090508152506000610180511215156121c8576101805160008112156121ba57600080fd5b60005260206000f3506121d4565b600060005260206000f3505b005b6000156123c5575b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a80808202821582848304141761224757600080fd5b80905090509050610280526102a0600060ff818352015b610280805162093a8081818301101561227657600080fd5b8082019050905081525060006102c0526101c0516102805111156122a1576101c051610280526122b8565b60076102805160e05260c052604060c020546102c0525b6102008051610220516102805161024051808210156122d657600080fd5b808203905090506040518111156122ec57600080fd5b808202808060008112156122fc57195b607f1c1561230957600080fd5b9050905090508082038080600081121561231f57195b607f1c1561232c57600080fd5b9050905090508152506101c05161028051141561234857612390565b61022080516102c0518082018080600081121561236157195b607f1c1561236e57600080fd5b90509050905081525061028051610240525b815160010180835281141561225e575b505060006102005112156123a5576000610200525b6102005160008112156123b757600080fd5b6000526000516101e0515650005b6318160ddd60005114156123dd574261014052612403565b63bd85b03960005114156123fb576020600461014037600050612403565b60001561250b575b60035461016052610180610160516c01431e0fae6d7217caa0000000811061242a57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506101405161016051610180516101a0516101c0516101e05161020061018080518252806020015182602001528060400151826040015280606001518260600152505061014051610280526102805161026051610240516102205161020051600658016121de565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f350005b63981b24d0600051141561284a5743600435111561252857600080fd5b60035461014052610140516101605160043561018052610140516101a0526101a0516101805160065801611a52565b6102005261016052610140526102005161016052610180610160516c01431e0fae6d7217caa0000000811061258b57600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015250506000610200526101405161016051101561270c5761022061016051600181818301101561260657600080fd5b808201905090506c01431e0fae6d7217caa0000000811061262657600080fd5b600460c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c020015482606001525050610280516101e0511815612707576004356101e0518082101561269757600080fd5b80820390509050610260516101c051808210156126b357600080fd5b8082039050905080820282158284830414176126ce57600080fd5b80905090509050610280516101e051808210156126ea57600080fd5b8082039050905080806126fc57600080fd5b820490509050610200525b612796565b436101e0511815612795576004356101e0518082101561272b57600080fd5b80820390509050426101c0518082101561274457600080fd5b80820390509050808202821582848304141761275f57600080fd5b80905090509050436101e0518082101561277857600080fd5b80820390509050808061278a57600080fd5b820490509050610200525b5b6101405161016051610180516101a0516101c0516101e051610200516102206101808051825280602001518260200152806040015182604001528060600151826060015250506101c051610200518181830110156127f357600080fd5b808201905090506102a0526102a05161028051610260516102405161022051600658016121de565b61030052610200526101e0526101c0526101a0526101805261016052610140526103005160005260206000f350005b633cebb823600051141561287e5760043560a01c1561286857600080fd5b600854331461287657600080fd5b600435600855005b63fc0c546a600051141561289a5760005460005260206000f350005b63047fc9aa60005114156128b65760015460005260206000f350005b63cbf9fe5f60005114156129255760043560a01c156128d457600080fd5b600260043560e05260c052604060c0206101408080808460c052602060c0205481525050602081019050808060018560c052602060c02001548152505060409050905060c05260c051610140f39050005b63900cf0cf60005114156129415760035460005260206000f350005b63d1febfb960005114156129e9576004356c01431e0fae6d7217caa0000000811061296b57600080fd5b600460c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b6328d09d476000511415612aa65760043560a01c15612a0757600080fd5b602435633b9aca008110612a1a57600080fd5b600560043560e05260c052604060c02060c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c020015481525050602081019050808060038560c052602060c02001548152505060809050905060c05260c051610140f39050005b63010ae7576000511415612ae05760043560a01c15612ac457600080fd5b600660043560e05260c052604060c0205460005260206000f350005b63711974846000511415612b0a57600760043560e05260c052604060c0205460005260206000f350005b63f77c47916000511415612b265760085460005260206000f350005b63bef97c876000511415612b425760095460005260206000f350005b6306fdde036000511415612beb57600a8060c052602060c020610180602082540161012060006003818352015b82610120516020021115612b8257612ba4565b61012051850154610120516020028501525b8151600101808352811415612b6f575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6395d89b416000511415612c9457600b8060c052602060c020610180602082540161012060006002818352015b82610120516020021115612c2b57612c4d565b61012051850154610120516020028501525b8151600101808352811415612c18575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b6354fd4d506000511415612d3d57600c8060c052602060c020610180602082540161012060006002818352015b82610120516020021115612cd457612cf6565b61012051850154610120516020028501525b8151600101808352811415612cc1575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f350005b63313ce5676000511415612d5957600d5460005260206000f350005b638ff36fd16000511415612d7557600e5460005260206000f350005b637175d4f76000511415612d9157600f5460005260206000f350005b63f851a4406000511415612dad5760105460005260206000f350005b6317f7182a6000511415612dc95760115460005260206000f350005b639985dcce6000511415612de55760125460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000875773784af8135ea0ef43b5a374aad105c5d39e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000fb3bd022d5dacf95ee28a6b07825d4ff9c5b3814000000000000000000000000000000000000000000000000000000000000000b5374616b65642049444c45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773746b49444c45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003312e300000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : token_addr (address): 0x875773784Af8135eA0ef43b5a374AaD105c5D39e
Arg [1] : _name (string): Staked IDLE
Arg [2] : _symbol (string): stkIDLE
Arg [3] : _version (string): 1.0
Arg [4] : _vote_delegate (address): 0xFb3bD022D5DAcF95eE28a6B07825D4Ff9C5b3814
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 000000000000000000000000875773784af8135ea0ef43b5a374aad105c5d39e
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 000000000000000000000000fb3bd022d5dacf95ee28a6b07825d4ff9c5b3814
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [6] : 5374616b65642049444c45000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 73746b49444c4500000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 312e300000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.613099 | 1,392,893.5253 | $853,981.63 |
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.