Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
Staking3Months
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-03-01 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _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 require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract Staking3Months is Ownable, Pausable { using SafeMath for uint256; using SafeERC20 for IERC20; //mapping(address => uint256) private _stakes; struct Deposit{ uint256 depositedAt; uint256 depositedQty; bool isWithdrawn; } mapping(address => Deposit[]) public deposits; uint256 public depositTime; //= 180 days; uint256 public stakedTotal; address public rewardAddress; bool private depositEnabled = true; IERC20 immutable token; event Staked( address indexed token, address indexed staker_, uint256 requestedAmount_ //uint256 stakedAmount_ ); event PaidOut( address indexed token, address indexed staker_, uint256 amount_, uint256 reward_ ); event DepositToggled(bool value); event DepositTimeSet(uint256 value); event RewardPercSet(uint256 value); event RewardAddressChanged( address indexed sender, address indexed rewardAddress ); modifier _after(uint256 eventTime) { require( block.timestamp >= eventTime, "Error: bad timing for the request" ); _; } modifier _before(uint256 eventTime) { require( block.timestamp < eventTime, "Error: bad timing for the request" ); _; } constructor(address _token, address _rewardAddress, uint256 _depositTime) { require(_rewardAddress != address(0), "_rewardAddress should not be 0"); token = IERC20(_token); rewardAddress = _rewardAddress; depositTime = _depositTime; } function getDeposits(address staker) public view returns (Deposit[] memory){ Deposit[] memory d = deposits[staker]; return (d); } function withdraw(uint256 id) external{ require(deposits[msg.sender].length > id, "Deposit does not exist"); //make sure that such a deposit exists require( deposits[msg.sender][id].depositedQty > 0, "There is nothing to withdraw" ); require( block.timestamp >= deposits[msg.sender][id].depositedAt.add(depositTime), "Staking period not passed yet" ); require( deposits[msg.sender][id].isWithdrawn == false ); _withdrawAfterClose(msg.sender, id); } //efficiently compute compound function _compound(uint principle, uint n) private pure returns (uint){ for(uint i=0; i<n; i++){ principle = principle.mul(1000382983).div(1000000000); //15% APY } return principle; } function _withdrawAfterClose(address from, uint256 id) private { uint256 amount = deposits[from][id].depositedQty; uint256 depositedTime = deposits[from][id].depositedAt; uint256 daysSinceDeposit = (block.timestamp.sub(depositedTime)).div(86400); //get the floored number of days since the deposit uint256 reward = _compound(amount, daysSinceDeposit); stakedTotal = stakedTotal.sub(amount); token.safeTransferFrom(rewardAddress, from, reward); //transfer Reward //token.safeTransfer(from, amount); //transfer initial stake emit PaidOut(address(token), from, amount, reward); deposits[from][id].isWithdrawn = true; } function stake(uint256 amount) external whenNotPaused { require(depositEnabled, "Deposits not enabled"); address staker = msg.sender; stakedTotal = stakedTotal.add(amount); deposits[staker].push( Deposit( block.timestamp, amount, false ) ); uint256 allowance = token.allowance(staker, address(this)); require(allowance >= amount, "Check the token allowance"); token.safeTransferFrom(staker, rewardAddress, amount); emit Staked(address(token), staker, amount); } function toggleDeposit() external onlyOwner { depositEnabled = !depositEnabled; emit DepositToggled(depositEnabled); } function changeRewardAddress(address _address) external onlyOwner { require(_address != address(0), "Address should not be 0"); rewardAddress = _address; emit RewardAddressChanged(msg.sender, _address); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } }
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_rewardAddress","type":"address"},{"internalType":"uint256","name":"_depositTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"DepositTimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"DepositToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"staker_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward_","type":"uint256"}],"name":"PaidOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"rewardAddress","type":"address"}],"name":"RewardAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardPercSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"staker_","type":"address"},{"indexed":false,"internalType":"uint256","name":"requestedAmount_","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"changeRewardAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"depositedAt","type":"uint256"},{"internalType":"uint256","name":"depositedQty","type":"uint256"},{"internalType":"bool","name":"isWithdrawn","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getDeposits","outputs":[{"components":[{"internalType":"uint256","name":"depositedAt","type":"uint256"},{"internalType":"uint256","name":"depositedQty","type":"uint256"},{"internalType":"bool","name":"isWithdrawn","type":"bool"}],"internalType":"struct Staking3Months.Deposit[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040526001600460146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620028de380380620028de833981810160405281019062000052919062000281565b62000072620000666200018760201b60201c565b6200018f60201b60201c565b60008060146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620000ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000f69062000319565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505050620003be565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008151905062000264816200038a565b92915050565b6000815190506200027b81620003a4565b92915050565b6000806000606084860312156200029757600080fd5b6000620002a78682870162000253565b9350506020620002ba8682870162000253565b9250506040620002cd868287016200026a565b9150509250925092565b6000620002e6601e836200033b565b91507f5f726577617264416464726573732073686f756c64206e6f74206265203000006000830152602082019050919050565b600060208201905081810360008301526200033481620002d7565b9050919050565b600082825260208201905092915050565b6000620003598262000360565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000395816200034c565b8114620003a157600080fd5b50565b620003af8162000380565b8114620003bb57600080fd5b50565b60805160601c6124e5620003f960003960008181610c2c01528181610d4401528181610da201528181611114015261117201526124e56000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638cf57cb911610097578063a694fc3a11610066578063a694fc3a14610202578063d66692a71461021e578063d6d681771461023c578063f2fde38b1461026e576100f5565b80638cf57cb91461018c5780638da5cb5b146101aa578063921eeb4b146101c857806394f649dd146101d2576100f5565b80635c975abb116100d35780635c975abb1461013c5780635e8a626e1461015a578063715018a6146101785780638456cb5914610182576100f5565b80632e1a7d4d146100fa5780633f4ba83a146101165780634d2aab9a14610120575b600080fd5b610114600480360381019061010f919061193a565b61028a565b005b61011e61056b565b005b61013a600480360381019061013591906118ac565b6105f1565b005b61014461077b565b6040516101519190611f5f565b60405180910390f35b610162610791565b60405161016f919061213c565b60405180910390f35b610180610797565b005b61018a61081f565b005b6101946108a5565b6040516101a19190611ec2565b60405180910390f35b6101b26108cb565b6040516101bf9190611ec2565b60405180910390f35b6101d06108f4565b005b6101ec60048036038101906101e791906118ac565b6109e2565b6040516101f99190611f3d565b60405180910390f35b61021c6004803603810190610217919061193a565b610ab5565b005b610226610e13565b604051610233919061213c565b60405180910390f35b610256600480360381019061025191906118d5565b610e19565b60405161026593929190612180565b60405180910390f35b610288600480360381019061028391906118ac565b610e6d565b005b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501161030e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610305906120bc565b60405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610387577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160010154116103d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d09061203c565b60405180910390fd5b610476600254600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110610456577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160000154610f6590919063ffffffff16565b4210156104b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104af9061211c565b60405180910390fd5b60001515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160020160009054906101000a900460ff1615151461055e57600080fd5b6105683382610f7b565b50565b610573611288565b73ffffffffffffffffffffffffffffffffffffffff166105916108cb565b73ffffffffffffffffffffffffffffffffffffffff16146105e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105de9061205c565b60405180910390fd5b6105ef611290565b565b6105f9611288565b73ffffffffffffffffffffffffffffffffffffffff166106176108cb565b73ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106649061205c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d49061207c565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3542dfb6760ed73fb514869334e00088f665fd0a25aa371c0ae9641c3630442360405160405180910390a350565b60008060149054906101000a900460ff16905090565b60025481565b61079f611288565b73ffffffffffffffffffffffffffffffffffffffff166107bd6108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a9061205c565b60405180910390fd5b61081d6000611331565b565b610827611288565b73ffffffffffffffffffffffffffffffffffffffff166108456108cb565b73ffffffffffffffffffffffffffffffffffffffff161461089b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108929061205c565b60405180910390fd5b6108a36113f5565b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108fc611288565b73ffffffffffffffffffffffffffffffffffffffff1661091a6108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109679061205c565b60405180910390fd5b600460149054906101000a900460ff1615600460146101000a81548160ff0219169083151502179055507f07973c902463fc7173fe16814256e705e470764fc73f741555034b78ed8ac87c600460149054906101000a900460ff166040516109d89190611f5f565b60405180910390a1565b60606000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610aa6578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff16151515158152505081526020019060010190610a45565b50505050905080915050919050565b610abd61077b565b15610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490611ffc565b60405180910390fd5b600460149054906101000a900460ff16610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b439061209c565b60405180910390fd5b6000339050610b6682600354610f6590919063ffffffff16565b600381905550600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405280428152602001848152602001600015158152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e83306040518363ffffffff1660e01b8152600401610c85929190611edd565b60206040518083038186803b158015610c9d57600080fd5b505afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd59190611963565b905082811015610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d119061201c565b60405180910390fd5b610d8982600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611498909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd785604051610e06919061213c565b60405180910390a3505050565b60035481565b60016020528160005260406000208181548110610e3557600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b610e75611288565b73ffffffffffffffffffffffffffffffffffffffff16610e936108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee09061205c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090611fbc565b60405180910390fd5b610f6281611331565b50565b60008183610f739190612222565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610ff4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600302016001015490506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611081577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160000154905060006110bf620151806110b1844261152190919063ffffffff16565b61153790919063ffffffff16565b905060006110cd848361154d565b90506110e48460035461152190919063ffffffff16565b600381905550611159600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611498909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f85ab59351da11b79336de7647172267c33bf533ee87d9d292441c2672177159b86846040516111d8929190612157565b60405180910390a360018060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110611258577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160020160006101000a81548160ff021916908315150217905550505050505050565b600033905090565b61129861077b565b6112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90611f9c565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61131a611288565b6040516113279190611ec2565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6113fd61077b565b1561143d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143490611ffc565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611481611288565b60405161148e9190611ec2565b60405180910390a1565b61151b846323b872dd60e01b8585856040516024016114b993929190611f06565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506115a9565b50505050565b6000818361152f9190612303565b905092915050565b600081836115459190612278565b905092915050565b600080600090505b8281101561159f5761158a633b9aca0061157c633ba0a2078761167090919063ffffffff16565b61153790919063ffffffff16565b93508080611597906123b2565b915050611555565b5082905092915050565b600061160b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116869092919063ffffffff16565b905060008151111561166b578080602001905181019061162b9190611911565b61166a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611661906120fc565b60405180910390fd5b5b505050565b6000818361167e91906122a9565b905092915050565b6060611695848460008561169e565b90509392505050565b6060824710156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90611fdc565b60405180910390fd5b6116ec856117b2565b61172b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611722906120dc565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117549190611eab565b60006040518083038185875af1925050503d8060008114611791576040519150601f19603f3d011682016040523d82523d6000602084013e611796565b606091505b50915091506117a68282866117f1565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c51119050919050565b6060831561180157829050611851565b6000835111156118145782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118489190611f7a565b60405180910390fd5b9392505050565b6000813590506118678161246a565b92915050565b60008151905061187c81612481565b92915050565b60008135905061189181612498565b92915050565b6000815190506118a681612498565b92915050565b6000602082840312156118be57600080fd5b60006118cc84828501611858565b91505092915050565b600080604083850312156118e857600080fd5b60006118f685828601611858565b925050602061190785828601611882565b9150509250929050565b60006020828403121561192357600080fd5b60006119318482850161186d565b91505092915050565b60006020828403121561194c57600080fd5b600061195a84828501611882565b91505092915050565b60006020828403121561197557600080fd5b600061198384828501611897565b91505092915050565b60006119988383611e4b565b60608301905092915050565b6119ad81612337565b82525050565b60006119be826121c7565b6119c881856121f5565b93506119d3836121b7565b8060005b83811015611a045781516119eb888261198c565b97506119f6836121e8565b9250506001810190506119d7565b5085935050505092915050565b611a1a81612349565b82525050565b611a2981612349565b82525050565b6000611a3a826121d2565b611a448185612206565b9350611a5481856020860161237f565b80840191505092915050565b6000611a6b826121dd565b611a758185612211565b9350611a8581856020860161237f565b611a8e81612459565b840191505092915050565b6000611aa6601483612211565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000611ae6602683612211565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b4c602683612211565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb2601083612211565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000611bf2601983612211565b91507f436865636b2074686520746f6b656e20616c6c6f77616e6365000000000000006000830152602082019050919050565b6000611c32601c83612211565b91507f5468657265206973206e6f7468696e6720746f207769746864726177000000006000830152602082019050919050565b6000611c72602083612211565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611cb2601783612211565b91507f416464726573732073686f756c64206e6f7420626520300000000000000000006000830152602082019050919050565b6000611cf2601483612211565b91507f4465706f73697473206e6f7420656e61626c65640000000000000000000000006000830152602082019050919050565b6000611d32601683612211565b91507f4465706f73697420646f6573206e6f74206578697374000000000000000000006000830152602082019050919050565b6000611d72601d83612211565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000611db2602a83612211565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e18601d83612211565b91507f5374616b696e6720706572696f64206e6f7420706173736564207965740000006000830152602082019050919050565b606082016000820151611e616000850182611e8d565b506020820151611e746020850182611e8d565b506040820151611e876040850182611a11565b50505050565b611e9681612375565b82525050565b611ea581612375565b82525050565b6000611eb78284611a2f565b915081905092915050565b6000602082019050611ed760008301846119a4565b92915050565b6000604082019050611ef260008301856119a4565b611eff60208301846119a4565b9392505050565b6000606082019050611f1b60008301866119a4565b611f2860208301856119a4565b611f356040830184611e9c565b949350505050565b60006020820190508181036000830152611f5781846119b3565b905092915050565b6000602082019050611f746000830184611a20565b92915050565b60006020820190508181036000830152611f948184611a60565b905092915050565b60006020820190508181036000830152611fb581611a99565b9050919050565b60006020820190508181036000830152611fd581611ad9565b9050919050565b60006020820190508181036000830152611ff581611b3f565b9050919050565b6000602082019050818103600083015261201581611ba5565b9050919050565b6000602082019050818103600083015261203581611be5565b9050919050565b6000602082019050818103600083015261205581611c25565b9050919050565b6000602082019050818103600083015261207581611c65565b9050919050565b6000602082019050818103600083015261209581611ca5565b9050919050565b600060208201905081810360008301526120b581611ce5565b9050919050565b600060208201905081810360008301526120d581611d25565b9050919050565b600060208201905081810360008301526120f581611d65565b9050919050565b6000602082019050818103600083015261211581611da5565b9050919050565b6000602082019050818103600083015261213581611e0b565b9050919050565b60006020820190506121516000830184611e9c565b92915050565b600060408201905061216c6000830185611e9c565b6121796020830184611e9c565b9392505050565b60006060820190506121956000830186611e9c565b6121a26020830185611e9c565b6121af6040830184611a20565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061222d82612375565b915061223883612375565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561226d5761226c6123fb565b5b828201905092915050565b600061228382612375565b915061228e83612375565b92508261229e5761229d61242a565b5b828204905092915050565b60006122b482612375565b91506122bf83612375565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122f8576122f76123fb565b5b828202905092915050565b600061230e82612375565b915061231983612375565b92508282101561232c5761232b6123fb565b5b828203905092915050565b600061234282612355565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561239d578082015181840152602081019050612382565b838111156123ac576000848401525b50505050565b60006123bd82612375565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123f0576123ef6123fb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61247381612337565b811461247e57600080fd5b50565b61248a81612349565b811461249557600080fd5b50565b6124a181612375565b81146124ac57600080fd5b5056fea2646970667358221220b3497710acbc1e26f05b2545b6d08c317396b1fa224438cc98c55344a00b6bac64736f6c63430008000033000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0000000000000000000000000000000000000000000000000000000000076a700
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0000000000000000000000000000000000000000000000000000000000076a700
-----Decoded View---------------
Arg [0] : _token (address): 0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664
Arg [1] : _rewardAddress (address): 0x041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
Arg [2] : _depositTime (uint256): 7776000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664
Arg [1] : 000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
Arg [2] : 000000000000000000000000000000000000000000000000000000000076a700
Deployed ByteCode Sourcemap
24697:4662:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26593:592;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29288:67;;;:::i;:::-;;28971:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16995:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25041:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15644:103;;;:::i;:::-;;29215:63;;;:::i;:::-;;25121:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14993:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28822:141;;;:::i;:::-;;26433:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28182:632;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25088:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24987:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15902:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26593:592;26680:2;26650:8;:20;26659:10;26650:20;;;;;;;;;;;;;;;:27;;;;:32;26642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26821:1;26781:8;:20;26790:10;26781:20;;;;;;;;;;;;;;;26802:2;26781:24;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;:41;26759:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;26930:53;26971:11;;26930:8;:20;26939:10;26930:20;;;;;;;;;;;;;;;26951:2;26930:24;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;:40;;:53;;;;:::i;:::-;26911:15;:72;;26889:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;27113:5;27073:45;;:8;:20;27082:10;27073:20;;;;;;;;;;;;;;;27094:2;27073:24;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;:45;;;27051:78;;;;;;27142:35;27162:10;27174:2;27142:19;:35::i;:::-;26593:592;:::o;29288:67::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29336:10:::1;:8;:10::i;:::-;29288:67::o:0;28971:236::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29076:1:::1;29056:22;;:8;:22;;;;29048:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29133:8;29117:13;;:24;;;;;;;;;;;;;;;;;;29190:8;29157:42;;29178:10;29157:42;;;;;;;;;;;;28971:236:::0;:::o;16995:86::-;17042:4;17066:7;;;;;;;;;;;17059:14;;16995:86;:::o;25041:26::-;;;;:::o;15644:103::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15709:30:::1;15736:1;15709:18;:30::i;:::-;15644:103::o:0;29215:63::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29261:8:::1;:6;:8::i;:::-;29215:63::o:0;25121:28::-;;;;;;;;;;;;;:::o;14993:87::-;15039:7;15066:6;;;;;;;;;;;15059:13;;14993:87;:::o;28822:141::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28895:14:::1;;;;;;;;;;;28894:15;28877:14;;:32;;;;;;;;;;;;;;;;;;28925:30;28940:14;;;;;;;;;;;28925:30;;;;;;:::i;:::-;;;;;;;;28822:141::o:0;26433:152::-;26491:16;26519:18;26540:8;:16;26549:6;26540:16;;;;;;;;;;;;;;;26519:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26575:1;26567:10;;;26433:152;;;:::o;28182:632::-;17321:8;:6;:8::i;:::-;17320:9;17312:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28255:14:::1;;;;;;;;;;;28247:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;28305:14;28322:10;28305:27;;28359:23;28375:6;28359:11;;:15;;:23;;;;:::i;:::-;28345:11;:37;;;;28395:8;:16;28404:6;28395:16;;;;;;;;;;;;;;;28431:105;;;;;;;;28457:15;28431:105;;;;28491:6;28431:105;;;;28516:5;28431:105;;;;::::0;28395:152:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28560:17;28580:5;:15;;;28596:6;28612:4;28580:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28560:58;;28650:6;28637:9;:19;;28629:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28699:53;28722:6;28730:13;;;;;;;;;;;28745:6;28699:5;:22;;;;:53;;;;;;:::i;:::-;28791:6;28768:38;;28783:5;28768:38;;;28799:6;28768:38;;;;;;:::i;:::-;;;;;;;;17361:1;;28182:632:::0;:::o;25088:26::-;;;;:::o;24987:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15902:201::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16011:1:::1;15991:22;;:8;:22;;;;15983:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16067:28;16086:8;16067:18;:28::i;:::-;15902:201:::0;:::o;20532:98::-;20590:7;20621:1;20617;:5;;;;:::i;:::-;20610:12;;20532:98;;;;:::o;27467:707::-;27541:14;27558:8;:14;27567:4;27558:14;;;;;;;;;;;;;;;27573:2;27558:18;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;27541:48;;27600:21;27624:8;:14;27633:4;27624:14;;;;;;;;;;;;;;;27639:2;27624:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;27600:54;;27667:24;27694:47;27735:5;27695:34;27715:13;27695:15;:19;;:34;;;;:::i;:::-;27694:40;;:47;;;;:::i;:::-;27667:74;;27803:14;27820:35;27830:6;27838:16;27820:9;:35::i;:::-;27803:52;;27882:23;27898:6;27882:11;;:15;;:23;;;;:::i;:::-;27868:11;:37;;;;27916:51;27939:13;;;;;;;;;;;27954:4;27960:6;27916:5;:22;;;;:51;;;;;;:::i;:::-;28097:4;28073:45;;28089:5;28073:45;;;28103:6;28111;28073:45;;;;;;;:::i;:::-;;;;;;;;28162:4;28129:8;:14;28138:4;28129:14;;;;;;;;;;;;;;;28144:2;28129:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;:37;;;;;;;;;;;;;;;;;;27467:707;;;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;18054:120::-;17598:8;:6;:8::i;:::-;17590:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18123:5:::1;18113:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;18144:22;18153:12;:10;:12::i;:::-;18144:22;;;;;;:::i;:::-;;;;;;;;18054:120::o:0;16263:191::-;16337:16;16356:6;;;;;;;;;;;16337:25;;16382:8;16373:6;;:17;;;;;;;;;;;;;;;;;;16437:8;16406:40;;16427:8;16406:40;;;;;;;;;;;;16263:191;;:::o;17795:118::-;17321:8;:6;:8::i;:::-;17320:9;17312:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17865:4:::1;17855:7;;:14;;;;;;;;;;;;;;;;;;17885:20;17892:12;:10;:12::i;:::-;17885:20;;;;;;:::i;:::-;;;;;;;;17795:118::o:0;11504:248::-;11648:96;11668:5;11698:27;;;11727:4;11733:2;11737:5;11675:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11648:19;:96::i;:::-;11504:248;;;;:::o;20913:98::-;20971:7;21002:1;20998;:5;;;;:::i;:::-;20991:12;;20913:98;;;;:::o;21669:::-;21727:7;21758:1;21754;:5;;;;:::i;:::-;21747:12;;21669:98;;;;:::o;27229:230::-;27294:4;27314:6;27321:1;27314:8;;27310:113;27326:1;27324;:3;27310:113;;;27360:41;27390:10;27360:25;27374:10;27360:9;:13;;:25;;;;:::i;:::-;:29;;:41;;;;:::i;:::-;27348:53;;27329:3;;;;;:::i;:::-;;;;27310:113;;;;27442:9;27435:16;;27229:230;;;;:::o;13858:716::-;14282:23;14308:69;14336:4;14308:69;;;;;;;;;;;;;;;;;14316:5;14308:27;;;;:69;;;;;:::i;:::-;14282:95;;14412:1;14392:10;:17;:21;14388:179;;;14489:10;14478:30;;;;;;;;;;;;:::i;:::-;14470:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14388:179;13858:716;;;:::o;21270:98::-;21328:7;21359:1;21355;:5;;;;:::i;:::-;21348:12;;21270:98;;;;:::o;6701:229::-;6838:12;6870:52;6892:6;6900:4;6906:1;6909:12;6870:21;:52::i;:::-;6863:59;;6701:229;;;;;:::o;7821:510::-;7991:12;8049:5;8024:21;:30;;8016:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8116:18;8127:6;8116:10;:18::i;:::-;8108:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8182:12;8196:23;8223:6;:11;;8242:5;8249:4;8223:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8181:73;;;;8272:51;8289:7;8298:10;8310:12;8272:16;:51::i;:::-;8265:58;;;;7821:510;;;;;;:::o;3956:326::-;4016:4;4273:1;4251:7;:12;;;;;;;;;;;;;;;;;;;;;;;;;:19;:23;4244:30;;3956:326;;;:::o;10507:712::-;10657:12;10686:7;10682:530;;;10717:10;10710:17;;;;10682:530;10851:1;10831:10;:17;:21;10827:374;;;11029:10;11023:17;11090:15;11077:10;11073:2;11069:19;11062:44;10977:148;11172:12;11165:20;;;;;;;;;;;:::i;:::-;;;;;;;;10507:712;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:143::-;;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;503:80;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:407::-;;;982:2;970:9;961:7;957:23;953:32;950:2;;;998:1;995;988:12;950:2;1041:1;1066:53;1111:7;1102:6;1091:9;1087:22;1066:53;:::i;:::-;1056:63;;1012:117;1168:2;1194:53;1239:7;1230:6;1219:9;1215:22;1194:53;:::i;:::-;1184:63;;1139:118;940:324;;;;;:::o;1270:278::-;;1386:2;1374:9;1365:7;1361:23;1357:32;1354:2;;;1402:1;1399;1392:12;1354:2;1445:1;1470:61;1523:7;1514:6;1503:9;1499:22;1470:61;:::i;:::-;1460:71;;1416:125;1344:204;;;;:::o;1554:262::-;;1662:2;1650:9;1641:7;1637:23;1633:32;1630:2;;;1678:1;1675;1668:12;1630:2;1721:1;1746:53;1791:7;1782:6;1771:9;1767:22;1746:53;:::i;:::-;1736:63;;1692:117;1620:196;;;;:::o;1822:284::-;;1941:2;1929:9;1920:7;1916:23;1912:32;1909:2;;;1957:1;1954;1947:12;1909:2;2000:1;2025:64;2081:7;2072:6;2061:9;2057:22;2025:64;:::i;:::-;2015:74;;1971:128;1899:207;;;;:::o;2112:279::-;;2252:96;2344:3;2336:6;2252:96;:::i;:::-;2380:4;2375:3;2371:14;2357:28;;2242:149;;;;:::o;2397:118::-;2484:24;2502:5;2484:24;:::i;:::-;2479:3;2472:37;2462:53;;:::o;2595:932::-;;2793:79;2866:5;2793:79;:::i;:::-;2888:111;2992:6;2987:3;2888:111;:::i;:::-;2881:118;;3023:81;3098:5;3023:81;:::i;:::-;3127:7;3158:1;3143:359;3168:6;3165:1;3162:13;3143:359;;;3244:6;3238:13;3271:113;3380:3;3365:13;3271:113;:::i;:::-;3264:120;;3407:85;3485:6;3407:85;:::i;:::-;3397:95;;3203:299;3190:1;3187;3183:9;3178:14;;3143:359;;;3147:14;3518:3;3511:10;;2769:758;;;;;;;:::o;3533:99::-;3604:21;3619:5;3604:21;:::i;:::-;3599:3;3592:34;3582:50;;:::o;3638:109::-;3719:21;3734:5;3719:21;:::i;:::-;3714:3;3707:34;3697:50;;:::o;3753:373::-;;3885:38;3917:5;3885:38;:::i;:::-;3939:88;4020:6;4015:3;3939:88;:::i;:::-;3932:95;;4036:52;4081:6;4076:3;4069:4;4062:5;4058:16;4036:52;:::i;:::-;4113:6;4108:3;4104:16;4097:23;;3861:265;;;;;:::o;4132:364::-;;4248:39;4281:5;4248:39;:::i;:::-;4303:71;4367:6;4362:3;4303:71;:::i;:::-;4296:78;;4383:52;4428:6;4423:3;4416:4;4409:5;4405:16;4383:52;:::i;:::-;4460:29;4482:6;4460:29;:::i;:::-;4455:3;4451:39;4444:46;;4224:272;;;;;:::o;4502:318::-;;4665:67;4729:2;4724:3;4665:67;:::i;:::-;4658:74;;4762:22;4758:1;4753:3;4749:11;4742:43;4811:2;4806:3;4802:12;4795:19;;4648:172;;;:::o;4826:370::-;;4989:67;5053:2;5048:3;4989:67;:::i;:::-;4982:74;;5086:34;5082:1;5077:3;5073:11;5066:55;5152:8;5147:2;5142:3;5138:12;5131:30;5187:2;5182:3;5178:12;5171:19;;4972:224;;;:::o;5202:370::-;;5365:67;5429:2;5424:3;5365:67;:::i;:::-;5358:74;;5462:34;5458:1;5453:3;5449:11;5442:55;5528:8;5523:2;5518:3;5514:12;5507:30;5563:2;5558:3;5554:12;5547:19;;5348:224;;;:::o;5578:314::-;;5741:67;5805:2;5800:3;5741:67;:::i;:::-;5734:74;;5838:18;5834:1;5829:3;5825:11;5818:39;5883:2;5878:3;5874:12;5867:19;;5724:168;;;:::o;5898:323::-;;6061:67;6125:2;6120:3;6061:67;:::i;:::-;6054:74;;6158:27;6154:1;6149:3;6145:11;6138:48;6212:2;6207:3;6203:12;6196:19;;6044:177;;;:::o;6227:326::-;;6390:67;6454:2;6449:3;6390:67;:::i;:::-;6383:74;;6487:30;6483:1;6478:3;6474:11;6467:51;6544:2;6539:3;6535:12;6528:19;;6373:180;;;:::o;6559:330::-;;6722:67;6786:2;6781:3;6722:67;:::i;:::-;6715:74;;6819:34;6815:1;6810:3;6806:11;6799:55;6880:2;6875:3;6871:12;6864:19;;6705:184;;;:::o;6895:321::-;;7058:67;7122:2;7117:3;7058:67;:::i;:::-;7051:74;;7155:25;7151:1;7146:3;7142:11;7135:46;7207:2;7202:3;7198:12;7191:19;;7041:175;;;:::o;7222:318::-;;7385:67;7449:2;7444:3;7385:67;:::i;:::-;7378:74;;7482:22;7478:1;7473:3;7469:11;7462:43;7531:2;7526:3;7522:12;7515:19;;7368:172;;;:::o;7546:320::-;;7709:67;7773:2;7768:3;7709:67;:::i;:::-;7702:74;;7806:24;7802:1;7797:3;7793:11;7786:45;7857:2;7852:3;7848:12;7841:19;;7692:174;;;:::o;7872:327::-;;8035:67;8099:2;8094:3;8035:67;:::i;:::-;8028:74;;8132:31;8128:1;8123:3;8119:11;8112:52;8190:2;8185:3;8181:12;8174:19;;8018:181;;;:::o;8205:374::-;;8368:67;8432:2;8427:3;8368:67;:::i;:::-;8361:74;;8465:34;8461:1;8456:3;8452:11;8445:55;8531:12;8526:2;8521:3;8517:12;8510:34;8570:2;8565:3;8561:12;8554:19;;8351:228;;;:::o;8585:327::-;;8748:67;8812:2;8807:3;8748:67;:::i;:::-;8741:74;;8845:31;8841:1;8836:3;8832:11;8825:52;8903:2;8898:3;8894:12;8887:19;;8731:181;;;:::o;8988:687::-;9125:4;9120:3;9116:14;9219:4;9212:5;9208:16;9202:23;9238:63;9295:4;9290:3;9286:14;9272:12;9238:63;:::i;:::-;9140:171;9401:4;9394:5;9390:16;9384:23;9420:63;9477:4;9472:3;9468:14;9454:12;9420:63;:::i;:::-;9321:172;9582:4;9575:5;9571:16;9565:23;9601:57;9652:4;9647:3;9643:14;9629:12;9601:57;:::i;:::-;9503:165;9094:581;;;:::o;9681:108::-;9758:24;9776:5;9758:24;:::i;:::-;9753:3;9746:37;9736:53;;:::o;9795:118::-;9882:24;9900:5;9882:24;:::i;:::-;9877:3;9870:37;9860:53;;:::o;9919:271::-;;10071:93;10160:3;10151:6;10071:93;:::i;:::-;10064:100;;10181:3;10174:10;;10053:137;;;;:::o;10196:222::-;;10327:2;10316:9;10312:18;10304:26;;10340:71;10408:1;10397:9;10393:17;10384:6;10340:71;:::i;:::-;10294:124;;;;:::o;10424:332::-;;10583:2;10572:9;10568:18;10560:26;;10596:71;10664:1;10653:9;10649:17;10640:6;10596:71;:::i;:::-;10677:72;10745:2;10734:9;10730:18;10721:6;10677:72;:::i;:::-;10550:206;;;;;:::o;10762:442::-;;10949:2;10938:9;10934:18;10926:26;;10962:71;11030:1;11019:9;11015:17;11006:6;10962:71;:::i;:::-;11043:72;11111:2;11100:9;11096:18;11087:6;11043:72;:::i;:::-;11125;11193:2;11182:9;11178:18;11169:6;11125:72;:::i;:::-;10916:288;;;;;;:::o;11210:473::-;;11441:2;11430:9;11426:18;11418:26;;11490:9;11484:4;11480:20;11476:1;11465:9;11461:17;11454:47;11518:158;11671:4;11662:6;11518:158;:::i;:::-;11510:166;;11408:275;;;;:::o;11689:210::-;;11814:2;11803:9;11799:18;11791:26;;11827:65;11889:1;11878:9;11874:17;11865:6;11827:65;:::i;:::-;11781:118;;;;:::o;11905:313::-;;12056:2;12045:9;12041:18;12033:26;;12105:9;12099:4;12095:20;12091:1;12080:9;12076:17;12069:47;12133:78;12206:4;12197:6;12133:78;:::i;:::-;12125:86;;12023:195;;;;:::o;12224:419::-;;12428:2;12417:9;12413:18;12405:26;;12477:9;12471:4;12467:20;12463:1;12452:9;12448:17;12441:47;12505:131;12631:4;12505:131;:::i;:::-;12497:139;;12395:248;;;:::o;12649:419::-;;12853:2;12842:9;12838:18;12830:26;;12902:9;12896:4;12892:20;12888:1;12877:9;12873:17;12866:47;12930:131;13056:4;12930:131;:::i;:::-;12922:139;;12820:248;;;:::o;13074:419::-;;13278:2;13267:9;13263:18;13255:26;;13327:9;13321:4;13317:20;13313:1;13302:9;13298:17;13291:47;13355:131;13481:4;13355:131;:::i;:::-;13347:139;;13245:248;;;:::o;13499:419::-;;13703:2;13692:9;13688:18;13680:26;;13752:9;13746:4;13742:20;13738:1;13727:9;13723:17;13716:47;13780:131;13906:4;13780:131;:::i;:::-;13772:139;;13670:248;;;:::o;13924:419::-;;14128:2;14117:9;14113:18;14105:26;;14177:9;14171:4;14167:20;14163:1;14152:9;14148:17;14141:47;14205:131;14331:4;14205:131;:::i;:::-;14197:139;;14095:248;;;:::o;14349:419::-;;14553:2;14542:9;14538:18;14530:26;;14602:9;14596:4;14592:20;14588:1;14577:9;14573:17;14566:47;14630:131;14756:4;14630:131;:::i;:::-;14622:139;;14520:248;;;:::o;14774:419::-;;14978:2;14967:9;14963:18;14955:26;;15027:9;15021:4;15017:20;15013:1;15002:9;14998:17;14991:47;15055:131;15181:4;15055:131;:::i;:::-;15047:139;;14945:248;;;:::o;15199:419::-;;15403:2;15392:9;15388:18;15380:26;;15452:9;15446:4;15442:20;15438:1;15427:9;15423:17;15416:47;15480:131;15606:4;15480:131;:::i;:::-;15472:139;;15370:248;;;:::o;15624:419::-;;15828:2;15817:9;15813:18;15805:26;;15877:9;15871:4;15867:20;15863:1;15852:9;15848:17;15841:47;15905:131;16031:4;15905:131;:::i;:::-;15897:139;;15795:248;;;:::o;16049:419::-;;16253:2;16242:9;16238:18;16230:26;;16302:9;16296:4;16292:20;16288:1;16277:9;16273:17;16266:47;16330:131;16456:4;16330:131;:::i;:::-;16322:139;;16220:248;;;:::o;16474:419::-;;16678:2;16667:9;16663:18;16655:26;;16727:9;16721:4;16717:20;16713:1;16702:9;16698:17;16691:47;16755:131;16881:4;16755:131;:::i;:::-;16747:139;;16645:248;;;:::o;16899:419::-;;17103:2;17092:9;17088:18;17080:26;;17152:9;17146:4;17142:20;17138:1;17127:9;17123:17;17116:47;17180:131;17306:4;17180:131;:::i;:::-;17172:139;;17070:248;;;:::o;17324:419::-;;17528:2;17517:9;17513:18;17505:26;;17577:9;17571:4;17567:20;17563:1;17552:9;17548:17;17541:47;17605:131;17731:4;17605:131;:::i;:::-;17597:139;;17495:248;;;:::o;17749:222::-;;17880:2;17869:9;17865:18;17857:26;;17893:71;17961:1;17950:9;17946:17;17937:6;17893:71;:::i;:::-;17847:124;;;;:::o;17977:332::-;;18136:2;18125:9;18121:18;18113:26;;18149:71;18217:1;18206:9;18202:17;18193:6;18149:71;:::i;:::-;18230:72;18298:2;18287:9;18283:18;18274:6;18230:72;:::i;:::-;18103:206;;;;;:::o;18315:430::-;;18496:2;18485:9;18481:18;18473:26;;18509:71;18577:1;18566:9;18562:17;18553:6;18509:71;:::i;:::-;18590:72;18658:2;18647:9;18643:18;18634:6;18590:72;:::i;:::-;18672:66;18734:2;18723:9;18719:18;18710:6;18672:66;:::i;:::-;18463:282;;;;;;:::o;18751:157::-;;18866:3;18858:11;;18896:4;18891:3;18887:14;18879:22;;18848:60;;;:::o;18914:139::-;;19040:5;19034:12;19024:22;;19013:40;;;:::o;19059:98::-;;19144:5;19138:12;19128:22;;19117:40;;;:::o;19163:99::-;;19249:5;19243:12;19233:22;;19222:40;;;:::o;19268:138::-;;19395:4;19390:3;19386:14;19378:22;;19368:38;;;:::o;19412:209::-;;19570:6;19565:3;19558:19;19610:4;19605:3;19601:14;19586:29;;19548:73;;;;:::o;19627:147::-;;19765:3;19750:18;;19740:34;;;;:::o;19780:169::-;;19898:6;19893:3;19886:19;19938:4;19933:3;19929:14;19914:29;;19876:73;;;;:::o;19955:305::-;;20014:20;20032:1;20014:20;:::i;:::-;20009:25;;20048:20;20066:1;20048:20;:::i;:::-;20043:25;;20202:1;20134:66;20130:74;20127:1;20124:81;20121:2;;;20208:18;;:::i;:::-;20121:2;20252:1;20249;20245:9;20238:16;;19999:261;;;;:::o;20266:185::-;;20323:20;20341:1;20323:20;:::i;:::-;20318:25;;20357:20;20375:1;20357:20;:::i;:::-;20352:25;;20396:1;20386:2;;20401:18;;:::i;:::-;20386:2;20443:1;20440;20436:9;20431:14;;20308:143;;;;:::o;20457:348::-;;20520:20;20538:1;20520:20;:::i;:::-;20515:25;;20554:20;20572:1;20554:20;:::i;:::-;20549:25;;20742:1;20674:66;20670:74;20667:1;20664:81;20659:1;20652:9;20645:17;20641:105;20638:2;;;20749:18;;:::i;:::-;20638:2;20797:1;20794;20790:9;20779:20;;20505:300;;;;:::o;20811:191::-;;20871:20;20889:1;20871:20;:::i;:::-;20866:25;;20905:20;20923:1;20905:20;:::i;:::-;20900:25;;20944:1;20941;20938:8;20935:2;;;20949:18;;:::i;:::-;20935:2;20994:1;20991;20987:9;20979:17;;20856:146;;;;:::o;21008:96::-;;21074:24;21092:5;21074:24;:::i;:::-;21063:35;;21053:51;;;:::o;21110:90::-;;21187:5;21180:13;21173:21;21162:32;;21152:48;;;:::o;21206:126::-;;21283:42;21276:5;21272:54;21261:65;;21251:81;;;:::o;21338:77::-;;21404:5;21393:16;;21383:32;;;:::o;21421:307::-;21489:1;21499:113;21513:6;21510:1;21507:13;21499:113;;;21598:1;21593:3;21589:11;21583:18;21579:1;21574:3;21570:11;21563:39;21535:2;21532:1;21528:10;21523:15;;21499:113;;;21630:6;21627:1;21624:13;21621:2;;;21710:1;21701:6;21696:3;21692:16;21685:27;21621:2;21470:258;;;;:::o;21734:233::-;;21796:24;21814:5;21796:24;:::i;:::-;21787:33;;21842:66;21835:5;21832:77;21829:2;;;21912:18;;:::i;:::-;21829:2;21959:1;21952:5;21948:13;21941:20;;21777:190;;;:::o;21973:180::-;22021:77;22018:1;22011:88;22118:4;22115:1;22108:15;22142:4;22139:1;22132:15;22159:180;22207:77;22204:1;22197:88;22304:4;22301:1;22294:15;22328:4;22325:1;22318:15;22345:102;;22437:2;22433:7;22428:2;22421:5;22417:14;22413:28;22403:38;;22393:54;;;:::o;22453:122::-;22526:24;22544:5;22526:24;:::i;:::-;22519:5;22516:35;22506:2;;22565:1;22562;22555:12;22506:2;22496:79;:::o;22581:116::-;22651:21;22666:5;22651:21;:::i;:::-;22644:5;22641:32;22631:2;;22687:1;22684;22677:12;22631:2;22621:76;:::o;22703:122::-;22776:24;22794:5;22776:24;:::i;:::-;22769:5;22766:35;22756:2;;22815:1;22812;22805:12;22756:2;22746:79;:::o
Swarm Source
ipfs://b3497710acbc1e26f05b2545b6d08c317396b1fa224438cc98c55344a00b6bac
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.