Contract 0xd2870bcb0e0bd6e9b34e32aa534aa0444d195028

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x2ceb79ee45a16d47b679248041f26d311878f00a912a19da8ab2d894eac760d2Approve122046362024-01-22 17:31:0337 days 22 hrs agoCronos ID Name godofjobless.cro IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.47017520
0xd9b66528965ded1205914721ed0bdafb8cb7a93c57745799c071521895cf54d8Approve117900052023-12-26 18:48:1364 days 21 hrs ago0x32f8b9b55020626131862cc1005593136b1906dc IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.47017520
0x43fa6cdd724ef48c3d195182022b7fc00bee48508477c10c11118168706efb85Transfer117752942023-12-25 19:51:0965 days 20 hrs agoCronos ID Name x111x.cro IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO1.20579860
0x168b4825d5eec29d867c7323e19fb67d645a5cb9dcdb13946a8ba337dbc57898Approve117718892023-12-25 14:32:5966 days 1 hr ago0x88357aecfda7e54ac9fbe976761a51fb13238e51 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.469768675349 10,091.2673
0xc7443c7d8989e71aa5cbcfee917c12c67c4eea5e54ba3cb139badee34fcedcddApprove116506692023-12-17 17:27:5173 days 22 hrs ago0xad49bdb953a4ed67badcc0e3045b6c06fd144120 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.24510680
0x303cd2b8f1d850e4151779b7911ea7ab162616b9f0528163874dfb96e2078aafApprove116506682023-12-17 17:27:4573 days 22 hrs ago0xad49bdb953a4ed67badcc0e3045b6c06fd144120 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.24510680
0x773b0f9c41d723debca169e1b764561fc8a4b89e04e0bcc2107d12844beb4e0aApprove113118422023-11-25 16:03:3596 days 23 mins ago0xfd937db9420c3814933d0fd3bb4497fb2df8cc30 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.2147760992350
0x9a93214d2287737e58d744525fb19f6535db9225fe8515c6b71c0060e0bc1ceaApprove111232992023-11-13 10:06:37108 days 6 hrs ago0x3922e307e8ac7fa95daf36124d05531677c7b82e IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.2151649201430
0x4d501744600867ec404fc9ffa27045fe23adea589a42d90f9c98be895a43fb55Approve110854262023-11-10 22:50:53110 days 17 hrs ago0xc4d6573d746535ad49717f51bdaa2358eb580bb8 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.2152402879210
0x81377f7045db42cb78f9b514c8231e9a549b6644139b1dfd3dedc0204a3848b1Transfer110829562023-11-10 18:59:02110 days 21 hrs ago0xb494c956d53a55078a6d441c8b7ba7101a65ede1 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.552080123678 4,625.258655843
0xeeb17642254335902e8b45859b2ec63217237f9d3300cf1de10062f23c5e2289Approve110718312023-11-10 1:38:18111 days 14 hrs ago0xc4d6573d746535ad49717f51bdaa2358eb580bb8 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.2152680781190
0x17baffb883026a8efc216c6a043fd58e4bc621d20b38b9376296c2d4d26139f5Approve103846202023-09-26 5:41:16156 days 10 hrs ago0x83a76d3d563a57b3ee7689232c3789e64ba71772 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.112972154006 4,655.190127166
0xd6efb14bb28551b7626512ba9348c31538fcfccef5f8627d33cd84bda103b7acApprove103387792023-09-23 5:54:36159 days 10 hrs ago0x20886778d8defad8c137222be6a3f7e4100b235f IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.113059197447 4,658.776885088
0xf324e6254e825d420b4d5b3c667da242d175c0610d8133ba5fa5e489d81a0ba9Approve102814842023-09-19 12:14:26163 days 4 hrs agoCronos ID Name devius.cro IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.113122498791 4,661.385313626
0x5979e532babcd22db9aa084263b86e4e865b8d19a1300a32ea3d9d2d602e4ed9Transfer97094792023-08-13 4:42:34200 days 11 hrs agoCronos ID Name kyuubifox.cro IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.559501033673 4,687.430117402
0x24de663b9367d01a37192bf9e878790bdcc40cb0137f2af1082c11b3b38d3a09Approve95605052023-08-03 11:34:49210 days 4 hrs agoCronos ID Name givemore.cro IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.113882899920
0x46bccf861772f6bc237d4b6b138d1f321db82a162fbb414d85c7f54c66388a03Approve95502462023-08-02 19:31:40210 days 20 hrs ago0x80644b96c5845b88aecd9e6b6345531ead1fabd8 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.14243320
0x1223bdbc1f07f472f19048877e879ffaed2aec97f6436cb11b754fcd65169f6bTransfer Operato...94521822023-07-27 10:04:01217 days 6 hrs agoV3S Finance: Deployer IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.143804988856 4,699.663023527
0x1ce723acfe91038c8ceba7070e0d98a77acc97f1608d96e70a1ad937e089be3aBurn94521762023-07-27 10:03:30217 days 6 hrs ago0xae9ba8c7ecd399a6a9219a034c93056770bfd2fa IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.161171902944 4,699.163302365
0x992d5449c3c5f79d107b9f7434ee1a1e5696f49709f8dff233e8e92144412dc6Approve94521502023-07-27 10:01:04217 days 6 hrs ago0xae9ba8c7ecd399a6a9219a034c93056770bfd2fa IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.218755505817 4,699.164500296
0xad19879c48fc27b284d084d696e294258c721ab771f91e80d302f1f8d5e6374fMint94521442023-07-27 10:00:30217 days 6 hrs ago0xae9ba8c7ecd399a6a9219a034c93056770bfd2fa IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.253880590609 4,699.664771278
0xa39dab9e0f4c6236d23f51f96294520f49a4298047592214073e2a52a2353656Transfer Operato...94521352023-07-27 9:59:38217 days 6 hrs agoV3S Finance: Deployer IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.143861450921 4,699.665183142
0xfde4b9aa10d1b6b51d6f20a01bbe7ad8d3b1bd73c90626b6f179d33d0edd5897Approve94117282023-07-24 18:38:01219 days 21 hrs ago0x242339ae76f24b52f36e547d412028a0e23e78e8 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.232760
0xee8b966de6eb4676ef5fe5a6f146dc4cb27d06ac71d0f4a48c76f95871a56548Approve93640862023-07-21 16:04:30223 days 22 mins ago0x242339ae76f24b52f36e547d412028a0e23e78e8 IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.2188725373360
0xc78f1e2832f0886861e85d9d95849891bc411e9b9e36a01ef896d8cfa3a6629bApprove91894712023-07-10 6:45:27234 days 9 hrs ago0xdfb1c86e93c0e07f747cf969eee4ced350ac2cff IN  0xd2870bcb0e0bd6e9b34e32aa534aa0444d1950280 CRO0.1387077846050
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x1b204b21cfd6b8589f4f5197bc58fd97790df375d38257e62ba4b914ca69086c25286632022-04-28 8:04:21672 days 8 hrs ago 0x11583949e1fb6e2770930e19e163d337d87bcc27  Contract Creation0 CRO
[ Download CSV Export 
Index Block
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0fb5a7a62d9cf142d30f73d70d174e14f2038d6c
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
V3PegToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 9999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-04-14
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 `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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        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)
    {
        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)
    {
        // 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)
    {
        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)
    {
        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) {
        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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        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, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b > 0, "SafeMath: modulo by zero");
        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) {
        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.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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);
        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) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    using SafeMath for uint256;

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(
            amount,
            "ERC20: burn amount exceeds allowance"
        );

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }
}

/**
 * @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.
 */
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() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        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 Operator is Context, Ownable {
    address private _operator;

    event OperatorTransferred(
        address indexed previousOperator,
        address indexed newOperator
    );

    constructor() internal {
        _operator = _msgSender();
        emit OperatorTransferred(address(0), _operator);
    }

    function operator() public view returns (address) {
        return _operator;
    }

    modifier onlyOperator() {
        require(
            _operator == msg.sender,
            "operator: caller is not the operator"
        );
        _;
    }

    function isOperator() public view returns (bool) {
        return _msgSender() == _operator;
    }

    function transferOperator(address newOperator_) public onlyOwner {
        _transferOperator(newOperator_);
    }

    function _transferOperator(address newOperator_) internal {
        require(
            newOperator_ != address(0),
            "operator: zero address given for new operator"
        );
        emit OperatorTransferred(address(0), newOperator_);
        _operator = newOperator_;
    }
}

interface IOracle {
    function update() external;

    function consult(address _token, uint256 _amountIn)
        external
        view
        returns (uint144 amountOut);

    function twap(address _token, uint256 _amountIn)
        external
        view
        returns (uint144 _amountOut);

    function getPegPrice() external view returns (int256);

    function getPegPriceUpdated() external view returns (int256);
}

interface ILiquidityFund {
    function addLiquidity(uint256 _amount) external;
}

contract V3PegToken is ERC20Burnable, Operator {
    using SafeMath for uint256;

    /* ========== STATE VARIABLES ========== */

    bool public addLiquidityEnabled = false;

    address public oracle;

    uint256 public burnRate;
    uint256 public taxRate; // buy back V3S-Peg Token and add liquidity
    address public taxFund; // fund buy back V3S-Peg Token

    uint256 private _totalBurned;
    uint256 private _totalTaxAdded;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedToFee;

    /* =================== Added variables (need to keep orders for proxy to work) =================== */
    /*...

    /* ========== EVENTS ========== */

    event TaxAdded(address indexed account, address taxFund, uint256 amount);

    /* ========== Modifiers =============== */

    /* ========== GOVERNANCE ========== */

    /**
     * @notice Constructs the V3S-Peg Token ERC-20 contract.
     */
    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        address _taxFund
    ) public ERC20(name_, symbol_) {
        // "V3S-Peg TONIC", "V3S-Peg Token"
        _setupDecimals(decimals_);
        taxFund = _taxFund;
        burnRate = 750;
        taxRate = 750;
    }

    function setOracle(address _oracle) external onlyOwner {
        oracle = _oracle;
    }

    function toggleAddLiquidityEnabled() external onlyOwner {
        addLiquidityEnabled = !addLiquidityEnabled;
    }

    function setBurnRate(uint256 _burnRate) external onlyOwner {
        require(_burnRate <= 1500, "too high"); // <= 15%
        burnRate = _burnRate;
    }

    function setTaxRate(uint256 _taxRate) external onlyOwner {
        require(_taxRate <= 1500, "too high"); // <= 15%
        taxRate = _taxRate;
    }

    function setTaxFund(address _taxFund) external onlyOwner {
        require(_taxFund != address(0), "zero");
        taxFund = _taxFund;
    }

    function setExcludeFromFee(address _account, bool _status)
        external
        onlyOwner
    {
        _isExcludedFromFee[_account] = _status;
    }

    function setExcludeToFee(address _account, bool _status)
        external
        onlyOwner
    {
        _isExcludedToFee[_account] = _status;
    }

    function setExcludeBothDirectionsFee(address _account, bool _status)
        external
        onlyOwner
    {
        _isExcludedFromFee[_account] = _status;
        _isExcludedToFee[_account] = _status;
    }

    /* ========== VIEW FUNCTIONS ========== */

    function totalBurned() external view returns (uint256) {
        return _totalBurned;
    }

    function totalTaxAdded() external view returns (uint256) {
        return _totalTaxAdded;
    }

    function getTokenPrice() public view returns (uint256) {
        address _oracle = oracle;
        return
            (_oracle == address(0))
                ? 1e18
                : uint256(IOracle(_oracle).consult(address(this), 1e18));
    }

    function getTokenUpdatedPrice() public view returns (uint256) {
        address _oracle = oracle;
        return
            (_oracle == address(0))
                ? 1e18
                : uint256(IOracle(_oracle).twap(address(this), 1e18));
    }

    function isExcludedFromFee(address _account) external view returns (bool) {
        return _isExcludedFromFee[_account];
    }

    function isExcludedToFee(address _account) external view returns (bool) {
        return _isExcludedToFee[_account];
    }

    /* ========== MUTATIVE FUNCTIONS ========== */

    /**
     * @notice Operator mints basis V3S-Peg Token to a recipient
     * @param recipient_ The address of recipient
     * @param amount_ The amount of basis V3S-Peg Token to mint to
     * @return whether the process has been done
     */
    function mint(address recipient_, uint256 amount_)
        public
        onlyOperator
        returns (bool)
    {
        uint256 balanceBefore = balanceOf(recipient_);
        _mint(recipient_, amount_);
        uint256 balanceAfter = balanceOf(recipient_);

        return balanceAfter > balanceBefore;
    }

    function burn(uint256 amount) public override {
        super.burn(amount);
    }

    function burnFrom(address account, uint256 amount)
        public
        override
        onlyOperator
    {
        super.burnFrom(account, amount);
    }

    /* ========== OVERRIDE STANDARD FUNCTIONS ========== */

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `_account` cannot be the zero address.
     * - `_account` must have at least `_amount` tokens.
     */
    function _burn(address _account, uint256 _amount) internal override {
        super._burn(_account, _amount);
        _totalBurned = _totalBurned.add(_amount);
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(sender != address(0), "V3Tonic: transfer to the zero address");
        require(
            recipient != address(0),
            "V3Tonic: transfer to the zero address"
        );

        uint256 _amount = amount;

        _beforeTokenTransfer(sender, recipient, _amount);

        if (!_isExcludedFromFee[sender] && !_isExcludedToFee[recipient]) {
            uint256 _tokenPrice = getTokenUpdatedPrice();
            if (_tokenPrice < 1e18) {
                {
                    uint256 _taxRate = taxRate;
                    if (_taxRate > 0) {
                        uint256 _taxAmount = amount.mul(_taxRate).div(10000);
                        address _taxFund = taxFund;
                        super._transfer(sender, _taxFund, _taxAmount);
                        _amount = _amount.sub(_taxAmount);
                        _totalTaxAdded = _totalTaxAdded.add(_taxAmount);
                        if (addLiquidityEnabled) {
                            ILiquidityFund(_taxFund).addLiquidity(_taxAmount);
                        }
                        emit TaxAdded(sender, _taxFund, _taxAmount);
                    }
                }
                {
                    uint256 _burnRate = burnRate;
                    if (_burnRate > 0) {
                        uint256 _burnAmount = amount.mul(_burnRate).div(10000);
                        _burn(sender, _burnAmount);
                        _amount = _amount.sub(_burnAmount);
                    }
                }
            }
        }

        super._transfer(sender, recipient, _amount);
    }

    /* ========== EMERGENCY ========== */

    function governanceRecoverUnsupported(IERC20 _token) external onlyOwner {
        _token.transfer(owner(), _token.balanceOf(address(this)));
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address","name":"_taxFund","type":"address"}],"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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","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":"account","type":"address"},{"indexed":false,"internalType":"address","name":"taxFund","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TaxAdded","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":"addLiquidityEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenUpdatedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"governanceRecoverUnsupported","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isExcludedToFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnRate","type":"uint256"}],"name":"setBurnRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeBothDirectionsFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxFund","type":"address"}],"name":"setTaxFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxRate","type":"uint256"}],"name":"setTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAddLiquidityEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTaxAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102c75760003560e01c806379cc67901161017b578063af9549e0116100d8578063d89135cd1161008c578063e8d4a0f311610071578063e8d4a0f314610736578063ee7e76711461075c578063f2fde38b14610782576102c7565b8063d89135cd14610700578063dd62ed3e14610708576102c7565b8063bed99850116100bd578063bed99850146106d3578063c6d69a30146106db578063c7320509146106f8576102c7565b8063af9549e01461069d578063b90e32ee146106cb576102c7565b80638b93e49e1161012f57806395d89b411161011457806395d89b411461063d578063a457c2d714610645578063a9059cbb14610671576102c7565b80638b93e49e1461062d5780638da5cb5b14610635576102c7565b80637dc0d1d0116101605780637dc0d1d0146105f7578063844f30fb146105ff5780638601394014610625576102c7565b806379cc6790146105a55780637adbf973146105d1576102c7565b806340c10f1911610229578063570ca735116101dd57806370a08231116101c257806370a082311461056f578063715018a614610595578063771a3a1d1461059d576102c7565b8063570ca7351461051d5780636409de7814610541576102c7565b80634456eda21161020e5780634456eda2146104e75780634b94f50e146104ef5780635342acb4146104f7576102c7565b806340c10f191461049e57806342966c68146104ca576102c7565b8063189d165e1161028057806329605e771161026557806329605e771461042e578063313ce567146104545780633950935114610472576102c7565b8063189d165e146103db57806323b872dd146103f8576102c7565b806306fdde03116102b157806306fdde0314610316578063095ea7b31461039357806318160ddd146103d3576102c7565b8062032104146102cc57806302317601146102e6575b600080fd5b6102d46107a8565b60408051918252519081900360200190f35b610314600480360360408110156102fc57600080fd5b506001600160a01b038135169060200135151561087f565b005b61031e61094f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610358578181015183820152602001610340565b50505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103bf600480360360408110156103a957600080fd5b506001600160a01b038135169060200135610a03565b604080519115158252519081900360200190f35b6102d4610a21565b610314600480360360208110156103f157600080fd5b5035610a27565b6103bf6004803603606081101561040e57600080fd5b506001600160a01b03813581169160208101359091169060400135610af7565b6103146004803603602081101561044457600080fd5b50356001600160a01b0316610b7e565b61045c610bfe565b6040805160ff9092168252519081900360200190f35b6103bf6004803603604081101561048857600080fd5b506001600160a01b038135169060200135610c07565b6103bf600480360360408110156104b457600080fd5b506001600160a01b038135169060200135610c55565b610314600480360360208110156104e057600080fd5b5035610ccf565b6103bf610cd8565b6102d4610cfe565b6103bf6004803603602081101561050d57600080fd5b50356001600160a01b0316610d80565b610525610d9e565b604080516001600160a01b039092168252519081900360200190f35b6103146004803603604081101561055757600080fd5b506001600160a01b0381351690602001351515610dad565b6102d46004803603602081101561058557600080fd5b50356001600160a01b0316610e6a565b610314610e85565b6102d4610f60565b610314600480360360408110156105bb57600080fd5b506001600160a01b038135169060200135610f66565b610314600480360360208110156105e757600080fd5b50356001600160a01b0316610fbd565b61052561106b565b6103bf6004803603602081101561061557600080fd5b50356001600160a01b031661107a565b6103bf611098565b6102d46110b9565b6105256110bf565b61031e6110d3565b6103bf6004803603604081101561065b57600080fd5b506001600160a01b038135169060200135611152565b6103bf6004803603604081101561068757600080fd5b506001600160a01b0381351690602001356111ba565b610314600480360360408110156106b357600080fd5b506001600160a01b03813516906020013515156111ce565b61031461128b565b6102d461134c565b610314600480360360208110156106f157600080fd5b5035611352565b610525611422565b6102d4611431565b6102d46004803603604081101561071e57600080fd5b506001600160a01b0381358116916020013516611437565b6103146004803603602081101561074c57600080fd5b50356001600160a01b0316611462565b6103146004803603602081101561077257600080fd5b50356001600160a01b031661160e565b6103146004803603602081101561079857600080fd5b50356001600160a01b0316611719565b6007546000906001600160a01b0316801561086f57604080517f6808a128000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a7640000602482015290516001600160a01b03831691636808a128916044808301926020929190829003018186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d602081101561085457600080fd5b505171ffffffffffffffffffffffffffffffffffff16610879565b670de0b6b3a76400005b91505090565b610887611850565b6001600160a01b03166108986110bf565b6001600160a01b0316146108f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b039091166000908152600d6020908152604080832080549415157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009586168117909155600e9092529091208054909216179055565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f95780601f106109ce576101008083540402835291602001916109f9565b820191906000526020600020905b8154815290600101906020018083116109dc57829003601f168201915b5050505050905090565b6000610a17610a10611850565b8484611854565b5060015b92915050565b60025490565b610a2f611850565b6001600160a01b0316610a406110bf565b6001600160a01b031614610a9b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6105dc811115610af2576040805162461bcd60e51b815260206004820152600860248201527f746f6f2068696768000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600855565b6000610b04848484611940565b610b7484610b10611850565b610b6f85604051806060016040528060288152602001612363602891396001600160a01b038a16600090815260016020526040812090610b4e611850565b6001600160a01b031681526020810191909152604001600020549190611ba7565b611854565b5060019392505050565b610b86611850565b6001600160a01b0316610b976110bf565b6001600160a01b031614610bf2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610bfb81611c3e565b50565b60055460ff1690565b6000610a17610c14611850565b84610b6f8560016000610c25611850565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611cf3565b6006546000906001600160a01b03163314610ca15760405162461bcd60e51b81526004018080602001828103825260248152602001806123af6024913960400191505060405180910390fd5b6000610cac84610e6a565b9050610cb88484611d54565b6000610cc385610e6a565b91909111949350505050565b610bfb81611e44565b6006546000906001600160a01b0316610cef611850565b6001600160a01b031614905090565b6007546000906001600160a01b0316801561086f57604080517f3ddac953000000000000000000000000000000000000000000000000000000008152306004820152670de0b6b3a7640000602482015290516001600160a01b03831691633ddac953916044808301926020929190829003018186803b15801561082a57600080fd5b6001600160a01b03166000908152600d602052604090205460ff1690565b6006546001600160a01b031690565b610db5611850565b6001600160a01b0316610dc66110bf565b6001600160a01b031614610e21576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001600160a01b031660009081526020819052604090205490565b610e8d611850565b6001600160a01b0316610e9e6110bf565b6001600160a01b031614610ef9576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60095481565b6006546001600160a01b03163314610faf5760405162461bcd60e51b81526004018080602001828103825260248152602001806123af6024913960400191505060405180910390fd5b610fb98282611e55565b5050565b610fc5611850565b6001600160a01b0316610fd66110bf565b6001600160a01b031614611031576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6007546001600160a01b031681565b6001600160a01b03166000908152600e602052604090205460ff1690565b60065474010000000000000000000000000000000000000000900460ff1681565b600c5490565b60055461010090046001600160a01b031690565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f95780601f106109ce576101008083540402835291602001916109f9565b6000610a1761115f611850565b84610b6f8560405180606001604052806025815260200161243d6025913960016000611189611850565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611ba7565b6000610a176111c7611850565b8484611940565b6111d6611850565b6001600160a01b03166111e76110bf565b6001600160a01b031614611242576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b611293611850565b6001600160a01b03166112a46110bf565b6001600160a01b0316146112ff576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff1615909102179055565b60085481565b61135a611850565b6001600160a01b031661136b6110bf565b6001600160a01b0316146113c6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6105dc81111561141d576040805162461bcd60e51b815260206004820152600860248201527f746f6f2068696768000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600955565b600a546001600160a01b031681565b600b5490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61146a611850565b6001600160a01b031661147b6110bf565b6001600160a01b0316146114d6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b806001600160a01b031663a9059cbb6114ed6110bf565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516001600160a01b038616916370a08231916024808301926020929190829003018186803b15801561154c57600080fd5b505afa158015611560573d6000803e3d6000fd5b505050506040513d602081101561157657600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156115df57600080fd5b505af11580156115f3573d6000803e3d6000fd5b505050506040513d602081101561160957600080fd5b505050565b611616611850565b6001600160a01b03166116276110bf565b6001600160a01b031614611682576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166116df576040805162461bcd60e51b8152602060048083019190915260248201527f7a65726f00000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611721611850565b6001600160a01b03166117326110bf565b6001600160a01b03161461178d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166117d25760405162461bcd60e51b81526004018080602001828103825260268152602001806122a76026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b3390565b6001600160a01b0383166118995760405162461bcd60e51b81526004018080602001828103825260248152602001806124196024913960400191505060405180910390fd5b6001600160a01b0382166118de5760405162461bcd60e51b81526004018080602001828103825260228152602001806122cd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166119855760405162461bcd60e51b81526004018080602001828103825260258152602001806122606025913960400191505060405180910390fd5b6001600160a01b0382166119ca5760405162461bcd60e51b81526004018080602001828103825260258152602001806122606025913960400191505060405180910390fd5b806119d6848483611609565b6001600160a01b0384166000908152600d602052604090205460ff16158015611a1857506001600160a01b0383166000908152600e602052604090205460ff16155b15611b96576000611a276107a8565b9050670de0b6b3a7640000811015611b94576009548015611b5c576000611a5a612710611a548785611eaa565b90611f03565b600a549091506001600160a01b0316611a74888284611f6a565b611a7e85836120c5565b600c54909550611a8e9083611cf3565b600c5560065474010000000000000000000000000000000000000000900460ff1615611b1357806001600160a01b03166351c6590a836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611afa57600080fd5b505af1158015611b0e573d6000803e3d6000fd5b505050505b604080516001600160a01b038381168252602082018590528251908b16927f3518075fae16f1bca7d9a1f28fede590b3ee4854c3c0bb4c5259b4ed62aa1674928290030190a250505b506008548015611b92576000611b78612710611a548785611eaa565b9050611b848782612122565b611b8e84826120c5565b9350505b505b505b611ba1848483611f6a565b50505050565b60008184841115611c365760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bfb578181015183820152602001611be3565b50505050905090810190601f168015611c285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038116611c835760405162461bcd60e51b815260040180806020018281038252602d815260200180612315602d913960400191505060405180910390fd5b6040516001600160a01b038216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600082820183811015611d4d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611daf576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611dbb60008383611609565b600254611dc89082611cf3565b6002556001600160a01b038216600090815260208190526040902054611dee9082611cf3565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610bfb611e4f611850565b82612122565b6000611e8c8260405180606001604052806024815260200161238b60249139611e8586611e80611850565b611437565b9190611ba7565b9050611ea083611e9a611850565b83611854565b6116098383612122565b600082611eb957506000610a1b565b82820282848281611ec657fe5b0414611d4d5760405162461bcd60e51b81526004018080602001828103825260218152602001806123426021913960400191505060405180910390fd5b6000808211611f59576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611f6257fe5b049392505050565b6001600160a01b038316611faf5760405162461bcd60e51b81526004018080602001828103825260258152602001806123f46025913960400191505060405180910390fd5b6001600160a01b038216611ff45760405162461bcd60e51b815260040180806020018281038252602381526020018061223d6023913960400191505060405180910390fd5b611fff838383611609565b61203c816040518060600160405280602681526020016122ef602691396001600160a01b0386166000908152602081905260409020549190611ba7565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461206b9082611cf3565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561211c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b61212c8282612140565b600b546121399082611cf3565b600b555050565b6001600160a01b0382166121855760405162461bcd60e51b81526004018080602001828103825260218152602001806123d36021913960400191505060405180910390fd5b61219182600083611609565b6121ce81604051806060016040528060228152602001612285602291396001600160a01b0385166000908152602081905260409020549190611ba7565b6001600160a01b0383166000908152602081905260409020556002546121f490826120c5565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735633546f6e69633a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f72536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63656f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b5d91a3fb76bc8b570785117270760f27b2451247c4c5c770806cbd38dcbaf8464736f6c634300060c0033

Deployed ByteCode Sourcemap

28164:7528:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31257:254;;;:::i;:::-;;;;;;;;;;;;;;;;30520:215;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30520:215:0;;;;;;;;;;:::i;:::-;;13479:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15766:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15766:210:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14578:108;;;:::i;29715:157::-;;;;;;;;;;;;;;;;-1:-1:-1;29715:157:0;;:::i;16458:454::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16458:454:0;;;;;;;;;;;;;;;;;:::i;27207:115::-;;;;;;;;;;;;;;;;-1:-1:-1;27207:115:0;-1:-1:-1;;;;;27207:115:0;;:::i;14422:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17321:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17321:300:0;;;;;;;;:::i;32094:322::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32094:322:0;;;;;;;;:::i;32424:83::-;;;;;;;;;;;;;;;;-1:-1:-1;32424:83:0;;:::i;27099:100::-;;;:::i;30999:250::-;;;:::i;31519:128::-;;;;;;;;;;;;;;;;-1:-1:-1;31519:128:0;-1:-1:-1;;;;;31519:128:0;;:::i;26834:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;26834:85:0;;;;;;;;;;;;;;30358:154;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30358:154:0;;;;;;;;;;:::i;14749:177::-;;;;;;;;;;;;;;;;-1:-1:-1;14749:177:0;-1:-1:-1;;;;;14749:177:0;;:::i;25910:148::-;;;:::i;28412:22::-;;;:::i;32515:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32515:162:0;;;;;;;;:::i;29492:90::-;;;;;;;;;;;;;;;;-1:-1:-1;29492:90:0;-1:-1:-1;;;;;29492:90:0;;:::i;28352:21::-;;;:::i;31655:124::-;;;;;;;;;;;;;;;;-1:-1:-1;31655:124:0;-1:-1:-1;;;;;31655:124:0;;:::i;28304:39::-;;;:::i;30894:97::-;;;:::i;25259:87::-;;;:::i;13689:95::-;;;:::i;18124:400::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18124:400:0;;;;;;;;:::i;15139:216::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15139:216:0;;;;;;;;:::i;30192:158::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30192:158:0;;;;;;;;;;:::i;29590:117::-;;;:::i;28382:23::-;;;:::i;29880:152::-;;;;;;;;;;;;;;;;-1:-1:-1;29880:152:0;;:::i;28485:22::-;;;:::i;30793:93::-;;;:::i;15418:201::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15418:201:0;;;;;;;;;;:::i;35541:148::-;;;;;;;;;;;;;;;;-1:-1:-1;35541:148:0;-1:-1:-1;;;;;35541:148:0;;:::i;30040:144::-;;;;;;;;;;;;;;;;-1:-1:-1;30040:144:0;-1:-1:-1;;;;;30040:144:0;;:::i;26213:281::-;;;;;;;;;;;;;;;;-1:-1:-1;26213:281:0;-1:-1:-1;;;;;26213:281:0;;:::i;31257:254::-;31348:6;;31310:7;;-1:-1:-1;;;;;31348:6:0;31386:21;;31385:118;;31460:42;;;;;;31490:4;31460:42;;;;31497:4;31460:42;;;;;;-1:-1:-1;;;;;31460:21:0;;;;;:42;;;;;;;;;;;;;;:21;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31460:42:0;31452:51;;31385:118;;;31428:4;31385:118;31365:138;;;31257:254;:::o;30520:215::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30642:28:0;;::::1;;::::0;;;:18:::1;:28;::::0;;;;;;;:38;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;30691:16:::1;:26:::0;;;;;;:36;;;;::::1;;::::0;;30520:215::o;13479:91::-;13557:5;13550:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13524:13;;13550:12;;13557:5;;13550:12;;13557:5;13550:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13479:91;:::o;15766:210::-;15885:4;15907:39;15916:12;:10;:12::i;:::-;15930:7;15939:6;15907:8;:39::i;:::-;-1:-1:-1;15964:4:0;15766:210;;;;;:::o;14578:108::-;14666:12;;14578:108;:::o;29715:157::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29806:4:::1;29793:9;:17;;29785:38;;;::::0;;-1:-1:-1;;;29785:38:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29844:8;:20:::0;29715:157::o;16458:454::-;16598:4;16615:36;16625:6;16633:9;16644:6;16615:9;:36::i;:::-;16662:220;16685:6;16706:12;:10;:12::i;:::-;16733:138;16789:6;16733:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16733:19:0;;;;;;:11;:19;;;;;;16753:12;:10;:12::i;:::-;-1:-1:-1;;;;;16733:33:0;;;;;;;;;;;;-1:-1:-1;16733:33:0;;;:138;:37;:138::i;:::-;16662:8;:220::i;:::-;-1:-1:-1;16900:4:0;16458:454;;;;;:::o;27207:115::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27283:31:::1;27301:12;27283:17;:31::i;:::-;27207:115:::0;:::o;14422:91::-;14496:9;;;;14422:91;:::o;17321:300::-;17436:4;17458:133;17481:12;:10;:12::i;:::-;17508:7;17530:50;17569:10;17530:11;:25;17542:12;:10;:12::i;:::-;-1:-1:-1;;;;;17530:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17530:25:0;;;:34;;;;;;;;;;;:38;:50::i;32094:322::-;26984:9;;32201:4;;-1:-1:-1;;;;;26984:9:0;26997:10;26984:23;26962:109;;;;-1:-1:-1;;;26962:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32223:21:::1;32247;32257:10;32247:9;:21::i;:::-;32223:45;;32279:26;32285:10;32297:7;32279:5;:26::i;:::-;32316:20;32339:21;32349:10;32339:9;:21::i;:::-;32380:28:::0;;;::::1;::::0;32094:322;-1:-1:-1;;;;32094:322:0:o;32424:83::-;32481:18;32492:6;32481:10;:18::i;27099:100::-;27182:9;;27142:4;;-1:-1:-1;;;;;27182:9:0;27166:12;:10;:12::i;:::-;-1:-1:-1;;;;;27166:25:0;;27159:32;;27099:100;:::o;30999:250::-;31083:6;;31045:7;;-1:-1:-1;;;;;31083:6:0;31121:21;;31120:121;;31195:45;;;;;;31228:4;31195:45;;;;31235:4;31195:45;;;;;;-1:-1:-1;;;;;31195:24:0;;;;;:45;;;;;;;;;;;;;;:24;:45;;;;;;;;;;31519:128;-1:-1:-1;;;;;31611:28:0;31587:4;31611:28;;;:18;:28;;;;;;;;;31519:128::o;26834:85::-;26902:9;;-1:-1:-1;;;;;26902:9:0;26834:85;:::o;30358:154::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30468:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:36;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;30358:154::o;14749:177::-;-1:-1:-1;;;;;14900:18:0;14868:7;14900:18;;;;;;;;;;;;14749:177::o;25910:148::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26001:6:::1;::::0;25980:40:::1;::::0;26017:1:::1;::::0;26001:6:::1;::::0;::::1;-1:-1:-1::0;;;;;26001:6:0::1;::::0;25980:40:::1;::::0;26017:1;;25980:40:::1;26031:6;:19:::0;;;::::1;::::0;;25910:148::o;28412:22::-;;;;:::o;32515:162::-;26984:9;;-1:-1:-1;;;;;26984:9:0;26997:10;26984:23;26962:109;;;;-1:-1:-1;;;26962:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32638:31:::1;32653:7;32662:6;32638:14;:31::i;:::-;32515:162:::0;;:::o;29492:90::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29558:6:::1;:16:::0;;;::::1;-1:-1:-1::0;;;;;29558:16:0;;;::::1;::::0;;;::::1;::::0;;29492:90::o;28352:21::-;;;-1:-1:-1;;;;;28352:21:0;;:::o;31655:124::-;-1:-1:-1;;;;;31745:26:0;31721:4;31745:26;;;:16;:26;;;;;;;;;31655:124::o;28304:39::-;;;;;;;;;:::o;30894:97::-;30969:14;;30894:97;:::o;25259:87::-;25332:6;;;;;-1:-1:-1;;;;;25332:6:0;;25259:87::o;13689:95::-;13769:7;13762:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13736:13;;13762:14;;13769:7;;13762:14;;13769:7;13762:14;;;;;;;;;;;;;;;;;;;;;;;;18124:400;18244:4;18266:228;18289:12;:10;:12::i;:::-;18316:7;18338:145;18395:15;18338:145;;;;;;;;;;;;;;;;;:11;:25;18350:12;:10;:12::i;:::-;-1:-1:-1;;;;;18338:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18338:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;15139:216::-;15261:4;15283:42;15293:12;:10;:12::i;:::-;15307:9;15318:6;15283:9;:42::i;30192:158::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30304:28:0;;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:38;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;30192:158::o;29590:117::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29680:19:::1;::::0;;29657:42;;::::1;29680:19:::0;;;;::::1;;;29679:20;29657:42:::0;;::::1;;::::0;;29590:117::o;28382:23::-;;;;:::o;29880:152::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29968:4:::1;29956:8;:16;;29948:37;;;::::0;;-1:-1:-1;;;29948:37:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30006:7;:18:::0;29880:152::o;28485:22::-;;;-1:-1:-1;;;;;28485:22:0;;:::o;30793:93::-;30866:12;;30793:93;:::o;15418:201::-;-1:-1:-1;;;;;15584:18:0;;;15552:7;15584:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15418:201::o;35541:148::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35624:6:::1;-1:-1:-1::0;;;;;35624:15:0::1;;35640:7;:5;:7::i;:::-;35649:31;::::0;;;;;35674:4:::1;35649:31;::::0;::::1;::::0;;;-1:-1:-1;;;;;35649:16:0;::::1;::::0;::::1;::::0;:31;;;;;::::1;::::0;;;;;;;;:16;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;35649:31:0;35624:57:::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;;;;;35624:57:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;35649:31:::1;::::0;35624:57;;;;;;;-1:-1:-1;35624:57:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;35541:148:0:o;30040:144::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30116:22:0;::::1;30108:39;;;::::0;;-1:-1:-1;;;30108:39:0;;::::1;;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30158:7;:18:::0;;;::::1;-1:-1:-1::0;;;;;30158:18:0;;;::::1;::::0;;;::::1;::::0;;30040:144::o;26213:281::-;25490:12;:10;:12::i;:::-;-1:-1:-1;;;;;25479:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;25479:23:0;;25471:68;;;;;-1:-1:-1;;;25471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26316:22:0;::::1;26294:110;;;;-1:-1:-1::0;;;26294:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26441:6;::::0;26420:38:::1;::::0;-1:-1:-1;;;;;26420:38:0;;::::1;::::0;26441:6:::1;::::0;::::1;;::::0;26420:38:::1;::::0;;;::::1;26469:6;:17:::0;;-1:-1:-1;;;;;26469:17:0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;26213:281::o;605:106::-;693:10;605:106;:::o;21510:380::-;-1:-1:-1;;;;;21646:19:0;;21638:68;;;;-1:-1:-1;;;21638:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21725:21:0;;21717:68;;;;-1:-1:-1;;;21717:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21798:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21850:32;;;;;;;;;;;;;;;;;21510:380;;;:::o;33733:1755::-;-1:-1:-1;;;;;33874:20:0;;33866:70;;;;-1:-1:-1;;;33866:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33969:23:0;;33947:110;;;;-1:-1:-1;;;33947:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34088:6;34107:48;34128:6;34136:9;34088:6;34107:20;:48::i;:::-;-1:-1:-1;;;;;34173:26:0;;;;;;:18;:26;;;;;;;;34172:27;:59;;;;-1:-1:-1;;;;;;34204:27:0;;;;;;:16;:27;;;;;;;;34203:28;34172:59;34168:1257;;;34248:19;34270:22;:20;:22::i;:::-;34248:44;;34325:4;34311:11;:18;34307:1107;;;34392:7;;34426:12;;34422:609;;34467:18;34488:31;34513:5;34488:20;:6;34499:8;34488:10;:20::i;:::-;:24;;:31::i;:::-;34565:7;;34467:52;;-1:-1:-1;;;;;;34565:7:0;34599:45;34615:6;34565:7;34467:52;34599:15;:45::i;:::-;34681:23;:7;34693:10;34681:11;:23::i;:::-;34748:14;;34671:33;;-1:-1:-1;34748:30:0;;34767:10;34748:18;:30::i;:::-;34731:14;:47;34809:19;;;;;;;34805:133;;;34876:8;-1:-1:-1;;;;;34861:37:0;;34899:10;34861:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34805:133;34969:38;;;-1:-1:-1;;;;;34969:38:0;;;;;;;;;;;;;;;;;;;;;;;;;34422:609;;;-1:-1:-1;35111:8:0;;35146:13;;35142:238;;35188:19;35210:32;35236:5;35210:21;:6;35221:9;35210:10;:21::i;:32::-;35188:54;;35269:26;35275:6;35283:11;35269:5;:26::i;:::-;35332:24;:7;35344:11;35332;:24::i;:::-;35322:34;;35142:238;;34307:1107;;34168:1257;;35437:43;35453:6;35461:9;35472:7;35437:15;:43::i;:::-;33733:1755;;;;:::o;9476:200::-;9596:7;9632:12;9624:6;;;;9616:29;;;;-1:-1:-1;;;9616:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9663:5:0;;;9476:200::o;27330:294::-;-1:-1:-1;;;;;27421:26:0;;27399:121;;;;-1:-1:-1;;;27399:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27536:45;;-1:-1:-1;;;;;27536:45:0;;;27564:1;;27536:45;;27564:1;;27536:45;27592:9;:24;;;;-1:-1:-1;;;;;27592:24:0;;;;;;;;;;27330:294::o;6649:179::-;6707:7;6739:5;;;6763:6;;;;6755:46;;;;;-1:-1:-1;;;6755:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6819:1;6649:179;-1:-1:-1;;;6649:179:0:o;19906:378::-;-1:-1:-1;;;;;19990:21:0;;19982:65;;;;;-1:-1:-1;;;19982:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20060:49;20089:1;20093:7;20102:6;20060:20;:49::i;:::-;20137:12;;:24;;20154:6;20137:16;:24::i;:::-;20122:12;:39;-1:-1:-1;;;;;20193:18:0;;:9;:18;;;;;;;;;;;:30;;20216:6;20193:22;:30::i;:::-;-1:-1:-1;;;;;20172:18:0;;:9;:18;;;;;;;;;;;:51;;;;20239:37;;;;;;;20172:18;;:9;;20239:37;;;;;;;;;;19906:378;;:::o;23469:91::-;23525:27;23531:12;:10;:12::i;:::-;23545:6;23525:5;:27::i;23879:332::-;23956:26;23985:121;24036:6;23985:121;;;;;;;;;;;;;;;;;:32;23995:7;24004:12;:10;:12::i;:::-;23985:9;:32::i;:::-;:36;:121;:36;:121::i;:::-;23956:150;;24119:51;24128:7;24137:12;:10;:12::i;:::-;24151:18;24119:8;:51::i;:::-;24181:22;24187:7;24196:6;24181:5;:22::i;7528:220::-;7586:7;7610:6;7606:20;;-1:-1:-1;7625:1:0;7618:8;;7606:20;7649:5;;;7653:1;7649;:5;:1;7673:5;;;;;:10;7665:56;;;;-1:-1:-1;;;7665:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8226:153;8284:7;8316:1;8312;:5;8304:44;;;;;-1:-1:-1;;;8304:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8370:1;8366;:5;;;;;;;8226:153;-1:-1:-1;;;8226:153:0:o;19014:610::-;-1:-1:-1;;;;;19154:20:0;;19146:70;;;;-1:-1:-1;;;19146:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19235:23:0;;19227:71;;;;-1:-1:-1;;;19227:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19311:47;19332:6;19340:9;19351:6;19311:20;:47::i;:::-;19391:108;19427:6;19391:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19391:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;19371:17:0;;;:9;:17;;;;;;;;;;;:128;;;;19533:20;;;;;;;:32;;19558:6;19533:24;:32::i;:::-;-1:-1:-1;;;;;19510:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;19581:35;;;;;;;19510:20;;19581:35;;;;;;;;;;;;;19014:610;;;:::o;7111:158::-;7169:7;7202:1;7197;:6;;7189:49;;;;;-1:-1:-1;;;7189:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7256:5:0;;;7111:158::o;33075:168::-;33154:30;33166:8;33176:7;33154:11;:30::i;:::-;33210:12;;:25;;33227:7;33210:16;:25::i;:::-;33195:12;:40;-1:-1:-1;;33075:168:0:o;20617:455::-;-1:-1:-1;;;;;20701:21:0;;20693:67;;;;-1:-1:-1;;;20693:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20773:49;20794:7;20811:1;20815:6;20773:20;:49::i;:::-;20856:105;20893:6;20856:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20856:18:0;;:9;:18;;;;;;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;20835:18:0;;:9;:18;;;;;;;;;;:126;20987:12;;:24;;21004:6;20987:16;:24::i;:::-;20972:12;:39;21027:37;;;;;;;;21053:1;;-1:-1:-1;;;;;21027:37:0;;;;;;;;;;;;20617:455;;:::o

Swarm Source

ipfs://b5d91a3fb76bc8b570785117270760f27b2451247c4c5c770806cbd38dcbaf84
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.