Source Code
Overview
S Balance
Token Holdings
More Info
ContractCreator
TokenTracker
Latest 25 from a total of 715 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Vest | 22068952 | 52 mins ago | IN | 0 S | 0.00013425 | ||||
Crash | 22068924 | 52 mins ago | IN | 0 S | 0.00007995 | ||||
Lock | 22068894 | 52 mins ago | IN | 0 S | 0.00007755 | ||||
Create Vest | 22068601 | 54 mins ago | IN | 0 S | 0.00013425 | ||||
Lock | 22068568 | 54 mins ago | IN | 0 S | 0.00007227 | ||||
Crash | 22067252 | 1 hr ago | IN | 0 S | 0.00007467 | ||||
Create Vest | 22067232 | 1 hr ago | IN | 0 S | 0.00013953 | ||||
Lock | 22067181 | 1 hr ago | IN | 0 S | 0.00007755 | ||||
Crash | 22066881 | 1 hr ago | IN | 0 S | 0.00007995 | ||||
Create Vest | 22066828 | 1 hr ago | IN | 0 S | 0.00013952 | ||||
Lock | 22066785 | 1 hr ago | IN | 0 S | 0.00007753 | ||||
Create Vest | 22066393 | 1 hr ago | IN | 0 S | 0.00013952 | ||||
Lock | 22066348 | 1 hr ago | IN | 0 S | 0.00007755 | ||||
Create Vest | 22065835 | 1 hr ago | IN | 0 S | 0.00013425 | ||||
Lock | 22065794 | 1 hr ago | IN | 0 S | 0.00007755 | ||||
Create Vest | 22065398 | 1 hr ago | IN | 0 S | 0.00013425 | ||||
Lock | 22065367 | 1 hr ago | IN | 0 S | 0.00007227 | ||||
Create Vest | 22064796 | 1 hr ago | IN | 0 S | 0.00013732 | ||||
Lock | 22064755 | 1 hr ago | IN | 0 S | 0.00007753 | ||||
Create Vest | 22064429 | 1 hr ago | IN | 0 S | 0.00013425 | ||||
Lock | 22064163 | 1 hr ago | IN | 0 S | 0.00007755 | ||||
Create Vest | 22059481 | 1 hr ago | IN | 0 S | 0.00016948 | ||||
Crash | 22059452 | 1 hr ago | IN | 0 S | 0.00010076 | ||||
Lock | 22059386 | 1 hr ago | IN | 0 S | 0.00009803 | ||||
Lock | 22057800 | 1 hr ago | IN | 0 S | 0.00005872 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
22068924 | 52 mins ago | 0 S | ||||
22068894 | 52 mins ago | 0 S | ||||
22068568 | 54 mins ago | 0 S | ||||
22067252 | 1 hr ago | 0 S | ||||
22067181 | 1 hr ago | 0 S | ||||
22066881 | 1 hr ago | 0 S | ||||
22066785 | 1 hr ago | 0 S | ||||
22066348 | 1 hr ago | 0 S | ||||
22065794 | 1 hr ago | 0 S | ||||
22065367 | 1 hr ago | 0 S | ||||
22064755 | 1 hr ago | 0 S | ||||
22064163 | 1 hr ago | 0 S | ||||
22059452 | 1 hr ago | 0 S | ||||
22059386 | 1 hr ago | 0 S | ||||
22057800 | 1 hr ago | 0 S | ||||
22057666 | 2 hrs ago | 0 S | ||||
22042392 | 3 hrs ago | 0 S | ||||
22042196 | 3 hrs ago | 0 S | ||||
22042134 | 3 hrs ago | 0 S | ||||
22036139 | 4 hrs ago | 0 S | ||||
22036097 | 4 hrs ago | 0 S | ||||
22035954 | 4 hrs ago | 0 S | ||||
22035921 | 4 hrs ago | 0 S | ||||
22032325 | 4 hrs ago | 0 S | ||||
22032112 | 4 hrs ago | 0 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LockedHubble
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at testnet.sonicscan.org on 2025-02-18 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/EnumerableSet.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. pragma solidity ^0.8.20; /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ```solidity * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. * * [WARNING] * ==== * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure * unusable. * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. * * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an * array of EnumerableSet. * ==== */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position is the index of the value in the `values` array plus 1. // Position 0 is used to mean a value is not in the set. mapping(bytes32 value => uint256) _positions; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._positions[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We cache the value's position to prevent multiple reads from the same storage slot uint256 position = set._positions[value]; if (position != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 valueIndex = position - 1; uint256 lastIndex = set._values.length - 1; if (valueIndex != lastIndex) { bytes32 lastValue = set._values[lastIndex]; // Move the lastValue to the index where the value to delete is set._values[valueIndex] = lastValue; // Update the tracked position of the lastValue (that was just moved) set._positions[lastValue] = position; } // Delete the slot where the moved value was stored set._values.pop(); // Delete the tracked position for the deleted slot delete set._positions[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._positions[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { return set._values[index]; } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function _values(Set storage set) private view returns (bytes32[] memory) { return set._values; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { bytes32[] memory store = _values(set._inner); bytes32[] memory result; assembly ("memory-safe") { result := store } return result; } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(AddressSet storage set) internal view returns (address[] memory) { bytes32[] memory store = _values(set._inner); address[] memory result; assembly ("memory-safe") { result := store } return result; } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values in the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(UintSet storage set) internal view returns (uint256[] memory) { bytes32[] memory store = _values(set._inner); uint256[] memory result; assembly ("memory-safe") { result := store } return result; } } contract LockedHubble is ERC20 { struct VestPosition { uint256 amount; uint256 start; uint256 maxEnd; uint256 vestID; } using EnumerableSet for EnumerableSet.AddressSet; // immutable IERC20 public immutable HUBBLE; // vars address public admiral; address public missionControl; address public xexStaking; uint256 public missionShare = 5000; EnumerableSet.AddressSet exempt; EnumerableSet.AddressSet exemptTo; // constants uint256 public constant BASIS = 10_000; uint256 public constant SLASHING_PENALTY = 5000; uint256 public constant MIN_VEST = 14 days; uint256 public constant MAX_VEST = 180 days; // mappings mapping(address => VestPosition[]) public vestInfo; // modifiers modifier onlyAdmiral() { require(msg.sender == admiral, "Not the Admiral"); _; } // errors error ZERO(); error NO_VEST(); error CANT_RESCUE(); error ARRAY_LENGTHS(); // events event Lock(address indexed user, uint256 amount); event Crash(address indexed user, uint256 amount); event Exemption(address indexed candidate, bool status, bool success); event NewVest( address indexed user, uint256 indexed vestId, uint256 indexed amount ); event CancelVesting( address indexed user, uint256 indexed vestId, uint256 amount ); event ExitVesting( address indexed user, uint256 indexed vestId, uint256 amount ); // constructor constructor ( address _hubble ) ERC20("Locked Hubble Protocol Shares", "xHUBBLE") { HUBBLE = IERC20(_hubble); admiral = msg.sender; } // mint xHUBBLE function lock(uint256 _amount) external { require(_amount != 0, ZERO()); HUBBLE.transferFrom(msg.sender, address(this), _amount); _mint(msg.sender, _amount); emit Lock(msg.sender, _amount); } // instantly exit xHUBBLE for HUBBLE function crash( uint256 _amount ) external returns (uint256 _exitedAmount) { require(_amount != 0, ZERO()); uint256 penalty = ((_amount * SLASHING_PENALTY) / BASIS); uint256 exitAmount = _amount - penalty; // burn the xHUBBLE _burn(msg.sender, _amount); //transfer the user their HUBBLE HUBBLE.transfer(msg.sender, exitAmount); //transfer mission control their portion _mint(missionControl, penalty * missionShare / BASIS); // transfer xEX staking their portion _mint(xexStaking, penalty - penalty * missionShare / BASIS); emit Crash(msg.sender, exitAmount); return exitAmount; } function createVest(uint256 _amount) external { require(_amount != 0, ZERO()); _burn(msg.sender, _amount); uint256 vestLength = vestInfo[msg.sender].length; vestInfo[msg.sender].push( VestPosition( _amount, block.timestamp, block.timestamp + MAX_VEST, vestLength ) ); emit NewVest(msg.sender, vestLength, _amount); } function exitVest(uint256 _vestID) external { VestPosition storage _vest = vestInfo[msg.sender][_vestID]; require(_vest.amount != 0, NO_VEST()); uint256 _amount = _vest.amount; uint256 _start = _vest.start; _vest.amount = 0; if (block.timestamp < _start + MIN_VEST) { _mint(msg.sender, _amount); emit CancelVesting(msg.sender, _vestID, _amount); } else if (_vest.maxEnd <= block.timestamp) { HUBBLE.transfer(msg.sender, _amount); emit ExitVesting(msg.sender, _vestID, _amount); } else { uint256 base = (_amount * (SLASHING_PENALTY)) / BASIS; uint256 vestEarned = ((_amount * (BASIS - SLASHING_PENALTY) * (block.timestamp - _start)) / MAX_VEST) / BASIS; uint256 exitedAmount = base + vestEarned; // transfer the hubble to the loser HUBBLE.transfer(msg.sender, exitedAmount); // mint xHUBBLE to mission control _mint(missionControl,(_amount - exitedAmount)*missionShare/BASIS); // mint remaining xHUBBLE to xEX Staking _mint(xexStaking,(_amount - exitedAmount) - (_amount - exitedAmount)*missionShare/BASIS); emit ExitVesting(msg.sender, _vestID, _amount); } } function rescueTrappedTokens( address[] calldata _tokens, uint256[] calldata _amounts ) external onlyAdmiral { for (uint256 i = 0; i < _tokens.length; ++i) { /// @dev cant fetch the underlying require(_tokens[i] != address(HUBBLE), CANT_RESCUE()); IERC20(_tokens[i]).transfer(admiral, _amounts[i]); } } // -------------------------------------------------------------------- // ---- Exemptions (from xSHADOW contract) -------------- function setExemption( address[] calldata _exemptee, bool[] calldata _exempt ) external onlyAdmiral { require(_exemptee.length == _exempt.length, ARRAY_LENGTHS()); for (uint256 i = 0; i < _exempt.length; ++i) { bool success = _exempt[i] ? exempt.add(_exemptee[i]) : exempt.remove(_exemptee[i]); emit Exemption(_exemptee[i], _exempt[i], success); } } function setExemptionTo( address[] calldata _exemptee, bool[] calldata _exempt ) external onlyAdmiral { require(_exemptee.length == _exempt.length, ARRAY_LENGTHS()); for (uint256 i = 0; i < _exempt.length; ++i) { bool success = _exempt[i] ? exemptTo.add(_exemptee[i]) : exemptTo.remove(_exemptee[i]); emit Exemption(_exemptee[i], _exempt[i], success); } } function changeMayor ( address newMayor ) external onlyAdmiral { admiral = newMayor; } function changeMissionControl ( address newMissionControl ) external onlyAdmiral { exemptTo.add(newMissionControl); exempt.add(newMissionControl); missionControl = newMissionControl; } function changeXEXStaking ( address newStaking ) external onlyAdmiral { exemptTo.add(xexStaking); exempt.add(xexStaking); xexStaking = newStaking; } function usersTotalVests( address _who ) public view returns (uint256 _length) { return vestInfo[_who].length; } function getVestInfo( address _who, uint256 _vestID ) public view returns (VestPosition memory) { return vestInfo[_who][_vestID]; } function isExempt(address _who) external view returns (bool _exempt) { return exempt.contains(_who); } function _isExempted( address _from, address _to ) internal view returns (bool) { return (exempt.contains(_from) || _from == address(0) || _to == address(0) || exemptTo.contains(_to)); } function transfer(address to, uint256 amount) public virtual override returns (bool) { require(_isExempted(msg.sender,to), "NonTransferableERC20: not whitelisted"); return super.transfer(to, amount); } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { require(_isExempted(from,to), "NonTransferableERC20: not whitelisted"); return super.transferFrom(from, to, amount); } }
[{"inputs":[{"internalType":"address","name":"_hubble","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ARRAY_LENGTHS","type":"error"},{"inputs":[],"name":"CANT_RESCUE","type":"error"},{"inputs":[],"name":"NO_VEST","type":"error"},{"inputs":[],"name":"ZERO","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CancelVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Crash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"candidate","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"Exemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExitVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewVest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BASIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUBBLE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_VEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_VEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SLASHING_PENALTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admiral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMayor","type":"address"}],"name":"changeMayor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMissionControl","type":"address"}],"name":"changeMissionControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStaking","type":"address"}],"name":"changeXEXStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"crash","outputs":[{"internalType":"uint256","name":"_exitedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"exitVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"},{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"getVestInfo","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"internalType":"struct LockedHubble.VestPosition","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"_exempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"missionControl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"missionShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"rescueTrappedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemptionTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"usersTotalVests","outputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xexStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a0604052611388600855348015610015575f5ffd5b50604051612b11380380612b11833981016040819052610034916100cc565b6040518060400160405280601d81526020017f4c6f636b656420487562626c652050726f746f636f6c205368617265730000008152506040518060400160405280600781526020016678485542424c4560c81b81525081600390816100999190610191565b5060046100a68282610191565b5050506001600160a01b0316608052600580546001600160a01b0319163317905561024b565b5f602082840312156100dc575f5ffd5b81516001600160a01b03811681146100f2575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061012157607f821691505b60208210810361013f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561018c57805f5260205f20601f840160051c8101602085101561016a5750805b601f840160051c820191505b81811015610189575f8155600101610176565b50505b505050565b81516001600160401b038111156101aa576101aa6100f9565b6101be816101b8845461010d565b84610145565b6020601f8211600181146101f0575f83156101d95750848201515b5f19600385901b1c1916600184901b178455610189565b5f84815260208120601f198516915b8281101561021f57878501518255602094850194600190920191016101ff565b508482101561023c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161288b6102865f395f81816103d101528181610c430152818161146b015281816115c8015281816117b201526119ce015261288b5ff3fe608060405234801561000f575f5ffd5b506004361061021b575f3560e01c80636c2fc02c1161012357806395d89b41116100b8578063ab95605411610088578063beb7dc341161006e578063beb7dc3414610544578063dd46706414610557578063dd62ed3e1461056a575f5ffd5b8063ab9560541461051e578063ad5dff7314610531575f5ffd5b806395d89b41146104d0578063a457c2d7146104d8578063a8ebc89c146104eb578063a9059cbb1461050b575f5ffd5b806383923311116100f3578063839233111461048d578063894547fe146104975780638bf79185146104aa57806394126bb1146104bd575f5ffd5b80636c2fc02c146103cc57806370a08231146104185780637164b8bf1461044d578063786835651461046d575f5ffd5b806326d25b80116101b35780633950935111610183578063528cfa9811610169578063528cfa981461036a57806355490ba1146103735780635a8aed6614610386575f5ffd5b8063395093511461034d57806349e8219314610360575f5ffd5b806326d25b80146102e35780632cf53bd8146102f6578063313ce5671461032b578063353140d01461033a575f5ffd5b806311147bd6116101ee57806311147bd61461028c57806318160ddd146102bf57806323b872dd146102c757806325d64f4b146102da575f5ffd5b806306fdde031461021f57806307af93e41461023d57806308b4bd6314610254578063095ea7b314610269575b5f5ffd5b6102276105af565b60405161023491906124d0565b60405180910390f35b61024660085481565b604051908152602001610234565b610267610262366004612523565b61063f565b005b61027c610277366004612562565b610734565b6040519015158152602001610234565b61029f61029a366004612562565b61074a565b604080519485526020850193909352918301526060820152608001610234565b600254610246565b61027c6102d536600461258a565b61078c565b61024661138881565b6102676102f13660046125c4565b61083b565b6102466103043660046125c4565b73ffffffffffffffffffffffffffffffffffffffff165f908152600d602052604090205490565b60405160128152602001610234565b610267610348366004612625565b61094f565b61027c61035b366004612562565b610b59565b6102466212750081565b61024661271081565b610246610381366004612523565b610ba1565b610399610394366004612562565b610d80565b60405161023491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6103f37f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610234565b6102466104263660046125c4565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6006546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b6007546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b61024662ed4e0081565b6102676104a53660046125c4565b610e23565b6102676104b83660046125c4565b610f03565b6102676104cb366004612625565b610fcb565b6102276111ce565b61027c6104e6366004612562565b6111dd565b6005546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b61027c610519366004612562565b6112b4565b61026761052c366004612523565b61135c565b61027c61053f3660046125c4565b611719565b610267610552366004612625565b611725565b610267610565366004612523565b61195a565b610246610578366004612691565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6060600380546105be906126c2565b80601f01602080910402602001604051908101604052809291908181526020018280546105ea906126c2565b80156106355780601f1061060c57610100808354040283529160200191610635565b820191905f5260205f20905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b805f03610678576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106823382611a90565b335f908152600d602090815260409182902080548351608081018552858152429381018490529093919290918201906106bf9062ed4e0090612740565b815260209081018490528254600181810185555f948552828520845160049093020191825591830151918101919091556040808301516002830155606090920151600390910155518391839133917f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa57766891a45050565b5f610740338484611c7b565b5060015b92915050565b600d602052815f5260405f208181548110610763575f80fd5b5f9182526020909120600490910201805460018201546002830154600390930154919450925084565b5f6107978484611e25565b610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f697374656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610833848484611e80565b949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146108bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b6007546108e190600b9073ffffffffffffffffffffffffffffffffffffffff16611f64565b506007546109079060099073ffffffffffffffffffffffffffffffffffffffff16611f64565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b828114610a09576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b52575f838383818110610a2657610a26612753565b9050602002016020810190610a3b9190612790565b610a7657610a71868684818110610a5457610a54612753565b9050602002016020810190610a6991906125c4565b600b90611f85565b610aa8565b610aa8868684818110610a8b57610a8b612753565b9050602002016020810190610aa091906125c4565b600b90611f64565b9050858583818110610abc57610abc612753565b9050602002016020810190610ad191906125c4565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed7135192858585818110610b1a57610b1a612753565b9050602002016020810190610b2f9190612790565b60408051911515825284151560208301520160405180910390a250600101610a0b565b5050505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610740918590610b9c908690612740565b611c7b565b5f815f03610bdb576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612710610beb611388856127ab565b610bf591906127c2565b90505f610c0282856127fa565b9050610c0e3385611a90565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610c9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061280d565b50600654600854610d019173ffffffffffffffffffffffffffffffffffffffff169061271090610cf290866127ab565b610cfc91906127c2565b611fa6565b600754600854610d449173ffffffffffffffffffffffffffffffffffffffff169061271090610d3090866127ab565b610d3a91906127c2565b610cfc90856127fa565b60405181815233907f553f2eb880ddef4ff8c4d97e35ed75df54b7ded4d99af2cf5bcc8880f408a5b19060200160405180910390a29392505050565b610da760405180608001604052805f81526020015f81526020015f81526020015f81525090565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600d60205260409020805483908110610ddd57610ddd612753565b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b610eaf600b82611f64565b50610ebb600982611f64565b50600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff16331461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b828114611085576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b52575f8383838181106110a2576110a2612753565b90506020020160208101906110b79190612790565b6110f2576110ed8686848181106110d0576110d0612753565b90506020020160208101906110e591906125c4565b600990611f85565b611124565b61112486868481811061110757611107612753565b905060200201602081019061111c91906125c4565b600990611f64565b905085858381811061113857611138612753565b905060200201602081019061114d91906125c4565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed713519285858581811061119657611196612753565b90506020020160208101906111ab9190612790565b60408051911515825284151560208301520160405180910390a250600101611087565b6060600480546105be906126c2565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161081f565b6112aa3385858403611c7b565b5060019392505050565b5f6112bf3384611e25565b61134b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f6973746564000000000000000000000000000000000000000000000000000000606482015260840161081f565b61135583836120c3565b9392505050565b335f908152600d6020526040812080548390811061137c5761137c612753565b905f5260205f2090600402019050805f01545f036113c6576040517f2b5d497a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460018201545f83556113dd6212750082612740565b42101561142b576113ee3383611fa6565b604051828152849033907fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b5906020015b60405180910390a3611713565b4283600201541161151f576040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af11580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea919061280d565b50604051828152849033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200161141e565b5f61271061152f611388856127ab565b61153991906127c2565b90505f61271062ed4e0061154d85426127fa565b61155b6113886127106127fa565b61156590886127ab565b61156f91906127ab565b61157991906127c2565b61158391906127c2565b90505f6115908284612740565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015611623573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611647919061280d565b506006546008546116819173ffffffffffffffffffffffffffffffffffffffff169061271090611677858a6127fa565b610cf291906127ab565b6007546008546116d89173ffffffffffffffffffffffffffffffffffffffff1690612710906116b0858a6127fa565b6116ba91906127ab565b6116c491906127c2565b6116ce84896127fa565b610cfc91906127fa565b604051858152879033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200160405180910390a35050505b50505050565b5f6107446009836120cf565b60055473ffffffffffffffffffffffffffffffffffffffff1633146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b5f5b83811015610b52577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585838181106117f9576117f9612753565b905060200201602081019061180e91906125c4565b73ffffffffffffffffffffffffffffffffffffffff160361185b576040517f512428f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84848281811061186d5761186d612753565b905060200201602081019061188291906125c4565b60055473ffffffffffffffffffffffffffffffffffffffff9182169163a9059cbb91168585858181106118b7576118b7612753565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff909416600485015260200291909101356024830152506044016020604051808303815f875af115801561192d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611951919061280d565b506001016117a8565b805f03611993576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015611a29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d919061280d565b50611a583382611fa6565b60405181815233907f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4279060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216611b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090205481811015611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260408120838303905560028054849290611c239084906127fa565b90915550506040518281525f9073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8216611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611c6e565b5f611e316009846120cf565b80611e50575073ffffffffffffffffffffffffffffffffffffffff8316155b80611e6f575073ffffffffffffffffffffffffffffffffffffffff8216155b806113555750611355600b836120cf565b5f611e8c8484846120fd565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020908152604080832033845290915290205482811015611f4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161081f565b611f598533858403611c7b565b506001949350505050565b5f6113558373ffffffffffffffffffffffffffffffffffffffff84166123a1565b5f6113558373ffffffffffffffffffffffffffffffffffffffff84166123ed565b73ffffffffffffffffffffffffffffffffffffffff8216612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161081f565b8060025f8282546120349190612740565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f908152602081905260408120805483929061206d908490612740565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f6107403384846120fd565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611355565b73ffffffffffffffffffffffffffffffffffffffff83166121a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8216612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260208190526040902054818110156122f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526020819052604080822085850390559185168152908120805484929061233b908490612740565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161141e91815260200190565b5f8181526001830160205260408120546123e657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610744565b505f610744565b5f81815260018301602052604081205480156124c7575f61240f6001836127fa565b85549091505f90612422906001906127fa565b9050808214612481575f865f01828154811061244057612440612753565b905f5260205f200154905080875f01848154811061246057612460612753565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061249257612492612828565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610744565b5f915050610744565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215612533575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255d575f5ffd5b919050565b5f5f60408385031215612573575f5ffd5b61257c8361253a565b946020939093013593505050565b5f5f5f6060848603121561259c575f5ffd5b6125a58461253a565b92506125b36020850161253a565b929592945050506040919091013590565b5f602082840312156125d4575f5ffd5b6113558261253a565b5f5f83601f8401126125ed575f5ffd5b50813567ffffffffffffffff811115612604575f5ffd5b6020830191508360208260051b850101111561261e575f5ffd5b9250929050565b5f5f5f5f60408587031215612638575f5ffd5b843567ffffffffffffffff81111561264e575f5ffd5b61265a878288016125dd565b909550935050602085013567ffffffffffffffff811115612679575f5ffd5b612685878288016125dd565b95989497509550505050565b5f5f604083850312156126a2575f5ffd5b6126ab8361253a565b91506126b96020840161253a565b90509250929050565b600181811c908216806126d657607f821691505b60208210810361270d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561074457610744612713565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b801515811461278d575f5ffd5b50565b5f602082840312156127a0575f5ffd5b813561135581612780565b808202811582820484141761074457610744612713565b5f826127f5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561074457610744612713565b5f6020828403121561281d575f5ffd5b815161135581612780565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea264697066735822122014bfc445125b7cbfd4196f5e404d72118b5e14402b2809f52c9fc7f5526d334864736f6c634300081c00330000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061021b575f3560e01c80636c2fc02c1161012357806395d89b41116100b8578063ab95605411610088578063beb7dc341161006e578063beb7dc3414610544578063dd46706414610557578063dd62ed3e1461056a575f5ffd5b8063ab9560541461051e578063ad5dff7314610531575f5ffd5b806395d89b41146104d0578063a457c2d7146104d8578063a8ebc89c146104eb578063a9059cbb1461050b575f5ffd5b806383923311116100f3578063839233111461048d578063894547fe146104975780638bf79185146104aa57806394126bb1146104bd575f5ffd5b80636c2fc02c146103cc57806370a08231146104185780637164b8bf1461044d578063786835651461046d575f5ffd5b806326d25b80116101b35780633950935111610183578063528cfa9811610169578063528cfa981461036a57806355490ba1146103735780635a8aed6614610386575f5ffd5b8063395093511461034d57806349e8219314610360575f5ffd5b806326d25b80146102e35780632cf53bd8146102f6578063313ce5671461032b578063353140d01461033a575f5ffd5b806311147bd6116101ee57806311147bd61461028c57806318160ddd146102bf57806323b872dd146102c757806325d64f4b146102da575f5ffd5b806306fdde031461021f57806307af93e41461023d57806308b4bd6314610254578063095ea7b314610269575b5f5ffd5b6102276105af565b60405161023491906124d0565b60405180910390f35b61024660085481565b604051908152602001610234565b610267610262366004612523565b61063f565b005b61027c610277366004612562565b610734565b6040519015158152602001610234565b61029f61029a366004612562565b61074a565b604080519485526020850193909352918301526060820152608001610234565b600254610246565b61027c6102d536600461258a565b61078c565b61024661138881565b6102676102f13660046125c4565b61083b565b6102466103043660046125c4565b73ffffffffffffffffffffffffffffffffffffffff165f908152600d602052604090205490565b60405160128152602001610234565b610267610348366004612625565b61094f565b61027c61035b366004612562565b610b59565b6102466212750081565b61024661271081565b610246610381366004612523565b610ba1565b610399610394366004612562565b610d80565b60405161023491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6103f37f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610234565b6102466104263660046125c4565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6006546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b6007546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b61024662ed4e0081565b6102676104a53660046125c4565b610e23565b6102676104b83660046125c4565b610f03565b6102676104cb366004612625565b610fcb565b6102276111ce565b61027c6104e6366004612562565b6111dd565b6005546103f39073ffffffffffffffffffffffffffffffffffffffff1681565b61027c610519366004612562565b6112b4565b61026761052c366004612523565b61135c565b61027c61053f3660046125c4565b611719565b610267610552366004612625565b611725565b610267610565366004612523565b61195a565b610246610578366004612691565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6060600380546105be906126c2565b80601f01602080910402602001604051908101604052809291908181526020018280546105ea906126c2565b80156106355780601f1061060c57610100808354040283529160200191610635565b820191905f5260205f20905b81548152906001019060200180831161061857829003601f168201915b5050505050905090565b805f03610678576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106823382611a90565b335f908152600d602090815260409182902080548351608081018552858152429381018490529093919290918201906106bf9062ed4e0090612740565b815260209081018490528254600181810185555f948552828520845160049093020191825591830151918101919091556040808301516002830155606090920151600390910155518391839133917f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa57766891a45050565b5f610740338484611c7b565b5060015b92915050565b600d602052815f5260405f208181548110610763575f80fd5b5f9182526020909120600490910201805460018201546002830154600390930154919450925084565b5f6107978484611e25565b610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f697374656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610833848484611e80565b949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146108bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b6007546108e190600b9073ffffffffffffffffffffffffffffffffffffffff16611f64565b506007546109079060099073ffffffffffffffffffffffffffffffffffffffff16611f64565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146109d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b828114610a09576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b52575f838383818110610a2657610a26612753565b9050602002016020810190610a3b9190612790565b610a7657610a71868684818110610a5457610a54612753565b9050602002016020810190610a6991906125c4565b600b90611f85565b610aa8565b610aa8868684818110610a8b57610a8b612753565b9050602002016020810190610aa091906125c4565b600b90611f64565b9050858583818110610abc57610abc612753565b9050602002016020810190610ad191906125c4565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed7135192858585818110610b1a57610b1a612753565b9050602002016020810190610b2f9190612790565b60408051911515825284151560208301520160405180910390a250600101610a0b565b5050505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610740918590610b9c908690612740565b611c7b565b5f815f03610bdb576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612710610beb611388856127ab565b610bf591906127c2565b90505f610c0282856127fa565b9050610c0e3385611a90565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610c9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061280d565b50600654600854610d019173ffffffffffffffffffffffffffffffffffffffff169061271090610cf290866127ab565b610cfc91906127c2565b611fa6565b600754600854610d449173ffffffffffffffffffffffffffffffffffffffff169061271090610d3090866127ab565b610d3a91906127c2565b610cfc90856127fa565b60405181815233907f553f2eb880ddef4ff8c4d97e35ed75df54b7ded4d99af2cf5bcc8880f408a5b19060200160405180910390a29392505050565b610da760405180608001604052805f81526020015f81526020015f81526020015f81525090565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600d60205260409020805483908110610ddd57610ddd612753565b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b610eaf600b82611f64565b50610ebb600982611f64565b50600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff16331461104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b828114611085576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b52575f8383838181106110a2576110a2612753565b90506020020160208101906110b79190612790565b6110f2576110ed8686848181106110d0576110d0612753565b90506020020160208101906110e591906125c4565b600990611f85565b611124565b61112486868481811061110757611107612753565b905060200201602081019061111c91906125c4565b600990611f64565b905085858381811061113857611138612753565b905060200201602081019061114d91906125c4565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed713519285858581811061119657611196612753565b90506020020160208101906111ab9190612790565b60408051911515825284151560208301520160405180910390a250600101611087565b6060600480546105be906126c2565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548281101561129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161081f565b6112aa3385858403611c7b565b5060019392505050565b5f6112bf3384611e25565b61134b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f6973746564000000000000000000000000000000000000000000000000000000606482015260840161081f565b61135583836120c3565b9392505050565b335f908152600d6020526040812080548390811061137c5761137c612753565b905f5260205f2090600402019050805f01545f036113c6576040517f2b5d497a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460018201545f83556113dd6212750082612740565b42101561142b576113ee3383611fa6565b604051828152849033907fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b5906020015b60405180910390a3611713565b4283600201541161151f576040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af11580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea919061280d565b50604051828152849033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200161141e565b5f61271061152f611388856127ab565b61153991906127c2565b90505f61271062ed4e0061154d85426127fa565b61155b6113886127106127fa565b61156590886127ab565b61156f91906127ab565b61157991906127c2565b61158391906127c2565b90505f6115908284612740565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015611623573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611647919061280d565b506006546008546116819173ffffffffffffffffffffffffffffffffffffffff169061271090611677858a6127fa565b610cf291906127ab565b6007546008546116d89173ffffffffffffffffffffffffffffffffffffffff1690612710906116b0858a6127fa565b6116ba91906127ab565b6116c491906127c2565b6116ce84896127fa565b610cfc91906127fa565b604051858152879033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200160405180910390a35050505b50505050565b5f6107446009836120cf565b60055473ffffffffffffffffffffffffffffffffffffffff1633146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c0000000000000000000000000000000000604482015260640161081f565b5f5b83811015610b52577f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff168585838181106117f9576117f9612753565b905060200201602081019061180e91906125c4565b73ffffffffffffffffffffffffffffffffffffffff160361185b576040517f512428f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84848281811061186d5761186d612753565b905060200201602081019061188291906125c4565b60055473ffffffffffffffffffffffffffffffffffffffff9182169163a9059cbb91168585858181106118b7576118b7612753565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff909416600485015260200291909101356024830152506044016020604051808303815f875af115801561192d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611951919061280d565b506001016117a8565b805f03611993576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015611a29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4d919061280d565b50611a583382611fa6565b60405181815233907f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4279060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216611b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090205481811015611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260408120838303905560028054849290611c239084906127fa565b90915550506040518281525f9073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8216611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611c6e565b5f611e316009846120cf565b80611e50575073ffffffffffffffffffffffffffffffffffffffff8316155b80611e6f575073ffffffffffffffffffffffffffffffffffffffff8216155b806113555750611355600b836120cf565b5f611e8c8484846120fd565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020908152604080832033845290915290205482811015611f4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161081f565b611f598533858403611c7b565b506001949350505050565b5f6113558373ffffffffffffffffffffffffffffffffffffffff84166123a1565b5f6113558373ffffffffffffffffffffffffffffffffffffffff84166123ed565b73ffffffffffffffffffffffffffffffffffffffff8216612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161081f565b8060025f8282546120349190612740565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f908152602081905260408120805483929061206d908490612740565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f6107403384846120fd565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611355565b73ffffffffffffffffffffffffffffffffffffffff83166121a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8216612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260208190526040902054818110156122f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161081f565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526020819052604080822085850390559185168152908120805484929061233b908490612740565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161141e91815260200190565b5f8181526001830160205260408120546123e657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610744565b505f610744565b5f81815260018301602052604081205480156124c7575f61240f6001836127fa565b85549091505f90612422906001906127fa565b9050808214612481575f865f01828154811061244057612440612753565b905f5260205f200154905080875f01848154811061246057612460612753565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061249257612492612828565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610744565b5f915050610744565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215612533575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461255d575f5ffd5b919050565b5f5f60408385031215612573575f5ffd5b61257c8361253a565b946020939093013593505050565b5f5f5f6060848603121561259c575f5ffd5b6125a58461253a565b92506125b36020850161253a565b929592945050506040919091013590565b5f602082840312156125d4575f5ffd5b6113558261253a565b5f5f83601f8401126125ed575f5ffd5b50813567ffffffffffffffff811115612604575f5ffd5b6020830191508360208260051b850101111561261e575f5ffd5b9250929050565b5f5f5f5f60408587031215612638575f5ffd5b843567ffffffffffffffff81111561264e575f5ffd5b61265a878288016125dd565b909550935050602085013567ffffffffffffffff811115612679575f5ffd5b612685878288016125dd565b95989497509550505050565b5f5f604083850312156126a2575f5ffd5b6126ab8361253a565b91506126b96020840161253a565b90509250929050565b600181811c908216806126d657607f821691505b60208210810361270d577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561074457610744612713565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b801515811461278d575f5ffd5b50565b5f602082840312156127a0575f5ffd5b813561135581612780565b808202811582820484141761074457610744612713565b5f826127f5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561074457610744612713565b5f6020828403121561281d575f5ffd5b815161135581612780565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea264697066735822122014bfc445125b7cbfd4196f5e404d72118b5e14402b2809f52c9fc7f5526d334864736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
-----Decoded View---------------
Arg [0] : _hubble (address): 0x9e769C46b392dF80d5Eb31a69434F38d59f40a5e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
Deployed Bytecode Sourcemap
19507:7998:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:34;;;;;;;;;642:25:1;;;630:2;615:18;19902:34:0;496:177:1;22355:469:0;;;;;;:::i;:::-;;:::i;:::-;;2551:169;;;;;;:::i;:::-;;:::i;:::-;;;1580:14:1;;1573:22;1555:41;;1543:2;1528:18;2551:169:0;1415:187:1;20262:50:0;;;;;;:::i;:::-;;:::i;:::-;;;;1838:25:1;;;1894:2;1879:18;;1872:34;;;;1922:18;;;1915:34;1980:2;1965:18;;1958:34;1825:3;1810:19;20262:50:0;1607:391:1;1958:108:0;2046:12;;1958:108;;27222:280;;;;;;:::i;:::-;;:::i;20090:47::-;;20133:4;20090:47;;26066:198;;;;;;:::i;:::-;;:::i;26272:140::-;;;;;;:::i;:::-;26383:14;;26348:15;26383:14;;;:8;:14;;;;;:21;;26272:140;1857:93;;;1940:2;2715:36:1;;2703:2;2688:18;1857:93:0;2573:184:1;25227:470:0;;;;;;:::i;:::-;;:::i;3228:215::-;;;;;;:::i;:::-;;:::i;20144:42::-;;20179:7;20144:42;;20045:38;;20077:6;20045:38;;21632:715;;;;;;:::i;:::-;;:::i;26420:168::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;4129:13:1;;4111:32;;4199:4;4187:17;;;4181:24;4159:20;;;4152:54;4262:4;4250:17;;;4244:24;4222:20;;;4215:54;4325:4;4313:17;;;4307:24;4285:20;;;4278:54;;;;4098:3;4083:19;;3904:434;19753:30:0;;;;;;;;4532:42:1;4520:55;;;4502:74;;4490:2;4475:18;19753:30:0;4343:239:1;2074:127:0;;;;;;:::i;:::-;2175:18;;2148:7;2175:18;;;;;;;;;;;;2074:127;19834:29;;;;;;;;;19870:25;;;;;;;;;20193:43;;20228:8;20193:43;;25828:230;;;;;;:::i;:::-;;:::i;25705:114::-;;;;;;:::i;:::-;;:::i;24755:464::-;;;;;;:::i;:::-;;:::i;1745:104::-;;;:::i;3451:413::-;;;;;;:::i;:::-;;:::i;19805:22::-;;;;;;;;;26990:224;;;;;;:::i;:::-;;:::i;22832:1378::-;;;;;;:::i;:::-;;:::i;26596:116::-;;;;;;:::i;:::-;;:::i;24218:387::-;;;;;;:::i;:::-;;:::i;21350:232::-;;;;;;:::i;:::-;;:::i;2392:151::-;;;;;;:::i;:::-;2508:18;;;;2481:7;2508:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2392:151;1637:100;1691:13;1724:5;1717:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:100;:::o;22355:469::-;22420:7;22431:1;22420:12;22412:29;;;;;;;;;;;;;;;;;22452:26;22458:10;22470:7;22452:5;:26::i;:::-;22519:10;22489:18;22510:20;;;:8;:20;;;;;;;;;:27;;22588:161;;;;;;;;;;22645:15;22588:161;;;;;;22510:27;;:20;;22588:161;;;;;22679:26;;20228:8;;22679:26;:::i;:::-;22588:161;;;;;;;;;22548:212;;;;;;;;-1:-1:-1;22548:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22776:40;22808:7;;22724:10;;22784;;22776:40;;;22401:423;22355:469;:::o;2551:169::-;2634:4;2651:39;1105:10;2674:7;2683:6;2651:8;:39::i;:::-;-1:-1:-1;2708:4:0;2551:169;;;;;:::o;20262:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20262:50:0;-1:-1:-1;20262:50:0;:::o;27222:280::-;27353:4;27378:20;27390:4;27395:2;27378:11;:20::i;:::-;27370:70;;;;;;;6819:2:1;27370:70:0;;;6801:21:1;6858:2;6838:18;;;6831:30;6897:34;6877:18;;;6870:62;6968:7;6948:18;;;6941:35;6993:19;;27370:70:0;;;;;;;;;27458:36;27477:4;27483:2;27487:6;27458:18;:36::i;:::-;27451:43;27222:280;-1:-1:-1;;;;27222:280:0:o;26066:198::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;26178:10:::1;::::0;26165:24:::1;::::0;:8:::1;::::0;26178:10:::1;;26165:12;:24::i;:::-;-1:-1:-1::0;26211:10:0::1;::::0;26200:22:::1;::::0;:6:::1;::::0;26211:10:::1;;26200;:22::i;:::-;-1:-1:-1::0;26233:10:0::1;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26066:198::o;25227:470::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;25371:34;;::::1;25363:60;;;;;;;;;;;;;;;;;25439:9;25434:256;25454:18:::0;;::::1;25434:256;;;25494:12;25509:7;;25517:1;25509:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:105;;25585:29;25601:9;;25611:1;25601:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25585:8;::::0;:15:::1;:29::i;:::-;25509:105;;;25539:26;25552:9;;25562:1;25552:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25539:8;::::0;:12:::1;:26::i;:::-;25494:120;;25644:9;;25654:1;25644:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25634:44;;;25658:7;;25666:1;25658:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25634:44;::::0;;8112:14:1;;8105:22;8087:41;;8171:14;;8164:22;8159:2;8144:18;;8137:50;8060:18;25634:44:0::1;;;;;;;-1:-1:-1::0;25474:3:0::1;;25434:256;;;;25227:470:::0;;;;:::o;3228:215::-;1105:10;3316:4;3365:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;3316:4;;3333:80;;3356:7;;3365:47;;3402:10;;3365:47;:::i;:::-;3333:8;:80::i;21632:715::-;21698:21;21740:7;21751:1;21740:12;21732:29;;;;;;;;;;;;;;;;;21772:15;20077:6;21792:26;20133:4;21792:7;:26;:::i;:::-;21791:36;;;;:::i;:::-;21772:56;-1:-1:-1;21839:18:0;21860:17;21772:56;21860:7;:17;:::i;:::-;21839:38;;21917:26;21923:10;21935:7;21917:5;:26::i;:::-;21996:39;;;;;22012:10;21996:39;;;8957:74:1;9047:18;;;9040:34;;;21996:6:0;:15;;;;;8930:18:1;;21996:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22102:14:0;;22128:12;;22096:53;;22102:14;;;20077:6;;22118:22;;:7;:22;:::i;:::-;:30;;;;:::i;:::-;22096:5;:53::i;:::-;22213:10;;22245:12;;22207:59;;22213:10;;;20077:6;;22235:22;;:7;:22;:::i;:::-;:30;;;;:::i;:::-;22225:40;;:7;:40;:::i;22207:59::-;22282:29;;642:25:1;;;22288:10:0;;22282:29;;630:2:1;615:18;22282:29:0;;;;;;;22329:10;21632:715;-1:-1:-1;;;21632:715:0:o;26420:168::-;26518:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26518:19:0;26557:14;;;;;;;:8;:14;;;;;:23;;26572:7;;26557:23;;;;;;:::i;:::-;;;;;;;;;;;26550:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26420:168;;;;:::o;25828:230::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;25934:31:::1;:8;25947:17:::0;25934:12:::1;:31::i;:::-;-1:-1:-1::0;25976:29:0::1;:6;25987:17:::0;25976:10:::1;:29::i;:::-;-1:-1:-1::0;26016:14:0::1;:34:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25828:230::o;25705:114::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;25793:7:::1;:18:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;25705:114::o;24755:464::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;24897:34;;::::1;24889:60;;;;;;;;;;;;;;;;;24965:9;24960:252;24980:18:::0;;::::1;24960:252;;;25020:12;25035:7;;25043:1;25035:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:101;;25109:27;25123:9;;25133:1;25123:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25109:6;::::0;:13:::1;:27::i;:::-;25035:101;;;25065:24;25076:9;;25086:1;25076:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25065:6;::::0;:10:::1;:24::i;:::-;25020:116;;25166:9;;25176:1;25166:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25156:44;;;25180:7;;25188:1;25180:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25156:44;::::0;;8112:14:1;;8105:22;8087:41;;8171:14;;8164:22;8159:2;8144:18;;8137:50;8060:18;25156:44:0::1;;;;;;;-1:-1:-1::0;25000:3:0::1;;24960:252;;1745:104:::0;1801:13;1834:7;1827:14;;;;;:::i;3451:413::-;1105:10;3544:4;3588:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;3641:35;;;;3633:85;;;;;;;9537:2:1;3633:85:0;;;9519:21:1;9576:2;9556:18;;;9549:30;9615:34;9595:18;;;9588:62;9686:7;9666:18;;;9659:35;9711:19;;3633:85:0;9335:401:1;3633:85:0;3754:67;1105:10;3777:7;3805:15;3786:16;:34;3754:8;:67::i;:::-;-1:-1:-1;3852:4:0;;3451:413;-1:-1:-1;;;3451:413:0:o;26990:224::-;27069:4;27094:26;27106:10;27117:2;27094:11;:26::i;:::-;27086:76;;;;;;;6819:2:1;27086:76:0;;;6801:21:1;6858:2;6838:18;;;6831:30;6897:34;6877:18;;;6870:62;6968:7;6948:18;;;6941:35;6993:19;;27086:76:0;6617:401:1;27086:76:0;27180:26;27195:2;27199:6;27180:14;:26::i;:::-;27173:33;26990:224;-1:-1:-1;;;26990:224:0:o;22832:1378::-;22925:10;22887:26;22916:20;;;:8;:20;;;;;:29;;22937:7;;22916:29;;;;;;:::i;:::-;;;;;;;;;;;22887:58;;22964:5;:12;;;22980:1;22964:17;22956:37;;;;;;;;;;;;;;;;;23022:12;;23062:11;;;;23004:15;23084:16;;23133:17;20179:7;23062:11;23133:17;:::i;:::-;23115:15;:35;23111:1092;;;23167:26;23173:10;23185:7;23167:5;:26::i;:::-;23213:43;;642:25:1;;;23239:7:0;;23227:10;;23213:43;;630:2:1;615:18;23213:43:0;;;;;;;;23111:1092;;;23303:15;23287:5;:12;;;:31;23283:920;;23335:36;;;;;23351:10;23335:36;;;8957:74:1;9047:18;;;9040:34;;;23335:6:0;:15;;;;;8930:18:1;;23335:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23391:41:0;;642:25:1;;;23415:7:0;;23403:10;;23391:41;;630:2:1;615:18;23391:41:0;496:177:1;23283:920:0;23474:12;20077:6;23490:28;20133:4;23490:7;:28;:::i;:::-;23489:38;;;;:::i;:::-;23474:53;-1:-1:-1;23542:18:0;20077:6;20228:8;23639:24;23657:6;23639:15;:24;:::i;:::-;23593;20133:4;20077:6;23593:24;:::i;:::-;23565:53;;:7;:53;:::i;:::-;:99;;;;:::i;:::-;23564:112;;;;:::i;:::-;23563:122;;;;:::i;:::-;23542:143;-1:-1:-1;23700:20:0;23723:17;23542:143;23723:4;:17;:::i;:::-;23804:41;;;;;23820:10;23804:41;;;8957:74:1;9047:18;;;9040:34;;;23700:40:0;;-1:-1:-1;23804:6:0;:15;;;;;8930:18:1;;23804:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23914:14:0;;23954:12;;23908:65;;23914:14;;;20077:6;;23930:22;23940:12;23930:7;:22;:::i;:::-;23929:37;;;;:::i;23908:65::-;24048:10;;24111:12;;24042:88;;24048:10;;;20077:6;;24087:22;24097:12;24087:7;:22;:::i;:::-;24086:37;;;;:::i;:::-;:43;;;;:::i;:::-;24060:22;24070:12;24060:7;:22;:::i;:::-;24059:70;;;;:::i;24042:88::-;24150:41;;642:25:1;;;24174:7:0;;24162:10;;24150:41;;630:2:1;615:18;24150:41:0;;;;;;;23459:744;;;23283:920;22876:1334;;;22832:1378;:::o;26596:116::-;26651:12;26683:21;:6;26699:4;26683:15;:21::i;24218:387::-;20395:7;;;;20381:10;:21;20373:49;;;;;;;7225:2:1;20373:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20373:49:0;7023:339:1;20373:49:0;24366:9:::1;24361:237;24381:18:::0;;::::1;24361:237;;;24499:6;24477:29;;:7;;24485:1;24477:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:29;;::::0;24469:53:::1;;;;;;;;;;;;;;;;;24544:7;;24552:1;24544:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24565:7;::::0;24537:27:::1;::::0;;::::1;::::0;::::1;::::0;24565:7:::1;24574:8:::0;;24583:1;24574:11;;::::1;;;;;:::i;:::-;24537:49;::::0;;::::1;::::0;;;;;;8987:42:1;8975:55;;;24537:49:0::1;::::0;::::1;8957:74:1::0;24574:11:0::1;;::::0;;;::::1;;9047:18:1::0;;;9040:34;-1:-1:-1;8930:18:1;;24537:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24401:3:0::1;;24361:237;;21350:232:::0;21409:7;21420:1;21409:12;21401:29;;;;;;;;;;;;;;;;;21441:55;;;;;21461:10;21441:55;;;9943:74:1;21481:4:0;10033:18:1;;;10026:83;10125:18;;;10118:34;;;21441:6:0;:19;;;;;9916:18:1;;21441:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21507:26;21513:10;21525:7;21507:5;:26::i;:::-;21549:25;;642::1;;;21554:10:0;;21549:25;;630:2:1;615:18;21549:25:0;;;;;;;21350:232;:::o;5020:591::-;5104:21;;;5096:67;;;;;;;10365:2:1;5096:67:0;;;10347:21:1;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;10514:3;10494:18;;;10487:31;10535:19;;5096:67:0;10163:397:1;5096:67:0;5263:18;;;5238:22;5263:18;;;;;;;;;;;5300:24;;;;5292:71;;;;;;;10767:2:1;5292:71:0;;;10749:21:1;10806:2;10786:18;;;10779:30;10845:34;10825:18;;;10818:62;10916:4;10896:18;;;10889:32;10938:19;;5292:71:0;10565:398:1;5292:71:0;5399:18;;;:9;:18;;;;;;;;;;5420:23;;;5399:44;;5465:12;:22;;5437:6;;5399:9;5465:22;;5437:6;;5465:22;:::i;:::-;;;;-1:-1:-1;;5505:37:0;;642:25:1;;;5531:1:0;;5505:37;;;;;;630:2:1;615:18;5505:37:0;;;;;;;;5085:526;5020:591;;:::o;5619:380::-;5755:19;;;5747:68;;;;;;;11170:2:1;5747:68:0;;;11152:21:1;11209:2;11189:18;;;11182:30;11248:34;11228:18;;;11221:62;11319:6;11299:18;;;11292:34;11343:19;;5747:68:0;10968:400:1;5747:68:0;5834:21;;;5826:68;;;;;;;11575:2:1;5826:68:0;;;11557:21:1;11614:2;11594:18;;;11587:30;11653:34;11633:18;;;11626:62;11724:4;11704:18;;;11697:32;11746:19;;5826:68:0;11373:398:1;5826:68:0;5907:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5959:32;;642:25:1;;;5959:32:0;;615:18:1;5959:32:0;496:177:1;26720:262:0;26817:4;26842:22;:6;26858:5;26842:15;:22::i;:::-;:58;;;-1:-1:-1;26881:19:0;;;;26842:58;:92;;;-1:-1:-1;26917:17:0;;;;26842:92;:131;;;-1:-1:-1;26951:22:0;:8;26969:3;26951:17;:22::i;2728:492::-;2868:4;2885:36;2895:6;2903:9;2914:6;2885:9;:36::i;:::-;2961:19;;;2934:24;2961:19;;;:11;:19;;;;;;;;1105:10;2961:33;;;;;;;;3013:26;;;;3005:79;;;;;;;11978:2:1;3005:79:0;;;11960:21:1;12017:2;11997:18;;;11990:30;12056:34;12036:18;;;12029:62;12127:10;12107:18;;;12100:38;12155:19;;3005:79:0;11776:404:1;3005:79:0;3120:57;3129:6;1105:10;3170:6;3151:16;:25;3120:8;:57::i;:::-;-1:-1:-1;3208:4:0;;2728:492;-1:-1:-1;;;;2728:492:0:o;14770:152::-;14840:4;14864:50;14869:3;14889:23;;;14864:4;:50::i;15098:158::-;15171:4;15195:53;15203:3;15223:23;;;15195:7;:53::i;4613:399::-;4697:21;;;4689:65;;;;;;;12387:2:1;4689:65:0;;;12369:21:1;12426:2;12406:18;;;12399:30;12465:33;12445:18;;;12438:61;12516:18;;4689:65:0;12185:355:1;4689:65:0;4845:6;4829:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;4862:18:0;;;:9;:18;;;;;;;;;;:28;;4884:6;;4862:9;:28;;4884:6;;4862:28;:::i;:::-;;;;-1:-1:-1;;4906:37:0;;642:25:1;;;4906:37:0;;;;4923:1;;4906:37;;630:2:1;615:18;4906:37:0;;;;;;;4613:399;;:::o;2209:175::-;2295:4;2312:42;1105:10;2336:9;2347:6;2312:9;:42::i;15342:167::-;15476:23;;;15422:4;10720:21;;;:14;;;:21;;;;;;:26;;15446:55;10623:131;3872:733;4012:20;;;4004:70;;;;;;;12747:2:1;4004:70:0;;;12729:21:1;12786:2;12766:18;;;12759:30;12825:34;12805:18;;;12798:62;12896:7;12876:18;;;12869:35;12921:19;;4004:70:0;12545:401:1;4004:70:0;4093:23;;;4085:71;;;;;;;13153:2:1;4085:71:0;;;13135:21:1;13192:2;13172:18;;;13165:30;13231:34;13211:18;;;13204:62;13302:5;13282:18;;;13275:33;13325:19;;4085:71:0;12951:399:1;4085:71:0;4253:17;;;4229:21;4253:17;;;;;;;;;;;4289:23;;;;4281:74;;;;;;;13557:2:1;4281:74:0;;;13539:21:1;13596:2;13576:18;;;13569:30;13635:34;13615:18;;;13608:62;13706:8;13686:18;;;13679:36;13732:19;;4281:74:0;13355:402:1;4281:74:0;4391:17;;;;:9;:17;;;;;;;;;;;4411:22;;;4391:42;;4455:20;;;;;;;;:30;;4427:6;;4391:9;4455:30;;4427:6;;4455:30;:::i;:::-;;;;;;;;4520:9;4503:35;;4512:6;4503:35;;;4531:6;4503:35;;;;642:25:1;;630:2;615:18;;496:177;8545:416:0;8608:4;10720:21;;;:14;;;:21;;;;;;8625:329;;-1:-1:-1;8668:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;8853:18;;8829:21;;;:14;;;:21;;;;;;:42;;;;8886:11;;8625:329;-1:-1:-1;8937:5:0;8930:12;;9137:1400;9203:4;9334:21;;;:14;;;:21;;;;;;9372:13;;9368:1162;;9745:18;9766:12;9777:1;9766:8;:12;:::i;:::-;9813:18;;9745:33;;-1:-1:-1;9793:17:0;;9813:22;;9834:1;;9813:22;:::i;:::-;9793:42;;9870:9;9856:10;:23;9852:385;;9900:17;9920:3;:11;;9932:9;9920:22;;;;;;;;:::i;:::-;;;;;;;;;9900:42;;10070:9;10044:3;:11;;10056:10;10044:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;10185:25;;;:14;;;:25;;;;;:36;;;9852:385;10318:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10424:3;:14;;:21;10439:5;10424:21;;;;;;;;;;;10417:28;;;10469:4;10462:11;;;;;;;9368:1162;10513:5;10506:12;;;;;14:477:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;678:226::-;737:6;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;-1:-1:-1;851:23:1;;678:226;-1:-1:-1;678:226:1:o;909:196::-;977:20;;1037:42;1026:54;;1016:65;;1006:93;;1095:1;1092;1085:12;1006:93;909:196;;;:::o;1110:300::-;1178:6;1186;1239:2;1227:9;1218:7;1214:23;1210:32;1207:52;;;1255:1;1252;1245:12;1207:52;1278:29;1297:9;1278:29;:::i;:::-;1268:39;1376:2;1361:18;;;;1348:32;;-1:-1:-1;;;1110:300:1:o;2003:374::-;2080:6;2088;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2188:29;2207:9;2188:29;:::i;:::-;2178:39;;2236:38;2270:2;2259:9;2255:18;2236:38;:::i;:::-;2003:374;;2226:48;;-1:-1:-1;;;2343:2:1;2328:18;;;;2315:32;;2003:374::o;2382:186::-;2441:6;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;2533:29;2552:9;2533:29;:::i;2762:367::-;2825:8;2835:6;2889:3;2882:4;2874:6;2870:17;2866:27;2856:55;;2907:1;2904;2897:12;2856:55;-1:-1:-1;2930:20:1;;2973:18;2962:30;;2959:50;;;3005:1;3002;2995:12;2959:50;3042:4;3034:6;3030:17;3018:29;;3102:3;3095:4;3085:6;3082:1;3078:14;3070:6;3066:27;3062:38;3059:47;3056:67;;;3119:1;3116;3109:12;3056:67;2762:367;;;;;:::o;3134:765::-;3253:6;3261;3269;3277;3330:2;3318:9;3309:7;3305:23;3301:32;3298:52;;;3346:1;3343;3336:12;3298:52;3386:9;3373:23;3419:18;3411:6;3408:30;3405:50;;;3451:1;3448;3441:12;3405:50;3490:70;3552:7;3543:6;3532:9;3528:22;3490:70;:::i;:::-;3579:8;;-1:-1:-1;3464:96:1;-1:-1:-1;;3667:2:1;3652:18;;3639:32;3696:18;3683:32;;3680:52;;;3728:1;3725;3718:12;3680:52;3767:72;3831:7;3820:8;3809:9;3805:24;3767:72;:::i;:::-;3134:765;;;;-1:-1:-1;3858:8:1;-1:-1:-1;;;;3134:765:1:o;5591:260::-;5659:6;5667;5720:2;5708:9;5699:7;5695:23;5691:32;5688:52;;;5736:1;5733;5726:12;5688:52;5759:29;5778:9;5759:29;:::i;:::-;5749:39;;5807:38;5841:2;5830:9;5826:18;5807:38;:::i;:::-;5797:48;;5591:260;;;;;:::o;5856:437::-;5935:1;5931:12;;;;5978;;;5999:61;;6053:4;6045:6;6041:17;6031:27;;5999:61;6106:2;6098:6;6095:14;6075:18;6072:38;6069:218;;6143:77;6140:1;6133:88;6244:4;6241:1;6234:15;6272:4;6269:1;6262:15;6069:218;;5856:437;;;:::o;6298:184::-;6350:77;6347:1;6340:88;6447:4;6444:1;6437:15;6471:4;6468:1;6461:15;6487:125;6552:9;;;6573:10;;;6570:36;;;6586:18;;:::i;7367:184::-;7419:77;7416:1;7409:88;7516:4;7513:1;7506:15;7540:4;7537:1;7530:15;7556:118;7642:5;7635:13;7628:21;7621:5;7618:32;7608:60;;7664:1;7661;7654:12;7608:60;7556:118;:::o;7679:241::-;7735:6;7788:2;7776:9;7767:7;7763:23;7759:32;7756:52;;;7804:1;7801;7794:12;7756:52;7843:9;7830:23;7862:28;7884:5;7862:28;:::i;8198:168::-;8271:9;;;8302;;8319:15;;;8313:22;;8299:37;8289:71;;8340:18;;:::i;8371:274::-;8411:1;8437;8427:189;;8472:77;8469:1;8462:88;8573:4;8570:1;8563:15;8601:4;8598:1;8591:15;8427:189;-1:-1:-1;8630:9:1;;8371:274::o;8650:128::-;8717:9;;;8738:11;;;8735:37;;;8752:18;;:::i;9085:245::-;9152:6;9205:2;9193:9;9184:7;9180:23;9176:32;9173:52;;;9221:1;9218;9211:12;9173:52;9253:9;9247:16;9272:28;9294:5;9272:28;:::i;13762:184::-;13814:77;13811:1;13804:88;13911:4;13908:1;13901:15;13935:4;13932:1;13925:15
Swarm Source
ipfs://14bfc445125b7cbfd4196f5e404d72118b5e14402b2809f52c9fc7f5526d3348
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.