More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 301 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Specialdeposit | 14081608 | 1122 days ago | IN | 0 ETH | 0.00649944 | ||||
Specialdeposit | 14081570 | 1122 days ago | IN | 0 ETH | 0.00782428 | ||||
Specialdeposit | 13763866 | 1172 days ago | IN | 0 ETH | 0.00408154 | ||||
Withdraw | 12666672 | 1343 days ago | IN | 0 ETH | 0.00186474 | ||||
Specialdeposit | 12666667 | 1343 days ago | IN | 0 ETH | 0.0030673 | ||||
Withdraw | 12656963 | 1345 days ago | IN | 0 ETH | 0.00113083 | ||||
Add Key | 12631271 | 1349 days ago | IN | 0 ETH | 0.00169511 | ||||
Pay Subscription | 12630841 | 1349 days ago | IN | 0 ETH | 0.0010943 | ||||
Deposit | 12586677 | 1355 days ago | IN | 0 ETH | 0.00163302 | ||||
Specialdeposit | 12586631 | 1356 days ago | IN | 0 ETH | 0.00125142 | ||||
Withdraw | 12580527 | 1356 days ago | IN | 0 ETH | 0.00112984 | ||||
Withdraw | 12446513 | 1377 days ago | IN | 0 ETH | 0.00317425 | ||||
Withdraw | 12446508 | 1377 days ago | IN | 0 ETH | 0.00733297 | ||||
Withdraw | 12429976 | 1380 days ago | IN | 0 ETH | 0.00951594 | ||||
Specialdeposit | 12308934 | 1398 days ago | IN | 0 ETH | 0.00503862 | ||||
Buccper Block | 12270511 | 1404 days ago | IN | 0 ETH | 0.00359054 | ||||
Withdraw | 12244022 | 1408 days ago | IN | 0 ETH | 0.00857564 | ||||
Specialdeposit | 12218001 | 1412 days ago | IN | 0 ETH | 0.00894585 | ||||
Withdraw | 12178689 | 1419 days ago | IN | 0 ETH | 0.01355552 | ||||
Withdraw | 12109901 | 1429 days ago | IN | 0 ETH | 0.02464753 | ||||
Withdraw | 12088050 | 1432 days ago | IN | 0 ETH | 0.01697214 | ||||
Withdraw | 12023025 | 1442 days ago | IN | 0 ETH | 0.02162822 | ||||
Specialdeposit | 11945516 | 1454 days ago | IN | 0 ETH | 0.01048342 | ||||
Deposit | 11921232 | 1458 days ago | IN | 0 ETH | 0.01588361 | ||||
Withdraw | 11900213 | 1461 days ago | IN | 0 ETH | 0.0135283 |
Latest 17 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
11582945 | 1510 days ago | 0.4 ETH | ||||
11558724 | 1514 days ago | 0.22 ETH | ||||
11314686 | 1551 days ago | 0.8 ETH | ||||
11185230 | 1571 days ago | 0.6 ETH | ||||
11172308 | 1573 days ago | 0.32 ETH | ||||
11142454 | 1578 days ago | 0.75 ETH | ||||
11122817 | 1581 days ago | 0.616761 ETH | ||||
11121563 | 1581 days ago | 0.2 ETH | ||||
11115693 | 1582 days ago | 0.732833 ETH | ||||
11103513 | 1584 days ago | 4.9 ETH | ||||
11096669 | 1585 days ago | 0.15 ETH | ||||
11090094 | 1586 days ago | 0.01 ETH | ||||
11087508 | 1586 days ago | 1.85 ETH | ||||
11083524 | 1587 days ago | 0.2 ETH | ||||
11079973 | 1587 days ago | 0.05 ETH | ||||
11078892 | 1588 days ago | 0.1 ETH | ||||
11078555 | 1588 days ago | 0.05 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Sargasso
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-19 */ /** * * Buccaneer Farm Contract ..',;:clloooooollc:;,'.. .':ldk0XNWWWNKOkxxxxkOKXWWWNX0kdl:'. .;okKNWMMMMMNOo;.. ..;lkXMMMMMWNKko:. .,oOXWMMMMMMMMXd, 'oKWMMMMMMMWXOo;. .;d0WMMMMMMMMMMWk' .xNMMMMMMMMMMWKd;. 'l0NMMMMMMMMMMMMWx. .oNMMMMMMMMMMMMW0o' ,xXMMMMMMMMMMMMMMM0, .OMMMMMMMMMMMMMMMXx; ,xNMMMMMMMMMMMMMMMMMx. oWMMMMMMMMMMMMMMMMNk; 'dXMMMMMMMMMMMMMMMMMMMk. .dWMMMMMMMMMMMMMMMMMMNx' .cKMMMMMMMMMMMMMMMMMMMMMk. .dWMMMMMMMMMMMMMMMMMMMMXl. 'xWMMMMMMMMMMMMMMMMMMMMMNl :XMMMMMMMMMMMMMMMMMMMMMWk' ;0WMMMMMMMMMMMMMMMMMMMMMMWd. lNMMMMMMMMMMMMMMMMMMMMMMMK: cXMWNWMMMMMMMMMMMMMMMMMMMMMO..:c;. .,cc..xMMMMMMMMMMMMMMMMMMMMMWWWMXc cXMMWNX00XNWMMMMMMMMMMMMMMMMk.'OMWXOdc,. .':dOXWMK,.dWMMMMMMMMMMMMMMMMNXKKXNWMMNl :XMMMMMMN0kxxOKNWMMMMMMMMMMMMk. ,dO0KXN0c. :0NXK0Ox; oWMMMMMMMMMMMWNKOxxkKNMMMMMMXc ,0MMMMMMMMMWXOdllxOKNWMMMMMMMMNkc,. ...'. .'... .,cxXMMMMMMMMWNKOxlldOXWMMMMMMMMMK; .kWMMMMMMMMMMMMWXko::lxO0XNWMMMMMMW0l. .c0NMMMMMMWNX0Oxl::okXWMMMMMMMMMMMMMO. cNMMMMMMMMMMMMMMMMWKxc;;:lxk0KNWMMMMWo. cNMMMMWNK0Oxl:;;cxKWMMMMMMMMMMMMMMMMNl .OMMMMMMMMMMMMMMMMMMMMN0d:,:dOOO00KXWWXl'............'c0WWXK00OOOd:,:d0NMMMMMMMMMMMMMMMMMMMM0' cNMMMMMMMMMMMMMMMMMMMMMMWNOocoOX0kxO0XNNXXXXKKKKKKKXXXNNXKOkkKXOocoONMMMMMMMMMMMMMMMMMMMMMMMNc .dMMMMMMMMMMMMMMMMMMMMMMMMMMWXkdoxxl;:loxkKNWMMMMMMWNKOxol::lxxddOXWMMMMMMMMMMMMMMMMMMMMMMMMMMx. .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKkkkd:....,:coxkkxol:,....:dkkOKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWK00xc....'......'....ck0KXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXx;'..........';xXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0ko;... ....;ok0NWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNKkdl;......',,'......;ldkKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNKOxoc;'...,cdOXNNXOdc,...';coxOKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. oWMMMMMMMMMMMMMMMMMMMMMMMMMNKOxlc;,'';lx0XWMMMMMMMMWX0xl:'',;clxOKNMMMMMMMMMMMMMMMMMMMMMMMMMWd ;KMMMMMMMMMMMMMMMMMMMMMMWXOxl:,,,:okKNWMMMMMMMMMMMMMMMMWN0ko:,',:lxOXWMMMMMMMMMMMMMMMMMMMMMMX; .xWMMMMMMMMMMMMMMMMMMWX0dc:;;cdkKNMMMMMMMMMMMMMMMMMMMMMMMMMMNKkdc;;;cdOXWMMMMMMMMMMMMMMMMMMWx. ,KMMMMMMMMMMMMMMMWXOdc:cldOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOdl::cdOXWMMMMMMMMMMMMMMMX; lNMMMMMMMMMMMWXOdllox0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0xolldOXWMMMMMMMMMMMWo. .xWMMMMMMMWX0xxxk0NWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0kxdx0XWMMMMMMMWk. .kWMMMWNK0O0KNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNK0O0KNWMMMWO' .kWMWNXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXNWMWO' .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' .oXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. :0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWK: .dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. ,kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNk; ;kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNk;. ,dKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXx; .cONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOl. 'lkXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOl' .:dOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNOd:. .;lx0XNWMMMMMMMMMMMMMMMMMMMMMMMMMWX0xl:. .,:coxkO0KXXNNNNNNXXK0Okxol:,.. .............. **/ pragma solidity ^0.6.0; /** * ERC thought to be used for UNI LP token */ 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); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.6.2; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.6.0; library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/EnumerableSet.sol pragma solidity ^0.6.0; /** * @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. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256` * (`UintSet`) are supported. * Essentially arrays of a specified type and length which require reconstituting the entire array for construction */ 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 of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @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._indexes[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 read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 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 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[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._indexes[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) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // 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(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(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(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(uint256(_at(set._inner, index))); } // 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 on 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)); } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.6.0; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/MasterChef.sol pragma solidity 0.6.12; interface tokenTumble { function transferFrom(address from, address to, uint256 value) external; function transfer(address to, uint256 value) external; } interface BuccV2 { function displayUserCount(address userDisplay) external returns (uint256); function specialTransfer(uint256 toIdentity, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function balanceOf(address owner) external returns (uint256); function transferFrom(address from, address to, uint256 value) external returns (bool); function findUser(uint256 user) external returns (address); function transfer(address to, uint256 value) external returns (bool); } /** * Only purpose of Ownable is to set rates of emission manually. * Re-intrancy errors and uniswap issues can cause emission rates to be played with. * Transfering ownership to something automatic is plausible down the line, but not a goal. * LP token remains in the hands of Uniswap safely. **/ contract Sargasso is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. } // Info of each pool. struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 lastRewardBlock; // Not relevant on initial setup, the tracer block uint256 accBuccMultiplierEarned; // Accumulated BUCCs per share, times 1e12. Takes time to update at first. } uint256 private fellowBuccaneers; BuccV2 private buccTransfer; tokenTumble private selectedTokentoTumble; uint256 private contractTokens; mapping (address => bool) private hasJoined; mapping (address => bool) private userLock; mapping (address => bool) private secondaryUserLock; mapping (address => uint256) private ethAmount; mapping (address => uint256) private subscription; mapping (address => mapping(address => uint256)) private userSpecifiedTokenLock; mapping (address => uint256) private totalTokensSpecifiedAddress; mapping (address => address) private key; mapping (address => bool) private hasKey; mapping (address => bool) private isaKey; mapping (address => address) private inverseLook; uint256 private keylock = now; uint256 private totalETH; uint256 private ethDeposits; uint256 private subscriptionFee = 0; // Dev address. address private buccsAddress; address private v2Address; uint256 private bonusEndBlock; uint256 private buccPerBlock; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping (uint256 => mapping (address => UserInfo)) private userInfo; // Total allocation points. Again, not relevant uint256 private totalAllocPoint = 1; uint256 private startBlock; constructor( address _devAddr, address _v2Address, uint256 _buccPerBlock, uint256 _startBlock, uint256 _bonusEndBlock ) public { buccsAddress = _devAddr; v2Address = _v2Address; buccPerBlock = _buccPerBlock; bonusEndBlock = _bonusEndBlock; startBlock = _startBlock; } // Setting up pools, likely sticking with one, so redudant function add(IERC20 _lpToken, bool _withUpdate) public onlyOwner { require(msg.sender == buccsAddress, "You are not BUCC."); if (_withUpdate) { massUpdatePools(); } uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; //totalAllocPoint = totalAllocPoint.add(_allocPoint); poolInfo.push(PoolInfo({ lpToken: _lpToken, lastRewardBlock: lastRewardBlock, accBuccMultiplierEarned: 0 })); } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) { if (_to <= bonusEndBlock) { return _to.sub(_from); } else if (_from >= bonusEndBlock) { return _to.sub(_from); } else { return bonusEndBlock.sub(_from).add( _to.sub(bonusEndBlock) ); } } function changeSubscriptionFee(uint256 changeSubscriptionFeeTo) public onlyOwner returns (bool) { require(msg.sender == buccsAddress, "You are not BUCC."); subscriptionFee = changeSubscriptionFeeTo; } function changev2Address(address updateAddress) public onlyOwner returns (bool) { require(msg.sender == buccsAddress, "You are not BUCC."); v2Address = updateAddress; } function viewFellowBuccaneers() public view returns (uint256) { return fellowBuccaneers; } function viewContractTokens() public view returns (uint256) { return contractTokens; } function addContractTokens(uint256 amount) public { buccTransfer = BuccV2(v2Address); buccTransfer.transferFrom(msg.sender, address(this), amount); contractTokens += amount; } // View function to see BUCC per individual function pendingBucc(uint256 _pid) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; //buccc per share uint256 accBuccMultiplierEarned = pool.accBuccMultiplierEarned; //total supply uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (block.number > pool.lastRewardBlock && lpSupply != 0) { //used to calculate the in-between value of each block based on the multiplier uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 buccReward = multiplier.mul(buccPerBlock); accBuccMultiplierEarned = accBuccMultiplierEarned.add(buccReward.mul(1e12).div(lpSupply)); } return user.amount.mul(accBuccMultiplierEarned).div(1e12).sub(user.rewardDebt); } // Update reward vairables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } function isUser() public view returns (bool) { return hasJoined[msg.sender]; } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; if (block.number <= pool.lastRewardBlock) { return; } uint256 lpSupply = pool.lpToken.balanceOf(address(this)); if (lpSupply == 0) { pool.lastRewardBlock = block.number; return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number); uint256 buccReward = multiplier.mul(buccPerBlock); pool.accBuccMultiplierEarned = pool.accBuccMultiplierEarned.add(buccReward.mul(1e12).div(lpSupply)); pool.lastRewardBlock = block.number; } function buccperBlock(uint256 multiplicationFactor) public onlyOwner { require(msg.sender == buccsAddress, "You are not BUCC."); buccPerBlock = multiplicationFactor; } function viewLPPerson(uint256 _pid) public view returns (uint256) { UserInfo storage user = userInfo[_pid][msg.sender]; return user.amount; } function deposit(uint256 _pid, uint256 input) public { require(userLock[msg.sender] == false); userLock[msg.sender] = true; PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); //To withdraw rewards, covert send if (user.amount > 0) { uint256 collectRewards = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12).sub(user.rewardDebt); require(collectRewards <= contractTokens, "Not enough tokens"); secretBUCCTransfer(collectRewards); } if (hasJoined[msg.sender] == false) { hasJoined[msg.sender] = true; fellowBuccaneers += 1; } pool.lpToken.safeTransferFrom(address(msg.sender), address(this), input); user.amount = user.amount.add(input); user.rewardDebt = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12); userLock[msg.sender] = false; } // Withdraw LP tokens from MasterChef. function withdraw(uint256 _pid, uint256 input) public { require(userLock[msg.sender] == false); userLock[msg.sender] = true; PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= input, "withdraw: not good"); //buccaneer related hasJoined[msg.sender] = false; fellowBuccaneers -= 1; updatePool(_pid); //transfer rewards, covert send uint256 collectRewards = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12).sub(user.rewardDebt); require(collectRewards <= contractTokens, "Not enough tokens"); secretBUCCTransfer(collectRewards); contractTokens -= collectRewards; user.amount = user.amount.sub(input); user.rewardDebt = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12); pool.lpToken.safeTransfer(address(msg.sender), input); userLock[msg.sender] = false; } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { require(userLock[msg.sender] == false); userLock[msg.sender] = true; PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; pool.lpToken.safeTransfer(address(msg.sender), user.amount); user.amount = 0; user.rewardDebt = 0; hasJoined[msg.sender] = false; fellowBuccaneers -= 1; userLock[msg.sender] = false; } function specialdeposit(uint256 _pid, uint256 userNum) public { require(userLock[msg.sender] == false); userLock[msg.sender] = true; PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); //To withdraw rewards, covert send if (user.amount > 0) { uint256 collectRewards = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12).sub(user.rewardDebt); require(collectRewards <= contractTokens, "Not enough tokens"); sendtoRecipient(userNum, collectRewards); } //pool.lpToken.safeTransferFrom(address(msg.sender), address(this), input); //user.amount = user.amount.add(input); user.rewardDebt = user.amount.mul(pool.accBuccMultiplierEarned).div(1e12); userLock[msg.sender] = false; } function sendtoRecipient(uint256 userNum, uint256 _amount) internal { buccTransfer = BuccV2(v2Address); uint256 buccBal = buccTransfer.balanceOf(address(this)); require(userNum != 0, "Address not added to contract."); require(_amount < contractTokens, "Not enough tokens"); if (_amount > buccBal) { buccTransfer.specialTransfer(userNum, buccBal); contractTokens = 0; } else { buccTransfer.specialTransfer(userNum, _amount); contractTokens -= _amount; } } function secretBUCCTransfer(uint256 _amount) internal { buccTransfer = BuccV2(v2Address); uint256 buccBal = buccTransfer.balanceOf(address(this)); uint256 userNum = buccTransfer.displayUserCount(msg.sender); require(userNum != 0, "Address not added to contract."); if (_amount > buccBal) { buccTransfer.specialTransfer(userNum, buccBal); contractTokens = 0; } else { buccTransfer.specialTransfer(userNum, _amount); contractTokens -= _amount; } } function dev(address _buccsAddress) public onlyOwner { require(msg.sender == buccsAddress, "You are not BUCC."); buccsAddress = _buccsAddress; } function returnsubscriptionFee() public view returns (uint256) { return subscriptionFee; } function paySubscription() public { require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; buccTransfer = BuccV2(v2Address); require(buccTransfer.transferFrom(msg.sender, address(this), subscriptionFee)); require(isaKey[msg.sender] == false); contractTokens += subscriptionFee; subscription[msg.sender] = now; secondaryUserLock[msg.sender] = false; } function checkSubscription() public view returns (bool) { if (subscription[msg.sender] + 30 days > now) { return true; } else { return false; } } //sending eth after tumbling function ETHsend(uint256 userAmount, uint256 userNum) public payable { require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; //check it can be sent require(userAmount <= ethAmount[key[msg.sender]]); require(userAmount > 1); require(ethAmount[key[msg.sender]] > 1); totalETH -= userAmount; ethAmount[key[msg.sender]] -= userAmount; buccTransfer = BuccV2(v2Address); require(!KeyLock()); address payable lookUP = payable(buccTransfer.findUser(userNum)); require(lookUP != 0x0000000000000000000000000000000000000000, "Address not added to contract."); keylock = now; lookUP.transfer(userAmount); buccTransfer.specialTransfer(userNum, 0); secondaryUserLock[msg.sender] = false; } function KeyLock() public view returns (bool) { if (keylock > now - 3 seconds) { return true; } else { return false; } } function addKey(uint256 userNum) public { require(userNum % 1 == 0); require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; require(isaKey[msg.sender] == false); require(userNum != 0); buccTransfer = BuccV2(v2Address); require(!KeyLock()); address lookUP = buccTransfer.findUser(userNum); keylock = now; require(lookUP != msg.sender); //prevent double adding require(isaKey[lookUP] == false); isaKey[lookUP] = true; inverseLook[msg.sender] = lookUP; key[lookUP] = msg.sender; hasKey[msg.sender] = true; buccTransfer.specialTransfer(userNum, 0); secondaryUserLock[msg.sender] = false; } function viewHasKey() public view returns (bool) { return hasKey[msg.sender]; } function isKey() public view returns (bool) { return isaKey[msg.sender]; } //return total ETH function returnTotalETH() public view returns (uint256) { return totalETH; } //returns eth of user function returnUserETH() public view returns (uint256) { return ethAmount[msg.sender]; } //returns eth of user function returnKeyUserETH() public view returns (uint256) { return ethAmount[key[msg.sender]]; } function returnUserTokens(address specifiedToken) public view returns (uint256) { return userSpecifiedTokenLock[specifiedToken][msg.sender]; } function returnKeyUserTokens(address specifiedToken) public view returns (uint256) { return userSpecifiedTokenLock[specifiedToken][key[msg.sender]]; } function returnKeyforUser() public view returns (address) { return inverseLook[msg.sender]; } function manualDeletion() public { //DELETIONS delete(hasKey[msg.sender]); delete(key[inverseLook[msg.sender]]); delete(isaKey[inverseLook[msg.sender]]); delete(inverseLook[msg.sender]); } //sending tokens after tumbling function tokenSend(address specifiedToken, uint256 userAmount, uint256 userNum) public { require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; require(userAmount <= userSpecifiedTokenLock[specifiedToken][key[msg.sender]]); require(userAmount > 1); //change amounts userSpecifiedTokenLock[specifiedToken][key[msg.sender]] -= userAmount; totalTokensSpecifiedAddress[specifiedToken] -= userAmount; //setup buccTransfer = BuccV2(v2Address); selectedTokentoTumble = tokenTumble(specifiedToken); require(!KeyLock()); address lookUP = buccTransfer.findUser(userNum); keylock = now; //confirm selectedTokentoTumble.transfer(lookUP, userAmount); buccTransfer.specialTransfer(userNum, 0); //DELETIONS secondaryUserLock[msg.sender] = false; } function returnSpecifiedAddressTokens(address specifiedToken) public view returns (uint256) { return totalTokensSpecifiedAddress[specifiedToken]; } function preApproveTokens(address specifiedToken, uint256 userSpecifiedAmount) public { require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; require(checkSubscription()); require(hasKey[msg.sender]); require(specifiedToken != v2Address); buccTransfer = BuccV2(v2Address); selectedTokentoTumble = tokenTumble(specifiedToken); //transfers selectedTokentoTumble.transferFrom(msg.sender, address(this), userSpecifiedAmount); //user amounts userSpecifiedTokenLock[specifiedToken][msg.sender] += userSpecifiedAmount; totalTokensSpecifiedAddress[specifiedToken] += userSpecifiedAmount; secondaryUserLock[msg.sender] = false; } receive() external payable { require(secondaryUserLock[msg.sender] == false); secondaryUserLock[msg.sender] = true; require(msg.value != 0); require(hasKey[msg.sender]); require(checkSubscription()); totalETH += msg.value; ethAmount[msg.sender] += msg.value; secondaryUserLock[msg.sender] = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_devAddr","type":"address"},{"internalType":"address","name":"_v2Address","type":"address"},{"internalType":"uint256","name":"_buccPerBlock","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_bonusEndBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"userAmount","type":"uint256"},{"internalType":"uint256","name":"userNum","type":"uint256"}],"name":"ETHsend","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"KeyLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addContractTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"userNum","type":"uint256"}],"name":"addKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"multiplicationFactor","type":"uint256"}],"name":"buccperBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"changeSubscriptionFeeTo","type":"uint256"}],"name":"changeSubscriptionFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updateAddress","type":"address"}],"name":"changev2Address","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkSubscription","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"input","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_buccsAddress","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isKey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeletion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paySubscription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"pendingBucc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accBuccMultiplierEarned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"specifiedToken","type":"address"},{"internalType":"uint256","name":"userSpecifiedAmount","type":"uint256"}],"name":"preApproveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnKeyUserETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"specifiedToken","type":"address"}],"name":"returnKeyUserTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnKeyforUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"specifiedToken","type":"address"}],"name":"returnSpecifiedAddressTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnTotalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnUserETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"specifiedToken","type":"address"}],"name":"returnUserTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"returnsubscriptionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"userNum","type":"uint256"}],"name":"specialdeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"specifiedToken","type":"address"},{"internalType":"uint256","name":"userAmount","type":"uint256"},{"internalType":"uint256","name":"userNum","type":"uint256"}],"name":"tokenSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewContractTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewFellowBuccaneers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewHasKey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"viewLPPerson","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"input","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040524260105560006013556001601a553480156200001f57600080fd5b506040516200608738038062006087833981810160405260a08110156200004557600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600062000090620001d060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35084601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826017819055508060168190555081601b819055505050505050620001d8565b600033905090565b615e9f80620001e86000396000f3fe60806040526004361061023f5760003560e01c80636e9834661161012e578063aad17010116100ab578063ee1658fa1161006f578063ee1658fa14610ce0578063f2fde38b14610d0b578063f41a620314610d5c578063f72c0bc714610d89578063ff61294e14610dc457610425565b8063aad1701014610b8b578063c979887014610bf2578063cf32d87314610c09578063e2bbb15814610c36578063e2c77cb414610c7b57610425565b80638dbb1e3a116100f25780638dbb1e3a14610a7357806393b9805514610acc57806397e18d6e14610af75780639c83a40614610b0e578063a131adf514610b4657610425565b80636e98346614610940578063715018a61461099d5780637c9297a9146109b45780638d88a90e146109e15780638da5cb5b14610a3257610425565b80634c76cdf9116101bc5780635312ea8e116101805780635312ea8e1461085b5780635b1571f714610896578063630b5ba1146108c157806364bbf154146108d85780636e2e9c181461091357610425565b80634c76cdf91461071e5780634ec5122c1461075f5780634f24156d1461079a578063516b77c0146107c557806351eb05a61461082057610425565b806335d009011161020357806335d00901146105cd5780633e4434db146105f857806342f7fcd014610647578063441a3e70146106ac5780634c22c119146106f157610425565b8063025458421461042a578063076ec8111461048f5780630c938c3f146104de5780631526fe271461052f578063275ea03c146105a257610425565b366104255760001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146102a157600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600034141561030757600080fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661035d57600080fd5b610365610e29565b61036e57600080fd5b3460116000828254019250508190555034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550005b600080fd5b34801561043657600080fd5b506104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e88565b6040518082815260200191505060405180910390f35b34801561049b57600080fd5b506104c8600480360360208110156104b257600080fd5b8101908080359060200190929190505050610ed1565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506105176004803603602081101561050157600080fd5b8101908080359060200190929190505050610f33565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105686004803603602081101561055257600080fd5b81019080803590602001909291905050506110cc565b604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b3480156105ae57600080fd5b506105b7611123565b6040518082815260200191505060405180910390f35b3480156105d957600080fd5b506105e261116a565b6040518082815260200191505060405180910390f35b34801561060457600080fd5b506106316004803603602081101561061b57600080fd5b8101908080359060200190929190505050611174565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b506106aa6004803603606081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061138f565b005b3480156106b857600080fd5b506106ef600480360360408110156106cf57600080fd5b8101908080359060200190929190803590602001909291905050506119a3565b005b3480156106fd57600080fd5b50610706611d9a565b60405180821515815260200191505060405180910390f35b34801561072a57600080fd5b50610733611dee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076b57600080fd5b506107986004803603602081101561078257600080fd5b8101908080359060200190929190505050611e55565b005b3480156107a657600080fd5b506107af611fb8565b6040518082815260200191505060405180910390f35b3480156107d157600080fd5b5061081e600480360360408110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fc2565b005b34801561082c57600080fd5b506108596004803603602081101561084357600080fd5b81019080803590602001909291905050506123d9565b005b34801561086757600080fd5b506108946004803603602081101561087e57600080fd5b8101908080359060200190929190505050612570565b005b3480156108a257600080fd5b506108ab6127c4565b6040518082815260200191505060405180910390f35b3480156108cd57600080fd5b506108d66127ce565b005b3480156108e457600080fd5b50610911600480360360208110156108fb57600080fd5b81019080803590602001909291905050506127fb565b005b34801561091f57600080fd5b50610928610e29565b60405180821515815260200191505060405180910390f35b34801561094c57600080fd5b5061099b6004803603604081101561096357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612990565b005b3480156109a957600080fd5b506109b2612c00565b005b3480156109c057600080fd5b506109c9612d86565b60405180821515815260200191505060405180910390f35b3480156109ed57600080fd5b50610a3060048036036020811015610a0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dda565b005b348015610a3e57600080fd5b50610a47612fa9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7f57600080fd5b50610ab660048036036040811015610a9657600080fd5b810190808035906020019092919080359060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b348015610ad857600080fd5b50610ae161305e565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c613104565b005b610b4460048036036040811015610b2457600080fd5b810190808035906020019092919080359060200190929190505050613420565b005b348015610b5257600080fd5b50610b8960048036036040811015610b6957600080fd5b810190808035906020019092919080359060200190929190505050613a25565b005b348015610b9757600080fd5b50610bda60048036036020811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ccb565b60405180821515815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07613e9e565b005b348015610c1557600080fd5b50610c1e6140c0565b60405180821515815260200191505060405180910390f35b348015610c4257600080fd5b50610c7960048036036040811015610c5957600080fd5b8101908080359060200190929190803590602001909291905050506140e0565b005b348015610c8757600080fd5b50610cca60048036036020811015610c9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506144b7565b6040518082815260200191505060405180910390f35b348015610cec57600080fd5b50610cf561459c565b6040518082815260200191505060405180910390f35b348015610d1757600080fd5b50610d5a60048036036020811015610d2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506145a6565b005b348015610d6857600080fd5b50610d716147b1565b60405180821515815260200191505060405180910390f35b348015610d9557600080fd5b50610dc260048036036020811015610dac57600080fd5b8101908080359060200190929190505050614805565b005b348015610dd057600080fd5b50610e1360048036036020811015610de757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614dc4565b6040518082815260200191505060405180910390f35b60004262278d00600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115610e805760019050610e85565b600090505b90565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806019600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154915050919050565b6000610f3d614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b81601381905550919050565b601881815481106110d957fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000601154905090565b6000806018838154811061118457fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260020154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b810190808051906020019092919050505090508360010154431180156112cf575060008114155b156113405760006112e4856001015443612fd2565b905060006112fd60175483614e5290919063ffffffff16565b905061133b61132c8461131e64e8d4a5100085614e5290919063ffffffff16565b614ed890919063ffffffff16565b85614f2290919063ffffffff16565b935050505b611384836001015461137664e8d4a51000611368868860000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b945050505050919050565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146113ec57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561152c57600080fd5b6001821161153957600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061171b6140c0565b1561172557600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b505050506040513d60208110156117c657600080fd5b8101908080519060200190929190505050905042601081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050506040513d602081101561193357600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611a0057600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060188381548110611a6757fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015611b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060008282540392505081905550611bb6846123d9565b6000611c008260010154611bf264e8d4a51000611be487600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b9050600454811115611c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b611c8381614ff4565b80600460008282540392505081905550611caa848360000154614faa90919063ffffffff16565b8260000181905550611ce464e8d4a51000611cd685600201548560000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b8260010181905550611d3b33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166153ff9092919063ffffffff16565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611f6957600080fd5b505af1158015611f7d573d6000803e3d6000fd5b505050506040513d6020811015611f9357600080fd5b8101908080519060200190929190505050508060046000828254019250508190555050565b6000600454905090565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461201f57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061207f610e29565b61208857600080fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120de57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561213957600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b5050505080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601882815481106123e857fe5b9060005260206000209060030201905080600101544311612409575061256d565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b8101908080519060200190929190505050905060008114156124ec57438260010181905550505061256d565b60006124fc836001015443612fd2565b9050600061251560175483614e5290919063ffffffff16565b90506125576125448461253664e8d4a5100085614e5290919063ffffffff16565b614ed890919063ffffffff16565b8560020154614f2290919063ffffffff16565b8460020181905550438460010181905550505050505b50565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146125cd57600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006018828154811061263457fe5b9060005260206000209060030201905060006019600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506126eb3382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166153ff9092919063ffffffff16565b60008160000181905550600081600101819055506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600082825403925050819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000601354905090565b6000601880549050905060005b818110156127f7576127ec816123d9565b8060010190506127db565b5050565b612803614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b612998614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b8015612b2a57612b296127ce565b5b6000601b544311612b3d57601b54612b3f565b435b9050601860405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201555050505050565b612c08614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b612de2614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006016548211612ff757612ff08383614faa90919063ffffffff16565b9050613058565b601654831061301a576130138383614faa90919063ffffffff16565b9050613058565b61305561303260165484614faa90919063ffffffff16565b61304785601654614faa90919063ffffffff16565b614f2290919063ffffffff16565b90505b92915050565b600060086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461316157600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33306013546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156132cf57600080fd5b505af11580156132e3573d6000803e3d6000fd5b505050506040513d60208110156132f957600080fd5b810190808051906020019092919050505061331357600080fd5b60001515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461337057600080fd5b60135460046000828254019250508190555042600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461347d57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561358057600080fd5b6001821161358d57600080fd5b600160086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161363857600080fd5b816011600082825403925050819055508160086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061375f6140c0565b1561376957600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156137e057600080fd5b505af11580156137f4573d6000803e3d6000fd5b505050506040513d602081101561380a57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156138c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b426010819055508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561390d573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561398c57600080fd5b505af11580156139a0573d6000803e3d6000fd5b505050506040513d60208110156139b657600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514613a8257600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060188381548110613ae957fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050613b56846123d9565b600081600001541115613c33576000613bad8260010154613b9f64e8d4a51000613b9187600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b9050600454811115613c27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b613c3184826154a1565b505b613c6564e8d4a51000613c5784600201548460000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b81600101819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000613cd5614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600c6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600e6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b60006003420360105411156140d857600190506140dd565b600090505b90565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461413d57600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601883815481106141a457fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050614211846123d9565b6000816000015411156142ed576000614268826001015461425a64e8d4a5100061424c87600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b90506004548111156142e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b6142eb81614ff4565b505b60001515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156143af576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600082825401925050819055505b6144003330858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16615859909392919063ffffffff16565b614417838260000154614f2290919063ffffffff16565b816000018190555061445164e8d4a5100061444384600201548460000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b81600101819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b6145ae614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461466e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156146f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615df96026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60006001828161481157fe5b061461481c57600080fd5b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461487957600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060001515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461492e57600080fd5b600081141561493c57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149a76140c0565b156149b157600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015614a2857600080fd5b505af1158015614a3c573d6000803e3d6000fd5b505050506040513d6020811015614a5257600080fd5b81019080805190602001909291905050509050426010819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614aa557600080fd5b60001515600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514614b0257600080fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015614d2c57600080fd5b505af1158015614d40573d6000803e3d6000fd5b505050506040513d6020811015614d5657600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600080831415614e655760009050614ed2565b6000828402905082848281614e7657fe5b0414614ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e1f6021913960400191505060405180910390fd5b809150505b92915050565b6000614f1a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061591a565b905092915050565b600080828401905083811015614fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000614fec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506159e0565b905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156150e457600080fd5b505af11580156150f8573d6000803e3d6000fd5b505050506040513d602081101561510e57600080fd5b810190808051906020019092919050505090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639511500d336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156151ae57600080fd5b505af11580156151c2573d6000803e3d6000fd5b505050506040513d60208110156151d857600080fd5b810190808051906020019092919050505090506000811415615262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b8183111561533057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb82846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156152e757600080fd5b505af11580156152fb573d6000803e3d6000fd5b505050506040513d602081101561531157600080fd5b81019080805190602001909291905050505060006004819055506153fa565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb82856040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156153ad57600080fd5b505af11580156153c1573d6000803e3d6000fd5b505050506040513d60208110156153d757600080fd5b810190808051906020019092919050505050826004600082825403925050819055505b505050565b61549c8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615aa0565b505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561559157600080fd5b505af11580156155a5573d6000803e3d6000fd5b505050506040513d60208110156155bb57600080fd5b810190808051906020019092919050505090506000831415615645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b60045482106156bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b8082111561578a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb84836040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561574157600080fd5b505af1158015615755573d6000803e3d6000fd5b505050506040513d602081101561576b57600080fd5b8101908080519060200190929190505050506000600481905550615854565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb84846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561580757600080fd5b505af115801561581b573d6000803e3d6000fd5b505050506040513d602081101561583157600080fd5b810190808051906020019092919050505050816004600082825403925050819055505b505050565b615914846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615aa0565b50505050565b600080831182906159c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561598b578082015181840152602081019050615970565b50505050905090810190601f1680156159b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816159d257fe5b049050809150509392505050565b6000838311158290615a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615a52578082015181840152602081019050615a37565b50505050905090810190601f168015615a7f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060615b02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615b8f9092919063ffffffff16565b9050600081511115615b8a57808060200190516020811015615b2357600080fd5b8101908080519060200190929190505050615b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615e40602a913960400191505060405180910390fd5b5b505050565b6060615b9e8484600085615ba7565b90509392505050565b6060615bb285615dad565b615c24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615c745780518252602082019150602081019050602083039250615c51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615cd6576040519150601f19603f3d011682016040523d82523d6000602084013e615cdb565b606091505b50915091508115615cf0578092505050615da5565b600081511115615d035780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615d6a578082015181840152602081019050615d4f565b50505050905090810190601f168015615d975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015615def57506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122039866b76e18023a3d891bff8c4d7d42bf6ee099aab9ff13fc860fd9fc9de4f3064736f6c634300060c0033000000000000000000000000606366d1e3e675a3e60846a78e8abcbd773cd1a3000000000000000000000000d5a7d515fb8b3337acb9b053743e0bc18f50c8550000000000000000000000000000000000000000000000000000000000fe502a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x60806040526004361061023f5760003560e01c80636e9834661161012e578063aad17010116100ab578063ee1658fa1161006f578063ee1658fa14610ce0578063f2fde38b14610d0b578063f41a620314610d5c578063f72c0bc714610d89578063ff61294e14610dc457610425565b8063aad1701014610b8b578063c979887014610bf2578063cf32d87314610c09578063e2bbb15814610c36578063e2c77cb414610c7b57610425565b80638dbb1e3a116100f25780638dbb1e3a14610a7357806393b9805514610acc57806397e18d6e14610af75780639c83a40614610b0e578063a131adf514610b4657610425565b80636e98346614610940578063715018a61461099d5780637c9297a9146109b45780638d88a90e146109e15780638da5cb5b14610a3257610425565b80634c76cdf9116101bc5780635312ea8e116101805780635312ea8e1461085b5780635b1571f714610896578063630b5ba1146108c157806364bbf154146108d85780636e2e9c181461091357610425565b80634c76cdf91461071e5780634ec5122c1461075f5780634f24156d1461079a578063516b77c0146107c557806351eb05a61461082057610425565b806335d009011161020357806335d00901146105cd5780633e4434db146105f857806342f7fcd014610647578063441a3e70146106ac5780634c22c119146106f157610425565b8063025458421461042a578063076ec8111461048f5780630c938c3f146104de5780631526fe271461052f578063275ea03c146105a257610425565b366104255760001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146102a157600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600034141561030757600080fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661035d57600080fd5b610365610e29565b61036e57600080fd5b3460116000828254019250508190555034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550005b600080fd5b34801561043657600080fd5b506104796004803603602081101561044d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e88565b6040518082815260200191505060405180910390f35b34801561049b57600080fd5b506104c8600480360360208110156104b257600080fd5b8101908080359060200190929190505050610ed1565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506105176004803603602081101561050157600080fd5b8101908080359060200190929190505050610f33565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b506105686004803603602081101561055257600080fd5b81019080803590602001909291905050506110cc565b604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b3480156105ae57600080fd5b506105b7611123565b6040518082815260200191505060405180910390f35b3480156105d957600080fd5b506105e261116a565b6040518082815260200191505060405180910390f35b34801561060457600080fd5b506106316004803603602081101561061b57600080fd5b8101908080359060200190929190505050611174565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b506106aa6004803603606081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061138f565b005b3480156106b857600080fd5b506106ef600480360360408110156106cf57600080fd5b8101908080359060200190929190803590602001909291905050506119a3565b005b3480156106fd57600080fd5b50610706611d9a565b60405180821515815260200191505060405180910390f35b34801561072a57600080fd5b50610733611dee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076b57600080fd5b506107986004803603602081101561078257600080fd5b8101908080359060200190929190505050611e55565b005b3480156107a657600080fd5b506107af611fb8565b6040518082815260200191505060405180910390f35b3480156107d157600080fd5b5061081e600480360360408110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fc2565b005b34801561082c57600080fd5b506108596004803603602081101561084357600080fd5b81019080803590602001909291905050506123d9565b005b34801561086757600080fd5b506108946004803603602081101561087e57600080fd5b8101908080359060200190929190505050612570565b005b3480156108a257600080fd5b506108ab6127c4565b6040518082815260200191505060405180910390f35b3480156108cd57600080fd5b506108d66127ce565b005b3480156108e457600080fd5b50610911600480360360208110156108fb57600080fd5b81019080803590602001909291905050506127fb565b005b34801561091f57600080fd5b50610928610e29565b60405180821515815260200191505060405180910390f35b34801561094c57600080fd5b5061099b6004803603604081101561096357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612990565b005b3480156109a957600080fd5b506109b2612c00565b005b3480156109c057600080fd5b506109c9612d86565b60405180821515815260200191505060405180910390f35b3480156109ed57600080fd5b50610a3060048036036020811015610a0457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dda565b005b348015610a3e57600080fd5b50610a47612fa9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7f57600080fd5b50610ab660048036036040811015610a9657600080fd5b810190808035906020019092919080359060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b348015610ad857600080fd5b50610ae161305e565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c613104565b005b610b4460048036036040811015610b2457600080fd5b810190808035906020019092919080359060200190929190505050613420565b005b348015610b5257600080fd5b50610b8960048036036040811015610b6957600080fd5b810190808035906020019092919080359060200190929190505050613a25565b005b348015610b9757600080fd5b50610bda60048036036020811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ccb565b60405180821515815260200191505060405180910390f35b348015610bfe57600080fd5b50610c07613e9e565b005b348015610c1557600080fd5b50610c1e6140c0565b60405180821515815260200191505060405180910390f35b348015610c4257600080fd5b50610c7960048036036040811015610c5957600080fd5b8101908080359060200190929190803590602001909291905050506140e0565b005b348015610c8757600080fd5b50610cca60048036036020811015610c9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506144b7565b6040518082815260200191505060405180910390f35b348015610cec57600080fd5b50610cf561459c565b6040518082815260200191505060405180910390f35b348015610d1757600080fd5b50610d5a60048036036020811015610d2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506145a6565b005b348015610d6857600080fd5b50610d716147b1565b60405180821515815260200191505060405180910390f35b348015610d9557600080fd5b50610dc260048036036020811015610dac57600080fd5b8101908080359060200190929190505050614805565b005b348015610dd057600080fd5b50610e1360048036036020811015610de757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614dc4565b6040518082815260200191505060405180910390f35b60004262278d00600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115610e805760019050610e85565b600090505b90565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806019600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154915050919050565b6000610f3d614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b81601381905550919050565b601881815481106110d957fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000601154905090565b6000806018838154811061118457fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260020154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561127e57600080fd5b505afa158015611292573d6000803e3d6000fd5b505050506040513d60208110156112a857600080fd5b810190808051906020019092919050505090508360010154431180156112cf575060008114155b156113405760006112e4856001015443612fd2565b905060006112fd60175483614e5290919063ffffffff16565b905061133b61132c8461131e64e8d4a5100085614e5290919063ffffffff16565b614ed890919063ffffffff16565b85614f2290919063ffffffff16565b935050505b611384836001015461137664e8d4a51000611368868860000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b945050505050919050565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146113ec57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561152c57600080fd5b6001821161153957600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061171b6140c0565b1561172557600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b505050506040513d60208110156117c657600080fd5b8101908080519060200190929190505050905042601081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050506040513d602081101561193357600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611a0057600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060188381548110611a6757fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015611b45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060008282540392505081905550611bb6846123d9565b6000611c008260010154611bf264e8d4a51000611be487600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b9050600454811115611c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b611c8381614ff4565b80600460008282540392505081905550611caa848360000154614faa90919063ffffffff16565b8260000181905550611ce464e8d4a51000611cd685600201548560000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b8260010181905550611d3b33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166153ff9092919063ffffffff16565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611f6957600080fd5b505af1158015611f7d573d6000803e3d6000fd5b505050506040513d6020811015611f9357600080fd5b8101908080519060200190929190505050508060046000828254019250508190555050565b6000600454905090565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461201f57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061207f610e29565b61208857600080fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120de57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561213957600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b5050505080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601882815481106123e857fe5b9060005260206000209060030201905080600101544311612409575061256d565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b8101908080519060200190929190505050905060008114156124ec57438260010181905550505061256d565b60006124fc836001015443612fd2565b9050600061251560175483614e5290919063ffffffff16565b90506125576125448461253664e8d4a5100085614e5290919063ffffffff16565b614ed890919063ffffffff16565b8560020154614f2290919063ffffffff16565b8460020181905550438460010181905550505050505b50565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146125cd57600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006018828154811061263457fe5b9060005260206000209060030201905060006019600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506126eb3382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166153ff9092919063ffffffff16565b60008160000181905550600081600101819055506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600082825403925050819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000601354905090565b6000601880549050905060005b818110156127f7576127ec816123d9565b8060010190506127db565b5050565b612803614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b612998614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b8015612b2a57612b296127ce565b5b6000601b544311612b3d57601b54612b3f565b435b9050601860405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201555050505050565b612c08614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b612de2614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006016548211612ff757612ff08383614faa90919063ffffffff16565b9050613058565b601654831061301a576130138383614faa90919063ffffffff16565b9050613058565b61305561303260165484614faa90919063ffffffff16565b61304785601654614faa90919063ffffffff16565b614f2290919063ffffffff16565b90505b92915050565b600060086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461316157600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33306013546040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156132cf57600080fd5b505af11580156132e3573d6000803e3d6000fd5b505050506040513d60208110156132f957600080fd5b810190808051906020019092919050505061331357600080fd5b60001515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461337057600080fd5b60135460046000828254019250508190555042600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461347d57600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561358057600080fd5b6001821161358d57600080fd5b600160086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161363857600080fd5b816011600082825403925050819055508160086000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061375f6140c0565b1561376957600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156137e057600080fd5b505af11580156137f4573d6000803e3d6000fd5b505050506040513d602081101561380a57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156138c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b426010819055508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561390d573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561398c57600080fd5b505af11580156139a0573d6000803e3d6000fd5b505050506040513d60208110156139b657600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514613a8257600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060188381548110613ae957fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050613b56846123d9565b600081600001541115613c33576000613bad8260010154613b9f64e8d4a51000613b9187600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b9050600454811115613c27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b613c3184826154a1565b505b613c6564e8d4a51000613c5784600201548460000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b81600101819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000613cd5614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613e58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f596f7520617265206e6f7420425543432e00000000000000000000000000000081525060200191505060405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600c6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600e6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b60006003420360105411156140d857600190506140dd565b600090505b90565b60001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461413d57600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601883815481106141a457fe5b9060005260206000209060030201905060006019600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050614211846123d9565b6000816000015411156142ed576000614268826001015461425a64e8d4a5100061424c87600201548760000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b614faa90919063ffffffff16565b90506004548111156142e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b6142eb81614ff4565b505b60001515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156143af576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600082825401925050819055505b6144003330858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16615859909392919063ffffffff16565b614417838260000154614f2290919063ffffffff16565b816000018190555061445164e8d4a5100061444384600201548460000154614e5290919063ffffffff16565b614ed890919063ffffffff16565b81600101819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b6145ae614e4a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461466e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156146f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615df96026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60006001828161481157fe5b061461481c57600080fd5b60001515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461487957600080fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060001515600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461492e57600080fd5b600081141561493c57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149a76140c0565b156149b157600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e7b94b836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015614a2857600080fd5b505af1158015614a3c573d6000803e3d6000fd5b505050506040513d6020811015614a5257600080fd5b81019080805190602001909291905050509050426010819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614aa557600080fd5b60001515600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514614b0257600080fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb8360006040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015614d2c57600080fd5b505af1158015614d40573d6000803e3d6000fd5b505050506040513d6020811015614d5657600080fd5b8101908080519060200190929190505050506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600080831415614e655760009050614ed2565b6000828402905082848281614e7657fe5b0414614ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e1f6021913960400191505060405180910390fd5b809150505b92915050565b6000614f1a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061591a565b905092915050565b600080828401905083811015614fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000614fec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506159e0565b905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156150e457600080fd5b505af11580156150f8573d6000803e3d6000fd5b505050506040513d602081101561510e57600080fd5b810190808051906020019092919050505090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639511500d336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156151ae57600080fd5b505af11580156151c2573d6000803e3d6000fd5b505050506040513d60208110156151d857600080fd5b810190808051906020019092919050505090506000811415615262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b8183111561533057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb82846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156152e757600080fd5b505af11580156152fb573d6000803e3d6000fd5b505050506040513d602081101561531157600080fd5b81019080805190602001909291905050505060006004819055506153fa565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb82856040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b1580156153ad57600080fd5b505af11580156153c1573d6000803e3d6000fd5b505050506040513d60208110156153d757600080fd5b810190808051906020019092919050505050826004600082825403925050819055505b505050565b61549c8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615aa0565b505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561559157600080fd5b505af11580156155a5573d6000803e3d6000fd5b505050506040513d60208110156155bb57600080fd5b810190808051906020019092919050505090506000831415615645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f41646472657373206e6f7420616464656420746f20636f6e74726163742e000081525060200191505060405180910390fd5b60045482106156bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525060200191505060405180910390fd5b8082111561578a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb84836040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561574157600080fd5b505af1158015615755573d6000803e3d6000fd5b505050506040513d602081101561576b57600080fd5b8101908080519060200190929190505050506000600481905550615854565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332ab0acb84846040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b15801561580757600080fd5b505af115801561581b573d6000803e3d6000fd5b505050506040513d602081101561583157600080fd5b810190808051906020019092919050505050816004600082825403925050819055505b505050565b615914846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615aa0565b50505050565b600080831182906159c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561598b578082015181840152602081019050615970565b50505050905090810190601f1680156159b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816159d257fe5b049050809150509392505050565b6000838311158290615a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615a52578082015181840152602081019050615a37565b50505050905090810190601f168015615a7f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060615b02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615b8f9092919063ffffffff16565b9050600081511115615b8a57808060200190516020811015615b2357600080fd5b8101908080519060200190929190505050615b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615e40602a913960400191505060405180910390fd5b5b505050565b6060615b9e8484600085615ba7565b90509392505050565b6060615bb285615dad565b615c24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615c745780518252602082019150602081019050602083039250615c51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615cd6576040519150601f19603f3d011682016040523d82523d6000602084013e615cdb565b606091505b50915091508115615cf0578092505050615da5565b600081511115615d035780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615d6a578082015181840152602081019050615d4f565b50505050905090810190601f168015615d975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015615def57506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122039866b76e18023a3d891bff8c4d7d42bf6ee099aab9ff13fc860fd9fc9de4f3064736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000606366d1e3e675a3e60846a78e8abcbd773cd1a3000000000000000000000000d5a7d515fb8b3337acb9b053743e0bc18f50c8550000000000000000000000000000000000000000000000000000000000fe502a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _devAddr (address): 0x606366D1e3E675a3E60846a78e8aBcbd773cD1A3
Arg [1] : _v2Address (address): 0xd5a7d515Fb8B3337ACb9B053743E0BC18f50C855
Arg [2] : _buccPerBlock (uint256): 16666666
Arg [3] : _startBlock (uint256): 1
Arg [4] : _bonusEndBlock (uint256): 1
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000606366d1e3e675a3e60846a78e8abcbd773cd1a3
Arg [1] : 000000000000000000000000d5a7d515fb8b3337acb9b053743e0bc18f50c855
Arg [2] : 0000000000000000000000000000000000000000000000000000000000fe502a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
28735:18051:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46486:5;46453:38;;:17;:29;46471:10;46453:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;46445:47;;;;;;46535:4;46503:17;:29;46521:10;46503:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;46571:1;46558:9;:14;;46550:23;;;;;;46592:6;:18;46599:10;46592:18;;;;;;;;;;;;;;;;;;;;;;;;;46584:27;;;;;;46630:19;:17;:19::i;:::-;46622:28;;;;;;46673:9;46661:8;;:21;;;;;;;;;;;46718:9;46693;:21;46703:10;46693:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;46770:5;46738:17;:29;46756:10;46738:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;28735:18051;;;;;45446:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35379:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32236:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30490:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43484:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;43355:90;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33172:891;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;44503:931;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36621:997;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34338:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44091:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32908:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32796:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45619:775;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34506:659;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37689:490;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40437:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34146:180;;;;;;;;;;;;;:::i;:::-;;35177:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41022:203;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31230:531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27038:148;;;;;;;;;;;;;:::i;:::-;;43126:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40256:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26396:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31839:379;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;43625:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40553:459;;;;;;;;;;;;;:::i;:::-;;41271:857;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38191:886;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32477:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44210:238;;;;;;;;;;;;;:::i;:::-;;42140:178;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35555:1004;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43915:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32680:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27341:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43231:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;42330:784;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43747:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41022:203;41072:4;41130:3;41120:7;41093:12;:24;41106:10;41093:24;;;;;;;;;;;;;;;;:34;:40;41089:129;;;41157:4;41150:11;;;;41089:129;41201:5;41194:12;;41022:203;;:::o;45446:161::-;45529:7;45556:27;:43;45584:14;45556:43;;;;;;;;;;;;;;;;45549:50;;45446:161;;;:::o;35379:164::-;35436:7;35456:21;35480:8;:14;35489:4;35480:14;;;;;;;;;;;:26;35495:10;35480:26;;;;;;;;;;;;;;;35456:50;;35524:4;:11;;;35517:18;;;35379:164;;;:::o;32236:223::-;32326:4;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32365:12:::1;;;;;;;;;;;32351:26;;:10;:26;;;32343:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32428:23;32410:15;:41;;;;32236:223:::0;;;:::o;30490:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;43484:102::-;43530:7;43557:9;:21;43567:10;43557:21;;;;;;;;;;;;;;;;43550:28;;43484:102;:::o;43355:90::-;43402:7;43429:8;;43422:15;;43355:90;:::o;33172:891::-;33230:7;33250:21;33274:8;33283:4;33274:14;;;;;;;;;;;;;;;;;;33250:38;;33299:21;33323:8;:14;33332:4;33323:14;;;;;;;;;;;:26;33338:10;33323:26;;;;;;;;;;;;;;;33299:50;;33387:31;33421:4;:28;;;33387:62;;33484:16;33503:4;:12;;;;;;;;;;;;:22;;;33534:4;33503:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33484:56;;33570:4;:20;;;33555:12;:35;:52;;;;;33606:1;33594:8;:13;;33555:52;33551:416;;;33717:18;33738:49;33752:4;:20;;;33774:12;33738:13;:49::i;:::-;33717:70;;33802:18;33823:28;33838:12;;33823:10;:14;;:28;;;;:::i;:::-;33802:49;;33892:63;33920:34;33945:8;33920:20;33935:4;33920:10;:14;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;33892:23;:27;;:63;;;;:::i;:::-;33866:89;;33551:416;;;33984:71;34039:4;:15;;;33984:50;34029:4;33984:40;34000:23;33984:4;:11;;;:15;;:40;;;;:::i;:::-;:44;;:50;;;;:::i;:::-;:54;;:71;;;;:::i;:::-;33977:78;;;;;;33172:891;;;:::o;44503:931::-;44642:5;44609:38;;:17;:29;44627:10;44609:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;44601:47;;;;;;44691:4;44659:17;:29;44677:10;44659:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;44728:22;:38;44751:14;44728:38;;;;;;;;;;;;;;;:55;44767:3;:15;44771:10;44767:15;;;;;;;;;;;;;;;;;;;;;;;;;44728:55;;;;;;;;;;;;;;;;44714:10;:69;;44706:78;;;;;;44816:1;44803:10;:14;44795:23;;;;;;44914:10;44855:22;:38;44878:14;44855:38;;;;;;;;;;;;;;;:55;44894:3;:15;44898:10;44894:15;;;;;;;;;;;;;;;;;;;;;;;;;44855:55;;;;;;;;;;;;;;;;:69;;;;;;;;;;;44982:10;44935:27;:43;44963:14;44935:43;;;;;;;;;;;;;;;;:57;;;;;;;;;;;45042:9;;;;;;;;;;;45020:12;;:32;;;;;;;;;;;;;;;;;;45099:14;45063:21;;:51;;;;;;;;;;;;;;;;;;45134:9;:7;:9::i;:::-;45133:10;45125:19;;;;;;45155:14;45172:12;;;;;;;;;;;:21;;;45194:7;45172:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45155:47;;45223:3;45213:7;:13;;;;45256:21;;;;;;;;;;;:30;;;45287:6;45295:10;45256:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45317:12;;;;;;;;;;;:28;;;45346:7;45355:1;45317:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45421:5;45389:17;:29;45407:10;45389:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;44503:931;;;;:::o;36621:997::-;36718:5;36694:29;;:8;:20;36703:10;36694:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;36686:38;;;;;;36758:4;36735:8;:20;36744:10;36735:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;36773:21;36797:8;36806:4;36797:14;;;;;;;;;;;;;;;;;;36773:38;;36822:21;36846:8;:14;36855:4;36846:14;;;;;;;;;;;:26;36861:10;36846:26;;;;;;;;;;;;;;;36822:50;;36906:5;36891:4;:11;;;:20;;36883:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36998:5;36974:9;:21;36984:10;36974:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;37034:1;37014:16;;:21;;;;;;;;;;;37046:16;37057:4;37046:10;:16::i;:::-;37114:22;37139:76;37199:4;:15;;;37139:55;37189:4;37139:45;37155:4;:28;;;37139:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;:59;;:76;;;;:::i;:::-;37114:101;;37252:14;;37234;:32;;37226:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37299:34;37318:14;37299:18;:34::i;:::-;37362:14;37344;;:32;;;;;;;;;;;37401:22;37417:5;37401:4;:11;;;:15;;:22;;;;:::i;:::-;37387:4;:11;;:36;;;;37452:55;37502:4;37452:45;37468:4;:28;;;37452:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;37434:4;:15;;:73;;;;37518:53;37552:10;37565:5;37518:4;:12;;;;;;;;;;;;:25;;;;:53;;;;;:::i;:::-;37605:5;37582:8;:20;37591:10;37582:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;36621:997;;;;;:::o;34338:92::-;34377:4;34401:9;:21;34411:10;34401:21;;;;;;;;;;;;;;;;;;;;;;;;;34394:28;;34338:92;:::o;44091:107::-;44140:7;44167:11;:23;44179:10;44167:23;;;;;;;;;;;;;;;;;;;;;;;;;44160:30;;44091:107;:::o;32908:207::-;32991:9;;;;;;;;;;;32969:12;;:32;;;;;;;;;;;;;;;;;;33012:12;;;;;;;;;;;:25;;;33038:10;33058:4;33065:6;33012:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33101:6;33083:14;;:24;;;;;;;;;;;32908:207;:::o;32796:100::-;32847:7;32874:14;;32867:21;;32796:100;:::o;45619:775::-;45757:5;45724:38;;:17;:29;45742:10;45724:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;45716:47;;;;;;45806:4;45774:17;:29;45792:10;45774:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;45829:19;:17;:19::i;:::-;45821:28;;;;;;45868:6;:18;45875:10;45868:18;;;;;;;;;;;;;;;;;;;;;;;;;45860:27;;;;;;45924:9;;;;;;;;;;;45906:27;;:14;:27;;;;45898:36;;;;;;45967:9;;;;;;;;;;;45945:12;;:32;;;;;;;;;;;;;;;;;;46024:14;45988:21;;:51;;;;;;;;;;;;;;;;;;46071:21;;;;;;;;;;;:34;;;46106:10;46126:4;46133:19;46071:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46242:19;46188:22;:38;46211:14;46188:38;;;;;;;;;;;;;;;:50;46227:10;46188:50;;;;;;;;;;;;;;;;:73;;;;;;;;;;;46319:19;46272:27;:43;46300:14;46272:43;;;;;;;;;;;;;;;;:66;;;;;;;;;;;46381:5;46349:17;:29;46367:10;46349:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;45619:775;;:::o;34506:659::-;34558:21;34582:8;34591:4;34582:14;;;;;;;;;;;;;;;;;;34558:38;;34627:4;:20;;;34611:12;:36;34607:75;;34664:7;;;34607:75;34692:16;34711:4;:12;;;;;;;;;;;;:22;;;34742:4;34711:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34692:56;;34775:1;34763:8;:13;34759:102;;;34816:12;34793:4;:20;;:35;;;;34843:7;;;;34759:102;34871:18;34892:49;34906:4;:20;;;34928:12;34892:13;:49::i;:::-;34871:70;;34952:18;34973:28;34988:12;;34973:10;:14;;:28;;;;:::i;:::-;34952:49;;35043:68;35076:34;35101:8;35076:20;35091:4;35076:10;:14;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;35043:4;:28;;;:32;;:68;;;;:::i;:::-;35012:4;:28;;:99;;;;35145:12;35122:4;:20;;:35;;;;34506:659;;;;;;:::o;37689:490::-;37780:5;37756:29;;:8;:20;37765:10;37756:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;37748:38;;;;;;37820:4;37797:8;:20;37806:10;37797:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;37835:21;37859:8;37868:4;37859:14;;;;;;;;;;;;;;;;;;37835:38;;37884:21;37908:8;:14;37917:4;37908:14;;;;;;;;;;;:26;37923:10;37908:26;;;;;;;;;;;;;;;37884:50;;37945:59;37979:10;37992:4;:11;;;37945:4;:12;;;;;;;;;;;;:25;;;;:59;;;;;:::i;:::-;38029:1;38015:4;:11;;:15;;;;38059:1;38041:4;:15;;:19;;;;38095:5;38071:9;:21;38081:10;38071:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;38131:1;38111:16;;:21;;;;;;;;;;;38166:5;38143:8;:20;38152:10;38143:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;37689:490;;;:::o;40437:104::-;40491:7;40518:15;;40511:22;;40437:104;:::o;34146:180::-;34191:14;34208:8;:15;;;;34191:32;;34239:11;34234:85;34262:6;34256:3;:12;34234:85;;;34292:15;34303:3;34292:10;:15::i;:::-;34270:5;;;;;34234:85;;;;34146:180;:::o;35177:190::-;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35279:12:::1;;;;;;;;;;;35265:26;;:10;:26;;;35257:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;35339:20;35324:12;:35;;;;35177:190:::0;:::o;31230:531::-;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31328:12:::1;;;;;;;;;;;31314:26;;:10;:26;;;31306:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;31377:11;31373:61;;;31405:17;:15;:17::i;:::-;31373:61;31444:23;31485:10;;31470:12;:25;:53;;31513:10;;31470:53;;;31498:12;31470:53;31444:79;;31597:8;31611:141;;;;;;;;31644:8;31611:141;;;;;;31684:15;31611:141;;;;31739:1;31611:141;;::::0;31597:156:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26678:1;31230:531:::0;;:::o;27038:148::-;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27145:1:::1;27108:40;;27129:6;::::0;::::1;;;;;;;;27108:40;;;;;;;;;;;;27176:1;27159:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;27038:148::o:0;43126:93::-;43169:4;43193:6;:18;43200:10;43193:18;;;;;;;;;;;;;;;;;;;;;;;;;43186:25;;43126:93;:::o;40256:167::-;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40342:12:::1;;;;;;;;;;;40328:26;;:10;:26;;;40320:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;40402:13;40387:12;;:28;;;;;;;;;;;;;;;;;;40256:167:::0;:::o;26396:79::-;26434:7;26461:6;;;;;;;;;;;26454:13;;26396:79;:::o;31839:379::-;31911:7;31942:13;;31935:3;:20;31931:280;;31979:14;31987:5;31979:3;:7;;:14;;;;:::i;:::-;31972:21;;;;31931:280;32024:13;;32015:5;:22;32011:200;;32061:14;32069:5;32061:3;:7;;:14;;;;:::i;:::-;32054:21;;;;32011:200;32115:84;32162:22;32170:13;;32162:3;:7;;:22;;;;:::i;:::-;32115:24;32133:5;32115:13;;:17;;:24;;;;:::i;:::-;:28;;:84;;;;:::i;:::-;32108:91;;31839:379;;;;;:::o;43625:110::-;43674:7;43701:9;:26;43711:3;:15;43715:10;43711:15;;;;;;;;;;;;;;;;;;;;;;;;;43701:26;;;;;;;;;;;;;;;;43694:33;;43625:110;:::o;40553:459::-;40639:5;40606:38;;:17;:29;40624:10;40606:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;40598:47;;;;;;40688:4;40656:17;:29;40674:10;40656:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;40725:9;;;;;;;;;;;40703:12;;:32;;;;;;;;;;;;;;;;;;40754:12;;;;;;;;;;;:25;;;40780:10;40800:4;40807:15;;40754:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40746:78;;;;;;40865:5;40843:27;;:6;:18;40850:10;40843:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;40835:36;;;;;;40900:15;;40882:14;;:33;;;;;;;;;;;40953:3;40926:12;:24;40939:10;40926:24;;;;;;;;;;;;;;;:30;;;;40999:5;40967:17;:29;40985:10;40967:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;40553:459::o;41271:857::-;41392:5;41359:38;;:17;:29;41377:10;41359:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;41351:47;;;;;;41441:4;41409:17;:29;41427:10;41409:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;41510:9;:26;41520:3;:15;41524:10;41520:15;;;;;;;;;;;;;;;;;;;;;;;;;41510:26;;;;;;;;;;;;;;;;41496:10;:40;;41488:49;;;;;;41569:1;41556:10;:14;41548:23;;;;;;41619:1;41590:9;:26;41600:3;:15;41604:10;41600:15;;;;;;;;;;;;;;;;;;;;;;;;;41590:26;;;;;;;;;;;;;;;;:30;41582:39;;;;;;41644:10;41632:8;;:22;;;;;;;;;;;41695:10;41665:9;:26;41675:3;:15;41679:10;41675:15;;;;;;;;;;;;;;;;;;;;;;;;;41665:26;;;;;;;;;;;;;;;;:40;;;;;;;;;;;41738:9;;;;;;;;;;;41716:12;;:32;;;;;;;;;;;;;;;;;;41768:9;:7;:9::i;:::-;41767:10;41759:19;;;;;;41789:22;41822:12;;;;;;;;;;;:21;;;41844:7;41822:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41789:64;;41882:42;41872:52;;:6;:52;;;;41864:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41980:3;41970:7;:13;;;;41994:6;:15;;:27;42010:10;41994:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42032:12;;;;;;;;;;;:28;;;42061:7;42070:1;42032:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42115:5;42083:17;:29;42101:10;42083:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;41271:857;;;:::o;38191:886::-;38296:5;38272:29;;:8;:20;38281:10;38272:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;38264:38;;;;;;38336:4;38313:8;:20;38322:10;38313:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38351:21;38375:8;38384:4;38375:14;;;;;;;;;;;;;;;;;;38351:38;;38400:21;38424:8;:14;38433:4;38424:14;;;;;;;;;;;:26;38439:10;38424:26;;;;;;;;;;;;;;;38400:50;;38461:16;38472:4;38461:10;:16::i;:::-;38550:1;38536:4;:11;;;:15;38532:281;;;38568:22;38593:76;38653:4;:15;;;38593:55;38643:4;38593:45;38609:4;:28;;;38593:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;:59;;:76;;;;:::i;:::-;38568:101;;38710:14;;38692;:32;;38684:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38761:40;38777:7;38786:14;38761:15;:40::i;:::-;38532:281;;38975:55;39025:4;38975:45;38991:4;:28;;;38975:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;38957:4;:15;;:73;;;;39064:5;39041:8;:20;39050:10;39041:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38191:886;;;;:::o;32477:191::-;32551:4;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32590:12:::1;;;;;;;;;;;32576:26;;:10;:26;;;32568:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32647:13;32635:9;;:25;;;;;;;;;;;;;;;;;;32477:191:::0;;;:::o;44210:238::-;44282:6;:18;44289:10;44282:18;;;;;;;;;;;;;;;;44275:26;;;;;;;;;;;44319:3;:28;44323:11;:23;44335:10;44323:23;;;;;;;;;;;;;;;;;;;;;;;;;44319:28;;;;;;;;;;;;;;;;44312:36;;;;;;;;;;;44366:6;:31;44373:11;:23;44385:10;44373:23;;;;;;;;;;;;;;;;;;;;;;;;;44366:31;;;;;;;;;;;;;;;;44359:39;;;;;;;;;;;44416:11;:23;44428:10;44416:23;;;;;;;;;;;;;;;;44409:31;;;;;;;;;;;44210:238::o;42140:178::-;42180:4;42217:9;42211:3;:15;42201:7;;:25;42197:114;;;42250:4;42243:11;;;;42197:114;42294:5;42287:12;;42140:178;;:::o;35555:1004::-;35651:5;35627:29;;:8;:20;35636:10;35627:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;35619:38;;;;;;35691:4;35668:8;:20;35677:10;35668:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;35706:21;35730:8;35739:4;35730:14;;;;;;;;;;;;;;;;;;35706:38;;35755:21;35779:8;:14;35788:4;35779:14;;;;;;;;;;;:26;35794:10;35779:26;;;;;;;;;;;;;;;35755:50;;35816:16;35827:4;35816:10;:16::i;:::-;35905:1;35891:4;:11;;;:15;35887:275;;;35923:22;35948:76;36008:4;:15;;;35948:55;35998:4;35948:45;35964:4;:28;;;35948:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;:59;;:76;;;;:::i;:::-;35923:101;;36065:14;;36047;:32;;36039:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36116:34;36135:14;36116:18;:34::i;:::-;35887:275;;36201:5;36176:30;;:9;:21;36186:10;36176:21;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;36172:127;;;36247:4;36223:9;:21;36233:10;36223:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;36286:1;36266:16;;:21;;;;;;;;;;;36172:127;36309:72;36347:10;36368:4;36375:5;36309:4;:12;;;;;;;;;;;;:29;;;;:72;;;;;;:::i;:::-;36406:22;36422:5;36406:4;:11;;;:15;;:22;;;;:::i;:::-;36392:4;:11;;:36;;;;36457:55;36507:4;36457:45;36473:4;:28;;;36457:4;:11;;;:15;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;36439:4;:15;;:73;;;;36546:5;36523:8;:20;36532:10;36523:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;35555:1004;;;;:::o;43915:164::-;43989:7;44016:22;:38;44039:14;44016:38;;;;;;;;;;;;;;;:55;44055:3;:15;44059:10;44055:15;;;;;;;;;;;;;;;;;;;;;;;;;44016:55;;;;;;;;;;;;;;;;44009:62;;43915:164;;;:::o;32680:104::-;32733:7;32760:16;;32753:23;;32680:104;:::o;27341:244::-;26618:12;:10;:12::i;:::-;26608:22;;:6;;;;;;;;;;:22;;;26600:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27450:1:::1;27430:22;;:8;:22;;;;27422:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27540:8;27511:38;;27532:6;::::0;::::1;;;;;;;;27511:38;;;;;;;;;;;;27569:8;27560:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;27341:244:::0;:::o;43231:88::-;43269:4;43293:6;:18;43300:10;43293:18;;;;;;;;;;;;;;;;;;;;;;;;;43286:25;;43231:88;:::o;42330:784::-;42404:1;42399;42389:7;:11;;;;;;:16;42381:25;;;;;;42458:5;42425:38;;:17;:29;42443:10;42425:29;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;42417:47;;;;;;42507:4;42475:17;:29;42493:10;42475:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;42552:5;42530:27;;:6;:18;42537:10;42530:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;42522:36;;;;;;42588:1;42577:7;:12;;42569:21;;;;;;42623:9;;;;;;;;;;;42601:12;;:32;;;;;;;;;;;;;;;;;;42653:9;:7;:9::i;:::-;42652:10;42644:19;;;;;;42674:14;42691:12;;;;;;;;;;;:21;;;42713:7;42691:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42674:47;;42742:3;42732:7;:13;;;;42774:10;42764:20;;:6;:20;;;;42756:29;;;;;;42855:5;42837:23;;:6;:14;42844:6;42837:14;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;42829:32;;;;;;42889:4;42872:6;:14;42879:6;42872:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;42930:6;42904:11;:23;42916:10;42904:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;42961:10;42947:3;:11;42951:6;42947:11;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;43003:4;42982:6;:18;42989:10;42982:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;43018:12;;;;;;;;;;;:28;;;43047:7;43056:1;43018:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43101:5;43069:17;:29;43087:10;43069:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;42330:784;;:::o;43747:156::-;43818:7;43845:22;:38;43868:14;43845:38;;;;;;;;;;;;;;;:50;43884:10;43845:50;;;;;;;;;;;;;;;;43838:57;;43747:156;;;:::o;25455:106::-;25508:15;25543:10;25536:17;;25455:106;:::o;7165:471::-;7223:7;7473:1;7468;:6;7464:47;;;7498:1;7491:8;;;;7464:47;7523:9;7539:1;7535;:5;7523:17;;7568:1;7563;7559;:5;;;;;;:10;7551:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7627:1;7620:8;;;7165:471;;;;;:::o;7646:132::-;7704:7;7731:39;7735:1;7738;7731:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7724:46;;7646:132;;;;:::o;6626:181::-;6684:7;6704:9;6720:1;6716;:5;6704:17;;6745:1;6740;:6;;6732:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6798:1;6791:8;;;6626:181;;;;:::o;6819:136::-;6877:7;6904:43;6908:1;6911;6904:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6897:50;;6819:136;;;;:::o;39683:565::-;39770:9;;;;;;;;;;;39748:12;;:32;;;;;;;;;;;;;;;;;;39791:15;39809:12;;;;;;;;;;;:22;;;39840:4;39809:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39791:55;;39857:15;39875:12;;;;;;;;;;;:29;;;39905:10;39875:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39857:59;;39946:1;39935:7;:12;;39927:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40007:7;39997;:17;39993:248;;;40031:12;;;;;;;;;;;:28;;;40060:7;40069;40031:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40109:1;40092:14;:18;;;;39993:248;;;40143:12;;;;;;;;;;;:28;;;40172:7;40181;40143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40222:7;40204:14;;:25;;;;;;;;;;;39993:248;39683:565;;;:::o;13839:177::-;13922:86;13942:5;13972:23;;;13997:2;14001:5;13949:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13922:19;:86::i;:::-;13839:177;;;:::o;39095:574::-;39196:9;;;;;;;;;;;39174:12;;:32;;;;;;;;;;;;;;;;;;39217:15;39235:12;;;;;;;;;;;:22;;;39266:4;39235:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39217:55;;39302:1;39291:7;:12;;39283:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39367:14;;39357:7;:24;39349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39428:7;39418;:17;39414:248;;;39452:12;;;;;;;;;;;:28;;;39481:7;39490;39452:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39530:1;39513:14;:18;;;;39414:248;;;39564:12;;;;;;;;;;;:28;;;39593:7;39602;39564:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39643:7;39625:14;;:25;;;;;;;;;;;39414:248;39095:574;;;:::o;14024:205::-;14125:96;14145:5;14175:27;;;14204:4;14210:2;14214:5;14152:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14125:19;:96::i;:::-;14024:205;;;;:::o;7786:278::-;7872:7;7904:1;7900;:5;7907:12;7892:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7931:9;7947:1;7943;:5;;;;;;7931:17;;8055:1;8048:8;;;7786:278;;;;;:::o;6965:192::-;7051:7;7084:1;7079;:6;;7087:12;7071:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7111:9;7127:1;7123;:5;7111:17;;7148:1;7141:8;;;6965:192;;;;;:::o;15883:761::-;16307:23;16333:69;16361:4;16333:69;;;;;;;;;;;;;;;;;16341:5;16333:27;;;;:69;;;;;:::i;:::-;16307:95;;16437:1;16417:10;:17;:21;16413:224;;;16559:10;16548:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16540:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16413:224;15883:761;;;:::o;11289:196::-;11392:12;11424:53;11447:6;11455:4;11461:1;11464:12;11424:22;:53::i;:::-;11417:60;;11289:196;;;;;:::o;12666:979::-;12796:12;12829:18;12840:6;12829:10;:18::i;:::-;12821:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12955:12;12969:23;12996:6;:11;;13016:8;13027:4;12996:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12954:78;;;;13047:7;13043:595;;;13078:10;13071:17;;;;;;13043:595;13212:1;13192:10;:17;:21;13188:439;;;13455:10;13449:17;13516:15;13503:10;13499:2;13495:19;13488:44;13403:148;13598:12;13591:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12666:979;;;;;;;:::o;9099:619::-;9159:4;9421:16;9448:19;9470:66;9448:88;;;;9639:7;9627:20;9615:32;;9679:11;9667:8;:23;;:42;;;;;9706:3;9694:15;;:8;:15;;9667:42;9659:51;;;;9099:619;;;:::o
Swarm Source
ipfs://39866b76e18023a3d891bff8c4d7d42bf6ee099aab9ff13fc860fd9fc9de4f30
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,709.25 | 0.218 | $590.68 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.