ETH Price: $3,475.84 (-1.19%)
Gas: 4 Gwei

Token

Meta Bros ($MB)
 

Overview

Max Total Supply

1,000,000,000,000 $MB

Holders

63

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
METABROs

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-18
*/

pragma solidity ^0.8.10;
// SPDX-License-Identifier: MIT

interface IERC20 {

    /**  
     * @dev Returns the total tokens supply  
     */
    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);
}

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
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) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(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; // msg.data is used to handle array, bytes, string 
    }
}

/**
 * @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.
     *
     * 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.
     *
     *
     * 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;
    address private _previousOwner;
    uint256 private _lockTime;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        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() external 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) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getUnlockTime() external view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) external virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() external virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = address(0);
    }
}

// pragma solidity >=0.5.0;

interface IUniSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

// pragma solidity >=0.6.2;

interface IUniSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
contract METABROs is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _tOwned; // total Owned tokens
    mapping (address => mapping (address => uint256)) private _allowances; // allowed allowance for spender
    mapping (address => bool) public isExcludedFromAntiWhale; // Limits how many tokens can an address hold

    mapping (address => bool) public isExcludedFromFee; // excluded address from all fee

    mapping (address => uint256) private _transactionCheckpoint;
    mapping(address => bool) public isExcludedFromTransactionCoolDown; // Address to be excluded from transaction cooldown
    uint256 private _transactionCoolTime = 120; //Cool down time between each transaction per address
    
    mapping (address => bool) public isBlacklisted; // blocks an address from buy and selling

    address payable public maintainanceAddress = payable(0x5b4148132cb0eA7Ae6FAfE128E7dd4f59d5726E1); // Maintainance Address
    address payable public developmentAddress  = payable(0x2B842AB69366070EA5837dd9D0396c2C60C26038); // Development Address
    address payable public marketingAddress    = payable(0x21bE198885f5AC237294715972B4838966a95De0); // Marketing Address

    string private _name = "Meta Bros"; //token name
    string private _symbol = "$MB"; // token symbol
    uint8 private _decimals = 18; // 1 token can be divided into 1e_decimals parts

    uint256 private _tTotal = 1000000 * 10**6 * 10**_decimals;
    
    // All fees are with one decimal value. so if you want 0.5 set value to 5, for 10 set 100. so on...

    // Below Fees to be deducted and sent as ETH
    uint256 public liquidityFee = 20; // actual liquidity fee 2%

    uint256 public marketingFee = 60; // marketing fee 6%

    uint256 public developmentFee = 30; // development fee 3%

    uint256 public maintainanceFee = 10; // Project Maintainance fee 1%

    uint256 public sellExtraFee = 20; // extra fee on sell 2%.

    uint256 private _totalFee =liquidityFee.add(marketingFee).add(developmentFee).add(maintainanceFee); // Liquidity + Marketing + Development + Mainitainance fee on each transaction
    uint256 private _previousTotalFee = _totalFee; // restore old fees

    bool public antiBotEnabled = true; //enables anti bot restrictions(max txn amount, max wallet holding transaction cooldown)

    IUniSwapRouter public uniSwapRouter; // uniSwap router assiged using address
    address public uniSwapPair; // for creating WETH pair with our token
    
    bool inSwapAndLiquify; // after each successfull swapandliquify disable the swapandliquify
    bool public swapAndLiquifyEnabled = true; // set auto swap to ETH and liquify collected liquidity fee
    
    uint256 public maxTxnAmount = 1000 * 10**6 * 10**_decimals; // max allowed tokens tranfer per transaction
    uint256 public minTokensSwapToAndTransferTo = 500 * 10**6 * 10**_decimals; // min token liquidity fee collected before swapandLiquify
    uint256 public maxTokensPerAddress            = 2000 * 10**6 * 10**_decimals; // Max number of tokens that an address can hold
    
    //PRESALE
    uint256 public sPrice;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); //event fire min token liquidity fee collected before swapandLiquify 
    event SwapAndLiquifyEnabledUpdated(bool enabled); // event fire set auto swap to ETH and liquify collected liquidity fee
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqiudity
    ); // fire event how many tokens were swapedandLiquified
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    } // modifier to after each successfull swapandliquify disable the swapandliquify
    
    constructor () {
        _tOwned[_msgSender()] = _tTotal; // assigning the max token to owner's address  
        
        IUniSwapRouter _uniSwapRouter = IUniSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniSwap pair for this new token
        uniSwapPair = IUniSwapFactory(_uniSwapRouter.factory())
            .createPair(address(this), _uniSwapRouter.WETH());    

        // set the rest of the contract variables
        uniSwapRouter = _uniSwapRouter;
        
        //exclude owner and this contract from fee
        isExcludedFromFee[owner()]             = true;
        isExcludedFromFee[address(this)]       = true;
        isExcludedFromFee[marketingAddress]    = true;
        isExcludedFromFee[developmentAddress]  = true;
        isExcludedFromFee[maintainanceAddress] = true;

        //Exclude's below addresses from per account tokens limit
        isExcludedFromAntiWhale[owner()]                 = true;
        isExcludedFromAntiWhale[uniSwapPair]             = true;
        isExcludedFromAntiWhale[address(this)]           = true;
        isExcludedFromAntiWhale[marketingAddress]        = true;
        isExcludedFromAntiWhale[developmentAddress]      = true;
        isExcludedFromAntiWhale[maintainanceAddress]     = true;
        isExcludedFromAntiWhale[address(_uniSwapRouter)] = true;

        //Exclude's below addresses from transaction cooldown
        isExcludedFromTransactionCoolDown[owner()]                 = true;
        isExcludedFromTransactionCoolDown[uniSwapPair]             = true;
        isExcludedFromTransactionCoolDown[address(this)]           = true;
        isExcludedFromTransactionCoolDown[marketingAddress]        = true;
        isExcludedFromTransactionCoolDown[developmentAddress]      = true;
        isExcludedFromTransactionCoolDown[maintainanceAddress]     = true;
        isExcludedFromTransactionCoolDown[address(_uniSwapRouter)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
        sPrice = 100000*10**18;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[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];
    }
    
    /**  
     * @dev approves allowance of a spender
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    /**  
     * @dev transfers from a sender to receipent with subtracting spenders allowance with each successfull transfer
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
         return true;
    }

    /**  
     * @dev approves allowance of a spender should set it to zero first than increase
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**  
     * @dev decrease allowance of spender that it can spend on behalf of owner
     */
    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 exclude an address from fee
     */
    function excludeFromFee(address account) external onlyOwner {
        isExcludedFromFee[account] = true;
    }
    
    /**  
     * @dev include an address for fee
     */
    function includeInFee(address account) external onlyOwner {
        isExcludedFromFee[account] = false;
    }

    /**  
     * @dev exclude an address from per address tokens limit
     */
    function excludedFromAntiWhale(address account) external onlyOwner {
        isExcludedFromAntiWhale[account] = true;
    }

    /**  
     * @dev include an address in per address tokens limit
     */
    function includeInAntiWhale(address account) external onlyOwner {
        isExcludedFromAntiWhale[account] = false;
    }

    /**  
     * @dev set's Development fee percentage
     */
    function setDevelopmentFeePercent(uint256 Fee) external onlyOwner {
        developmentFee = Fee;
        _totalFee = liquidityFee.add(marketingFee).add(developmentFee).add(maintainanceFee);
    }

        /**  
     * @dev set's marketing fee percentage
     */
    function setMarketingFeePercent(uint256 Fee) external onlyOwner {
        marketingFee = Fee;
        _totalFee = liquidityFee.add(marketingFee).add(developmentFee).add(maintainanceFee);
    }

    /**  
     * @dev set's Maintainance fee percentage
     */
    function setMaintainanceFeePercent(uint256 Fee) external onlyOwner {
        maintainanceFee = Fee;
        _totalFee = liquidityFee.add(marketingFee).add(developmentFee).add(maintainanceFee);
    }
    
    /**  
     * @dev set's liquidity fee percentage
     */
    function setLiquidityFeePercent(uint256 Fee) external onlyOwner {
        liquidityFee = Fee;
        _totalFee = liquidityFee.add(marketingFee).add(developmentFee).add(maintainanceFee);
    }

    /**  
     * @dev set's sell extra fee percentage
     */
    function setSellExtraFeePercent(uint256 Fee) external onlyOwner {
        sellExtraFee = Fee;
    }
   
    /**  
     * @dev set's max amount of tokens percentage 
     * that can be transfered in each transaction from an address
     */
    function setMaxTxnTokens(uint256 maxTxnTokens) external onlyOwner {
        maxTxnAmount = maxTxnTokens.mul( 10**_decimals );
    }

    /**  
     * @dev set's max amount of tokens
     * that an address can hold
     */
    function setMaxTokenPerAddress(uint256 maxTokens) external onlyOwner {
        maxTokensPerAddress = maxTokens.mul( 10**_decimals );
    }

    /**  
     * @dev set's minimmun amount of tokens required 
     * before swaped and ETH send to  wallet
     * same value will be used for auto swapandliquifiy threshold
     */
    function setMinTokensSwapAndTransfer(uint256 minAmount) external onlyOwner {
        minTokensSwapToAndTransferTo = minAmount.mul( 10 ** _decimals);
    }

    /**  
     * @dev set's marketing address
     */
    function setMarketingFeeAddress(address payable wallet) external onlyOwner {
        marketingAddress = wallet;
    }

    /**  
     * @dev set's development address
     */
    function setDevelopmentFeeAddress(address payable wallet) external onlyOwner {
        developmentAddress = wallet;
    }

    /**  
     * @dev set's maintainnance address
     */
    function setMaintainaceFeeAddress(address payable wallet) external onlyOwner {
        maintainanceAddress = wallet;
    }

    /**  
     * @dev set's auto SwapandLiquify when contract's token balance threshold is reached
     */
    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    /**
    * @dev Sets transactions on time periods or cooldowns. Buzz Buzz Bots.
    * Can only be set by owner set in seconds.
    */
    function setTransactionCooldownTime(uint256 transactiontime) external onlyOwner {
        _transactionCoolTime = transactiontime;
    }

    /**
     * @dev Exclude's an address from transactions from cooldowns.
     * Can only be set by owner.
     */
    function excludedFromTransactionCooldown(address account) external onlyOwner {
        isExcludedFromTransactionCoolDown[account] = true;
    }

    /**
     * @dev Include's an address in transactions from cooldowns.
     * Can only be set by owner.
     */
    function includeInTransactionCooldown(address account) external onlyOwner {
        isExcludedFromTransactionCoolDown[account] = false;
    }

    /**
     * @dev enable/disable antibot measures
     */
    function setAntiBotEnabled(bool value) external onlyOwner {
        antiBotEnabled = value;
    }
    
     //to recieve ETH from uniSwapRouter when swaping
    receive() external payable {}

    /**  
     * @dev get/calculates all values e.g taxfee, 
     * liquidity fee, actual transfer amount to receiver, 
     * deuction amount from sender
     * amount with reward to all holders
     * amount without reward to all holders
     */
    function _getValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tFee = calculateFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }
    
    /**  
     * @dev take's fee tokens from tansaction and saves in contract
     */
    function _takeFee(address account, uint256 tFee) private {
        if(tFee > 0) {
            _tOwned[address(this)] = _tOwned[address(this)].add(tFee);
            emit Transfer(account, address(this), tFee);
        }
    }

    /**  
     * @dev calculates fee tokens to be deducted
     */
    function calculateFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_totalFee).div(
            10**3
        );
    }

    /**  
     * @dev increase fee if selling
     */
    function increaseFee() private {
        _totalFee = _totalFee.add(sellExtraFee);
    }
    
    /**  
     * @dev removes all fee from transaction if takefee is set to false
     */
    function removeAllFee() private {
        if(_totalFee == 0) return;
        
        _previousTotalFee = _totalFee;
        _totalFee = 0;
    }

    /**  
     * @dev restores all fee after exclude fee transaction completes
     */
    function restoreAllFee() private {
        _totalFee = _previousTotalFee;
    }

    /**  
     * @dev decrease fee after selling
     */
    function decreaseFee() private {
        _totalFee = _totalFee.sub(sellExtraFee);
    }

    /**  
     * @dev approves amount of token spender can spend on behalf of an owner
     */
    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

    bool public saleend = false;
    
    function setEndSale(bool _saleend) public onlyOwner() returns(bool){
        return saleend = _saleend;
    }

     bool public allowed = false;
    
    modifier afterSaleEnd(address from){
        require(allowed ==true|| from== address(this) || from == owner());
        _;
    }
    function setAllowed(bool _allowed) public onlyOwner() returns(bool){
        return allowed = _allowed;
    }

    /**  
     * @dev transfers token from sender to recipient also auto 
     * swapsandliquify if contract's token balance threshold is reached
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private afterSaleEnd(from){
        require(from != address(0) && to != address(0), "ERC20: transfer from or two the zero address");
        require(!isBlacklisted[from], "You are Blacklisted");
        if(antiBotEnabled) {
            require(balanceOf(to) + amount <= maxTokensPerAddress || isExcludedFromAntiWhale[to],
            "Max tokens limit for this account exceeded. Or try lower amount");
            require(isExcludedFromTransactionCoolDown[from] || block.timestamp >= _transactionCheckpoint[from] + _transactionCoolTime,
            "Wait for transaction cooldown time to end before making a tansaction");
            require(isExcludedFromTransactionCoolDown[to] || block.timestamp >= _transactionCheckpoint[to] + _transactionCoolTime,
            "Wait for transaction cooldown time to end before making a tansaction");
            if(from != owner() && to != owner())
                require(amount <= maxTxnAmount, "Transfer amount exceeds the maxTxAmount.");

            _transactionCheckpoint[from] = block.timestamp;
            _transactionCheckpoint[to] = block.timestamp;
        }

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniSwap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
        bool takeFee; 
        if(saleend==true)
        {
        if(contractTokenBalance >= maxTxnAmount)
        {
            contractTokenBalance = maxTxnAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >=minTokensSwapToAndTransferTo;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniSwapPair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance =minTokensSwapToAndTransferTo;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        takeFee = true;
        
        //if any account belongs to isExcludedFromFee account then remove the fee
        if(isExcludedFromFee[from] || isExcludedFromFee[to]){
            takeFee = false;
        }
        }
        //transfer amount, it will take tax fee
        _tokenTransfer(from,to,amount,takeFee);
    }

    /**  
     * @dev swapsAndLiquify tokens to uniSwap if swapandliquify is enabled
     */
    function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        // first split contract into marketing fee and liquidity fee
        uint256 swapPercent = developmentFee.add(marketingFee).add(maintainanceFee).add(liquidityFee/2);
        uint256 swapTokens = tokenBalance.div(_totalFee).mul(swapPercent);
        uint256 liquidityTokens = tokenBalance.sub(swapTokens);
        uint256 initialBalance = address(this).balance;
        
        swapTokensForEth(swapTokens);

        uint256 transferredBalance = address(this).balance.sub(initialBalance);
        uint256 developmentAmount = 0;
        uint256 maintainanceAmount = 0;
        uint256 marketingAmount = 0;

        if(developmentFee > 0)
        {
            developmentAmount = transferredBalance.mul(developmentFee).div(swapPercent);

            developmentAddress.transfer(developmentAmount);
        }

        if(marketingFee > 0)
        {
            marketingAmount = transferredBalance.mul(marketingFee).div(swapPercent);

            marketingAddress.transfer(marketingAmount);
        }

        if(maintainanceFee > 0)
        {
            maintainanceAmount = transferredBalance.mul(maintainanceFee).div(swapPercent);

            maintainanceAddress.transfer(maintainanceAmount);
        }
        
        if(liquidityFee > 0)
        {
            transferredBalance = transferredBalance.sub(developmentAmount).sub(marketingAmount).sub(maintainanceAmount);
            addLiquidity(owner(), liquidityTokens, transferredBalance);

            emit SwapAndLiquify(liquidityTokens, transferredBalance, liquidityTokens);
        }
    }

    /**  
     * @dev swap's exact amount of tokens for ETH if swapandliquify is enabled
     */
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniSwap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapRouter.WETH();

        _approve(address(this), address(uniSwapRouter), tokenAmount);

        // make the swap
        uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    /**  
     * @dev add's liquidy to uniSwap if swapandliquify is enabled
     */
    function addLiquidity(address recipient, uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniSwapRouter), tokenAmount);

        // add the liquidity
        uniSwapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            recipient,
            block.timestamp
        );
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(recipient == uniSwapPair && sellExtraFee > 0)
            increaseFee();
        if(!takeFee)
            removeAllFee();

        (uint256 tTransferAmount, uint256 tFee) = _getValues(amount);
        _tOwned[sender] = _tOwned[sender].sub(amount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);

        _takeFee(sender, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        
        
        if(!takeFee)
            restoreAllFee();
        if(recipient == uniSwapPair && sellExtraFee > 0)
            decreaseFee();
    }

    /**  
     * @dev Blacklist a singel wallet from buying and selling
     */
    function blacklistSingleWallet(address account) external onlyOwner{
        if(isBlacklisted[account] == true) return;
        isBlacklisted[account] = true;
    }

    /**  
     * @dev Blacklist multiple wallets from buying and selling
     */
    function blacklistMultipleWallets(address[] calldata accounts) external onlyOwner{
        require(accounts.length < 800, "Can not blacklist more then 800 address in one transaction");
        for (uint256 i; i < accounts.length; ++i) {
            isBlacklisted[accounts[i]] = true;
        }
    }
    
    /**  
     * @dev un blacklist a singel wallet from buying and selling
     */
    function unBlacklistSingleWallet(address account) external onlyOwner{
         if(isBlacklisted[account] == false) return;
        isBlacklisted[account] = false;
    }

    /**  
     * @dev un blacklist multiple wallets from buying and selling
     */
    function unBlacklistMultipleWallets(address[] calldata accounts) external onlyOwner {
        require(accounts.length < 800, "Can not Unblacklist more then 800 address in one transaction");
        for (uint256 i; i < accounts.length; ++i) {
            isBlacklisted[accounts[i]] = false;
        }
    }

    /**  
     * @dev recovers any tokens stuck in Contract's address
     * NOTE! if ownership is renounced then it will not work
     */
    function recoverTokens(address tokenAddress, address recipient, uint256 amountToRecover) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        
        require(balance >= amountToRecover, "Not Enough Tokens in contract to recover");

        if(amountToRecover > 0)
            token.transfer(recipient, amountToRecover);
    }
    
    /**  
     * @dev recovers any ETH stuck in Contract's balance
     * NOTE! if ownership is renounced then it will not work
     */
    function recoverETH() external onlyOwner {
        address payable recipient = _msgSender();
        if(address(this).balance > 0)
            recipient.transfer(address(this).balance);
    }
    
    //New uniswap router version?
    //No problem, just change it!
    function setRouterAddress(address newRouter) external onlyOwner {
        IUniSwapRouter _newUniSwapRouter = IUniSwapRouter(newRouter);
        uniSwapPair = IUniSwapFactory(_newUniSwapRouter.factory()).createPair(address(this), _newUniSwapRouter.WETH());
        uniSwapRouter = _newUniSwapRouter;

        isExcludedFromAntiWhale[uniSwapPair]           = true;
        isExcludedFromTransactionCoolDown[uniSwapPair] = true;
    }

    //PRESALE
    function tokenSale(address _refer) public payable returns (bool success){
    //require(sSBlock <= block.number && block.number <= sEBlock);
    //require(sTot < sCap || sCap == 0);
    uint256 _eth = msg.value;
    uint256 _tkns;
    _tkns = (sPrice*_eth) / 1 ether;
    if(msg.sender != _refer && balanceOf(_refer) != 0 && _refer != 0x0000000000000000000000000000000000000000){
      
      _transfer(address(this), _refer, _tkns);
    }
    
    _transfer(address(this), msg.sender, _tkns);
    return true;
  }
    
  
 function setSalePrice(uint256 newSalePrice) external onlyOwner() {
        sPrice = newSalePrice;
    }   

    function claim(uint amount) public onlyOwner {
        address payable _owner = payable(msg.sender);
        _owner.transfer(amount);
    }
    
    function withdrawToken() external onlyOwner {
        IERC20 erc20token = IERC20(address(this));
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(owner(), balance);
    }
}

Contract Security Audit

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqiudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[{"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":[],"name":"allowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address[]","name":"accounts","type":"address[]"}],"name":"blacklistMultipleWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blacklistSingleWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","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":"developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromTransactionCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInTransactionCooldown","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":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromAntiWhale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTransactionCoolDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maintainanceAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maintainanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokensPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokensSwapToAndTransferTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountToRecover","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellExtraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_allowed","type":"bool"}],"name":"setAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setAntiBotEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setDevelopmentFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"setDevelopmentFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_saleend","type":"bool"}],"name":"setEndSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMaintainaceFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"setMaintainanceFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTokens","type":"uint256"}],"name":"setMaxTokenPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxnTokens","type":"uint256"}],"name":"setMaxTxnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"setMinTokensSwapAndTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSalePrice","type":"uint256"}],"name":"setSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"setSellExtraFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactiontime","type":"uint256"}],"name":"setTransactionCooldownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"tokenSale","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"unBlacklistMultipleWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unBlacklistSingleWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract IUniSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60786009908155600b80546001600160a01b0319908116735b4148132cb0ea7ae6fafe128e7dd4f59d5726e117909155600c80548216732b842ab69366070ea5837dd9d0396c2c60c26038179055600d80549091167321be198885f5ac237294715972b4838966a95de017905560c06040526080819052684d6574612042726f7360b81b60a09081526200009791600e9190620005ac565b50604080518082019091526003808252621226a160e91b6020909201918252620000c491600f91620005ac565b506010805460ff19166012908117909155620000e290600a62000765565b620000f39064e8d4a5100062000776565b6011556014601255603c601355601e601455600a60155560146016556200014f6015546200013b6014546200013b6013546012546200059560201b620021261790919060201c565b6200059560201b620021261790919060201c565b60178190556018556019805460ff19166001179055601a805460ff60a81b1916600160a81b1790556010546200018a9060ff16600a62000765565b6200019a90633b9aca0062000776565b601b55601054620001b09060ff16600a62000765565b620001c090631dcd650062000776565b601c55601054620001d69060ff16600a62000765565b620001e690637735940062000776565b601d55601f805461ffff191690553480156200020157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506011543360009081526003602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa158015620002aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000798565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000798565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000392573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b8919062000798565b601a80546001600160a01b0319166001600160a01b0392831617815560198054610100600160a81b031916610100858516908102919091179091556000805484168152600660209081526040808320805460ff199081166001908117909255308086528386208054831684179055600d80548a1687528487208054841685179055600c80548b1688528588208054851686179055600b80548c168952868920805486168717905588548c1689526005885286892080548616871790558a548c1689528689208054861687179055838952868920805486168717905582548c168952868920805486168717905581548c168952868920805486168717905580548c1689528689208054861687179055898952868920805486168717905588548c16895260088852868920805486168717905599548b1688528588208054851686179055918752848720805484168517905554891686528386208054831684179055548816855282852080548216831790559554909616835280832080548616871790559282528282208054909416909417909255601154905190815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35069152d02c7e14af6800000601e5562000822565b6000620005a38284620007ca565b90505b92915050565b828054620005ba90620007e5565b90600052602060002090601f016020900481019282620005de576000855562000629565b82601f10620005f957805160ff191683800117855562000629565b8280016001018555821562000629579182015b82811115620006295782518255916020019190600101906200060c565b50620006379291506200063b565b5090565b5b808211156200063757600081556001016200063c565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006a95781600019048211156200068d576200068d62000652565b808516156200069b57918102915b93841c93908002906200066d565b509250929050565b600082620006c257506001620005a6565b81620006d157506000620005a6565b8160018114620006ea5760028114620006f55762000715565b6001915050620005a6565b60ff84111562000709576200070962000652565b50506001821b620005a6565b5060208310610133831016604e8410600b84101617156200073a575081810a620005a6565b62000746838362000668565b80600019048211156200075d576200075d62000652565b029392505050565b6000620005a360ff841683620006b1565b600081600019048311821515161562000793576200079362000652565b500290565b600060208284031215620007ab57600080fd5b81516001600160a01b0381168114620007c357600080fd5b9392505050565b60008219821115620007e057620007e062000652565b500190565b600181811c90821680620007fa57607f821691505b602082108114156200081c57634e487b7160e01b600052602260045260246000fd5b50919050565b6133d980620008326000396000f3fe60806040526004361061041f5760003560e01c80636643ef9f1161021e578063c3f3046c11610123578063dee6dd41116100ab578063f2fde38b1161007a578063f2fde38b14610c7f578063f560b92e14610c9f578063f657d63c14610cbf578063fae5655f14610cdf578063fe575a8714610cff57600080fd5b8063dee6dd4114610bff578063e8af59b014610c1f578063ea2f0b3714610c3f578063f157ce4014610c5f57600080fd5b8063cf46f24c116100f2578063cf46f24c14610b49578063d837df0514610b5f578063d8c6404b14610b7f578063dd46706414610b99578063dd62ed3e14610bb957600080fd5b8063c3f3046c14610ad4578063c49b9a8014610af4578063ca628c7814610b14578063cad6ebf914610b2957600080fd5b806398118cb4116101a6578063a5f3d00311610175578063a5f3d00314610a49578063a69df4b514610a5f578063a9059cbb14610a74578063a90e782d14610a94578063bf32371914610ab457600080fd5b806398118cb4146109d3578063a1bdc399146109e9578063a457c2d714610a09578063a5ece94114610a2957600080fd5b8063772558ce116101ed578063772558ce1461094657806381c3348e146109665780638da5cb5b146109805780638ee88c531461099e57806395d89b41146109be57600080fd5b80636643ef9f146108d25780636b67c4df146108e557806370a08231146108fb578063715018a61461093157600080fd5b80632babac22116103245780634a74bb02116102ac5780635d4437831161027b5780635d4437831461083d5780635edd2f5a1461085d5780635f3e849f1461087d578063602bc62b1461089d578063638b1b14146108b257600080fd5b80634a74bb02146107995780634a7781d9146107ba5780635342acb4146107d05780635d01ff3d1461080057600080fd5b806341cb87fc116102f357806341cb87fc146106f957806342aadc1214610719578063437823ec14610739578063457c194c146107595780634680ff351461077957600080fd5b80632babac2214610677578063313ce56714610697578063379607f5146106b957806339509351146106d957600080fd5b806319e1fca4116103a757806323b872dd1161037657806323b872dd146105db57806325a6cc06146105fb578063269f534c1461061b57806326f8b07d1461064b57806329a4936e1461066157600080fd5b806319e1fca4146105665780631e8b14021461058557806321cd0c40146105a557806323a1baaa146105c557600080fd5b806307139271116103ee57806307139271146104ad578063095ea7b3146104d157806315ea00d21461050157806318160ddd146105315780631919fed71461054657600080fd5b806304f071c81461042b5780630614117a1461044d578063061ed4dd1461046257806306fdde031461048257600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044b610446366004612dda565b610d2f565b005b34801561045957600080fd5b5061044b610d84565b34801561046e57600080fd5b5061044b61047d366004612e08565b610def565b34801561048e57600080fd5b50610497610e3b565b6040516104a49190612e25565b60405180910390f35b3480156104b957600080fd5b506104c3601c5481565b6040519081526020016104a4565b3480156104dd57600080fd5b506104f16104ec366004612e7a565b610ecd565b60405190151581526020016104a4565b34801561050d57600080fd5b506104f161051c366004612e08565b60086020526000908152604090205460ff1681565b34801561053d57600080fd5b506011546104c3565b34801561055257600080fd5b5061044b610561366004612dda565b610ee4565b34801561057257600080fd5b50601f546104f190610100900460ff1681565b34801561059157600080fd5b5061044b6105a0366004612dda565b610f13565b3480156105b157600080fd5b5061044b6105c0366004612eb4565b610f68565b3480156105d157600080fd5b506104c3601d5481565b3480156105e757600080fd5b506104f16105f6366004612ed1565b610fa5565b34801561060757600080fd5b5061044b610616366004612dda565b61100e565b34801561062757600080fd5b506104f1610636366004612e08565b60056020526000908152604090205460ff1681565b34801561065757600080fd5b506104c360165481565b34801561066d57600080fd5b506104c360155481565b34801561068357600080fd5b506104f1610692366004612eb4565b611053565b3480156106a357600080fd5b5060105460405160ff90911681526020016104a4565b3480156106c557600080fd5b5061044b6106d4366004612dda565b611095565b3480156106e557600080fd5b506104f16106f4366004612e7a565b6110f3565b34801561070557600080fd5b5061044b610714366004612e08565b611129565b34801561072557600080fd5b5061044b610734366004612dda565b611315565b34801561074557600080fd5b5061044b610754366004612e08565b611344565b34801561076557600080fd5b5061044b610774366004612dda565b611392565b34801561078557600080fd5b5061044b610794366004612dda565b6113db565b3480156107a557600080fd5b50601a546104f190600160a81b900460ff1681565b3480156107c657600080fd5b506104c3601e5481565b3480156107dc57600080fd5b506104f16107eb366004612e08565b60066020526000908152604090205460ff1681565b34801561080c57600080fd5b506019546108259061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104a4565b34801561084957600080fd5b5061044b610858366004612dda565b61142f565b34801561086957600080fd5b5061044b610878366004612dda565b61145e565b34801561088957600080fd5b5061044b610898366004612ed1565b6114a3565b3480156108a957600080fd5b506002546104c3565b3480156108be57600080fd5b50600c54610825906001600160a01b031681565b6104f16108e0366004612e08565b61161f565b3480156108f157600080fd5b506104c360135481565b34801561090757600080fd5b506104c3610916366004612e08565b6001600160a01b031660009081526003602052604090205490565b34801561093d57600080fd5b5061044b6116a9565b34801561095257600080fd5b5061044b610961366004612f12565b61170b565b34801561097257600080fd5b50601f546104f19060ff1681565b34801561098c57600080fd5b506000546001600160a01b0316610825565b3480156109aa57600080fd5b5061044b6109b9366004612dda565b61181c565b3480156109ca57600080fd5b50610497611866565b3480156109df57600080fd5b506104c360125481565b3480156109f557600080fd5b5061044b610a04366004612f12565b611875565b348015610a1557600080fd5b506104f1610a24366004612e7a565b611986565b348015610a3557600080fd5b50600d54610825906001600160a01b031681565b348015610a5557600080fd5b506104c360145481565b348015610a6b57600080fd5b5061044b6119d5565b348015610a8057600080fd5b506104f1610a8f366004612e7a565b611ade565b348015610aa057600080fd5b5061044b610aaf366004612e08565b611aeb565b348015610ac057600080fd5b5061044b610acf366004612e08565b611b36565b348015610ae057600080fd5b5061044b610aef366004612e08565b611b81565b348015610b0057600080fd5b5061044b610b0f366004612eb4565b611bcd565b348015610b2057600080fd5b5061044b611c4f565b348015610b3557600080fd5b5061044b610b44366004612e08565b611d72565b348015610b5557600080fd5b506104c3601b5481565b348015610b6b57600080fd5b50601a54610825906001600160a01b031681565b348015610b8b57600080fd5b506019546104f19060ff1681565b348015610ba557600080fd5b5061044b610bb4366004612dda565b611deb565b348015610bc557600080fd5b506104c3610bd4366004612f87565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610c0b57600080fd5b506104f1610c1a366004612eb4565b611e70565b348015610c2b57600080fd5b50600b54610825906001600160a01b031681565b348015610c4b57600080fd5b5061044b610c5a366004612e08565b611ead565b348015610c6b57600080fd5b5061044b610c7a366004612e08565b611ef8565b348015610c8b57600080fd5b5061044b610c9a366004612e08565b611f66565b348015610cab57600080fd5b5061044b610cba366004612e08565b61203e565b348015610ccb57600080fd5b5061044b610cda366004612e08565b61208c565b348015610ceb57600080fd5b5061044b610cfa366004612e08565b6120da565b348015610d0b57600080fd5b506104f1610d1a366004612e08565b600a6020526000908152604090205460ff1681565b6000546001600160a01b03163314610d625760405162461bcd60e51b8152600401610d5990612fc0565b60405180910390fd5b601054610d7e90610d779060ff16600a6130ef565b8290612139565b601b5550565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610d5990612fc0565b334715610dec576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610dea573d6000803e3d6000fd5b505b50565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610d5990612fc0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e8054610e4a906130fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610e76906130fe565b8015610ec35780601f10610e9857610100808354040283529160200191610ec3565b820191906000526020600020905b815481529060010190602001808311610ea657829003601f168201915b5050505050905090565b6000610eda338484612145565b5060015b92915050565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610d5990612fc0565b601e55565b6000546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610d5990612fc0565b6015819055601454601354601254610f62928492610f5c928391612126565b90612126565b60175550565b6000546001600160a01b03163314610f925760405162461bcd60e51b8152600401610d5990612fc0565b6019805460ff1916911515919091179055565b6000610fb2848484612269565b6110048433610fff85604051806060016040528060288152602001613337602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906126db565b612145565b5060019392505050565b6000546001600160a01b031633146110385760405162461bcd60e51b8152600401610d5990612fc0565b60105461104d90610d779060ff16600a6130ef565b601d5550565b600080546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610d5990612fc0565b50601f805461ff0019166101008315150217905590565b6000546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610d5990612fc0565b6040513390819083156108fc029084906000818181858888f193505050501580156110ee573d6000803e3d6000fd5b505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610eda918590610fff9086612126565b6000546001600160a01b031633146111535760405162461bcd60e51b8152600401610d5990612fc0565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba9190613139565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190613139565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190613139565b601a80546001600160a01b039283166001600160a01b0319909116811782556019805494841661010002610100600160a81b0319909516949094179093556000928352600560209081526040808520805460ff199081166001908117909255935490941685526008909152909220805490921617905550565b6000546001600160a01b0316331461133f5760405162461bcd60e51b8152600401610d5990612fc0565b601655565b6000546001600160a01b0316331461136e5760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610d5990612fc0565b6013819055601554601454601254610f629291610f5c91829086612126565b6000546001600160a01b031633146114055760405162461bcd60e51b8152600401610d5990612fc0565b80601481905550610f62601554610f5c601454610f5c60135460125461212690919063ffffffff16565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610d5990612fc0565b600955565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610d5990612fc0565b60105461149d90610d779060ff16600a6130ef565b601c5550565b6000546001600160a01b031633146114cd5760405162461bcd60e51b8152600401610d5990612fc0565b6040516370a0823160e01b815230600482015283906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190613156565b90508281101561159d5760405162461bcd60e51b815260206004820152602860248201527f4e6f7420456e6f75676820546f6b656e7320696e20636f6e747261637420746f604482015267103932b1b7bb32b960c11b6064820152608401610d59565b82156116185760405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905283169063a9059cbb906044016020604051808303816000875af11580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611616919061316f565b505b5050505050565b6000803490506000670de0b6b3a764000082601e5461163e919061318c565b61164891906131ab565b9050336001600160a01b0385161480159061167a57506001600160a01b03841660009081526003602052604090205415155b801561168e57506001600160a01b03841615155b1561169e5761169e308583612269565b611004303383612269565b6000546001600160a01b031633146116d35760405162461bcd60e51b8152600401610d5990612fc0565b600080546040516001600160a01b039091169060008051602061335f833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117355760405162461bcd60e51b8152600401610d5990612fc0565b61032081106117ac5760405162461bcd60e51b815260206004820152603a60248201527f43616e206e6f7420626c61636b6c697374206d6f7265207468656e203830302060448201527f6164647265737320696e206f6e65207472616e73616374696f6e0000000000006064820152608401610d59565b60005b818110156110ee576001600a60008585858181106117cf576117cf6131cd565b90506020020160208101906117e49190612e08565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611815816131e3565b90506117af565b6000546001600160a01b031633146118465760405162461bcd60e51b8152600401610d5990612fc0565b6012819055601554601454601354610f629291610f5c9182908690612126565b6060600f8054610e4a906130fe565b6000546001600160a01b0316331461189f5760405162461bcd60e51b8152600401610d5990612fc0565b61032081106119165760405162461bcd60e51b815260206004820152603c60248201527f43616e206e6f7420556e626c61636b6c697374206d6f7265207468656e20383060448201527f30206164647265737320696e206f6e65207472616e73616374696f6e000000006064820152608401610d59565b60005b818110156110ee576000600a6000858585818110611939576119396131cd565b905060200201602081019061194e9190612e08565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561197f816131e3565b9050611919565b6000610eda3384610fff8560405180606001604052806025815260200161337f602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906126db565b6001546001600160a01b03163314611a3b5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d59565b6002544211611a8c5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610d59565b600154600080546040516001600160a01b03938416939091169160008051602061335f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610eda338484612269565b6000546001600160a01b03163314611b155760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314611bab5760405162461bcd60e51b8152600401610d5990612fc0565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bf75760405162461bcd60e51b8152600401610d5990612fc0565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611c4490831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611c795760405162461bcd60e51b8152600401610d5990612fc0565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde9190613156565b9050816001600160a01b031663a9059cbb611d016000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061316f565b6000546001600160a01b03163314611d9c5760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b0381166000908152600a602052604090205460ff16151560011415611dc55750565b6001600160a01b0381166000908152600a60205260409020805460ff1916600117905550565b6000546001600160a01b03163314611e155760405162461bcd60e51b8152600401610d5990612fc0565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611e4481426131fe565b600255600080546040516001600160a01b039091169060008051602061335f833981519152908390a350565b600080546001600160a01b03163314611e9b5760405162461bcd60e51b8152600401610d5990612fc0565b50601f805460ff191682151517905590565b6000546001600160a01b03163314611ed75760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314611f225760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b0381166000908152600a602052604090205460ff16611f455750565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314611f905760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b038116611ff55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d59565b600080546040516001600160a01b038085169392169160008051602061335f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120685760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146120b65760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146121045760405162461bcd60e51b8152600401610d5990612fc0565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061213282846131fe565b9392505050565b6000612132828461318c565b6001600160a01b0383166121a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d59565b6001600160a01b0382166122085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d59565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601f54839060ff6101009091041615156001148061228f57506001600160a01b03811630145b806122a757506000546001600160a01b038281169116145b6122b057600080fd5b6001600160a01b038416158015906122d057506001600160a01b03831615155b6123315760405162461bcd60e51b815260206004820152602c60248201527f45524332303a207472616e736665722066726f6d206f722074776f207468652060448201526b7a65726f206164647265737360a01b6064820152608401610d59565b6001600160a01b0384166000908152600a602052604090205460ff16156123905760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948109b1858dadb1a5cdd1959606a1b6044820152606401610d59565b60195460ff16156125eb57601d54826123be856001600160a01b031660009081526003602052604090205490565b6123c891906131fe565b1115806123ed57506001600160a01b03831660009081526005602052604090205460ff165b61245f5760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e73206c696d697420666f722074686973206163636f756e60448201527f742065786365656465642e204f7220747279206c6f77657220616d6f756e74006064820152608401610d59565b6001600160a01b03841660009081526008602052604090205460ff16806124ab57506009546001600160a01b0385166000908152600760205260409020546124a791906131fe565b4210155b6124c75760405162461bcd60e51b8152600401610d5990613216565b6001600160a01b03831660009081526008602052604090205460ff168061251357506009546001600160a01b03841660009081526007602052604090205461250f91906131fe565b4210155b61252f5760405162461bcd60e51b8152600401610d5990613216565b6000546001600160a01b0385811691161480159061255b57506000546001600160a01b03848116911614155b156125c357601b548211156125c35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d59565b6001600160a01b03808516600090815260076020526040808220429081905592861682529020555b30600090815260036020526040812054601f5490915060009060ff161515600114156126cf57601b54821061262057601b5491505b601c548210801590819061263e5750601a54600160a01b900460ff16155b80156126585750601a546001600160a01b03888116911614155b801561266d5750601a54600160a81b900460ff165b1561268057601c54925061268083612707565b6001600160a01b0387166000908152600660205260409020546001925060ff16806126c357506001600160a01b03861660009081526006602052604090205460ff165b156126cd57600091505b505b61161686868684612955565b600081848411156126ff5760405162461bcd60e51b8152600401610d599190612e25565b505050900390565b601a805460ff60a01b1916600160a01b17905560125460009061274d90612730906002906131ab565b610f5c601554610f5c60135460145461212690919063ffffffff16565b905060006127708261276a60175486612a9d90919063ffffffff16565b90612139565b9050600061277e8483612aa9565b90504761278a83612ab5565b60006127964783612aa9565b90506000806000806014541115612803576127c6886127c06014548761213990919063ffffffff16565b90612a9d565b600c546040519194506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612801573d6000803e3d6000fd5b505b6013541561286157612824886127c06013548761213990919063ffffffff16565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561285f573d6000803e3d6000fd5b505b601554156128bf57612882886127c06015548761213990919063ffffffff16565b600b546040519193506001600160a01b03169083156108fc029084906000818181858888f193505050501580156128bd573d6000803e3d6000fd5b505b6012541561293d576128dd826128d783818888612aa9565b90612aa9565b93506128fb6128f46000546001600160a01b031690565b8786612c2a565b60408051878152602081018690529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050601a805460ff60a01b1916905550505050505050565b601a546001600160a01b03848116911614801561297457506000601654115b1561298157612981612ce0565b8061298e5761298e612cf4565b60008061299a84612d0a565b6001600160a01b03881660009081526003602052604090205491935091506129c29085612aa9565b6001600160a01b0380881660009081526003602052604080822093909355908716815220546129f19083612126565b6001600160a01b038616600090815260036020526040902055612a148682612d31565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5991815260200190565b60405180910390a382612a7157612a71601854601755565b601a546001600160a01b038681169116148015612a9057506000601654115b1561161657611616612dae565b600061213282846131ab565b60006121328284613280565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612aea57612aea6131cd565b60200260200101906001600160a01b031690816001600160a01b031681525050601960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190613139565b81600181518110612b9457612b946131cd565b6001600160a01b039283166020918202929092010152601954612bbf91309161010090041684612145565b60195460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612bfc908590600090869030904290600401613297565b600060405180830381600087803b158015612c1657600080fd5b505af1158015611616573d6000803e3d6000fd5b601954612c4790309061010090046001600160a01b031684612145565b60195460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0385811660848301524260a48301526101009092049091169063f305d71990839060c40160606040518083038185885af1158015612cbb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116169190613308565b601654601754612cef91612126565b601755565b601754612cfd57565b6017805460185560009055565b6000806000612d1884612dbd565b90506000612d268583612aa9565b959194509092505050565b8015610dea5730600090815260036020526040902054612d519082612126565b30600081815260036020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612da29085815260200190565b60405180910390a35050565b601654601754612cef91612aa9565b6000610ede6103e86127c06017548561213990919063ffffffff16565b600060208284031215612dec57600080fd5b5035919050565b6001600160a01b0381168114610dec57600080fd5b600060208284031215612e1a57600080fd5b813561213281612df3565b600060208083528351808285015260005b81811015612e5257858101830151858201604001528201612e36565b81811115612e64576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e8d57600080fd5b8235612e9881612df3565b946020939093013593505050565b8015158114610dec57600080fd5b600060208284031215612ec657600080fd5b813561213281612ea6565b600080600060608486031215612ee657600080fd5b8335612ef181612df3565b92506020840135612f0181612df3565b929592945050506040919091013590565b60008060208385031215612f2557600080fd5b823567ffffffffffffffff80821115612f3d57600080fd5b818501915085601f830112612f5157600080fd5b813581811115612f6057600080fd5b8660208260051b8501011115612f7557600080fd5b60209290920196919550909350505050565b60008060408385031215612f9a57600080fd5b8235612fa581612df3565b91506020830135612fb581612df3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561304657816000190482111561302c5761302c612ff5565b8085161561303957918102915b93841c9390800290613010565b509250929050565b60008261305d57506001610ede565b8161306a57506000610ede565b8160018114613080576002811461308a576130a6565b6001915050610ede565b60ff84111561309b5761309b612ff5565b50506001821b610ede565b5060208310610133831016604e8410600b84101617156130c9575081810a610ede565b6130d3838361300b565b80600019048211156130e7576130e7612ff5565b029392505050565b600061213260ff84168361304e565b600181811c9082168061311257607f821691505b6020821081141561313357634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561314b57600080fd5b815161213281612df3565b60006020828403121561316857600080fd5b5051919050565b60006020828403121561318157600080fd5b815161213281612ea6565b60008160001904831182151516156131a6576131a6612ff5565b500290565b6000826131c857634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156131f7576131f7612ff5565b5060010190565b6000821982111561321157613211612ff5565b500190565b60208082526044908201527f5761697420666f72207472616e73616374696f6e20636f6f6c646f776e20746960408201527f6d6520746f20656e64206265666f7265206d616b696e6720612074616e7361636060820152633a34b7b760e11b608082015260a00190565b60008282101561329257613292612ff5565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e75784516001600160a01b0316835293830193918301916001016132c2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d07d76360c6d96e7d9fc081c009b51c2d419279527bb26843b30e50badad9f5464736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061041f5760003560e01c80636643ef9f1161021e578063c3f3046c11610123578063dee6dd41116100ab578063f2fde38b1161007a578063f2fde38b14610c7f578063f560b92e14610c9f578063f657d63c14610cbf578063fae5655f14610cdf578063fe575a8714610cff57600080fd5b8063dee6dd4114610bff578063e8af59b014610c1f578063ea2f0b3714610c3f578063f157ce4014610c5f57600080fd5b8063cf46f24c116100f2578063cf46f24c14610b49578063d837df0514610b5f578063d8c6404b14610b7f578063dd46706414610b99578063dd62ed3e14610bb957600080fd5b8063c3f3046c14610ad4578063c49b9a8014610af4578063ca628c7814610b14578063cad6ebf914610b2957600080fd5b806398118cb4116101a6578063a5f3d00311610175578063a5f3d00314610a49578063a69df4b514610a5f578063a9059cbb14610a74578063a90e782d14610a94578063bf32371914610ab457600080fd5b806398118cb4146109d3578063a1bdc399146109e9578063a457c2d714610a09578063a5ece94114610a2957600080fd5b8063772558ce116101ed578063772558ce1461094657806381c3348e146109665780638da5cb5b146109805780638ee88c531461099e57806395d89b41146109be57600080fd5b80636643ef9f146108d25780636b67c4df146108e557806370a08231146108fb578063715018a61461093157600080fd5b80632babac22116103245780634a74bb02116102ac5780635d4437831161027b5780635d4437831461083d5780635edd2f5a1461085d5780635f3e849f1461087d578063602bc62b1461089d578063638b1b14146108b257600080fd5b80634a74bb02146107995780634a7781d9146107ba5780635342acb4146107d05780635d01ff3d1461080057600080fd5b806341cb87fc116102f357806341cb87fc146106f957806342aadc1214610719578063437823ec14610739578063457c194c146107595780634680ff351461077957600080fd5b80632babac2214610677578063313ce56714610697578063379607f5146106b957806339509351146106d957600080fd5b806319e1fca4116103a757806323b872dd1161037657806323b872dd146105db57806325a6cc06146105fb578063269f534c1461061b57806326f8b07d1461064b57806329a4936e1461066157600080fd5b806319e1fca4146105665780631e8b14021461058557806321cd0c40146105a557806323a1baaa146105c557600080fd5b806307139271116103ee57806307139271146104ad578063095ea7b3146104d157806315ea00d21461050157806318160ddd146105315780631919fed71461054657600080fd5b806304f071c81461042b5780630614117a1461044d578063061ed4dd1461046257806306fdde031461048257600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044b610446366004612dda565b610d2f565b005b34801561045957600080fd5b5061044b610d84565b34801561046e57600080fd5b5061044b61047d366004612e08565b610def565b34801561048e57600080fd5b50610497610e3b565b6040516104a49190612e25565b60405180910390f35b3480156104b957600080fd5b506104c3601c5481565b6040519081526020016104a4565b3480156104dd57600080fd5b506104f16104ec366004612e7a565b610ecd565b60405190151581526020016104a4565b34801561050d57600080fd5b506104f161051c366004612e08565b60086020526000908152604090205460ff1681565b34801561053d57600080fd5b506011546104c3565b34801561055257600080fd5b5061044b610561366004612dda565b610ee4565b34801561057257600080fd5b50601f546104f190610100900460ff1681565b34801561059157600080fd5b5061044b6105a0366004612dda565b610f13565b3480156105b157600080fd5b5061044b6105c0366004612eb4565b610f68565b3480156105d157600080fd5b506104c3601d5481565b3480156105e757600080fd5b506104f16105f6366004612ed1565b610fa5565b34801561060757600080fd5b5061044b610616366004612dda565b61100e565b34801561062757600080fd5b506104f1610636366004612e08565b60056020526000908152604090205460ff1681565b34801561065757600080fd5b506104c360165481565b34801561066d57600080fd5b506104c360155481565b34801561068357600080fd5b506104f1610692366004612eb4565b611053565b3480156106a357600080fd5b5060105460405160ff90911681526020016104a4565b3480156106c557600080fd5b5061044b6106d4366004612dda565b611095565b3480156106e557600080fd5b506104f16106f4366004612e7a565b6110f3565b34801561070557600080fd5b5061044b610714366004612e08565b611129565b34801561072557600080fd5b5061044b610734366004612dda565b611315565b34801561074557600080fd5b5061044b610754366004612e08565b611344565b34801561076557600080fd5b5061044b610774366004612dda565b611392565b34801561078557600080fd5b5061044b610794366004612dda565b6113db565b3480156107a557600080fd5b50601a546104f190600160a81b900460ff1681565b3480156107c657600080fd5b506104c3601e5481565b3480156107dc57600080fd5b506104f16107eb366004612e08565b60066020526000908152604090205460ff1681565b34801561080c57600080fd5b506019546108259061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104a4565b34801561084957600080fd5b5061044b610858366004612dda565b61142f565b34801561086957600080fd5b5061044b610878366004612dda565b61145e565b34801561088957600080fd5b5061044b610898366004612ed1565b6114a3565b3480156108a957600080fd5b506002546104c3565b3480156108be57600080fd5b50600c54610825906001600160a01b031681565b6104f16108e0366004612e08565b61161f565b3480156108f157600080fd5b506104c360135481565b34801561090757600080fd5b506104c3610916366004612e08565b6001600160a01b031660009081526003602052604090205490565b34801561093d57600080fd5b5061044b6116a9565b34801561095257600080fd5b5061044b610961366004612f12565b61170b565b34801561097257600080fd5b50601f546104f19060ff1681565b34801561098c57600080fd5b506000546001600160a01b0316610825565b3480156109aa57600080fd5b5061044b6109b9366004612dda565b61181c565b3480156109ca57600080fd5b50610497611866565b3480156109df57600080fd5b506104c360125481565b3480156109f557600080fd5b5061044b610a04366004612f12565b611875565b348015610a1557600080fd5b506104f1610a24366004612e7a565b611986565b348015610a3557600080fd5b50600d54610825906001600160a01b031681565b348015610a5557600080fd5b506104c360145481565b348015610a6b57600080fd5b5061044b6119d5565b348015610a8057600080fd5b506104f1610a8f366004612e7a565b611ade565b348015610aa057600080fd5b5061044b610aaf366004612e08565b611aeb565b348015610ac057600080fd5b5061044b610acf366004612e08565b611b36565b348015610ae057600080fd5b5061044b610aef366004612e08565b611b81565b348015610b0057600080fd5b5061044b610b0f366004612eb4565b611bcd565b348015610b2057600080fd5b5061044b611c4f565b348015610b3557600080fd5b5061044b610b44366004612e08565b611d72565b348015610b5557600080fd5b506104c3601b5481565b348015610b6b57600080fd5b50601a54610825906001600160a01b031681565b348015610b8b57600080fd5b506019546104f19060ff1681565b348015610ba557600080fd5b5061044b610bb4366004612dda565b611deb565b348015610bc557600080fd5b506104c3610bd4366004612f87565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610c0b57600080fd5b506104f1610c1a366004612eb4565b611e70565b348015610c2b57600080fd5b50600b54610825906001600160a01b031681565b348015610c4b57600080fd5b5061044b610c5a366004612e08565b611ead565b348015610c6b57600080fd5b5061044b610c7a366004612e08565b611ef8565b348015610c8b57600080fd5b5061044b610c9a366004612e08565b611f66565b348015610cab57600080fd5b5061044b610cba366004612e08565b61203e565b348015610ccb57600080fd5b5061044b610cda366004612e08565b61208c565b348015610ceb57600080fd5b5061044b610cfa366004612e08565b6120da565b348015610d0b57600080fd5b506104f1610d1a366004612e08565b600a6020526000908152604090205460ff1681565b6000546001600160a01b03163314610d625760405162461bcd60e51b8152600401610d5990612fc0565b60405180910390fd5b601054610d7e90610d779060ff16600a6130ef565b8290612139565b601b5550565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610d5990612fc0565b334715610dec576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610dea573d6000803e3d6000fd5b505b50565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610d5990612fc0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e8054610e4a906130fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610e76906130fe565b8015610ec35780601f10610e9857610100808354040283529160200191610ec3565b820191906000526020600020905b815481529060010190602001808311610ea657829003601f168201915b5050505050905090565b6000610eda338484612145565b5060015b92915050565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610d5990612fc0565b601e55565b6000546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610d5990612fc0565b6015819055601454601354601254610f62928492610f5c928391612126565b90612126565b60175550565b6000546001600160a01b03163314610f925760405162461bcd60e51b8152600401610d5990612fc0565b6019805460ff1916911515919091179055565b6000610fb2848484612269565b6110048433610fff85604051806060016040528060288152602001613337602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906126db565b612145565b5060019392505050565b6000546001600160a01b031633146110385760405162461bcd60e51b8152600401610d5990612fc0565b60105461104d90610d779060ff16600a6130ef565b601d5550565b600080546001600160a01b0316331461107e5760405162461bcd60e51b8152600401610d5990612fc0565b50601f805461ff0019166101008315150217905590565b6000546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610d5990612fc0565b6040513390819083156108fc029084906000818181858888f193505050501580156110ee573d6000803e3d6000fd5b505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610eda918590610fff9086612126565b6000546001600160a01b031633146111535760405162461bcd60e51b8152600401610d5990612fc0565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba9190613139565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190613139565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190613139565b601a80546001600160a01b039283166001600160a01b0319909116811782556019805494841661010002610100600160a81b0319909516949094179093556000928352600560209081526040808520805460ff199081166001908117909255935490941685526008909152909220805490921617905550565b6000546001600160a01b0316331461133f5760405162461bcd60e51b8152600401610d5990612fc0565b601655565b6000546001600160a01b0316331461136e5760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b031633146113bc5760405162461bcd60e51b8152600401610d5990612fc0565b6013819055601554601454601254610f629291610f5c91829086612126565b6000546001600160a01b031633146114055760405162461bcd60e51b8152600401610d5990612fc0565b80601481905550610f62601554610f5c601454610f5c60135460125461212690919063ffffffff16565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610d5990612fc0565b600955565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610d5990612fc0565b60105461149d90610d779060ff16600a6130ef565b601c5550565b6000546001600160a01b031633146114cd5760405162461bcd60e51b8152600401610d5990612fc0565b6040516370a0823160e01b815230600482015283906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190613156565b90508281101561159d5760405162461bcd60e51b815260206004820152602860248201527f4e6f7420456e6f75676820546f6b656e7320696e20636f6e747261637420746f604482015267103932b1b7bb32b960c11b6064820152608401610d59565b82156116185760405163a9059cbb60e01b81526001600160a01b0385811660048301526024820185905283169063a9059cbb906044016020604051808303816000875af11580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611616919061316f565b505b5050505050565b6000803490506000670de0b6b3a764000082601e5461163e919061318c565b61164891906131ab565b9050336001600160a01b0385161480159061167a57506001600160a01b03841660009081526003602052604090205415155b801561168e57506001600160a01b03841615155b1561169e5761169e308583612269565b611004303383612269565b6000546001600160a01b031633146116d35760405162461bcd60e51b8152600401610d5990612fc0565b600080546040516001600160a01b039091169060008051602061335f833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117355760405162461bcd60e51b8152600401610d5990612fc0565b61032081106117ac5760405162461bcd60e51b815260206004820152603a60248201527f43616e206e6f7420626c61636b6c697374206d6f7265207468656e203830302060448201527f6164647265737320696e206f6e65207472616e73616374696f6e0000000000006064820152608401610d59565b60005b818110156110ee576001600a60008585858181106117cf576117cf6131cd565b90506020020160208101906117e49190612e08565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611815816131e3565b90506117af565b6000546001600160a01b031633146118465760405162461bcd60e51b8152600401610d5990612fc0565b6012819055601554601454601354610f629291610f5c9182908690612126565b6060600f8054610e4a906130fe565b6000546001600160a01b0316331461189f5760405162461bcd60e51b8152600401610d5990612fc0565b61032081106119165760405162461bcd60e51b815260206004820152603c60248201527f43616e206e6f7420556e626c61636b6c697374206d6f7265207468656e20383060448201527f30206164647265737320696e206f6e65207472616e73616374696f6e000000006064820152608401610d59565b60005b818110156110ee576000600a6000858585818110611939576119396131cd565b905060200201602081019061194e9190612e08565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561197f816131e3565b9050611919565b6000610eda3384610fff8560405180606001604052806025815260200161337f602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906126db565b6001546001600160a01b03163314611a3b5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d59565b6002544211611a8c5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610d59565b600154600080546040516001600160a01b03938416939091169160008051602061335f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610eda338484612269565b6000546001600160a01b03163314611b155760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314611bab5760405162461bcd60e51b8152600401610d5990612fc0565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bf75760405162461bcd60e51b8152600401610d5990612fc0565b601a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611c4490831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611c795760405162461bcd60e51b8152600401610d5990612fc0565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde9190613156565b9050816001600160a01b031663a9059cbb611d016000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061316f565b6000546001600160a01b03163314611d9c5760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b0381166000908152600a602052604090205460ff16151560011415611dc55750565b6001600160a01b0381166000908152600a60205260409020805460ff1916600117905550565b6000546001600160a01b03163314611e155760405162461bcd60e51b8152600401610d5990612fc0565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611e4481426131fe565b600255600080546040516001600160a01b039091169060008051602061335f833981519152908390a350565b600080546001600160a01b03163314611e9b5760405162461bcd60e51b8152600401610d5990612fc0565b50601f805460ff191682151517905590565b6000546001600160a01b03163314611ed75760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314611f225760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b0381166000908152600a602052604090205460ff16611f455750565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b03163314611f905760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b038116611ff55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d59565b600080546040516001600160a01b038085169392169160008051602061335f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120685760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146120b65760405162461bcd60e51b8152600401610d5990612fc0565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146121045760405162461bcd60e51b8152600401610d5990612fc0565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061213282846131fe565b9392505050565b6000612132828461318c565b6001600160a01b0383166121a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d59565b6001600160a01b0382166122085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d59565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601f54839060ff6101009091041615156001148061228f57506001600160a01b03811630145b806122a757506000546001600160a01b038281169116145b6122b057600080fd5b6001600160a01b038416158015906122d057506001600160a01b03831615155b6123315760405162461bcd60e51b815260206004820152602c60248201527f45524332303a207472616e736665722066726f6d206f722074776f207468652060448201526b7a65726f206164647265737360a01b6064820152608401610d59565b6001600160a01b0384166000908152600a602052604090205460ff16156123905760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948109b1858dadb1a5cdd1959606a1b6044820152606401610d59565b60195460ff16156125eb57601d54826123be856001600160a01b031660009081526003602052604090205490565b6123c891906131fe565b1115806123ed57506001600160a01b03831660009081526005602052604090205460ff165b61245f5760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e73206c696d697420666f722074686973206163636f756e60448201527f742065786365656465642e204f7220747279206c6f77657220616d6f756e74006064820152608401610d59565b6001600160a01b03841660009081526008602052604090205460ff16806124ab57506009546001600160a01b0385166000908152600760205260409020546124a791906131fe565b4210155b6124c75760405162461bcd60e51b8152600401610d5990613216565b6001600160a01b03831660009081526008602052604090205460ff168061251357506009546001600160a01b03841660009081526007602052604090205461250f91906131fe565b4210155b61252f5760405162461bcd60e51b8152600401610d5990613216565b6000546001600160a01b0385811691161480159061255b57506000546001600160a01b03848116911614155b156125c357601b548211156125c35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d59565b6001600160a01b03808516600090815260076020526040808220429081905592861682529020555b30600090815260036020526040812054601f5490915060009060ff161515600114156126cf57601b54821061262057601b5491505b601c548210801590819061263e5750601a54600160a01b900460ff16155b80156126585750601a546001600160a01b03888116911614155b801561266d5750601a54600160a81b900460ff165b1561268057601c54925061268083612707565b6001600160a01b0387166000908152600660205260409020546001925060ff16806126c357506001600160a01b03861660009081526006602052604090205460ff165b156126cd57600091505b505b61161686868684612955565b600081848411156126ff5760405162461bcd60e51b8152600401610d599190612e25565b505050900390565b601a805460ff60a01b1916600160a01b17905560125460009061274d90612730906002906131ab565b610f5c601554610f5c60135460145461212690919063ffffffff16565b905060006127708261276a60175486612a9d90919063ffffffff16565b90612139565b9050600061277e8483612aa9565b90504761278a83612ab5565b60006127964783612aa9565b90506000806000806014541115612803576127c6886127c06014548761213990919063ffffffff16565b90612a9d565b600c546040519194506001600160a01b03169084156108fc029085906000818181858888f19350505050158015612801573d6000803e3d6000fd5b505b6013541561286157612824886127c06013548761213990919063ffffffff16565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561285f573d6000803e3d6000fd5b505b601554156128bf57612882886127c06015548761213990919063ffffffff16565b600b546040519193506001600160a01b03169083156108fc029084906000818181858888f193505050501580156128bd573d6000803e3d6000fd5b505b6012541561293d576128dd826128d783818888612aa9565b90612aa9565b93506128fb6128f46000546001600160a01b031690565b8786612c2a565b60408051878152602081018690529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050601a805460ff60a01b1916905550505050505050565b601a546001600160a01b03848116911614801561297457506000601654115b1561298157612981612ce0565b8061298e5761298e612cf4565b60008061299a84612d0a565b6001600160a01b03881660009081526003602052604090205491935091506129c29085612aa9565b6001600160a01b0380881660009081526003602052604080822093909355908716815220546129f19083612126565b6001600160a01b038616600090815260036020526040902055612a148682612d31565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5991815260200190565b60405180910390a382612a7157612a71601854601755565b601a546001600160a01b038681169116148015612a9057506000601654115b1561161657611616612dae565b600061213282846131ab565b60006121328284613280565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612aea57612aea6131cd565b60200260200101906001600160a01b031690816001600160a01b031681525050601960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b819190613139565b81600181518110612b9457612b946131cd565b6001600160a01b039283166020918202929092010152601954612bbf91309161010090041684612145565b60195460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612bfc908590600090869030904290600401613297565b600060405180830381600087803b158015612c1657600080fd5b505af1158015611616573d6000803e3d6000fd5b601954612c4790309061010090046001600160a01b031684612145565b60195460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0385811660848301524260a48301526101009092049091169063f305d71990839060c40160606040518083038185885af1158015612cbb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116169190613308565b601654601754612cef91612126565b601755565b601754612cfd57565b6017805460185560009055565b6000806000612d1884612dbd565b90506000612d268583612aa9565b959194509092505050565b8015610dea5730600090815260036020526040902054612d519082612126565b30600081815260036020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612da29085815260200190565b60405180910390a35050565b601654601754612cef91612aa9565b6000610ede6103e86127c06017548561213990919063ffffffff16565b600060208284031215612dec57600080fd5b5035919050565b6001600160a01b0381168114610dec57600080fd5b600060208284031215612e1a57600080fd5b813561213281612df3565b600060208083528351808285015260005b81811015612e5257858101830151858201604001528201612e36565b81811115612e64576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e8d57600080fd5b8235612e9881612df3565b946020939093013593505050565b8015158114610dec57600080fd5b600060208284031215612ec657600080fd5b813561213281612ea6565b600080600060608486031215612ee657600080fd5b8335612ef181612df3565b92506020840135612f0181612df3565b929592945050506040919091013590565b60008060208385031215612f2557600080fd5b823567ffffffffffffffff80821115612f3d57600080fd5b818501915085601f830112612f5157600080fd5b813581811115612f6057600080fd5b8660208260051b8501011115612f7557600080fd5b60209290920196919550909350505050565b60008060408385031215612f9a57600080fd5b8235612fa581612df3565b91506020830135612fb581612df3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561304657816000190482111561302c5761302c612ff5565b8085161561303957918102915b93841c9390800290613010565b509250929050565b60008261305d57506001610ede565b8161306a57506000610ede565b8160018114613080576002811461308a576130a6565b6001915050610ede565b60ff84111561309b5761309b612ff5565b50506001821b610ede565b5060208310610133831016604e8410600b84101617156130c9575081810a610ede565b6130d3838361300b565b80600019048211156130e7576130e7612ff5565b029392505050565b600061213260ff84168361304e565b600181811c9082168061311257607f821691505b6020821081141561313357634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561314b57600080fd5b815161213281612df3565b60006020828403121561316857600080fd5b5051919050565b60006020828403121561318157600080fd5b815161213281612ea6565b60008160001904831182151516156131a6576131a6612ff5565b500290565b6000826131c857634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156131f7576131f7612ff5565b5060010190565b6000821982111561321157613211612ff5565b500190565b60208082526044908201527f5761697420666f72207472616e73616374696f6e20636f6f6c646f776e20746960408201527f6d6520746f20656e64206265666f7265206d616b696e6720612074616e7361636060820152633a34b7b760e11b608082015260a00190565b60008282101561329257613292612ff5565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e75784516001600160a01b0316835293830193918301916001016132c2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d07d76360c6d96e7d9fc081c009b51c2d419279527bb26843b30e50badad9f5464736f6c634300080a0033

Deployed Bytecode Sourcemap

18257:26205:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28665:133;;;;;;;;;;-1:-1:-1;28665:133:0;;;;;:::i;:::-;;:::i;:::-;;42695:195;;;;;;;;;;;;;:::i;29834:124::-;;;;;;;;;;-1:-1:-1;29834:124:0;;;;;:::i;:::-;;:::i;24226:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21163:73;;;;;;;;;;;;;;;;;;;1359:25:1;;;1347:2;1332:18;21163:73:0;1213:177:1;25126:161:0;;;;;;;;;;-1:-1:-1;25126:161:0;;;;;:::i;:::-;;:::i;:::-;;;1888:14:1;;1881:22;1863:41;;1851:2;1836:18;25126:161:0;1723:187:1;18828:65:0;;;;;;;;;;-1:-1:-1;18828:65:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24503:95;;;;;;;;;;-1:-1:-1;24583:7:0;;24503:95;;43973:105;;;;;;;;;;-1:-1:-1;43973:105:0;;;;;:::i;:::-;;:::i;33751:27::-;;;;;;;;;;-1:-1:-1;33751:27:0;;;;;;;;;;;27869:201;;;;;;;;;;-1:-1:-1;27869:201:0;;;;;:::i;:::-;;:::i;31148:99::-;;;;;;;;;;-1:-1:-1;31148:99:0;;;;;:::i;:::-;;:::i;21302:76::-;;;;;;;;;;;;;;;;25436:314;;;;;;;;;;-1:-1:-1;25436:314:0;;;;;:::i;:::-;;:::i;28899:140::-;;;;;;;;;;-1:-1:-1;28899:140:0;;;;;:::i;:::-;;:::i;18559:56::-;;;;;;;;;;-1:-1:-1;18559:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20226:32;;;;;;;;;;;;;;;;20151:35;;;;;;;;;;;;;;;;33928:111;;;;;;;;;;-1:-1:-1;33928:111:0;;;;;:::i;:::-;;:::i;24412:83::-;;;;;;;;;;-1:-1:-1;24478:9:0;;24412:83;;24478:9;;;;3163:36:1;;3151:2;3136:18;24412:83:0;3021:184:1;44089:142:0;;;;;;;;;;-1:-1:-1;44089:142:0;;;;;:::i;:::-;;:::i;25865:218::-;;;;;;;;;;-1:-1:-1;25865:218:0;;;;;:::i;:::-;;:::i;42972:438::-;;;;;;;;;;-1:-1:-1;42972:438:0;;;;;:::i;:::-;;:::i;28414:101::-;;;;;;;;;;-1:-1:-1;28414:101:0;;;;;:::i;:::-;;:::i;26529:112::-;;;;;;;;;;-1:-1:-1;26529:112:0;;;;;:::i;:::-;;:::i;27599:195::-;;;;;;;;;;-1:-1:-1;27599:195:0;;;;;:::i;:::-;;:::i;27324:199::-;;;;;;;;;;-1:-1:-1;27324:199:0;;;;;:::i;:::-;;:::i;20939:40::-;;;;;;;;;;-1:-1:-1;20939:40:0;;;;-1:-1:-1;;;20939:40:0;;;;;;21455:21;;;;;;;;;;;;;;;;18670:50;;;;;;;;;;-1:-1:-1;18670:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20681:35;;;;;;;;;;-1:-1:-1;20681:35:0;;;;;;;-1:-1:-1;;;;;20681:35:0;;;;;;-1:-1:-1;;;;;3396:32:1;;;3378:51;;3366:2;3351:18;20681:35:0;3210:225:1;30398:137:0;;;;;;;;;;-1:-1:-1;30398:137:0;;;;;:::i;:::-;;:::i;29235:156::-;;;;;;;;;;-1:-1:-1;29235:156:0;;;;;:::i;:::-;;:::i;42130:413::-;;;;;;;;;;-1:-1:-1;42130:413:0;;;;;:::i;:::-;;:::i;16215:92::-;;;;;;;;;;-1:-1:-1;16290:9:0;;16215:92;;19285:96;;;;;;;;;;-1:-1:-1;19285:96:0;;;;-1:-1:-1;;;;;19285:96:0;;;43433:527;;;;;;:::i;:::-;;:::i;20025:32::-;;;;;;;;;;;;;;;;24606:117;;;;;;;;;;-1:-1:-1;24606:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;24699:16:0;24672:7;24699:16;;;:7;:16;;;;;;;24606:117;15652:150;;;;;;;;;;;;;:::i;41001:304::-;;;;;;;;;;-1:-1:-1;41001:304:0;;;;;:::i;:::-;;:::i;33591:27::-;;;;;;;;;;-1:-1:-1;33591:27:0;;;;;;;;15009:79;;;;;;;;;;-1:-1:-1;15047:7:0;15074:6;-1:-1:-1;;;;;15074:6:0;15009:79;;28146:195;;;;;;;;;;-1:-1:-1;28146:195:0;;;;;:::i;:::-;;:::i;24317:87::-;;;;;;;;;;;;;:::i;19957:32::-;;;;;;;;;;;;;;;;41669:310;;;;;;;;;;-1:-1:-1;41669:310:0;;;;;:::i;:::-;;:::i;26191:269::-;;;;;;;;;;-1:-1:-1;26191:269:0;;;;;:::i;:::-;;:::i;19411:96::-;;;;;;;;;;-1:-1:-1;19411:96:0;;;;-1:-1:-1;;;;;19411:96:0;;;20086:34;;;;;;;;;;;;;;;;16687:345;;;;;;;;;;;;;:::i;24731:167::-;;;;;;;;;;-1:-1:-1;24731:167:0;;;;;:::i;:::-;;:::i;30934:143::-;;;;;;;;;;-1:-1:-1;30934:143:0;;;;;:::i;:::-;;:::i;27127:123::-;;;;;;;;;;-1:-1:-1;27127:123:0;;;;;:::i;:::-;;:::i;29456:119::-;;;;;;;;;;-1:-1:-1;29456:119:0;;;;;:::i;:::-;;:::i;30076:173::-;;;;;;;;;;-1:-1:-1;30076:173:0;;;;;:::i;:::-;;:::i;44243:216::-;;;;;;;;;;;;;:::i;40743:166::-;;;;;;;;;;-1:-1:-1;40743:166:0;;;;;:::i;:::-;;:::i;21052:58::-;;;;;;;;;;;;;;;;20763:26;;;;;;;;;;-1:-1:-1;20763:26:0;;;;-1:-1:-1;;;;;20763:26:0;;;20550:33;;;;;;;;;;-1:-1:-1;20550:33:0;;;;;;;;16383:228;;;;;;;;;;-1:-1:-1;16383:228:0;;;;;:::i;:::-;;:::i;24906:143::-;;;;;;;;;;-1:-1:-1;24906:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;25014:18:0;;;24987:7;25014:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24906:143;33631:111;;;;;;;;;;-1:-1:-1;33631:111:0;;;;;:::i;:::-;;:::i;19158:96::-;;;;;;;;;;-1:-1:-1;19158:96:0;;;;-1:-1:-1;;;;;19158:96:0;;;26713:111;;;;;;;;;;-1:-1:-1;26713:111:0;;;;;:::i;:::-;;:::i;41403:171::-;;;;;;;;;;-1:-1:-1;41403:171:0;;;;;:::i;:::-;;:::i;15957:246::-;;;;;;;;;;-1:-1:-1;15957:246:0;;;;;:::i;:::-;;:::i;26914:125::-;;;;;;;;;;-1:-1:-1;26914:125:0;;;;;:::i;:::-;;:::i;30663:145::-;;;;;;;;;;-1:-1:-1;30663:145:0;;;;;:::i;:::-;;:::i;29642:123::-;;;;;;;;;;-1:-1:-1;29642:123:0;;;;;:::i;:::-;;:::i;19061:46::-;;;;;;;;;;-1:-1:-1;19061:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28665:133;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;;;;;;;;;28779:9:::1;::::0;28757:33:::1;::::0;28775:13:::1;::::0;28779:9:::1;;28775:2;:13;:::i;:::-;28757:12:::0;;:16:::1;:33::i;:::-;28742:12;:48:::0;-1:-1:-1;28665:133:0:o;42695:195::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;7614:10;42801:21:::1;:25:::0;42798:84:::1;;42841:41;::::0;-1:-1:-1;;;;;42841:18:0;::::1;::::0;42860:21:::1;42841:41:::0;::::1;;;::::0;::::1;::::0;;;42860:21;42841:18;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;42798:84;42736:154;42695:195::o:0;29834:124::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;29922:19:::1;:28:::0;;-1:-1:-1;;;;;;29922:28:0::1;-1:-1:-1::0;;;;;29922:28:0;;;::::1;::::0;;;::::1;::::0;;29834:124::o;24226:83::-;24263:13;24296:5;24289:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24226:83;:::o;25126:161::-;25201:4;25218:39;7614:10;25241:7;25250:6;25218:8;:39::i;:::-;-1:-1:-1;25275:4:0;25126:161;;;;;:::o;43973:105::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;44049:6:::1;:21:::0;43973:105::o;27869:201::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;27947:15:::1;:21:::0;;;28026:14:::1;::::0;28008:12:::1;::::0;27991::::1;::::0;:71:::1;::::0;27965:3;;27991:50:::1;::::0;;;:16:::1;:30::i;:::-;:34:::0;::::1;:50::i;:71::-;27979:9;:83:::0;-1:-1:-1;27869:201:0:o;31148:99::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;31217:14:::1;:22:::0;;-1:-1:-1;;31217:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31148:99::o;25436:314::-;25534:4;25551:36;25561:6;25569:9;25580:6;25551:9;:36::i;:::-;25598:121;25607:6;7614:10;25629:89;25667:6;25629:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25629:19:0;;;;;;:11;:19;;;;;;;;7614:10;25629:33;;;;;;;;;;:37;:89::i;:::-;25598:8;:121::i;:::-;-1:-1:-1;25738:4:0;25436:314;;;;;:::o;28899:140::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;29020:9:::1;::::0;29001:30:::1;::::0;29016:13:::1;::::0;29020:9:::1;;29016:2;:13;:::i;29001:30::-;28979:19;:52:::0;-1:-1:-1;28899:140:0:o;33928:111::-;33990:4;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;34013:7:0::1;:18:::0;;-1:-1:-1;;34013:18:0::1;;::::0;::::1;;;;::::0;;;33928:111::o;44089:142::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;44200:23:::1;::::0;44178:10:::1;::::0;;;44200:23;::::1;;;::::0;44216:6;;44145:22:::1;44200:23:::0;44145:22;44200:23;44216:6;44178:10;44200:23;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;44134:97;44089:142:::0;:::o;25865:218::-;7614:10;25953:4;26002:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26002:34:0;;;;;;;;;;25953:4;;25970:83;;25993:7;;26002:50;;26041:10;26002:38;:50::i;42972:438::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;43047:32:::1;43097:9;43047:60;;43148:17;-1:-1:-1::0;;;;;43148:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43132:55:0::1;;43196:4;43203:17;-1:-1:-1::0;;;;;43203:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43132:96;::::0;-1:-1:-1;;;;;;43132:96:0::1;::::0;;;;;;-1:-1:-1;;;;;7656:15:1;;;43132:96:0::1;::::0;::::1;7638:34:1::0;7708:15;;7688:18;;;7681:43;7573:18;;43132:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43118:11;:110:::0;;-1:-1:-1;;;;;43118:110:0;;::::1;-1:-1:-1::0;;;;;;43118:110:0;;::::1;::::0;::::1;::::0;;43239:13:::1;:33:::0;;;;::::1;43118:110;43239:33;-1:-1:-1::0;;;;;;43239:33:0;;::::1;::::0;;;::::1;::::0;;;43118:11:::1;43285:36:::0;;;:23:::1;:36;::::0;;;;;;;:53;;-1:-1:-1;;43285:53:0;;::::1;43118:110:::0;43285:53;;::::1;::::0;;;43383:11;;;;::::1;43349:46:::0;;:33:::1;:46:::0;;;;;;:53;;;;::::1;;::::0;;-1:-1:-1;42972:438:0:o;28414:101::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;28489:12:::1;:18:::0;28414:101::o;26529:112::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26600:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;26600:33:0::1;26629:4;26600:33;::::0;;26529:112::o;27599:195::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;27674:12:::1;:18:::0;;;27770:15:::1;::::0;27750:14:::1;::::0;27715:12:::1;::::0;:71:::1;::::0;27770:15;27715:50:::1;::::0;;;27689:3;27715:16:::1;:30::i;27324:199::-:0;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;27418:3:::1;27401:14;:20;;;;27444:71;27499:15;;27444:50;27479:14;;27444:30;27461:12;;27444;;:16;;:30;;;;:::i;30398:137::-:0;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;30489:20:::1;:38:::0;30398:137::o;29235:156::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;29373:9:::1;::::0;29352:31:::1;::::0;29367:15:::1;::::0;29373:9:::1;;29367:2;:15;:::i;29352:31::-;29321:28;:62:::0;-1:-1:-1;29235:156:0:o;42130:413::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;42313:30:::1;::::0;-1:-1:-1;;;42313:30:0;;42337:4:::1;42313:30;::::0;::::1;3378:51:1::0;42271:12:0;;42249::::1;::::0;-1:-1:-1;;;;;42313:15:0;::::1;::::0;::::1;::::0;3351:18:1;;42313:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42295:48;;42383:15;42372:7;:26;;42364:79;;;::::0;-1:-1:-1;;;42364:79:0;;8126:2:1;42364:79:0::1;::::0;::::1;8108:21:1::0;8165:2;8145:18;;;8138:30;8204:34;8184:18;;;8177:62;-1:-1:-1;;;8255:18:1;;;8248:38;8303:19;;42364:79:0::1;7924:404:1::0;42364:79:0::1;42459:19:::0;;42456:79:::1;;42493:42;::::0;-1:-1:-1;;;42493:42:0;;-1:-1:-1;;;;;8525:32:1;;;42493:42:0::1;::::0;::::1;8507:51:1::0;8574:18;;;8567:34;;;42493:14:0;::::1;::::0;::::1;::::0;8480:18:1;;42493:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42456:79;42238:305;;42130:413:::0;;;:::o;43433:527::-;43492:12;43622;43637:9;43622:24;;43653:13;43697:7;43689:4;43682:6;;:11;;;;:::i;:::-;43681:23;;;;:::i;:::-;43673:31;-1:-1:-1;43714:10:0;-1:-1:-1;;;;;43714:20:0;;;;;;:46;;-1:-1:-1;;;;;;24699:16:0;;24672:7;24699:16;;;:7;:16;;;;;;43738:22;;43714:46;:102;;;;-1:-1:-1;;;;;;43764:52:0;;;;43714:102;43711:170;;;43834:39;43852:4;43859:6;43867:5;43834:9;:39::i;:::-;43893:43;43911:4;43918:10;43930:5;43893:9;:43::i;15652:150::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;15761:1:::1;15745:6:::0;;15724:40:::1;::::0;-1:-1:-1;;;;;15745:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;15724:40:0;15761:1;;15724:40:::1;15792:1;15775:19:::0;;-1:-1:-1;;;;;;15775:19:0::1;::::0;;15652:150::o;41001:304::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;41119:3:::1;41101:21:::0;::::1;41093:92;;;::::0;-1:-1:-1;;;41093:92:0;;9459:2:1;41093:92:0::1;::::0;::::1;9441:21:1::0;9498:2;9478:18;;;9471:30;9537:34;9517:18;;;9510:62;9608:28;9588:18;;;9581:56;9654:19;;41093:92:0::1;9257:422:1::0;41093:92:0::1;41201:9;41196:102;41212:19:::0;;::::1;41196:102;;;41282:4;41253:13;:26;41267:8;;41276:1;41267:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41253:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;41253:26:0;:33;;-1:-1:-1;;41253:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41233:3:::1;::::0;::::1;:::i;:::-;;;41196:102;;28146:195:::0;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;28221:12:::1;:18:::0;;;28317:15:::1;::::0;28297:14:::1;::::0;28279:12:::1;::::0;28262:71:::1;::::0;28317:15;28262:50:::1;::::0;;;28236:3;;28262:16:::1;:30::i;24317:87::-:0;24356:13;24389:7;24382:14;;;;;:::i;41669:310::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;41790:3:::1;41772:21:::0;::::1;41764:94;;;::::0;-1:-1:-1;;;41764:94:0;;10158:2:1;41764:94:0::1;::::0;::::1;10140:21:1::0;10197:2;10177:18;;;10170:30;10236:34;10216:18;;;10209:62;10307:30;10287:18;;;10280:58;10355:19;;41764:94:0::1;9956:424:1::0;41764:94:0::1;41874:9;41869:103;41885:19:::0;;::::1;41869:103;;;41955:5;41926:13;:26;41940:8;;41949:1;41940:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41926:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;41926:26:0;:34;;-1:-1:-1;;41926:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;41906:3:::1;::::0;::::1;:::i;:::-;;;41869:103;;26191:269:::0;26284:4;26301:129;7614:10;26324:7;26333:96;26372:15;26333:96;;;;;;;;;;;;;;;;;7614:10;26333:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26333:34:0;;;;;;;;;;;;:38;:96::i;16687:345::-;16741:14;;-1:-1:-1;;;;;16741:14:0;16759:10;16741:28;16733:76;;;;-1:-1:-1;;;16733:76:0;;10587:2:1;16733:76:0;;;10569:21:1;10626:2;10606:18;;;10599:30;10665:34;10645:18;;;10638:62;-1:-1:-1;;;10716:18:1;;;10709:33;10759:19;;16733:76:0;10385:399:1;16733:76:0;16846:9;;16828:15;:27;16820:72;;;;-1:-1:-1;;;16820:72:0;;10991:2:1;16820:72:0;;;10973:21:1;11030:2;11010:18;;;11003:30;11069:33;11049:18;;;11042:61;11120:18;;16820:72:0;10789:355:1;16820:72:0;16937:14;;;16929:6;;16908:44;;-1:-1:-1;;;;;16937:14:0;;;;16929:6;;;;-1:-1:-1;;;;;;;;;;;16908:44:0;;16972:14;;;;16963:23;;-1:-1:-1;;;;;;16963:23:0;;;-1:-1:-1;;;;;16972:14:0;;16963:23;;;;16997:27;;;16687:345::o;24731:167::-;24809:4;24826:42;7614:10;24850:9;24861:6;24826:9;:42::i;30934:143::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31019:42:0::1;31064:5;31019:42:::0;;;:33:::1;:42;::::0;;;;:50;;-1:-1:-1;;31019:50:0::1;::::0;;30934:143::o;27127:123::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27202:32:0::1;27237:5;27202:32:::0;;;:23:::1;:32;::::0;;;;:40;;-1:-1:-1;;27202:40:0::1;::::0;;27127:123::o;29456:119::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;29542:16:::1;:25:::0;;-1:-1:-1;;;;;;29542:25:0::1;-1:-1:-1::0;;;;;29542:25:0;;;::::1;::::0;;;::::1;::::0;;29456:119::o;30076:173::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;30155:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;30155:32:0::1;-1:-1:-1::0;;;;30155:32:0;;::::1;;::::0;;30203:38:::1;::::0;::::1;::::0;::::1;::::0;30179:8;1888:14:1;1881:22;1863:41;;1851:2;1836:18;;1723:187;30203:38:0::1;;;;;;;;30076:173:::0;:::o;44243:216::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;44368:35:::1;::::0;-1:-1:-1;;;44368:35:0;;44333:4:::1;44368:35;::::0;::::1;3378:51:1::0;;;44333:4:0;44298:17:::1;::::0;44333:4;;44368:20:::1;::::0;3351:18:1;;44368:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44350:53;;44414:10;-1:-1:-1::0;;;;;44414:19:0::1;;44434:7;15047::::0;15074:6;-1:-1:-1;;;;;15074:6:0;;15009:79;44434:7:::1;44414:37;::::0;-1:-1:-1;;;;;;44414:37:0::1;::::0;;;;;;-1:-1:-1;;;;;8525:32:1;;;44414:37:0::1;::::0;::::1;8507:51:1::0;8574:18;;;8567:34;;;8480:18;;44414:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;40743:166::-:0;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40823:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;:30;;:22:::0;:30:::1;40820:42;;;42736:154;42695:195::o:0;40820:42::-:1;-1:-1:-1::0;;;;;40872:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;:29;;-1:-1:-1;;40872:29:0::1;40897:4;40872:29;::::0;;40743:166;:::o;16383:228::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;16466:6:::1;::::0;;;16449:23;;-1:-1:-1;;;;;;16449:23:0;;::::1;-1:-1:-1::0;;;;;16466:6:0;::::1;16449:23;::::0;;;16483:19:::1;::::0;;16525:22:::1;16543:4:::0;16525:15:::1;:22;:::i;:::-;16513:9;:34:::0;16600:1:::1;16584:6:::0;;16563:40:::1;::::0;-1:-1:-1;;;;;16584:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16563:40:0;16600:1;;16563:40:::1;16383:228:::0;:::o;33631:111::-;33693:4;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;33716:7:0::1;:18:::0;;-1:-1:-1;;33716:18:0::1;::::0;::::1;;;::::0;;;33631:111::o;26713:::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26782:26:0::1;26811:5;26782:26:::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;26782:34:0::1;::::0;;26713:111::o;41403:171::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41486:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;41483:43;;42736:154;42695:195::o:0;41483:43::-:1;-1:-1:-1::0;;;;;41536:22:0::1;41561:5;41536:22:::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;41536:30:0::1;::::0;;41403:171::o;15957:246::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16048:22:0;::::1;16040:73;;;::::0;-1:-1:-1;;;16040:73:0;;11484:2:1;16040:73:0::1;::::0;::::1;11466:21:1::0;11523:2;11503:18;;;11496:30;11562:34;11542:18;;;11535:62;-1:-1:-1;;;11613:18:1;;;11606:36;11659:19;;16040:73:0::1;11282:402:1::0;16040:73:0::1;16150:6;::::0;;16129:38:::1;::::0;-1:-1:-1;;;;;16129:38:0;;::::1;::::0;16150:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;16129:38:0;::::1;16178:6;:17:::0;;-1:-1:-1;;;;;;16178:17:0::1;-1:-1:-1::0;;;;;16178:17:0;;;::::1;::::0;;;::::1;::::0;;15957:246::o;26914:125::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26992:32:0::1;;::::0;;;:23:::1;:32;::::0;;;;:39;;-1:-1:-1;;26992:39:0::1;27027:4;26992:39;::::0;;26914:125::o;30663:145::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30751:42:0::1;;::::0;;;:33:::1;:42;::::0;;;;:49;;-1:-1:-1;;30751:49:0::1;30796:4;30751:49;::::0;;30663:145::o;29642:123::-;15221:6;;-1:-1:-1;;;;;15221:6:0;7614:10;15221:22;15213:67;;;;-1:-1:-1;;;15213:67:0;;;;;;;:::i;:::-;29730:18:::1;:27:::0;;-1:-1:-1;;;;;;29730:27:0::1;-1:-1:-1::0;;;;;29730:27:0;;;::::1;::::0;;;::::1;::::0;;29642:123::o;3320:98::-;3378:7;3405:5;3409:1;3405;:5;:::i;:::-;3398:12;3320:98;-1:-1:-1;;;3320:98:0:o;4058:::-;4116:7;4143:5;4147:1;4143;:5;:::i;33246:337::-;-1:-1:-1;;;;;33339:19:0;;33331:68;;;;-1:-1:-1;;;33331:68:0;;11891:2:1;33331:68:0;;;11873:21:1;11930:2;11910:18;;;11903:30;11969:34;11949:18;;;11942:62;-1:-1:-1;;;12020:18:1;;;12013:34;12064:19;;33331:68:0;11689:400:1;33331:68:0;-1:-1:-1;;;;;33418:21:0;;33410:68;;;;-1:-1:-1;;;33410:68:0;;12296:2:1;33410:68:0;;;12278:21:1;12335:2;12315:18;;;12308:30;12374:34;12354:18;;;12347:62;-1:-1:-1;;;12425:18:1;;;12418:32;12467:19;;33410:68:0;12094:398:1;33410:68:0;-1:-1:-1;;;;;33491:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;33543:32;;1359:25:1;;;33543:32:0;;1332:18:1;33543:32:0;;;;;;;33246:337;;;:::o;34205:2584::-;33845:7;;34321:4;;33845:7;;;;;;:14;;:7;:14;;:37;;-1:-1:-1;;;;;;33862:20:0;;33877:4;33862:20;33845:37;:56;;;-1:-1:-1;15047:7:0;15074:6;-1:-1:-1;;;;;33886:15:0;;;15074:6;;33886:15;33845:56;33837:65;;;;;;-1:-1:-1;;;;;34345:18:0;::::1;::::0;;::::1;::::0;:38:::1;;-1:-1:-1::0;;;;;;34367:16:0;::::1;::::0;::::1;34345:38;34337:95;;;::::0;-1:-1:-1;;;34337:95:0;;12699:2:1;34337:95:0::1;::::0;::::1;12681:21:1::0;12738:2;12718:18;;;12711:30;12777:34;12757:18;;;12750:62;-1:-1:-1;;;12828:18:1;;;12821:42;12880:19;;34337:95:0::1;12497:408:1::0;34337:95:0::1;-1:-1:-1::0;;;;;34452:19:0;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;34451:20;34443:52;;;::::0;-1:-1:-1;;;34443:52:0;;13112:2:1;34443:52:0::1;::::0;::::1;13094:21:1::0;13151:2;13131:18;;;13124:30;-1:-1:-1;;;13170:18:1;;;13163:49;13229:18;;34443:52:0::1;12910:343:1::0;34443:52:0::1;34509:14;::::0;::::1;;34506:917;;;34574:19;;34564:6;34548:13;34558:2;-1:-1:-1::0;;;;;24699:16:0;24672:7;24699:16;;;:7;:16;;;;;;;24606:117;34548:13:::1;:22;;;;:::i;:::-;:45;;:76;;;-1:-1:-1::0;;;;;;34597:27:0;::::1;;::::0;;;:23:::1;:27;::::0;;;;;::::1;;34548:76;34540:165;;;::::0;-1:-1:-1;;;34540:165:0;;13460:2:1;34540:165:0::1;::::0;::::1;13442:21:1::0;13499:2;13479:18;;;13472:30;13538:34;13518:18;;;13511:62;13609:33;13589:18;;;13582:61;13660:19;;34540:165:0::1;13258:427:1::0;34540:165:0::1;-1:-1:-1::0;;;;;34728:39:0;::::1;;::::0;;;:33:::1;:39;::::0;;;;;::::1;;::::0;:113:::1;;-1:-1:-1::0;34821:20:0::1;::::0;-1:-1:-1;;;;;34790:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;;:51:::1;::::0;34821:20;34790:51:::1;:::i;:::-;34771:15;:70;;34728:113;34720:207;;;;-1:-1:-1::0;;;34720:207:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34950:37:0;::::1;;::::0;;;:33:::1;:37;::::0;;;;;::::1;;::::0;:109:::1;;-1:-1:-1::0;35039:20:0::1;::::0;-1:-1:-1;;;;;35010:26:0;::::1;;::::0;;;:22:::1;:26;::::0;;;;;:49:::1;::::0;35039:20;35010:49:::1;:::i;:::-;34991:15;:68;;34950:109;34942:203;;;;-1:-1:-1::0;;;34942:203:0::1;;;;;;;:::i;:::-;15047:7:::0;15074:6;-1:-1:-1;;;;;35163:15:0;;::::1;15074:6:::0;;35163:15:::1;::::0;::::1;::::0;:32:::1;;-1:-1:-1::0;15047:7:0;15074:6;-1:-1:-1;;;;;35182:13:0;;::::1;15074:6:::0;;35182:13:::1;;35163:32;35160:129;;;35232:12;;35222:6;:22;;35214:75;;;::::0;-1:-1:-1;;;35214:75:0;;14369:2:1;35214:75:0::1;::::0;::::1;14351:21:1::0;14408:2;14388:18;;;14381:30;14447:34;14427:18;;;14420:62;-1:-1:-1;;;14498:18:1;;;14491:38;14546:19;;35214:75:0::1;14167:404:1::0;35214:75:0::1;-1:-1:-1::0;;;;;35306:28:0;;::::1;;::::0;;;:22:::1;:28;::::0;;;;;35337:15:::1;35306:46:::0;;;;35367:26;;::::1;::::0;;;;:44;34506:917:::1;35766:4;35717:28;24699:16:::0;;;:7;:16;;;;;;35810:7:::1;::::0;35717:55;;-1:-1:-1;35783:12:0::1;::::0;35810:7:::1;;:13;;:7:::0;:13:::1;35807:877;;;35872:12;;35848:20;:36;35845:112;;35933:12;;35910:35;;35845:112;36027:28;::::0;36004:51;::::1;::::0;::::1;::::0;;;36084:53:::1;;-1:-1:-1::0;36121:16:0::1;::::0;-1:-1:-1;;;36121:16:0;::::1;;;36120:17;36084:53;:89;;;;-1:-1:-1::0;36162:11:0::1;::::0;-1:-1:-1;;;;;36154:19:0;;::::1;36162:11:::0;::::1;36154:19;;36084:89;:127;;;;-1:-1:-1::0;36190:21:0::1;::::0;-1:-1:-1;;;36190:21:0;::::1;;;36084:127;36066:314;;;36260:28;;36238:50;;36332:36;36347:20;36332:14;:36::i;:::-;-1:-1:-1::0;;;;;36582:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;36471:4:::1;::::0;-1:-1:-1;36582:23:0::1;;::::0;:48:::1;;-1:-1:-1::0;;;;;;36609:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;36582:48;36579:94;;;36656:5;36646:15;;36579:94;35834:850;35807:877;36743:38;36758:4;36763:2;36766:6;36773:7;36743:14;:38::i;5599:240::-:0;5719:7;5780:12;5772:6;;;;5764:29;;;;-1:-1:-1;;;5764:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5815:5:0;;;5599:240::o;36893:1668::-;21979:16;:23;;-1:-1:-1;;;;21979:23:0;-1:-1:-1;;;21979:23:0;;;37120:12:::1;::::0;21979:23;;37062:73:::1;::::0;37120:14:::1;::::0;37133:1:::1;::::0;37120:14:::1;:::i;:::-;37062:53;37099:15;;37062:32;37081:12;;37062:14;;:18;;:32;;;;:::i;:73::-;37040:95;;37146:18;37167:44;37199:11;37167:27;37184:9;;37167:12;:16;;:27;;;;:::i;:::-;:31:::0;::::1;:44::i;:::-;37146:65:::0;-1:-1:-1;37222:23:0::1;37248:28;:12:::0;37146:65;37248:16:::1;:28::i;:::-;37222:54:::0;-1:-1:-1;37312:21:0::1;37354:28;37371:10:::0;37354:16:::1;:28::i;:::-;37395:26;37424:41;:21;37450:14:::0;37424:25:::1;:41::i;:::-;37395:70;;37476:25;37516:26:::0;37557:23:::1;37617:1:::0;37600:14:::1;;:18;37597:197;;;37664:55;37707:11;37664:38;37687:14;;37664:18;:22;;:38;;;;:::i;:::-;:42:::0;::::1;:55::i;:::-;37736:18;::::0;:46:::1;::::0;37644:75;;-1:-1:-1;;;;;;37736:18:0::1;::::0;:46;::::1;;;::::0;37644:75;;37736:18:::1;:46:::0;:18;:46;37644:75;37736:18;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;37597:197;37809:12;::::0;:16;37806:187:::1;;37869:53;37910:11;37869:36;37892:12;;37869:18;:22;;:36;;;;:::i;:53::-;37939:16;::::0;:42:::1;::::0;37851:71;;-1:-1:-1;;;;;;37939:16:0::1;::::0;:42;::::1;;;::::0;37851:71;;37939:16:::1;:42:::0;:16;:42;37851:71;37939:16;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;37806:187;38008:15;::::0;:19;38005:202:::1;;38074:56;38118:11;38074:39;38097:15;;38074:18;:22;;:39;;;;:::i;:56::-;38147:19;::::0;:48:::1;::::0;38053:77;;-1:-1:-1;;;;;;38147:19:0::1;::::0;:48;::::1;;;::::0;38053:77;;38147:19:::1;:48:::0;:19;:48;38053:77;38147:19;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;38005:202;38230:12;::::0;:16;38227:327:::1;;38293:86;38360:18:::0;38293:62:::1;38339:15:::0;38293:62;:18;38316:17;38293:22:::1;:41::i;:::-;:45:::0;::::1;:62::i;:86::-;38272:107;;38394:58;38407:7;15047::::0;15074:6;-1:-1:-1;;;;;15074:6:0;;15009:79;38407:7:::1;38416:15;38433:18;38394:12;:58::i;:::-;38474:68;::::0;;14778:25:1;;;14834:2;14819:18;;14812:34;;;14862:18;;;14855:34;;;38474:68:0::1;::::0;14766:2:1;14751:18;38474:68:0::1;;;;;;;38227:327;-1:-1:-1::0;;22025:16:0;:24;;-1:-1:-1;;;;22025:24:0;;;-1:-1:-1;;;;;;;36893:1668:0:o;39958:694::-;40081:11;;-1:-1:-1;;;;;40068:24:0;;;40081:11;;40068:24;:44;;;;;40111:1;40096:12;;:16;40068:44;40065:75;;;40127:13;:11;:13::i;:::-;40155:7;40151:40;;40177:14;:12;:14::i;:::-;40205:23;40230:12;40246:18;40257:6;40246:10;:18::i;:::-;-1:-1:-1;;;;;40293:15:0;;;;;;:7;:15;;;;;;40204:60;;-1:-1:-1;40204:60:0;-1:-1:-1;40293:27:0;;40313:6;40293:19;:27::i;:::-;-1:-1:-1;;;;;40275:15:0;;;;;;;:7;:15;;;;;;:45;;;;40352:18;;;;;;;:39;;40375:15;40352:22;:39::i;:::-;-1:-1:-1;;;;;40331:18:0;;;;;;:7;:18;;;;;:60;40404:22;40413:6;40421:4;40404:8;:22::i;:::-;40459:9;-1:-1:-1;;;;;40442:44:0;40451:6;-1:-1:-1;;;;;40442:44:0;;40470:15;40442:44;;;;1359:25:1;;1347:2;1332:18;;1213:177;40442:44:0;;;;;;;;40521:7;40517:41;;40543:15;32958:17;;32946:9;:29;32902:81;40543:15;40585:11;;-1:-1:-1;;;;;40572:24:0;;;40585:11;;40572:24;:44;;;;;40615:1;40600:12;;:16;40572:44;40569:75;;;40631:13;:11;:13::i;4457:98::-;4515:7;4542:5;4546:1;4542;:5;:::i;3701:98::-;3759:7;3786:5;3790:1;3786;:5;:::i;38669:583::-;38819:16;;;38833:1;38819:16;;;;;;;;38795:21;;38819:16;;;;;;;;;;-1:-1:-1;38819:16:0;38795:40;;38864:4;38846;38851:1;38846:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;38846:23:0;;;-1:-1:-1;;;;;38846:23:0;;;;;38890:13;;;;;;;;;-1:-1:-1;;;;;38890:13:0;-1:-1:-1;;;;;38890:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38880:4;38885:1;38880:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38880:30:0;;;:7;;;;;;;;;:30;38955:13;;38923:60;;38940:4;;38955:13;;;;38971:11;38923:8;:60::i;:::-;39022:13;;:222;;-1:-1:-1;;;39022:222:0;;:13;;;;-1:-1:-1;;;;;39022:13:0;;:64;;:222;;39101:11;;39127:1;;39171:4;;39198;;39218:15;;39022:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39347:530;39546:13;;39514:60;;39531:4;;39546:13;;;-1:-1:-1;;;;;39546:13:0;39562:11;39514:8;:60::i;:::-;39617:13;;:252;;-1:-1:-1;;;39617:252:0;;39687:4;39617:252;;;16488:34:1;16538:18;;;16531:34;;;39733:1:0;16581:18:1;;;16574:34;;;16624:18;;;16617:34;-1:-1:-1;;;;;16688:15:1;;;16667:19;;;16660:44;39843:15:0;16720:19:1;;;16713:35;39617:13:0;;;;;;;;:29;;39654:9;;16422:19:1;;39617:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32460:89::-;32528:12;;32514:9;;:27;;:13;:27::i;:::-;32502:9;:39;32460:89::o;32654:150::-;32700:9;;32697:26;;32654:150::o;32697:26::-;32763:9;;;32743:17;:29;-1:-1:-1;32783:13:0;;32654:150::o;31606:227::-;31665:7;31674;31694:12;31709:21;31722:7;31709:12;:21::i;:::-;31694:36;-1:-1:-1;31741:23:0;31767:17;:7;31694:36;31767:11;:17::i;:::-;31741:43;31820:4;;-1:-1:-1;31606:227:0;;-1:-1:-1;;;31606:227:0:o;31934:230::-;32005:8;;32002:155;;32071:4;32055:22;;;;:7;:22;;;;;;:32;;32082:4;32055:26;:32::i;:::-;32046:4;32030:22;;;;:7;:22;;;;;;;:57;;;;32107:38;;-1:-1:-1;;;;;32107:38:0;;;;;;;32140:4;1359:25:1;;1347:2;1332:18;;1213:177;32107:38:0;;;;;;;;31934:230;;:::o;33051:89::-;33119:12;;33105:9;;:27;;:13;:27::i;32242:153::-;32303:7;32330:57;32371:5;32330:22;32342:9;;32330:7;:11;;:22;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:139::-;-1:-1:-1;;;;;282:31:1;;272:42;;262:70;;328:1;325;318:12;343:263;410:6;463:2;451:9;442:7;438:23;434:32;431:52;;;479:1;476;469:12;431:52;518:9;505:23;537:39;570:5;537:39;:::i;611:597::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;1049:6;1046:1;1043:13;1040:91;;;1119:1;1114:2;1105:6;1094:9;1090:22;1086:31;1079:42;1040:91;-1:-1:-1;1192:2:1;1171:15;-1:-1:-1;;1167:29:1;1152:45;;;;1199:2;1148:54;;611:597;-1:-1:-1;;;611:597:1:o;1395:323::-;1463:6;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1579:9;1566:23;1598:39;1631:5;1598:39;:::i;:::-;1656:5;1708:2;1693:18;;;;1680:32;;-1:-1:-1;;;1395:323:1:o;2175:118::-;2261:5;2254:13;2247:21;2240:5;2237:32;2227:60;;2283:1;2280;2273:12;2298:241;2354:6;2407:2;2395:9;2386:7;2382:23;2378:32;2375:52;;;2423:1;2420;2413:12;2375:52;2462:9;2449:23;2481:28;2503:5;2481:28;:::i;2544:472::-;2621:6;2629;2637;2690:2;2678:9;2669:7;2665:23;2661:32;2658:52;;;2706:1;2703;2696:12;2658:52;2745:9;2732:23;2764:39;2797:5;2764:39;:::i;:::-;2822:5;-1:-1:-1;2879:2:1;2864:18;;2851:32;2892:41;2851:32;2892:41;:::i;:::-;2544:472;;2952:7;;-1:-1:-1;;;3006:2:1;2991:18;;;;2978:32;;2544:472::o;3664:615::-;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3867:9;3854:23;3896:18;3937:2;3929:6;3926:14;3923:34;;;3953:1;3950;3943:12;3923:34;3991:6;3980:9;3976:22;3966:32;;4036:7;4029:4;4025:2;4021:13;4017:27;4007:55;;4058:1;4055;4048:12;4007:55;4098:2;4085:16;4124:2;4116:6;4113:14;4110:34;;;4140:1;4137;4130:12;4110:34;4193:7;4188:2;4178:6;4175:1;4171:14;4167:2;4163:23;4159:32;4156:45;4153:65;;;4214:1;4211;4204:12;4153:65;4245:2;4237:11;;;;;4267:6;;-1:-1:-1;3664:615:1;;-1:-1:-1;;;;3664:615:1:o;4492:404::-;4560:6;4568;4621:2;4609:9;4600:7;4596:23;4592:32;4589:52;;;4637:1;4634;4627:12;4589:52;4676:9;4663:23;4695:39;4728:5;4695:39;:::i;:::-;4753:5;-1:-1:-1;4810:2:1;4795:18;;4782:32;4823:41;4782:32;4823:41;:::i;:::-;4883:7;4873:17;;;4492:404;;;;;:::o;4901:356::-;5103:2;5085:21;;;5122:18;;;5115:30;5181:34;5176:2;5161:18;;5154:62;5248:2;5233:18;;4901:356::o;5262:127::-;5323:10;5318:3;5314:20;5311:1;5304:31;5354:4;5351:1;5344:15;5378:4;5375:1;5368:15;5394:422;5483:1;5526:5;5483:1;5540:270;5561:7;5551:8;5548:21;5540:270;;;5620:4;5616:1;5612:6;5608:17;5602:4;5599:27;5596:53;;;5629:18;;:::i;:::-;5679:7;5669:8;5665:22;5662:55;;;5699:16;;;;5662:55;5778:22;;;;5738:15;;;;5540:270;;;5544:3;5394:422;;;;;:::o;5821:806::-;5870:5;5900:8;5890:80;;-1:-1:-1;5941:1:1;5955:5;;5890:80;5989:4;5979:76;;-1:-1:-1;6026:1:1;6040:5;;5979:76;6071:4;6089:1;6084:59;;;;6157:1;6152:130;;;;6064:218;;6084:59;6114:1;6105:10;;6128:5;;;6152:130;6189:3;6179:8;6176:17;6173:43;;;6196:18;;:::i;:::-;-1:-1:-1;;6252:1:1;6238:16;;6267:5;;6064:218;;6366:2;6356:8;6353:16;6347:3;6341:4;6338:13;6334:36;6328:2;6318:8;6315:16;6310:2;6304:4;6301:12;6297:35;6294:77;6291:159;;;-1:-1:-1;6403:19:1;;;6435:5;;6291:159;6482:34;6507:8;6501:4;6482:34;:::i;:::-;6552:6;6548:1;6544:6;6540:19;6531:7;6528:32;6525:58;;;6563:18;;:::i;:::-;6601:20;;5821:806;-1:-1:-1;;;5821:806:1:o;6632:140::-;6690:5;6719:47;6760:4;6750:8;6746:19;6740:4;6719:47;:::i;6777:380::-;6856:1;6852:12;;;;6899;;;6920:61;;6974:4;6966:6;6962:17;6952:27;;6920:61;7027:2;7019:6;7016:14;6996:18;6993:38;6990:161;;;7073:10;7068:3;7064:20;7061:1;7054:31;7108:4;7105:1;7098:15;7136:4;7133:1;7126:15;6990:161;;6777:380;;;:::o;7162:259::-;7232:6;7285:2;7273:9;7264:7;7260:23;7256:32;7253:52;;;7301:1;7298;7291:12;7253:52;7333:9;7327:16;7352:39;7385:5;7352:39;:::i;7735:184::-;7805:6;7858:2;7846:9;7837:7;7833:23;7829:32;7826:52;;;7874:1;7871;7864:12;7826:52;-1:-1:-1;7897:16:1;;7735:184;-1:-1:-1;7735:184:1:o;8612:245::-;8679:6;8732:2;8720:9;8711:7;8707:23;8703:32;8700:52;;;8748:1;8745;8738:12;8700:52;8780:9;8774:16;8799:28;8821:5;8799:28;:::i;8862:168::-;8902:7;8968:1;8964;8960:6;8956:14;8953:1;8950:21;8945:1;8938:9;8931:17;8927:45;8924:71;;;8975:18;;:::i;:::-;-1:-1:-1;9015:9:1;;8862:168::o;9035:217::-;9075:1;9101;9091:132;;9145:10;9140:3;9136:20;9133:1;9126:31;9180:4;9177:1;9170:15;9208:4;9205:1;9198:15;9091:132;-1:-1:-1;9237:9:1;;9035:217::o;9684:127::-;9745:10;9740:3;9736:20;9733:1;9726:31;9776:4;9773:1;9766:15;9800:4;9797:1;9790:15;9816:135;9855:3;-1:-1:-1;;9876:17:1;;9873:43;;;9896:18;;:::i;:::-;-1:-1:-1;9943:1:1;9932:13;;9816:135::o;11149:128::-;11189:3;11220:1;11216:6;11213:1;11210:13;11207:39;;;11226:18;;:::i;:::-;-1:-1:-1;11262:9:1;;11149:128::o;13690:472::-;13892:2;13874:21;;;13931:2;13911:18;;;13904:30;13970:34;13965:2;13950:18;;13943:62;14041:34;14036:2;14021:18;;14014:62;-1:-1:-1;;;14107:3:1;14092:19;;14085:35;14152:3;14137:19;;13690:472::o;14900:125::-;14940:4;14968:1;14965;14962:8;14959:34;;;14973:18;;:::i;:::-;-1:-1:-1;15010:9:1;;14900:125::o;15162:980::-;15424:4;15472:3;15461:9;15457:19;15503:6;15492:9;15485:25;15529:2;15567:6;15562:2;15551:9;15547:18;15540:34;15610:3;15605:2;15594:9;15590:18;15583:31;15634:6;15669;15663:13;15700:6;15692;15685:22;15738:3;15727:9;15723:19;15716:26;;15777:2;15769:6;15765:15;15751:29;;15798:1;15808:195;15822:6;15819:1;15816:13;15808:195;;;15887:13;;-1:-1:-1;;;;;15883:39:1;15871:52;;15978:15;;;;15943:12;;;;15919:1;15837:9;15808:195;;;-1:-1:-1;;;;;;;16059:32:1;;;;16054:2;16039:18;;16032:60;-1:-1:-1;;;16123:3:1;16108:19;16101:35;16020:3;15162:980;-1:-1:-1;;;15162:980:1:o;16759:306::-;16847:6;16855;16863;16916:2;16904:9;16895:7;16891:23;16887:32;16884:52;;;16932:1;16929;16922:12;16884:52;16961:9;16955:16;16945:26;;17011:2;17000:9;16996:18;16990:25;16980:35;;17055:2;17044:9;17040:18;17034:25;17024:35;;16759:306;;;;;:::o

Swarm Source

ipfs://d07d76360c6d96e7d9fc081c009b51c2d419279527bb26843b30e50badad9f54
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.