Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
RegularStaking
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 RegularStaking 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 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 StakingCapSet(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) { require(_rewardAddress != address(0), "_rewardAddress should not be 0"); token = IERC20(_token); rewardAddress = _rewardAddress; } 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( 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(1000261158).div(1000000000); //10% 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 getAllowance(address staker) external view returns (uint256){ return token.allowance(staker, address(this)); } 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"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"value","type":"uint256"}],"name":"StakingCapSet","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":[{"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":"getAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 RegularStaking.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
60a06040526001600360146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040516200280e3803806200280e833981810160405281019062000052919062000262565b62000072620000666200017f60201b60201c565b6200018760201b60201c565b60008060146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000f690620002e5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000366565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200025c816200034c565b92915050565b600080604083850312156200027657600080fd5b600062000286858286016200024b565b925050602062000299858286016200024b565b9150509250929050565b6000620002b2601e8362000307565b91507f5f726577617264416464726573732073686f756c64206e6f74206265203000006000830152602082019050919050565b600060208201905081810360008301526200030081620002a3565b9050919050565b600082825260208201905092915050565b600062000325826200032c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003578162000318565b81146200036357600080fd5b50565b60805160601c612466620003a860003960008181610b5901528181610c7101528181610ccf01528181610d9e015281816110df015261113d01526124666000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063d66692a711610066578063d66692a714610200578063d6d681771461021e578063eb5a662e14610250578063f2fde38b14610280576100f5565b80638da5cb5b1461018c578063921eeb4b146101aa57806394f649dd146101b4578063a694fc3a146101e4576100f5565b80635c975abb116100d35780635c975abb1461013c578063715018a61461015a5780638456cb59146101645780638cf57cb91461016e576100f5565b80632e1a7d4d146100fa5780633f4ba83a146101165780634d2aab9a14610120575b600080fd5b610114600480360381019061010f919061191b565b61029c565b005b61011e61049e565b005b61013a6004803603810190610135919061188d565b610524565b005b6101446106ae565b6040516101519190611f00565b60405180910390f35b6101626106c4565b005b61016c61074c565b005b6101766107d2565b6040516101839190611e63565b60405180910390f35b6101946107f8565b6040516101a19190611e63565b60405180910390f35b6101b2610821565b005b6101ce60048036038101906101c9919061188d565b61090f565b6040516101db9190611ede565b60405180910390f35b6101fe60048036038101906101f9919061191b565b6109e2565b005b610208610d40565b60405161021591906120bd565b60405180910390f35b610238600480360381019061023391906118b6565b610d46565b60405161024793929190612101565b60405180910390f35b61026a6004803603810190610265919061188d565b610d9a565b60405161027791906120bd565b60405180910390f35b61029a6004803603810190610295919061188d565b610e4e565b005b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103179061205d565b60405180910390fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610399577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160010154116103eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e290611fdd565b60405180910390fd5b60001515600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610466577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160020160009054906101000a900460ff1615151461049157600080fd5b61049b3382610f46565b50565b6104a6611253565b73ffffffffffffffffffffffffffffffffffffffff166104c46107f8565b73ffffffffffffffffffffffffffffffffffffffff161461051a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051190611ffd565b60405180910390fd5b61052261125b565b565b61052c611253565b73ffffffffffffffffffffffffffffffffffffffff1661054a6107f8565b73ffffffffffffffffffffffffffffffffffffffff16146105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059790611ffd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106079061201d565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3542dfb6760ed73fb514869334e00088f665fd0a25aa371c0ae9641c3630442360405160405180910390a350565b60008060149054906101000a900460ff16905090565b6106cc611253565b73ffffffffffffffffffffffffffffffffffffffff166106ea6107f8565b73ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790611ffd565b60405180910390fd5b61074a60006112fc565b565b610754611253565b73ffffffffffffffffffffffffffffffffffffffff166107726107f8565b73ffffffffffffffffffffffffffffffffffffffff16146107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90611ffd565b60405180910390fd5b6107d06113c0565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610829611253565b73ffffffffffffffffffffffffffffffffffffffff166108476107f8565b73ffffffffffffffffffffffffffffffffffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490611ffd565b60405180910390fd5b600360149054906101000a900460ff1615600360146101000a81548160ff0219169083151502179055507f07973c902463fc7173fe16814256e705e470764fc73f741555034b78ed8ac87c600360149054906101000a900460ff166040516109059190611f00565b60405180910390a1565b60606000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156109d3578382906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff16151515158152505081526020019060010190610972565b50505050905080915050919050565b6109ea6106ae565b15610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190611f9d565b60405180910390fd5b600360149054906101000a900460ff16610a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a709061203d565b60405180910390fd5b6000339050610a938260025461146390919063ffffffff16565b600281905550600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405280428152602001848152602001600015158152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e83306040518363ffffffff1660e01b8152600401610bb2929190611e7e565b60206040518083038186803b158015610bca57600080fd5b505afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c029190611944565b905082811015610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90611fbd565b60405180910390fd5b610cb682600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611479909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd785604051610d3391906120bd565b60405180910390a3505050565b60025481565b60016020528160005260406000208181548110610d6257600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e83306040518363ffffffff1660e01b8152600401610df7929190611e7e565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190611944565b9050919050565b610e56611253565b73ffffffffffffffffffffffffffffffffffffffff16610e746107f8565b73ffffffffffffffffffffffffffffffffffffffff1614610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190611ffd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611f5d565b60405180910390fd5b610f43816112fc565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610fbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600302016001015490506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061104c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060030201600001549050600061108a6201518061107c844261150290919063ffffffff16565b61151890919063ffffffff16565b90506000611098848361152e565b90506110af8460025461150290919063ffffffff16565b600281905550611124600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611479909392919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f85ab59351da11b79336de7647172267c33bf533ee87d9d292441c2672177159b86846040516111a39291906120d8565b60405180910390a360018060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110611223577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906003020160020160006101000a81548160ff021916908315150217905550505050505050565b600033905090565b6112636106ae565b6112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990611f3d565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6112e5611253565b6040516112f29190611e63565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6113c86106ae565b15611408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ff90611f9d565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861144c611253565b6040516114599190611e63565b60405180910390a1565b6000818361147191906121a3565b905092915050565b6114fc846323b872dd60e01b85858560405160240161149a93929190611ea7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061158a565b50505050565b600081836115109190612284565b905092915050565b6000818361152691906121f9565b905092915050565b600080600090505b828110156115805761156b633b9aca0061155d633b9ec6268761165190919063ffffffff16565b61151890919063ffffffff16565b9350808061157890612333565b915050611536565b5082905092915050565b60006115ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116679092919063ffffffff16565b905060008151111561164c578080602001905181019061160c91906118f2565b61164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061209d565b60405180910390fd5b5b505050565b6000818361165f919061222a565b905092915050565b6060611676848460008561167f565b90509392505050565b6060824710156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90611f7d565b60405180910390fd5b6116cd85611793565b61170c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117039061207d565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516117359190611e4c565b60006040518083038185875af1925050503d8060008114611772576040519150601f19603f3d011682016040523d82523d6000602084013e611777565b606091505b50915091506117878282866117d2565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c51119050919050565b606083156117e257829050611832565b6000835111156117f55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118299190611f1b565b60405180910390fd5b9392505050565b600081359050611848816123eb565b92915050565b60008151905061185d81612402565b92915050565b60008135905061187281612419565b92915050565b60008151905061188781612419565b92915050565b60006020828403121561189f57600080fd5b60006118ad84828501611839565b91505092915050565b600080604083850312156118c957600080fd5b60006118d785828601611839565b92505060206118e885828601611863565b9150509250929050565b60006020828403121561190457600080fd5b60006119128482850161184e565b91505092915050565b60006020828403121561192d57600080fd5b600061193b84828501611863565b91505092915050565b60006020828403121561195657600080fd5b600061196484828501611878565b91505092915050565b60006119798383611dec565b60608301905092915050565b61198e816122b8565b82525050565b600061199f82612148565b6119a98185612176565b93506119b483612138565b8060005b838110156119e55781516119cc888261196d565b97506119d783612169565b9250506001810190506119b8565b5085935050505092915050565b6119fb816122ca565b82525050565b611a0a816122ca565b82525050565b6000611a1b82612153565b611a258185612187565b9350611a35818560208601612300565b80840191505092915050565b6000611a4c8261215e565b611a568185612192565b9350611a66818560208601612300565b611a6f816123da565b840191505092915050565b6000611a87601483612192565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000611ac7602683612192565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b2d602683612192565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b93601083612192565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000611bd3601983612192565b91507f436865636b2074686520746f6b656e20616c6c6f77616e6365000000000000006000830152602082019050919050565b6000611c13601c83612192565b91507f5468657265206973206e6f7468696e6720746f207769746864726177000000006000830152602082019050919050565b6000611c53602083612192565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611c93601783612192565b91507f416464726573732073686f756c64206e6f7420626520300000000000000000006000830152602082019050919050565b6000611cd3601483612192565b91507f4465706f73697473206e6f7420656e61626c65640000000000000000000000006000830152602082019050919050565b6000611d13601683612192565b91507f4465706f73697420646f6573206e6f74206578697374000000000000000000006000830152602082019050919050565b6000611d53601d83612192565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000611d93602a83612192565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b606082016000820151611e026000850182611e2e565b506020820151611e156020850182611e2e565b506040820151611e2860408501826119f2565b50505050565b611e37816122f6565b82525050565b611e46816122f6565b82525050565b6000611e588284611a10565b915081905092915050565b6000602082019050611e786000830184611985565b92915050565b6000604082019050611e936000830185611985565b611ea06020830184611985565b9392505050565b6000606082019050611ebc6000830186611985565b611ec96020830185611985565b611ed66040830184611e3d565b949350505050565b60006020820190508181036000830152611ef88184611994565b905092915050565b6000602082019050611f156000830184611a01565b92915050565b60006020820190508181036000830152611f358184611a41565b905092915050565b60006020820190508181036000830152611f5681611a7a565b9050919050565b60006020820190508181036000830152611f7681611aba565b9050919050565b60006020820190508181036000830152611f9681611b20565b9050919050565b60006020820190508181036000830152611fb681611b86565b9050919050565b60006020820190508181036000830152611fd681611bc6565b9050919050565b60006020820190508181036000830152611ff681611c06565b9050919050565b6000602082019050818103600083015261201681611c46565b9050919050565b6000602082019050818103600083015261203681611c86565b9050919050565b6000602082019050818103600083015261205681611cc6565b9050919050565b6000602082019050818103600083015261207681611d06565b9050919050565b6000602082019050818103600083015261209681611d46565b9050919050565b600060208201905081810360008301526120b681611d86565b9050919050565b60006020820190506120d26000830184611e3d565b92915050565b60006040820190506120ed6000830185611e3d565b6120fa6020830184611e3d565b9392505050565b60006060820190506121166000830186611e3d565b6121236020830185611e3d565b6121306040830184611a01565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006121ae826122f6565b91506121b9836122f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156121ee576121ed61237c565b5b828201905092915050565b6000612204826122f6565b915061220f836122f6565b92508261221f5761221e6123ab565b5b828204905092915050565b6000612235826122f6565b9150612240836122f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122795761227861237c565b5b828202905092915050565b600061228f826122f6565b915061229a836122f6565b9250828210156122ad576122ac61237c565b5b828203905092915050565b60006122c3826122d6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561231e578082015181840152602081019050612303565b8381111561232d576000848401525b50505050565b600061233e826122f6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123715761237061237c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b6123f4816122b8565b81146123ff57600080fd5b50565b61240b816122ca565b811461241657600080fd5b50565b612422816122f6565b811461242d57600080fd5b5056fea264697066735822122036eec7e08b76406677b3a9ec64e7bffebae233c56a8cc4731bdfffaa9dfa7c7664736f6c63430008000033000000000000000000000000c7198437980c041c805a1edcba50c1ce5db95118000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c7198437980c041c805a1edcba50c1ce5db95118000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
-----Decoded View---------------
Arg [0] : _token (address): 0xc7198437980c041c805a1edcba50c1ce5db95118
Arg [1] : _rewardAddress (address): 0x041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c7198437980c041c805a1edcba50c1ce5db95118
Arg [1] : 000000000000000000000000041591dadd4e465a8c9cd57f2ba15f21f13bb2f0
Deployed ByteCode Sourcemap
24697:4535:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26488:430;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29161:67;;;:::i;:::-;;28845:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16995:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15644:103;;;:::i;:::-;;29088:63;;;:::i;:::-;;25076:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14993:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28696:141;;;:::i;:::-;;26328:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28056:632;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25043:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24989:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;27915:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15902:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26488:430;26575:2;26545:8;:20;26554:10;26545:20;;;;;;;;;;;;;;;:27;;;;:32;26537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26716:1;26676:8;:20;26685:10;26676:20;;;;;;;;;;;;;;;26697:2;26676:24;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;:41;26654:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;26846:5;26806:45;;:8;:20;26815:10;26806:20;;;;;;;;;;;;;;;26827:2;26806:24;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;:45;;;26784:78;;;;;;26875:35;26895:10;26907:2;26875:19;:35::i;:::-;26488:430;:::o;29161:67::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29209:10:::1;:8;:10::i;:::-;29161:67::o:0;28845:235::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28950:1:::1;28930:22;;:8;:22;;;;28922:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29007:8;28991:13;;:24;;;;;;;;;;;;;;;;;;29063:8;29031:41;;29052:10;29031:41;;;;;;;;;;;;28845:235:::0;:::o;16995:86::-;17042:4;17066:7;;;;;;;;;;;17059:14;;16995:86;:::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;29088:63::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29134:8:::1;:6;:8::i;:::-;29088:63::o:0;25076:28::-;;;;;;;;;;;;;:::o;14993:87::-;15039:7;15066:6;;;;;;;;;;;15059:13;;14993:87;:::o;28696:141::-;15224:12;:10;:12::i;:::-;15213:23;;:7;:5;:7::i;:::-;:23;;;15205:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28769:14:::1;;;;;;;;;;;28768:15;28751:14;;:32;;;;;;;;;;;;;;;;;;28799:30;28814:14;;;;;;;;;;;28799:30;;;;;;:::i;:::-;;;;;;;;28696:141::o:0;26328:152::-;26386:16;26414:18;26435:8;:16;26444:6;26435:16;;;;;;;;;;;;;;;26414:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26470:1;26462:10;;;26328:152;;;:::o;28056:632::-;17321:8;:6;:8::i;:::-;17320:9;17312:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28129:14:::1;;;;;;;;;;;28121:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;28179:14;28196:10;28179:27;;28233:23;28249:6;28233:11;;:15;;:23;;;;:::i;:::-;28219:11;:37;;;;28269:8;:16;28278:6;28269:16;;;;;;;;;;;;;;;28305:105;;;;;;;;28331:15;28305:105;;;;28365:6;28305:105;;;;28390:5;28305:105;;;;::::0;28269:152:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28434:17;28454:5;:15;;;28470:6;28486:4;28454:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28434:58;;28524:6;28511:9;:19;;28503:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28573:53;28596:6;28604:13;;;;;;;;;;;28619:6;28573:5;:22;;;;:53;;;;;;:::i;:::-;28665:6;28642:38;;28657:5;28642:38;;;28673:6;28642:38;;;;;;:::i;:::-;;;;;;;;17361:1;;28056:632:::0;:::o;25043:26::-;;;;:::o;24989:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27915:133::-;27976:7;28002:5;:15;;;28018:6;28034:4;28002:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27995:45;;27915:133;;;:::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;27200:707::-;27274:14;27291:8;:14;27300:4;27291:14;;;;;;;;;;;;;;;27306:2;27291:18;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;27274:48;;27333:21;27357:8;:14;27366:4;27357:14;;;;;;;;;;;;;;;27372:2;27357:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;27333:54;;27400:24;27427:47;27468:5;27428:34;27448:13;27428:15;:19;;:34;;;;:::i;:::-;27427:40;;:47;;;;:::i;:::-;27400:74;;27536:14;27553:35;27563:6;27571:16;27553:9;:35::i;:::-;27536:52;;27615:23;27631:6;27615:11;;:15;;:23;;;;:::i;:::-;27601:11;:37;;;;27649:51;27672:13;;;;;;;;;;;27687:4;27693:6;27649:5;:22;;;;:51;;;;;;:::i;:::-;27830:4;27806:45;;27822:5;27806:45;;;27836:6;27844;27806:45;;;;;;;:::i;:::-;;;;;;;;27895:4;27862:8;:14;27871:4;27862:14;;;;;;;;;;;;;;;27877:2;27862:18;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;:37;;;;;;;;;;;;;;;;;;27200: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;20532:98::-;20590:7;20621:1;20617;:5;;;;:::i;:::-;20610:12;;20532:98;;;;:::o;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;26962:230::-;27027:4;27047:6;27054:1;27047:8;;27043:113;27059:1;27057;:3;27043:113;;;27093:41;27123:10;27093:25;27107:10;27093:9;:13;;:25;;;;:::i;:::-;:29;;:41;;;;:::i;:::-;27081:53;;27062:3;;;;;:::i;:::-;;;;27043:113;;;;27175:9;27168:16;;26962: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;8655:687::-;8792:4;8787:3;8783:14;8886:4;8879:5;8875:16;8869:23;8905:63;8962:4;8957:3;8953:14;8939:12;8905:63;:::i;:::-;8807:171;9068:4;9061:5;9057:16;9051:23;9087:63;9144:4;9139:3;9135:14;9121:12;9087:63;:::i;:::-;8988:172;9249:4;9242:5;9238:16;9232:23;9268:57;9319:4;9314:3;9310:14;9296:12;9268:57;:::i;:::-;9170:165;8761:581;;;:::o;9348:108::-;9425:24;9443:5;9425:24;:::i;:::-;9420:3;9413:37;9403:53;;:::o;9462:118::-;9549:24;9567:5;9549:24;:::i;:::-;9544:3;9537:37;9527:53;;:::o;9586:271::-;;9738:93;9827:3;9818:6;9738:93;:::i;:::-;9731:100;;9848:3;9841:10;;9720:137;;;;:::o;9863:222::-;;9994:2;9983:9;9979:18;9971:26;;10007:71;10075:1;10064:9;10060:17;10051:6;10007:71;:::i;:::-;9961:124;;;;:::o;10091:332::-;;10250:2;10239:9;10235:18;10227:26;;10263:71;10331:1;10320:9;10316:17;10307:6;10263:71;:::i;:::-;10344:72;10412:2;10401:9;10397:18;10388:6;10344:72;:::i;:::-;10217:206;;;;;:::o;10429:442::-;;10616:2;10605:9;10601:18;10593:26;;10629:71;10697:1;10686:9;10682:17;10673:6;10629:71;:::i;:::-;10710:72;10778:2;10767:9;10763:18;10754:6;10710:72;:::i;:::-;10792;10860:2;10849:9;10845:18;10836:6;10792:72;:::i;:::-;10583:288;;;;;;:::o;10877:473::-;;11108:2;11097:9;11093:18;11085:26;;11157:9;11151:4;11147:20;11143:1;11132:9;11128:17;11121:47;11185:158;11338:4;11329:6;11185:158;:::i;:::-;11177:166;;11075:275;;;;:::o;11356:210::-;;11481:2;11470:9;11466:18;11458:26;;11494:65;11556:1;11545:9;11541:17;11532:6;11494:65;:::i;:::-;11448:118;;;;:::o;11572:313::-;;11723:2;11712:9;11708:18;11700:26;;11772:9;11766:4;11762:20;11758:1;11747:9;11743:17;11736:47;11800:78;11873:4;11864:6;11800:78;:::i;:::-;11792:86;;11690:195;;;;:::o;11891:419::-;;12095:2;12084:9;12080:18;12072:26;;12144:9;12138:4;12134:20;12130:1;12119:9;12115:17;12108:47;12172:131;12298:4;12172:131;:::i;:::-;12164:139;;12062:248;;;:::o;12316:419::-;;12520:2;12509:9;12505:18;12497:26;;12569:9;12563:4;12559:20;12555:1;12544:9;12540:17;12533:47;12597:131;12723:4;12597:131;:::i;:::-;12589:139;;12487:248;;;:::o;12741:419::-;;12945:2;12934:9;12930:18;12922:26;;12994:9;12988:4;12984:20;12980:1;12969:9;12965:17;12958:47;13022:131;13148:4;13022:131;:::i;:::-;13014:139;;12912:248;;;:::o;13166:419::-;;13370:2;13359:9;13355:18;13347:26;;13419:9;13413:4;13409:20;13405:1;13394:9;13390:17;13383:47;13447:131;13573:4;13447:131;:::i;:::-;13439:139;;13337:248;;;:::o;13591:419::-;;13795:2;13784:9;13780:18;13772:26;;13844:9;13838:4;13834:20;13830:1;13819:9;13815:17;13808:47;13872:131;13998:4;13872:131;:::i;:::-;13864:139;;13762:248;;;:::o;14016:419::-;;14220:2;14209:9;14205:18;14197:26;;14269:9;14263:4;14259:20;14255:1;14244:9;14240:17;14233:47;14297:131;14423:4;14297:131;:::i;:::-;14289:139;;14187:248;;;:::o;14441:419::-;;14645:2;14634:9;14630:18;14622:26;;14694:9;14688:4;14684:20;14680:1;14669:9;14665:17;14658:47;14722:131;14848:4;14722:131;:::i;:::-;14714:139;;14612:248;;;:::o;14866:419::-;;15070:2;15059:9;15055:18;15047:26;;15119:9;15113:4;15109:20;15105:1;15094:9;15090:17;15083:47;15147:131;15273:4;15147:131;:::i;:::-;15139:139;;15037:248;;;:::o;15291:419::-;;15495:2;15484:9;15480:18;15472:26;;15544:9;15538:4;15534:20;15530:1;15519:9;15515:17;15508:47;15572:131;15698:4;15572:131;:::i;:::-;15564:139;;15462:248;;;:::o;15716:419::-;;15920:2;15909:9;15905:18;15897:26;;15969:9;15963:4;15959:20;15955:1;15944:9;15940:17;15933:47;15997:131;16123:4;15997:131;:::i;:::-;15989:139;;15887:248;;;:::o;16141:419::-;;16345:2;16334:9;16330:18;16322:26;;16394:9;16388:4;16384:20;16380:1;16369:9;16365:17;16358:47;16422:131;16548:4;16422:131;:::i;:::-;16414:139;;16312:248;;;:::o;16566:419::-;;16770:2;16759:9;16755:18;16747:26;;16819:9;16813:4;16809:20;16805:1;16794:9;16790:17;16783:47;16847:131;16973:4;16847:131;:::i;:::-;16839:139;;16737:248;;;:::o;16991:222::-;;17122:2;17111:9;17107:18;17099:26;;17135:71;17203:1;17192:9;17188:17;17179:6;17135:71;:::i;:::-;17089:124;;;;:::o;17219:332::-;;17378:2;17367:9;17363:18;17355:26;;17391:71;17459:1;17448:9;17444:17;17435:6;17391:71;:::i;:::-;17472:72;17540:2;17529:9;17525:18;17516:6;17472:72;:::i;:::-;17345:206;;;;;:::o;17557:430::-;;17738:2;17727:9;17723:18;17715:26;;17751:71;17819:1;17808:9;17804:17;17795:6;17751:71;:::i;:::-;17832:72;17900:2;17889:9;17885:18;17876:6;17832:72;:::i;:::-;17914:66;17976:2;17965:9;17961:18;17952:6;17914:66;:::i;:::-;17705:282;;;;;;:::o;17993:157::-;;18108:3;18100:11;;18138:4;18133:3;18129:14;18121:22;;18090:60;;;:::o;18156:139::-;;18282:5;18276:12;18266:22;;18255:40;;;:::o;18301:98::-;;18386:5;18380:12;18370:22;;18359:40;;;:::o;18405:99::-;;18491:5;18485:12;18475:22;;18464:40;;;:::o;18510:138::-;;18637:4;18632:3;18628:14;18620:22;;18610:38;;;:::o;18654:209::-;;18812:6;18807:3;18800:19;18852:4;18847:3;18843:14;18828:29;;18790:73;;;;:::o;18869:147::-;;19007:3;18992:18;;18982:34;;;;:::o;19022:169::-;;19140:6;19135:3;19128:19;19180:4;19175:3;19171:14;19156:29;;19118:73;;;;:::o;19197:305::-;;19256:20;19274:1;19256:20;:::i;:::-;19251:25;;19290:20;19308:1;19290:20;:::i;:::-;19285:25;;19444:1;19376:66;19372:74;19369:1;19366:81;19363:2;;;19450:18;;:::i;:::-;19363:2;19494:1;19491;19487:9;19480:16;;19241:261;;;;:::o;19508:185::-;;19565:20;19583:1;19565:20;:::i;:::-;19560:25;;19599:20;19617:1;19599:20;:::i;:::-;19594:25;;19638:1;19628:2;;19643:18;;:::i;:::-;19628:2;19685:1;19682;19678:9;19673:14;;19550:143;;;;:::o;19699:348::-;;19762:20;19780:1;19762:20;:::i;:::-;19757:25;;19796:20;19814:1;19796:20;:::i;:::-;19791:25;;19984:1;19916:66;19912:74;19909:1;19906:81;19901:1;19894:9;19887:17;19883:105;19880:2;;;19991:18;;:::i;:::-;19880:2;20039:1;20036;20032:9;20021:20;;19747:300;;;;:::o;20053:191::-;;20113:20;20131:1;20113:20;:::i;:::-;20108:25;;20147:20;20165:1;20147:20;:::i;:::-;20142:25;;20186:1;20183;20180:8;20177:2;;;20191:18;;:::i;:::-;20177:2;20236:1;20233;20229:9;20221:17;;20098:146;;;;:::o;20250:96::-;;20316:24;20334:5;20316:24;:::i;:::-;20305:35;;20295:51;;;:::o;20352:90::-;;20429:5;20422:13;20415:21;20404:32;;20394:48;;;:::o;20448:126::-;;20525:42;20518:5;20514:54;20503:65;;20493:81;;;:::o;20580:77::-;;20646:5;20635:16;;20625:32;;;:::o;20663:307::-;20731:1;20741:113;20755:6;20752:1;20749:13;20741:113;;;20840:1;20835:3;20831:11;20825:18;20821:1;20816:3;20812:11;20805:39;20777:2;20774:1;20770:10;20765:15;;20741:113;;;20872:6;20869:1;20866:13;20863:2;;;20952:1;20943:6;20938:3;20934:16;20927:27;20863:2;20712:258;;;;:::o;20976:233::-;;21038:24;21056:5;21038:24;:::i;:::-;21029:33;;21084:66;21077:5;21074:77;21071:2;;;21154:18;;:::i;:::-;21071:2;21201:1;21194:5;21190:13;21183:20;;21019:190;;;:::o;21215:180::-;21263:77;21260:1;21253:88;21360:4;21357:1;21350:15;21384:4;21381:1;21374:15;21401:180;21449:77;21446:1;21439:88;21546:4;21543:1;21536:15;21570:4;21567:1;21560:15;21587:102;;21679:2;21675:7;21670:2;21663:5;21659:14;21655:28;21645:38;;21635:54;;;:::o;21695:122::-;21768:24;21786:5;21768:24;:::i;:::-;21761:5;21758:35;21748:2;;21807:1;21804;21797:12;21748:2;21738:79;:::o;21823:116::-;21893:21;21908:5;21893:21;:::i;:::-;21886:5;21883:32;21873:2;;21929:1;21926;21919:12;21873:2;21863:76;:::o;21945:122::-;22018:24;22036:5;22018:24;:::i;:::-;22011:5;22008:35;21998:2;;22057:1;22054;22047:12;21998:2;21988:79;:::o
Swarm Source
ipfs://36eec7e08b76406677b3a9ec64e7bffebae233c56a8cc4731bdfffaa9dfa7c76
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.