Contract 0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d9

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe9c8e2bb02951bba183b0375cbbd071230bd35cffbcd022780914a9605dcdfd3Transfer77909752021-04-08 6:24:57167 days 20 hrs ago0xe14d388b85a1ea98a0a5fac90d9fa497327d40db IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00091028
0x0a92c25d5acecca039bed082d2f3fca9c2eee881cefbf88c90a606a9b6350396Include Account77909592021-04-08 6:24:09167 days 20 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00023636
0xe1015e7a4a6be3c420df7202bd567be4f5d298e8e7c12c9ebfa8185708061bd8Include Account77909532021-04-08 6:23:51167 days 20 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00026546
0x095b2fb98ec76b80ae12b4665e045cbe6a7e898bfb2c7f529caa5432a32e3f9eExclude Account77909412021-04-08 6:23:15167 days 20 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00113681
0x42666e7c143eb2a228826cacf94af6795c45a5ccf47e1ebc009018a1744af23dTransfer77909112021-04-08 6:21:45167 days 20 hrs ago0xe14d388b85a1ea98a0a5fac90d9fa497327d40db IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00106028
0xb70871757c51bfee33523a4054e341b48d6e34fd76f6c38a240c55129d69178fInclude Account77908992021-04-08 6:21:09167 days 20 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00024446
0xaf4e3ecf3e672c011a399db54af5c4dbd658fea122f0abc775e3c94b0a29d629Exclude Account77908912021-04-08 6:20:45167 days 20 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00087031
0x3b2001b8b64156231385a54267076f2490c1d3c03754a4436aa343184f98e729Transfer77892572021-04-08 4:59:03167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00100908
0x80f64330721cc63a370f837c7343006fbc160a48a0c5f975b6f32f3d997ff74dTransfer77892472021-04-08 4:58:33167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.0009442
0x2525e8495fecfc4cb734a7c9a64fcdb0cb4b164531a00720fed5cf2a39f6706eTransfer77891662021-04-08 4:54:30167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00101958
0xe52384b68794afe612c09e71b7d684749e98fc2e80213ed091c63ae0865d0464Transfer77891552021-04-08 4:53:57167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00101958
0x470368d11e2327334df9e9c849cab250b6c6470018604a4a791fc61e05703957Transfer77891472021-04-08 4:53:33167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00125273
0xf0246558c1f73d439fcafeb6615c19608d4567adea2dda59a753367432989451Transfer77891222021-04-08 4:52:18167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.001
0x60ed45f2d6d767fb45610097af4ecd587a233427fffe98c18f5bc3a819d6121cTransfer77891192021-04-08 4:52:09167 days 21 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00136062
0x3931c1b0ed4baa2f78d59735a7906e603b987e431beb8a3affd7640f011d1223Transfer77890832021-04-08 4:50:21167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00101958
0xb1def88a2f80d2832cf6324cd8d7028e6f69d06c87ce6150f9c6cae8ee6cea55Transfer77890802021-04-08 4:50:12167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00114462
0x29b8fcd3444b6b0a031fd34e4839f8ce7812657ca246c10bb5bdae5f431e3374Transfer77890652021-04-08 4:49:27167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00108446
0x3682a2f44663781965641c1025d0117e32b81bc0a8b904f1e6459cd4c490df80Transfer77890572021-04-08 4:49:03167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00104462
0x05a469a0283973fcd81eb24b0b5826e80eb72647129c3ccbe4042028b2b126e8Transfer77890462021-04-08 4:48:30167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00101761
0xf4aee582399c8c7711d7ab1c4f9c2e4b2e36b9d2553892297bd6adba34f2899aTransfer77890452021-04-08 4:48:27167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00096772
0x5810a17c37e1c4517d62f264777e5481c6a14e6bbfe7431e452e82f85f8ac349Transfer77890362021-04-08 4:48:00167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00091771
0xb4111f93b91a2e9a00b8e0ba96c5c0c866c1182e785b9c3e0fbb962722dba112Transfer77890262021-04-08 4:47:30167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00091771
0x94f28d81f6de1c22bd6ae1e0aa3d5f1e15490447aed37cbf2993dd8c8e341723Transfer77890232021-04-08 4:47:21167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00085908
0x2e45d47587f1bd7e10cc51362cc075d5c774208167fa9b08dfd3330f621949c3Transfer77890212021-04-08 4:47:15167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.00100908
0xcd63ec3ebf621bef48d9e44fbdabec1f6b1331b01f0e275885a33146bb84c0dcTransfer77890202021-04-08 4:47:12167 days 22 hrs ago0xdde5d19eca55d5781540ad5dc8533bcc9b8b39da IN  0xfec8cd39aa3ada7615b4e9afd0ada45eef7c43d90 BNB0.001
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LLTEST

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-08
*/

/**
 *Submitted for verification at BscScan.com on 2021-03-03
*/

/**
 *Submitted for verification at BscScan.com on ---
*/

/**

// Lightning Protocol is a Accelerating Deflationary Supply Elasticity Token that functions in cycles 
// Each cycle, the burnRate is increased in 0.5% increments for each 1,000,000 Tokens transacted
// After the burnRate cap is reached, the burnrate will be reset to the initial rate
// Furthermore, a rebase will be called which rebases 50% of the Tokens burnt during the previous cycle


// SPDX-License-Identifier: MIT


/*
 * Telegram: https://t.me/lightningprotocol
 * Website: https://lightningprotocol.finance
 */
 

pragma solidity ^0.6.0;


abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Interface of the BEP20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, 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);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract LLTEST is Context, IBEP20, Ownable {

    struct Transaction {
        bool enabled;
        address destination;
        bytes data;
    }

    // Stable ordering is not guaranteed.
    Transaction[] public transactions;

    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    string  private constant _NAME = 'LLTEST';
    string  private constant _SYMBOL = 'LLTEST';
    uint8   private constant _DECIMALS = 18;
   
    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _DECIMALFACTOR = 10 ** uint256(_DECIMALS);
    uint256 private constant _GRANULARITY = 100;
    
    uint256 private _tTotal = 100000000 * _DECIMALFACTOR;
    uint256 private _rTotal = (_MAX - (_MAX % _tTotal));
    
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _lightningCycle = 0;

    uint256 private _tTradeCycle = 0;
    uint256 private _tBurnCycle = 0;
    
    uint256 private transferredTokens = 0;
    uint256 private tokenBatchCount = 0;
    uint256 private _BURN_FEE = 0;
    uint256 private _TAX_FEE = 0;
    uint256 private constant _MAX_TX_SIZE = 100000000 * _DECIMALFACTOR;

    // TOTAL_GONS is a multiple of INITIAL_FRAGMENTS_SUPPLY so that _gonsPerFragment is an integer.
    // Use the highest value that fits in a uint256 for max granularity.

    // MAX_SUPPLY = maximum integer < (sqrt(4*TOTAL_GONS + 1) - 1) / 2
    uint256 private constant MAX_SUPPLY = ~uint128(0);  // (2^128) - 1  

    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;

    
    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }


    event TransactionFailed(address indexed destination, uint index, bytes data);

    function name() public pure returns (string memory) {
        return _NAME;
    }

    function symbol() public pure returns (string memory) {
        return _SYMBOL;
    }

    function decimals() public pure returns (uint8) {
        return _DECIMALS;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        // @dev once all cycles are completed, burn fee will be set to 0 and the protocol 
        // reaches its final phase, in which no further supply elasticity will take place
        // and fees will stay at 0 
        
        if(sender != owner() && recipient != owner())
            require(amount <= _MAX_TX_SIZE, "Transfer amount exceeds the maxTxAmount.");

        if(_BURN_FEE >= 500){
        
        _tTradeCycle = _tTradeCycle.add(amount);


        // @dev adjust current burnFee depending on the traded tokens during th

            if(_tTradeCycle >= (0 * _DECIMALFACTOR) && _tTradeCycle <= (999999*_DECIMALFACTOR)){
                _setBurnFee(500);
            } else if(_tTradeCycle >= (1000000 * _DECIMALFACTOR) && _tTradeCycle <= (2000000 * _DECIMALFACTOR)){
                _setBurnFee(550);
            }   else if(_tTradeCycle >= (2000000 * _DECIMALFACTOR) && _tTradeCycle <= (3000000 * _DECIMALFACTOR)){
                _setBurnFee(600);
            }   else if(_tTradeCycle >= (3000000 * _DECIMALFACTOR) && _tTradeCycle <= (4000000 * _DECIMALFACTOR)){
                _setBurnFee(650);
            } else if(_tTradeCycle >= (4000000 * _DECIMALFACTOR) && _tTradeCycle <= (5000000 * _DECIMALFACTOR)){
                _setBurnFee(700);
            } else if(_tTradeCycle >= (5000000 * _DECIMALFACTOR) && _tTradeCycle <= (6000000 * _DECIMALFACTOR)){
                _setBurnFee(750);
            } else if(_tTradeCycle >= (6000000 * _DECIMALFACTOR) && _tTradeCycle <= (7000000 * _DECIMALFACTOR)){
                _setBurnFee(800);
            } else if(_tTradeCycle >= (7000000 * _DECIMALFACTOR) && _tTradeCycle <= (8000000 * _DECIMALFACTOR)){
                _setBurnFee(850);
            } else if(_tTradeCycle >= (8000000 * _DECIMALFACTOR) && _tTradeCycle <= (9000000 * _DECIMALFACTOR)){
                _setBurnFee(900);
            } else if(_tTradeCycle >= (9000000 * _DECIMALFACTOR) && _tTradeCycle <= (10000000 * _DECIMALFACTOR)){
                _setBurnFee(950);
            } else if(_tTradeCycle >= (10000000 * _DECIMALFACTOR) && _tTradeCycle <= (11000000 * _DECIMALFACTOR)){
                _setBurnFee(1000);
            } else if(_tTradeCycle >= (11000000 * _DECIMALFACTOR) && _tTradeCycle <= (12000000 * _DECIMALFACTOR)){
                _setBurnFee(1050);
            } else if(_tTradeCycle >= (12000000 * _DECIMALFACTOR) && _tTradeCycle <= (13000000 * _DECIMALFACTOR)){
                _setBurnFee(1100);
            } else if(_tTradeCycle >= (13000000 * _DECIMALFACTOR) && _tTradeCycle <= (14000000 * _DECIMALFACTOR)){
                _setBurnFee(1150);
            } else if(_tTradeCycle >= (14000000 * _DECIMALFACTOR)){
                _setBurnFee(1200);
            }
            
        }

        
        
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _burnAndRebase(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _burnAndRebase(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _burnAndRebase(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _burnAndRebase(rFee, rBurn, tFee, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _burnAndRebase(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tBurnCycle = _tBurnCycle.add(tBurn);
        _tTotal = _tTotal.sub(tBurn);


        // @dev after 1,275,000 tokens burnt, supply is expanded by 637,500 tokens 
        if(_tBurnCycle >= (1275000 * _DECIMALFACTOR)){
                uint256 _tRebaseDelta = 637500 * _DECIMALFACTOR;
                _tBurnCycle = _tBurnCycle.sub((1275000 * _DECIMALFACTOR));
                _tTradeCycle = 0;
                _setBurnFee(500);

                _rebase(_tRebaseDelta);
            } 
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getTValues(tAmount, _TAX_FEE, _BURN_FEE);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 burnFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100);
        uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn);
        return (tTransferAmount, tFee, tBurn);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    

    function _setBurnFee(uint256 burnFee) private {
        require(burnFee >= 0 && burnFee <= 1500, 'burnFee should be in 0 - 15');
        _BURN_FEE = burnFee;
    }
    
    function _setFeeStage(uint256 burnFee) external onlyOwner() {
        require(burnFee >= 0 && burnFee <= 1500, 'burnFee should be in 0 - 15');
        _BURN_FEE = burnFee;
    }

    function _getBurnFee() public view returns(uint256)  {
        return _BURN_FEE;
    }

    function _getMaxTxAmount() private pure returns(uint256) {
        return _MAX_TX_SIZE;
    }

    function _getCycle() public view returns(uint256) {
        return _lightningCycle;
    }

    function _getBurnCycle() public view returns(uint256) {
        return _tBurnCycle;
    }

    function _getTradedCycle() public view returns(uint256) {
        return _tTradeCycle;
    }
    
    function _rebase(uint256 supplyDelta) internal {
        _lightningCycle = _lightningCycle.add(1);
        _tTotal = _tTotal.add(supplyDelta);


        // after 148, the protocol reaches its final stage
        // fees will be set to 0 and the remaining total supply will be 5,650,000
        if(_lightningCycle > 148 || _tTotal <= 5650000 * _DECIMALFACTOR){
            _initializeFinalStage();
        }
    }

    function _initializeFinalStage() internal {
        _setBurnFee(0);
    }   
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TransactionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getBurnCycle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getCycle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTradedCycle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"_setFeeStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a52b7d2dcc80cd2e4000000600781905560001906600019036008556000600b556000600c556000600d556000600e556000600f55600060105560006011553480156200005057600080fd5b5060006200005d6200012f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060085460026000620000b86200012f565b6001600160a01b03168152602081019190915260400160002055620000dc6200012f565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a362000133565b3390565b6122f680620001436000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e1461054c578063f2cc0c181461057a578063f2fde38b146105a0578063f84354f1146105c6576101c4565b8063a9059cbb146104f2578063b9e24e161461051e578063cba0e99614610526576101c4565b806395d89b41116100d357806395d89b41146101c95780639ace38c214610410578063a3e07e04146104be578063a457c2d7146104c6576101c4565b806370a08231146103be578063715018a6146103e45780638da5cb5b146103ec576101c4565b8063313ce567116101665780633c9f861d116101405780633c9f861d1461036c5780633d6217f0146103745780634549b039146103915780636a39d32c146103b6576101c4565b8063313ce5671461030357806339509351146103215780633bd5d1731461034d576101c4565b806318160ddd116101a257806318160ddd146102a057806323b872dd146102a85780632d838119146102de5780632da1fb37146102fb576101c4565b806306fdde03146101c9578063095ea7b31461024657806313114a9d14610286575b600080fd5b6101d16105ec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102726004803603604081101561025c57600080fd5b506001600160a01b03813516906020013561060c565b604080519115158252519081900360200190f35b61028e61062a565b60408051918252519081900360200190f35b61028e610630565b610272600480360360608110156102be57600080fd5b506001600160a01b03813581169160208101359091169060400135610636565b61028e600480360360208110156102f457600080fd5b50356106bd565b61028e61071f565b61030b610725565b6040805160ff9092168252519081900360200190f35b6102726004803603604081101561033757600080fd5b506001600160a01b03813516906020013561072a565b61036a6004803603602081101561036357600080fd5b5035610778565b005b61028e610852565b61036a6004803603602081101561038a57600080fd5b5035610858565b61028e600480360360408110156103a757600080fd5b5080359060200135151561090c565b61028e61099e565b61028e600480360360208110156103d457600080fd5b50356001600160a01b03166109a4565b61036a610a06565b6103f4610aa8565b604080516001600160a01b039092168252519081900360200190f35b61042d6004803603602081101561042657600080fd5b5035610ab7565b604051808415158152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610481578181015183820152602001610469565b50505050905090810190601f1680156104ae5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b61028e610b7c565b610272600480360360408110156104dc57600080fd5b506001600160a01b038135169060200135610b82565b6102726004803603604081101561050857600080fd5b506001600160a01b038135169060200135610bea565b61028e610bfe565b6102726004803603602081101561053c57600080fd5b50356001600160a01b0316610c04565b61028e6004803603604081101561056257600080fd5b506001600160a01b0381358116916020013516610c22565b61036a6004803603602081101561059057600080fd5b50356001600160a01b0316610c4d565b61036a600480360360208110156105b657600080fd5b50356001600160a01b0316610e2f565b61036a600480360360208110156105dc57600080fd5b50356001600160a01b0316610f27565b6040805180820190915260068152651313151154d560d21b602082015290565b60006106206106196110e8565b84846110ec565b5060015b92915050565b60095490565b60075490565b60006106438484846111d8565b6106b38461064f6110e8565b6106ae8560405180606001604052806028815260200161214f602891396001600160a01b038a1660009081526004602052604081209061068d6110e8565b6001600160a01b0316815260208101919091526040016000205491906117d9565b6110ec565b5060019392505050565b60006008548211156107005760405162461bcd60e51b815260040180806020018281038252602a8152602001806120ff602a913960400191505060405180910390fd5b600061070a611870565b90506107168382611893565b9150505b919050565b600d5490565b601290565b60006106206107376110e8565b846106ae85600460006107486110e8565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906118dc565b60006107826110e8565b6001600160a01b03811660009081526005602052604090205490915060ff16156107dd5760405162461bcd60e51b815260040180806020018281038252602c815260200180612273602c913960400191505060405180910390fd5b60006107e883611936565b505050506001600160a01b03841660009081526002602052604090205491925061081491905082611993565b6001600160a01b03831660009081526002602052604090205560085461083a9082611993565b60085560095461084a90846118dc565b600955505050565b600a5490565b6108606110e8565b6000546001600160a01b039081169116146108b0576040805162461bcd60e51b815260206004820181905260248201526000805160206121c0833981519152604482015290519081900360640190fd5b6105dc811115610907576040805162461bcd60e51b815260206004820152601b60248201527f6275726e4665652073686f756c6420626520696e2030202d2031350000000000604482015290519081900360640190fd5b601055565b6000600754831115610965576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161098457600061097584611936565b50939550610624945050505050565b600061098f84611936565b50929550610624945050505050565b60105490565b6001600160a01b03811660009081526005602052604081205460ff16156109e457506001600160a01b03811660009081526003602052604090205461071a565b6001600160a01b038216600090815260026020526040902054610624906106bd565b610a0e6110e8565b6000546001600160a01b03908116911614610a5e576040805162461bcd60e51b815260206004820181905260248201526000805160206121c0833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60018181548110610ac457fe5b6000918252602091829020600291820201805460018083018054604080516101009483161585026000190190921696909604601f810188900488028201880190965285815260ff84169750919092046001600160a01b03169492939092830182828015610b725780601f10610b4757610100808354040283529160200191610b72565b820191906000526020600020905b815481529060010190602001808311610b5557829003601f168201915b5050505050905083565b600c5490565b6000610620610b8f6110e8565b846106ae8560405180606001604052806025815260200161222c6025913960046000610bb96110e8565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906117d9565b6000610620610bf76110e8565b84846111d8565b600b5490565b6001600160a01b031660009081526005602052604090205460ff1690565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b610c556110e8565b6000546001600160a01b03908116911614610ca5576040805162461bcd60e51b815260206004820181905260248201526000805160206121c0833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d015760405162461bcd60e51b81526004018080602001828103825260228152602001806122516022913960400191505060405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615610d6f576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205415610dc9576001600160a01b038116600090815260026020526040902054610daf906106bd565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b610e376110e8565b6000546001600160a01b03908116911614610e87576040805162461bcd60e51b815260206004820181905260248201526000805160206121c0833981519152604482015290519081900360640190fd5b6001600160a01b038116610ecc5760405162461bcd60e51b81526004018080602001828103825260268152602001806121296026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610f2f6110e8565b6000546001600160a01b03908116911614610f7f576040805162461bcd60e51b815260206004820181905260248201526000805160206121c0833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16610fec576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b6006548110156110e457816001600160a01b03166006828154811061101057fe5b6000918252602090912001546001600160a01b031614156110dc5760068054600019810190811061103d57fe5b600091825260209091200154600680546001600160a01b03909216918390811061106357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600590925220805460ff1916905560068054806110b557fe5b600082815260209020810160001990810180546001600160a01b03191690550190556110e4565b600101610fef565b5050565b3390565b6001600160a01b0383166111315760405162461bcd60e51b81526004018080602001828103825260248152602001806120db6024913960400191505060405180910390fd5b6001600160a01b0382166111765760405162461bcd60e51b815260040180806020018281038252602281526020018061229f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661121d5760405162461bcd60e51b81526004018080602001828103825260258152602001806120b66025913960400191505060405180910390fd5b6001600160a01b0382166112625760405162461bcd60e51b81526004018080602001828103825260238152602001806122096023913960400191505060405180910390fd5b600081116112a15760405162461bcd60e51b81526004018080602001828103825260298152602001806121e06029913960400191505060405180910390fd5b6112a9610aa8565b6001600160a01b0316836001600160a01b0316141580156112e357506112cd610aa8565b6001600160a01b0316826001600160a01b031614155b15611332576a52b7d2dcc80cd2e40000008111156113325760405162461bcd60e51b81526004018080602001828103825260288152602001806121776028913960400191505060405180910390fd5b6101f46010541061168057600c5461134a90826118dc565b600c55600c5469d3c20dee1639f99c0000106113705761136b6101f46108b0565b611680565b600c5469d3c21bcecceda1000000118015906113995750600c546a01a784379d99db4200000010155b156113a95761136b6102266108b0565b600c546a01a784379d99db42000000118015906113d35750600c546a027b46536c66c8e300000010155b156113e35761136b6102586108b0565b600c546a027b46536c66c8e30000001180159061140d5750600c546a034f086f3b33b68400000010155b1561141d5761136b61028a6108b0565b600c546a034f086f3b33b684000000118015906114475750600c546a0422ca8b0a00a42500000010155b156114575761136b6102bc6108b0565b600c546a0422ca8b0a00a425000000118015906114815750600c546a04f68ca6d8cd91c600000010155b156114915761136b6102ee6108b0565b600c546a04f68ca6d8cd91c6000000118015906114bb5750600c546a05ca4ec2a79a7f6700000010155b156114cb5761136b6103206108b0565b600c546a05ca4ec2a79a7f67000000118015906114f55750600c546a069e10de76676d0800000010155b156115055761136b6103526108b0565b600c546a069e10de76676d080000001180159061152f5750600c546a0771d2fa45345aa900000010155b1561153f5761136b6103846108b0565b600c546a0771d2fa45345aa9000000118015906115695750600c546a084595161401484a00000010155b156115795761136b6103b66108b0565b600c546a084595161401484a000000118015906115a35750600c546a09195731e2ce35eb00000010155b156115b35761136b6103e86108b0565b600c546a09195731e2ce35eb000000118015906115dd5750600c546a09ed194db19b238c00000010155b156115ed5761136b61041a6108b0565b600c546a09ed194db19b238c000000118015906116175750600c546a0ac0db698068112d00000010155b156116275761136b61044c6108b0565b600c546a0ac0db698068112d000000118015906116515750600c546a0b949d854f34fece00000010155b156116615761136b61047e6108b0565b600c546a0b949d854f34fece00000011611680576116806104b06108b0565b6001600160a01b03831660009081526005602052604090205460ff1680156116c157506001600160a01b03821660009081526005602052604090205460ff16155b156116d6576116d18383836119d5565b6117d4565b6001600160a01b03831660009081526005602052604090205460ff1615801561171757506001600160a01b03821660009081526005602052604090205460ff165b15611727576116d1838383611b15565b6001600160a01b03831660009081526005602052604090205460ff1615801561176957506001600160a01b03821660009081526005602052604090205460ff16155b15611779576116d1838383611bdf565b6001600160a01b03831660009081526005602052604090205460ff1680156117b957506001600160a01b03821660009081526005602052604090205460ff165b156117c9576116d1838383611c44565b6117d4838383611bdf565b505050565b600081848411156118685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561182d578181015183820152602001611815565b50505050905090810190601f16801561185a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061187d611cd8565b909250905061188c8282611893565b9250505090565b60006118d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e3b565b9392505050565b6000828201838110156118d5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006119538a601154601054611ea0565b9250925092506000611963611870565b905060008060006119768e878787611ef9565b919e509c509a509598509396509194505050505091939550919395565b60006118d583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117d9565b60006119df611870565b90506000806000806000806119f388611936565b9550955095509550955095506000611a148883611f4990919063ffffffff16565b6001600160a01b038c16600090815260036020526040902054909150611a3a908a611993565b6001600160a01b038c16600090815260036020908152604080832093909355600290522054611a699088611993565b6001600160a01b03808d1660009081526002602052604080822093909355908c1681522054611a9890876118dc565b6001600160a01b038b16600090815260026020526040902055611abd85828585611fa2565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b6000611b1f611870565b9050600080600080600080611b3388611936565b9550955095509550955095506000611b548883611f4990919063ffffffff16565b6001600160a01b038c16600090815260026020526040902054909150611b7a9088611993565b6001600160a01b03808d16600090815260026020908152604080832094909455918d16815260039091522054611bb090856118dc565b6001600160a01b038b16600090815260036020908152604080832093909355600290522054611a9890876118dc565b6000611be9611870565b9050600080600080600080611bfd88611936565b9550955095509550955095506000611c1e8883611f4990919063ffffffff16565b6001600160a01b038c16600090815260026020526040902054909150611a699088611993565b6000611c4e611870565b9050600080600080600080611c6288611936565b9550955095509550955095506000611c838883611f4990919063ffffffff16565b6001600160a01b038c16600090815260036020526040902054909150611ca9908a611993565b6001600160a01b038c16600090815260036020908152604080832093909355600290522054611b7a9088611993565b6008546007546000918291825b600654811015611e0957826002600060068481548110611d0157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611d665750816003600060068481548110611d3f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611d7d5760085460075494509450505050611e37565b611dbd6002600060068481548110611d9157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611993565b9250611dff6003600060068481548110611dd357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611993565b9150600101611ce5565b50600754600854611e1991611893565b821015611e3157600854600754935093505050611e37565b90925090505b9091565b60008183611e8a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561182d578181015183820152602001611815565b506000838581611e9657fe5b0495945050505050565b6000808080611ebc6064611eb681818b8b611f49565b90611893565b90506000611ed16064611eb681818c8b611f49565b90506000611ee982611ee38b86611993565b90611993565b9992985090965090945050505050565b6000808080611f088886611f49565b90506000611f168887611f49565b90506000611f248888611f49565b90506000611f3682611ee38686611993565b939b939a50919850919650505050505050565b600082611f5857506000610624565b82820282848281611f6557fe5b04146118d55760405162461bcd60e51b815260040180806020018281038252602181526020018061219f6021913960400191505060405180910390fd5b611fbb83611ee38660085461199390919063ffffffff16565b600855600954611fcb90836118dc565b600955600a54611fdb90826118dc565b600a55600d54611feb90826118dc565b600d55600754611ffb9082611993565b600755600d546a010dfde374787bc6e000001161205457600d546986fef1ba3c3de370000090612036906a010dfde374787bc6e00000611993565b600d556000600c556120496101f46108b0565b6120528161205a565b505b50505050565b600b546120689060016118dc565b600b5560075461207890826118dc565b600755600b546094108061209957506007546a04ac6f1d1d390b6740000010155b156120a6576120a66120a9565b50565b6120b360006108b0565b56fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220ef6fefc17ec7a01d2b4e8b68a48177badf8002a28a24fde9bde8819f5f6d3aeb64736f6c634300060c0033

Deployed ByteCode Sourcemap

17472:17253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19588:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20500:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20500:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21611:87;;;:::i;:::-;;;;;;;;;;;;;;;;19865:95;;;:::i;20669:313::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20669:313:0;;;;;;;;;;;;;;;;;:::i;22635:253::-;;;;;;;;;;;;;;;;-1:-1:-1;22635:253:0;;:::i;34009:91::-;;;:::i;19774:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20990:218;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20990:218:0;;;;;;;;:::i;21806:377::-;;;;;;;;;;;;;;;;-1:-1:-1;21806:377:0;;:::i;:::-;;21710:88;;;:::i;33523:180::-;;;;;;;;;;;;;;;;-1:-1:-1;33523:180:0;;:::i;22191:436::-;;;;;;;;;;;;;;;;-1:-1:-1;22191:436:0;;;;;;;;;:::i;33711:88::-;;;:::i;19968:198::-;;;;;;;;;;;;;;;;-1:-1:-1;19968:198:0;-1:-1:-1;;;;;19968:198:0;;:::i;16918:148::-;;;:::i;16276:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;16276:79:0;;;;;;;;;;;;;;17677:33;;;;;;;;;;;;;;;;-1:-1:-1;17677:33:0;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;17677:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34108:94;;;:::i;21216:269::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21216:269:0;;;;;;;;:::i;20174:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20174:167:0;;;;;;;;:::i;33910:91::-;;;:::i;21493:110::-;;;;;;;;;;;;;;;;-1:-1:-1;21493:110:0;-1:-1:-1;;;;;21493:110:0;;:::i;20349:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20349:143:0;;;;;;;;;;:::i;22896:443::-;;;;;;;;;;;;;;;;-1:-1:-1;22896:443:0;-1:-1:-1;;;;;22896:443:0;;:::i;17221:244::-;;;;;;;;;;;;;;;;-1:-1:-1;17221:244:0;-1:-1:-1;;;;;17221:244:0;;:::i;23347:478::-;;;;;;;;;;;;;;;;-1:-1:-1;23347:478:0;-1:-1:-1;;;;;23347:478:0;;:::i;19588:83::-;19658:5;;;;;;;;;;;;-1:-1:-1;;;19658:5:0;;;;19588:83;:::o;20500:161::-;20575:4;20592:39;20601:12;:10;:12::i;:::-;20615:7;20624:6;20592:8;:39::i;:::-;-1:-1:-1;20649:4:0;20500:161;;;;;:::o;21611:87::-;21680:10;;21611:87;:::o;19865:95::-;19945:7;;19865:95;:::o;20669:313::-;20767:4;20784:36;20794:6;20802:9;20813:6;20784:9;:36::i;:::-;20831:121;20840:6;20848:12;:10;:12::i;:::-;20862:89;20900:6;20862:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20862:19:0;;;;;;:11;:19;;;;;;20882:12;:10;:12::i;:::-;-1:-1:-1;;;;;20862:33:0;;;;;;;;;;;;-1:-1:-1;20862:33:0;;;:89;:37;:89::i;:::-;20831:8;:121::i;:::-;-1:-1:-1;20970:4:0;20669:313;;;;;:::o;22635:253::-;22701:7;22740;;22729;:18;;22721:73;;;;-1:-1:-1;;;22721:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22805:19;22828:10;:8;:10::i;:::-;22805:33;-1:-1:-1;22856:24:0;:7;22805:33;22856:11;:24::i;:::-;22849:31;;;22635:253;;;;:::o;34009:91::-;34081:11;;34009:91;:::o;19774:83::-;18193:2;19774:83;:::o;20990:218::-;21078:4;21095:83;21104:12;:10;:12::i;:::-;21118:7;21127:50;21166:10;21127:11;:25;21139:12;:10;:12::i;:::-;-1:-1:-1;;;;;21127:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;21127:25:0;;;:34;;;;;;;;;;;:38;:50::i;21806:377::-;21858:14;21875:12;:10;:12::i;:::-;-1:-1:-1;;;;;21907:19:0;;;;;;:11;:19;;;;;;21858:29;;-1:-1:-1;21907:19:0;;21906:20;21898:77;;;;-1:-1:-1;;;21898:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21987:15;22011:19;22022:7;22011:10;:19::i;:::-;-1:-1:-1;;;;;;;;;22059:15:0;;;;;;:7;:15;;;;;;21986:44;;-1:-1:-1;22059:28:0;;:15;-1:-1:-1;21986:44:0;22059:19;:28::i;:::-;-1:-1:-1;;;;;22041:15:0;;;;;;:7;:15;;;;;:46;22108:7;;:20;;22120:7;22108:11;:20::i;:::-;22098:7;:30;22152:10;;:23;;22167:7;22152:14;:23::i;:::-;22139:10;:36;-1:-1:-1;;;21806:377:0:o;21710:88::-;21779:11;;21710:88;:::o;33523:180::-;16498:12;:10;:12::i;:::-;16488:6;;-1:-1:-1;;;;;16488:6:0;;;:22;;;16480:67;;;;;-1:-1:-1;;;16480:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16480:67:0;;;;;;;;;;;;;;;33629:4:::1;33618:7;:15;;33594:71;;;::::0;;-1:-1:-1;;;33594:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33676:9;:19:::0;33523:180::o;22191:436::-;22281:7;22320;;22309;:18;;22301:62;;;;;-1:-1:-1;;;22301:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22379:17;22374:246;;22414:15;22438:19;22449:7;22438:10;:19::i;:::-;-1:-1:-1;22413:44:0;;-1:-1:-1;22472:14:0;;-1:-1:-1;;;;;22472:14:0;22374:246;22521:23;22552:19;22563:7;22552:10;:19::i;:::-;-1:-1:-1;22519:52:0;;-1:-1:-1;22586:22:0;;-1:-1:-1;;;;;22586:22:0;33711:88;33782:9;;33711:88;:::o;19968:198::-;-1:-1:-1;;;;;20058:20:0;;20034:7;20058:20;;;:11;:20;;;;;;;;20054:49;;;-1:-1:-1;;;;;;20087:16:0;;;;;;:7;:16;;;;;;20080:23;;20054:49;-1:-1:-1;;;;;20141:16:0;;;;;;:7;:16;;;;;;20121:37;;:19;:37::i;16918:148::-;16498:12;:10;:12::i;:::-;16488:6;;-1:-1:-1;;;;;16488:6:0;;;:22;;;16480:67;;;;;-1:-1:-1;;;16480:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16480:67:0;;;;;;;;;;;;;;;17025:1:::1;17009:6:::0;;16988:40:::1;::::0;-1:-1:-1;;;;;17009:6:0;;::::1;::::0;16988:40:::1;::::0;17025:1;;16988:40:::1;17056:1;17039:19:::0;;-1:-1:-1;;;;;;17039:19:0::1;::::0;;16918:148::o;16276:79::-;16314:7;16341:6;-1:-1:-1;;;;;16341:6:0;16276:79;:::o;17677:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17677:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17677:33:0;;;;-1:-1:-1;;;;;17677:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34108:94::-;34182:12;;34108:94;:::o;21216:269::-;21309:4;21326:129;21335:12;:10;:12::i;:::-;21349:7;21358:96;21397:15;21358:96;;;;;;;;;;;;;;;;;:11;:25;21370:12;:10;:12::i;:::-;-1:-1:-1;;;;;21358:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;21358:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;20174:167::-;20252:4;20269:42;20279:12;:10;:12::i;:::-;20293:9;20304:6;20269:9;:42::i;33910:91::-;33978:15;;33910:91;:::o;21493:110::-;-1:-1:-1;;;;;21575:20:0;21551:4;21575:20;;;:11;:20;;;;;;;;;21493:110::o;20349:143::-;-1:-1:-1;;;;;20457:18:0;;;20430:7;20457:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20349:143::o;22896:443::-;16498:12;:10;:12::i;:::-;16488:6;;-1:-1:-1;;;;;16488:6:0;;;:22;;;16480:67;;;;;-1:-1:-1;;;16480:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16480:67:0;;;;;;;;;;;;;;;22988:42:::1;-1:-1:-1::0;;;;;22977:53:0;::::1;;;22969:100;;;;-1:-1:-1::0;;;22969:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23089:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23088:21;23080:61;;;::::0;;-1:-1:-1;;;23080:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;23155:16:0;::::1;23174:1;23155:16:::0;;;:7:::1;:16;::::0;;;;;:20;23152:108:::1;;-1:-1:-1::0;;;;;23231:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23211:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23192:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;23152:108:::1;-1:-1:-1::0;;;;;23270:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23270:27:0::1;23293:4;23270:27:::0;;::::1;::::0;;;23308:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23308:23:0::1;::::0;;::::1;::::0;;22896:443::o;17221:244::-;16498:12;:10;:12::i;:::-;16488:6;;-1:-1:-1;;;;;16488:6:0;;;:22;;;16480:67;;;;;-1:-1:-1;;;16480:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16480:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17310:22:0;::::1;17302:73;;;;-1:-1:-1::0;;;17302:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17412:6;::::0;;17391:38:::1;::::0;-1:-1:-1;;;;;17391:38:0;;::::1;::::0;17412:6;::::1;::::0;17391:38:::1;::::0;::::1;17440:6;:17:::0;;-1:-1:-1;;;;;;17440:17:0::1;-1:-1:-1::0;;;;;17440:17:0;;;::::1;::::0;;;::::1;::::0;;17221:244::o;23347:478::-;16498:12;:10;:12::i;:::-;16488:6;;-1:-1:-1;;;;;16488:6:0;;;:22;;;16480:67;;;;;-1:-1:-1;;;16480:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16480:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23428:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23420:60;;;::::0;;-1:-1:-1;;;23420:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23496:9;23491:327;23515:9;:16:::0;23511:20;::::1;23491:327;;;23573:7;-1:-1:-1::0;;;;;23557:23:0::1;:9;23567:1;23557:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23557:12:0::1;:23;23553:254;;;23616:9;23626:16:::0;;-1:-1:-1;;23626:20:0;;;23616:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;23601:9:::1;:12:::0;;-1:-1:-1;;;;;23616:31:0;;::::1;::::0;23611:1;;23601:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23601:46:0::1;-1:-1:-1::0;;;;;23601:46:0;;::::1;;::::0;;23666:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23705:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23705:28:0::1;::::0;;23752:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23752:15:0;;;;;-1:-1:-1;;;;;;23752:15:0::1;::::0;;;;;23786:5:::1;;23553:254;23533:3;;23491:327;;;;23347:478:::0;:::o;742:106::-;830:10;742:106;:::o;23833:337::-;-1:-1:-1;;;;;23926:19:0;;23918:68;;;;-1:-1:-1;;;23918:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24005:21:0;;23997:68;;;;-1:-1:-1;;;23997:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24078:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24130:32;;;;;;;;;;;;;;;;;23833:337;;;:::o;24178:3756::-;-1:-1:-1;;;;;24275:20:0;;24267:70;;;;-1:-1:-1;;;24267:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24356:23:0;;24348:71;;;;-1:-1:-1;;;24348:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24447:1;24438:6;:10;24430:64;;;;-1:-1:-1;;;24430:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24754:7;:5;:7::i;:::-;-1:-1:-1;;;;;24744:17:0;:6;-1:-1:-1;;;;;24744:17:0;;;:41;;;;;24778:7;:5;:7::i;:::-;-1:-1:-1;;;;;24765:20:0;:9;-1:-1:-1;;;;;24765:20:0;;;24744:41;24741:134;;;18900:26;24808:22;;;24800:75;;;;-1:-1:-1;;;24800:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24904:3;24891:9;;:16;24888:2400;;24944:12;;:24;;24961:6;24944:16;:24::i;:::-;24929:12;:39;25113:12;;25130:21;-1:-1:-1;25070:2193:0;;25172:16;25184:3;25172:11;:16::i;:::-;25070:2193;;;25213:12;;25230:24;-1:-1:-1;25213:42:0;;;:88;;-1:-1:-1;25259:12:0;;25276:24;-1:-1:-1;25259:42:0;25213:88;25210:2053;;;25321:16;25333:3;25321:11;:16::i;25210:2053::-;25364:12;;25381:24;-1:-1:-1;25364:42:0;;;:88;;-1:-1:-1;25410:12:0;;25427:24;-1:-1:-1;25410:42:0;25364:88;25361:1902;;;25472:16;25484:3;25472:11;:16::i;25361:1902::-;25515:12;;25532:24;-1:-1:-1;25515:42:0;;;:88;;-1:-1:-1;25561:12:0;;25578:24;-1:-1:-1;25561:42:0;25515:88;25512:1751;;;25623:16;25635:3;25623:11;:16::i;25512:1751::-;25664:12;;25681:24;-1:-1:-1;25664:42:0;;;:88;;-1:-1:-1;25710:12:0;;25727:24;-1:-1:-1;25710:42:0;25664:88;25661:1602;;;25772:16;25784:3;25772:11;:16::i;25661:1602::-;25813:12;;25830:24;-1:-1:-1;25813:42:0;;;:88;;-1:-1:-1;25859:12:0;;25876:24;-1:-1:-1;25859:42:0;25813:88;25810:1453;;;25921:16;25933:3;25921:11;:16::i;25810:1453::-;25962:12;;25979:24;-1:-1:-1;25962:42:0;;;:88;;-1:-1:-1;26008:12:0;;26025:24;-1:-1:-1;26008:42:0;25962:88;25959:1304;;;26070:16;26082:3;26070:11;:16::i;25959:1304::-;26111:12;;26128:24;-1:-1:-1;26111:42:0;;;:88;;-1:-1:-1;26157:12:0;;26174:24;-1:-1:-1;26157:42:0;26111:88;26108:1155;;;26219:16;26231:3;26219:11;:16::i;26108:1155::-;26260:12;;26277:24;-1:-1:-1;26260:42:0;;;:88;;-1:-1:-1;26306:12:0;;26323:24;-1:-1:-1;26306:42:0;26260:88;26257:1006;;;26368:16;26380:3;26368:11;:16::i;26257:1006::-;26409:12;;26426:24;-1:-1:-1;26409:42:0;;;:89;;-1:-1:-1;26455:12:0;;26472:25;-1:-1:-1;26455:43:0;26409:89;26406:857;;;26518:16;26530:3;26518:11;:16::i;26406:857::-;26559:12;;26576:25;-1:-1:-1;26559:43:0;;;:90;;-1:-1:-1;26606:12:0;;26623:25;-1:-1:-1;26606:43:0;26559:90;26556:707;;;26669:17;26681:4;26669:11;:17::i;26556:707::-;26711:12;;26728:25;-1:-1:-1;26711:43:0;;;:90;;-1:-1:-1;26758:12:0;;26775:25;-1:-1:-1;26758:43:0;26711:90;26708:555;;;26821:17;26833:4;26821:11;:17::i;26708:555::-;26863:12;;26880:25;-1:-1:-1;26863:43:0;;;:90;;-1:-1:-1;26910:12:0;;26927:25;-1:-1:-1;26910:43:0;26863:90;26860:403;;;26973:17;26985:4;26973:11;:17::i;26860:403::-;27015:12;;27032:25;-1:-1:-1;27015:43:0;;;:90;;-1:-1:-1;27062:12:0;;27079:25;-1:-1:-1;27062:43:0;27015:90;27012:251;;;27125:17;27137:4;27125:11;:17::i;27012:251::-;27167:12;;27184:25;-1:-1:-1;27164:99:0;;27230:17;27242:4;27230:11;:17::i;:::-;-1:-1:-1;;;;;27334:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;27358:22:0;;;;;;:11;:22;;;;;;;;27357:23;27334:46;27330:597;;;27397:48;27419:6;27427:9;27438:6;27397:21;:48::i;:::-;27330:597;;;-1:-1:-1;;;;;27468:19:0;;;;;;:11;:19;;;;;;;;27467:20;:46;;;;-1:-1:-1;;;;;;27491:22:0;;;;;;:11;:22;;;;;;;;27467:46;27463:464;;;27530:46;27550:6;27558:9;27569:6;27530:19;:46::i;27463:464::-;-1:-1:-1;;;;;27599:19:0;;;;;;:11;:19;;;;;;;;27598:20;:47;;;;-1:-1:-1;;;;;;27623:22:0;;;;;;:11;:22;;;;;;;;27622:23;27598:47;27594:333;;;27662:44;27680:6;27688:9;27699:6;27662:17;:44::i;27594:333::-;-1:-1:-1;;;;;27728:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;27751:22:0;;;;;;:11;:22;;;;;;;;27728:45;27724:203;;;27790:48;27812:6;27820:9;27831:6;27790:21;:48::i;27724:203::-;27871:44;27889:6;27897:9;27908:6;27871:17;:44::i;:::-;24178:3756;;;:::o;5552:192::-;5638:7;5674:12;5666:6;;;;5658:29;;;;-1:-1:-1;;;5658:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5710:5:0;;;5552:192::o;32599:163::-;32640:7;32661:15;32678;32697:19;:17;:19::i;:::-;32660:56;;-1:-1:-1;32660:56:0;-1:-1:-1;32734:20:0;32660:56;;32734:11;:20::i;:::-;32727:27;;;;32599:163;:::o;6950:132::-;7008:7;7035:39;7039:1;7042;7035:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7028:46;6950:132;-1:-1:-1;;;6950:132:0:o;4649:181::-;4707:7;4739:5;;;4763:6;;;;4755:46;;;;;-1:-1:-1;;;4755:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;31301:470;31360:7;31369;31378;31387;31396;31405;31426:23;31451:12;31465:13;31482:41;31494:7;31503:8;;31513:9;;31482:11;:41::i;:::-;31425:98;;;;;;31534:19;31557:10;:8;:10::i;:::-;31534:33;;31579:15;31596:23;31621:12;31637:46;31649:7;31658:4;31664:5;31671:11;31637;:46::i;:::-;31578:105;;-1:-1:-1;31578:105:0;-1:-1:-1;31578:105:0;-1:-1:-1;31734:15:0;;-1:-1:-1;31751:4:0;;-1:-1:-1;31757:5:0;;-1:-1:-1;;;;;31301:470:0;;;;;;;:::o;5113:136::-;5171:7;5198:43;5202:1;5205;5198:43;;;;;;;;;;;;;;;;;:3;:43::i;29191:635::-;29293:19;29316:10;:8;:10::i;:::-;29293:33;;29338:15;29355:23;29380:12;29394:23;29419:12;29433:13;29450:19;29461:7;29450:10;:19::i;:::-;29337:132;;;;;;;;;;;;29480:13;29497:22;29507:11;29497:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;29548:15:0;;;;;;:7;:15;;;;;;29480:39;;-1:-1:-1;29548:28:0;;29568:7;29548:19;:28::i;:::-;-1:-1:-1;;;;;29530:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29605:7;:15;;;;:28;;29625:7;29605:19;:28::i;:::-;-1:-1:-1;;;;;29587:15:0;;;;;;;:7;:15;;;;;;:46;;;;29665:18;;;;;;;:39;;29688:15;29665:22;:39::i;:::-;-1:-1:-1;;;;;29644:18:0;;;;;;:7;:18;;;;;:60;29718:40;29733:4;29739:5;29746:4;29752:5;29718:14;:40::i;:::-;29791:9;-1:-1:-1;;;;;29774:44:0;29783:6;-1:-1:-1;;;;;29774:44:0;;29802:15;29774:44;;;;;;;;;;;;;;;;;;29191:635;;;;;;;;;;;:::o;28528:655::-;28628:19;28651:10;:8;:10::i;:::-;28628:33;;28673:15;28690:23;28715:12;28729:23;28754:12;28768:13;28785:19;28796:7;28785:10;:19::i;:::-;28672:132;;;;;;;;;;;;28815:13;28832:22;28842:11;28832:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;28883:15:0;;;;;;:7;:15;;;;;;28815:39;;-1:-1:-1;28883:28:0;;28903:7;28883:19;:28::i;:::-;-1:-1:-1;;;;;28865:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28943:18;;;;;:7;:18;;;;;:39;;28966:15;28943:22;:39::i;:::-;-1:-1:-1;;;;;28922:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29014:7;:18;;;;:39;;29037:15;29014:22;:39::i;27942:578::-;28040:19;28063:10;:8;:10::i;:::-;28040:33;;28085:15;28102:23;28127:12;28141:23;28166:12;28180:13;28197:19;28208:7;28197:10;:19::i;:::-;28084:132;;;;;;;;;;;;28227:13;28244:22;28254:11;28244:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;28295:15:0;;;;;;:7;:15;;;;;;28227:39;;-1:-1:-1;28295:28:0;;28315:7;28295:19;:28::i;29834:711::-;29936:19;29959:10;:8;:10::i;:::-;29936:33;;29981:15;29998:23;30023:12;30037:23;30062:12;30076:13;30093:19;30104:7;30093:10;:19::i;:::-;29980:132;;;;;;;;;;;;30123:13;30140:22;30150:11;30140:5;:9;;:22;;;;:::i;:::-;-1:-1:-1;;;;;30191:15:0;;;;;;:7;:15;;;;;;30123:39;;-1:-1:-1;30191:28:0;;30211:7;30191:19;:28::i;:::-;-1:-1:-1;;;;;30173:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30248:7;:15;;;;:28;;30268:7;30248:19;:28::i;32770:561::-;32867:7;;32903;;32820;;;;;32927:289;32951:9;:16;32947:20;;32927:289;;;33017:7;32993;:21;33001:9;33011:1;33001:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33001:12:0;32993:21;;;;;;;;;;;;;:31;;:66;;;33052:7;33028;:21;33036:9;33046:1;33036:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33036:12:0;33028:21;;;;;;;;;;;;;:31;32993:66;32989:97;;;33069:7;;33078;;33061:25;;;;;;;;;32989:97;33111:34;33123:7;:21;33131:9;33141:1;33131:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33131:12:0;33123:21;;;;;;;;;;;;;33111:7;;:11;:34::i;:::-;33101:44;;33170:34;33182:7;:21;33190:9;33200:1;33190:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33190:12:0;33182:21;;;;;;;;;;;;;33170:7;;:11;:34::i;:::-;33160:44;-1:-1:-1;32969:3:0;;32927:289;;;-1:-1:-1;33252:7:0;;33240;;:20;;:11;:20::i;:::-;33230:7;:30;33226:61;;;33270:7;;33279;;33262:25;;;;;;;;33226:61;33306:7;;-1:-1:-1;33315:7:0;-1:-1:-1;32770:561:0;;;:::o;7578:278::-;7664:7;7699:12;7692:5;7684:28;;;;-1:-1:-1;;;7684:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7723:9;7739:1;7735;:5;;;;;;;7578:278;-1:-1:-1;;;;;7578:278:0:o;31779:395::-;31872:7;;;;31925:50;31971:3;31926:39;31971:3;31926:39;31927:7;31939:6;31927:11;:19::i;:::-;31926:25;;:39::i;31925:50::-;31910:65;-1:-1:-1;31986:13:0;32002:51;32049:3;32003:40;32049:3;32003:40;32004:7;32016;32004:11;:20::i;32002:51::-;31986:67;-1:-1:-1;32064:23:0;32090:28;31986:67;32090:17;:7;32102:4;32090:11;:17::i;:::-;:21;;:28::i;:::-;32064:54;32154:4;;-1:-1:-1;32160:5:0;;-1:-1:-1;31779:395:0;;-1:-1:-1;;;;;31779:395:0:o;32182:409::-;32292:7;;;;32348:24;:7;32360:11;32348;:24::i;:::-;32330:42;-1:-1:-1;32383:12:0;32398:21;:4;32407:11;32398:8;:21::i;:::-;32383:36;-1:-1:-1;32430:13:0;32446:22;:5;32456:11;32446:9;:22::i;:::-;32430:38;-1:-1:-1;32479:23:0;32505:28;32430:38;32505:17;:7;32517:4;32505:11;:17::i;:28::-;32552:7;;;;-1:-1:-1;32578:4:0;;-1:-1:-1;32182:409:0;;-1:-1:-1;;;;;;;32182:409:0:o;6003:471::-;6061:7;6306:6;6302:47;;-1:-1:-1;6336:1:0;6329:8;;6302:47;6373:5;;;6377:1;6373;:5;:1;6397:5;;;;;:10;6389:56;;;;-1:-1:-1;;;6389:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30553:740;30664:28;30686:5;30664:17;30676:4;30664:7;;:11;;:17;;;;:::i;:28::-;30654:7;:38;30716:10;;:20;;30731:4;30716:14;:20::i;:::-;30703:10;:33;30761:11;;:22;;30777:5;30761:15;:22::i;:::-;30747:11;:36;30808:11;;:22;;30824:5;30808:15;:22::i;:::-;30794:11;:36;30851:7;;:18;;30863:5;30851:11;:18::i;:::-;30841:7;:28;30972:11;;30988:24;-1:-1:-1;30969:316:0;;31113:11;;31057:23;;31113:43;;31130:24;31113:15;:43::i;:::-;31099:11;:57;31190:1;31175:12;:16;31210;31222:3;31210:11;:16::i;:::-;31247:22;31255:13;31247:7;:22::i;:::-;30969:316;;30553:740;;;;:::o;34214:422::-;34290:15;;:22;;34310:1;34290:19;:22::i;:::-;34272:15;:40;34333:7;;:24;;34345:11;34333;:24::i;:::-;34323:7;:34;34518:15;;34536:3;-1:-1:-1;34518:21:0;:60;;-1:-1:-1;34543:7:0;;34554:24;-1:-1:-1;34543:35:0;34518:60;34515:114;;;34594:23;:21;:23::i;:::-;34214:422;:::o;34644:75::-;34697:14;34709:1;34697:11;:14::i;:::-;34644:75::o

Swarm Source

ipfs://ef6fefc17ec7a01d2b4e8b68a48177badf8002a28a24fde9bde8819f5f6d3aeb
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading