ETH Price: $2,290.11 (-5.43%)

Token

Mjolnir (MJOLNIR)
 

Overview

Max Total Supply

1,000,000,000,000 MJOLNIR

Holders

115

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,800,000,000 MJOLNIR

Value
$0.00
0x805c8d6e93747fe4a6a53e21f87845ea54d0bad2
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:
Mjolnir

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-05
*/

/*

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.11;


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

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

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

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

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

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

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

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

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

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function initialize() external;
    function setPrimaryDistributor(address distributor) external;
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimDividend(address shareholder) external;
    function getUnpaidEarnings(address shareholder) external view returns (uint256);
    function getPaidDividends(address shareholder) external view returns (uint256);
    function getTotalPaid() external view returns (uint256);
    function getClaimTime(address shareholder) external view returns (uint256);
    function getLostRewards(address shareholder) external view returns (uint256);
    function countShareholders() external view returns (uint256);
}

contract DividendDistributor is IDividendDistributor {

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
        uint256 totalLost;
    }

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) public shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public totalSacrificed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 24 hours;
    uint256 public minDistribution = 1 * (10 ** 15);
    
    DividendDistributor primaryDistributor;
    bool isBonusPool = false;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor () {
    }
    
    function initialize() external override initialization {
        _token = msg.sender;
    }
    
    function setPrimaryDistributor(address distributor) external override onlyToken {
        require(!isBonusPool);
        primaryDistributor = DividendDistributor(distributor);
        isBonusPool = true;
        minPeriod = 7 days;
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
            shares[shareholder].totalExcluded = getCumulativeDividends(amount);
            shareholderClaims[shareholder] = block.timestamp;
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }
        
        bool sharesIncreased = shares[shareholder].amount < amount;
        uint256 unpaid = getUnpaidEarnings(shareholder);
        
        if(sharesIncreased){
            if (shouldDistribute(shareholder, unpaid))
                distributeDividend(shareholder, unpaid);
            
            shares[shareholder].totalExcluded += getCumulativeDividends(amount - shares[shareholder].amount);
        }
        
        totalShares = (totalShares - shares[shareholder].amount) + amount;
        shares[shareholder].amount = amount;
        
        if (!sharesIncreased) {
            if (address(this).balance < unpaid) unpaid = address(this).balance;
            totalSacrificed = totalSacrificed + unpaid;
            shares[shareholder].totalLost += unpaid;
            payable(_token).transfer(unpaid);
            shares[shareholder].totalExcluded = getCumulativeDividends(amount);
        }
    }

    function deposit() external payable override {
        uint256 amount = msg.value;

        totalDividends = totalDividends + amount;
        dividendsPerShare += ((dividendsPerShareAccuracyFactor * amount) / totalShares);
    }

    function shouldDistribute(address shareholder, uint256 unpaidEarnings) internal view returns (bool) {
	   if(!isBonusPool)
            return shareholderClaims[shareholder] + minPeriod < block.timestamp && unpaidEarnings > minDistribution;
        else {
    	    return shareholderClaims[shareholder] < 1646308800 + (((block.timestamp - 1646308800) / 604800) * 604800);
        }
            
    }
    
    function getClaimTime(address shareholder) external override view onlyToken returns (uint256) {
        if (shareholderClaims[shareholder] + minPeriod <= block.timestamp || isBonusPool)
            return 0;
        else
            return (shareholderClaims[shareholder] + minPeriod) - block.timestamp;
    }

    function distributeDividend(address shareholder, uint256 unpaidEarnings) internal {
        if(shares[shareholder].amount == 0){ return; }

        if(unpaidEarnings > 0){
            totalDistributed = totalDistributed + unpaidEarnings;
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised + unpaidEarnings;
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            payable(shareholder).transfer(unpaidEarnings);
        }
    }

    function claimDividend(address shareholder) external override onlyToken {
        require(shouldDistribute(shareholder, getUnpaidEarnings(shareholder)), "Dividends not available yet");
        distributeDividend(shareholder, getUnpaidEarnings(shareholder));
    }

    function getUnpaidEarnings(address shareholder) public view override onlyToken returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends - shareholderTotalExcluded;
    }
    
    function getPaidDividends(address shareholder) external view override onlyToken returns (uint256) {
        return shares[shareholder].totalRealised;
    }
    
    function getTotalPaid() external view override onlyToken returns (uint256) {
        return totalDistributed;
    }
    
    function countShareholders() external view override onlyToken returns (uint256) {
        return shareholders.length;
    }
    
    function getLostRewards(address shareholder) external view override onlyToken returns (uint256) {
        return shares[shareholder].totalLost;
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        if(share == 0){ return 0; }
        return (share * dividendsPerShare) / dividendsPerShareAccuracyFactor;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

interface IProtect {
  function setTokenOwner(address main, address owner, address pair) external;

  function onPreTransferCheck(
    address from,
    address to,
    uint256 amount
  ) external returns (bool checked);
}

contract Mjolnir is IERC20, Ownable {
    using Address for address;
    
    address WBNB;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    IERC20[] discountTokens;
    uint256[] discountTokenMaxWallet;

    string constant _name = "Mjolnir";
    string constant _symbol = "MJOLNIR";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100;
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100;

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => uint256) lastSell;

    uint256 devFee = 400;
    uint256 buybackFee = 100;
    uint256 reflectionFee = 200;
    uint256 bonusPercent = 10;
    uint256 marketingFee = 500;
    uint256 totalFee = 1200;
    uint256 feeDenominator = 10000;
    uint256 public _sellMultiplierNumerator = 100;
    uint256 public _sellMultiplierDenominator = 100;
    uint256 public _dumpProtectionNumerator = 0;
    uint256 public _dumpProtectionDenominator = 100 * _maxTxAmount;
    uint256 public _dumpProtectionThreshold = 1;
    uint256 public _dumpProtectionTimer = 0;
    uint256 public _discountNumerator = 0;
    uint256 public _discountDenominator = 100;
    bool public rewardsActive = true;

    address payable devFeeReceiver;
    address payable marketingFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;


    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;

    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    bool public autoBonusDeposit = false;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor public distributor;
    DividendDistributor public bonusDistributor;

    IProtect public antisnipe;
    bool public protectionEnabled = true;
    bool public protectionDisabled = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 2000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address _marketing, address _dev) {
        router = IDEXRouter(routerAddress);
        WBNB = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[msg.sender][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[routerAddress] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        devFeeReceiver = payable(_dev);
        marketingFeeReceiver = payable(_marketing);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
    function airdrop(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length > 0 && addresses.length == amounts.length);
        address from = msg.sender;
        for (uint i = 0; i < addresses.length; i++) {
            if(balanceOf(addresses[i]) == 0) {
                isDividendExempt[addresses[i]] = true;
                _transferFrom(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(amount > 0, "Zero amount transferred");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        checkTxLimit(sender, amount);
        
        if (recipient != pair && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) checkWalletLimit(recipient, amount);
        }

        if(!launched() && recipient == pair){ require(sender == owner(), "Contract not launched yet."); launch(); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = !isFeeExempt[sender] ? takeFee(sender, recipient, amount) : amount;
        
        if(!isFeeExempt[recipient]) {
            if(shouldSwapBack(recipient)){ swapBack(amount); }
            if(shouldAutoBuyback(recipient)){ triggerAutoBuyback(); }
        } 
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        if(!isDividendExempt[sender]){ 
            try distributor.setShare(sender, _balances[sender]) {} catch {} 
            try bonusDistributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if(!isDividendExempt[recipient]){ 
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
            try bonusDistributor.setShare(recipient, _balances[recipient]) {} catch {}
        }

        if(launched() && protectionEnabled)
            antisnipe.onPreTransferCheck(sender, recipient, amount);

        emit Transfer(sender, recipient, amountReceived);
        
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        if (_discountNumerator > 0) {
            uint256 discount = getDiscountRate(recipient);
            if (discount > 0)
                walletLimit = walletLimit + (walletLimit * discount) / totalFee;
        }
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function setup() external onlyOwner {
        require(!launched());
        distributor = new DividendDistributor();
        distributor.initialize();
        bonusDistributor = new DividendDistributor();
        bonusDistributor.initialize();
        bonusDistributor.setPrimaryDistributor(address(distributor));
    }

    function setProtectionEnabled(bool _protect) external onlyOwner {
        if (_protect)
            require(!protectionDisabled);
        protectionEnabled = _protect;
    }
    
    function setProtection(address _protection, bool _call) external onlyOwner {
        if (_protection != address(antisnipe)){
            require(!protectionDisabled);
            antisnipe = IProtect(_protection);
        }
        if (_call)
            antisnipe.setTokenOwner(msg.sender, address(this), pair);
    }
    
    function disableProtection() external onlyOwner {
        protectionDisabled = true;
    }
    
    function setDistributors(address _distributor, address _bonusDistributor) external onlyOwner {
        distributor = DividendDistributor(_distributor);
        distributor.initialize();
        bonusDistributor = DividendDistributor(_bonusDistributor);
        bonusDistributor.initialize();
        bonusDistributor.setPrimaryDistributor(_distributor);
    }
    
    function setDiscountToken(address _discountToken, uint256 _discountMaxWallet) external onlyOwner {
        require(_discountToken.isContract());
        discountTokens.push(IERC20(_discountToken));
        discountTokenMaxWallet.push(_discountMaxWallet);
    }
    
    function removeDiscountToken() external onlyOwner {
        discountTokens.pop();
        discountTokenMaxWallet.pop();
    }
    
    function getDiscountRate(address account) internal view returns (uint256) {
        uint256 balance = discountTokens[0].balanceOf(account);
        uint256 discount;
        for (uint i = 0; i < discountTokens.length; i++) {
            balance = discountTokens[i].balanceOf(account);
            if (balance > discountTokenMaxWallet[i]) balance = discountTokenMaxWallet[i];
            if (balance > 0) discount = discount + (totalFee * balance * _discountNumerator) / (_discountDenominator * discountTokenMaxWallet[i]);
        }
        return discount;
    }

    function getTotalFee(bool selling, address sender, address recipient, uint256 amount) public view returns (uint256) {
        if(launchedAt + 2 > block.number){ return feeDenominator - 1; }
        if(selling){
            if (amount <= swapThreshold * _dumpProtectionThreshold && lastSell[sender] + _dumpProtectionTimer < block.number)
                return (totalFee * _sellMultiplierNumerator) / _sellMultiplierDenominator;
            else
                return (totalFee * _sellMultiplierNumerator) / _sellMultiplierDenominator + (amount * totalFee * _dumpProtectionNumerator) / (_dumpProtectionDenominator);
        }
        uint256 extraFee = (amount * _dumpProtectionThreshold * totalFee * _dumpProtectionNumerator) / (_dumpProtectionDenominator*2);
        if (_discountNumerator == 0 || isDividendExempt[recipient]) 
            return totalFee + extraFee;
        
        return (totalFee - getDiscountRate(recipient)/2) + extraFee; 
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = (amount * getTotalFee(recipient == pair, sender, recipient, amount)) / feeDenominator;
        if (recipient == pair) {
            lastSell[sender] = block.number;
        }

        _balances[address(this)] = _balances[address(this)] + feeAmount;
        emit Transfer(sender, address(this), feeAmount);

        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && recipient == pair
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 swapHolderProtection = amount > swapThreshold * _dumpProtectionThreshold ? amount + (_dumpProtectionNumerator * amount * amount) / (_dumpProtectionDenominator*2) : amount;
        if (swapHolderProtection > _maxTxAmount) swapHolderProtection = _maxTxAmount;
        if (_balances[address(this)] < swapHolderProtection) swapHolderProtection = _balances[address(this)];

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;
        
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapHolderProtection,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountOut = address(this).balance - balanceBefore;

        uint256 amountDev = (amountOut * devFee) / totalFee;
        uint256 amountBonusPool = (amountOut * reflectionFee * bonusPercent) / (totalFee * 100);
        uint256 amountPrizePool = ((amountOut * reflectionFee) / totalFee) - amountBonusPool;
        uint256 amountMarketing = amountOut - (amountDev + amountPrizePool + amountBonusPool + (amountOut * buybackFee) / totalFee);
        
        if (rewardsActive && amountPrizePool > 0){
            try distributor.deposit{value: amountPrizePool}() {} catch {}
            try bonusDistributor.deposit{value: amountBonusPool}() {} catch {}
        }
        
        if (amountMarketing > 0)
            marketingFeeReceiver.transfer(amountMarketing);

        if(amountDev > 0)
            devFeeReceiver.transfer(amountDev);
    }

    function shouldAutoBuyback(address recipient) internal view returns (bool) {
        return msg.sender != pair
            && !inSwap
            && autoBuybackEnabled
            && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number
            && recipient == pair
            && address(this).balance >= autoBuybackAmount;
    }

    function triggerManualBuyback(uint256 amount, bool triggerBuybackMultiplier) external onlyOwner {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }
    
    function manualDeposit(uint256 amount, bool bonus) external onlyOwner {
        if (bonus)
            bonusDistributor.deposit{value: amount}();
        else
            distributor.deposit{value: amount}();
    }
    
    function manualSell(uint256 amount) external onlyOwner {
        swapBack(amount);
    }
    
    function toggleRewards(bool toggle) external onlyOwner {
        rewardsActive = toggle;
    }

    function clearBuybackMultiplier() external onlyOwner {
        buybackMultiplierTriggeredAt = 0;
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator + autoBuybackAmount;
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external onlyOwner {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
    }
    
    function setAutoBonusDeposit(bool enabled) external onlyOwner {
        autoBonusDeposit = enabled;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function setTxLimit(uint256 numerator, uint256 divisor) external onlyOwner {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxTxAmount = (_totalSupply * numerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }
    
    function setSellMultiplier(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(divisor > 0 && numerator / divisor <= 3, "Taxes too high");
        _sellMultiplierNumerator = numerator;
        _sellMultiplierDenominator = divisor;
    }
    
    function setDumpMultiplier(uint256 numerator, uint256 divisor, uint256 dumpThreshold, uint256 dumpTimer) external onlyOwner() {
        require(divisor > 0 && numerator / divisor <= 3 , "Taxes too high");
        _dumpProtectionNumerator = numerator;
        _dumpProtectionDenominator = divisor * _maxTxAmount;
        _dumpProtectionThreshold = dumpThreshold;
        _dumpProtectionTimer = dumpTimer;
    }
    
    function setDiscountMultiplier(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(divisor > 0 && numerator / divisor <= 1);
        _discountNumerator = numerator;
        _discountDenominator = divisor;
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(this) && holder != pair && holder != DEAD && holder != owner());
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
            bonusDistributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
            bonusDistributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _devFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator, uint256 _bonusPercent) external onlyOwner {
        require(_bonusPercent <= 80, "Bonus pool too high");
        bonusPercent = _bonusPercent;
        devFee = _devFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _devFee + _buybackFee + _reflectionFee + _marketingFee;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 4, "Taxes too high");
    }

    function setFeeReceivers(address _devFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        devFeeReceiver = payable(_devFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / _denominator;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return (accuracy * balanceOf(pair) * 2) / getCirculatingSupply();
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    function checkDiscountRate(address wallet) external view returns (uint256) {
        return getDiscountRate(wallet);
    }
    
    function getPoolStatistics() external view returns (uint256 totalRewards, uint256 totalRewardsPaid, uint256 rewardsSacrificed, uint256 totalBonuses, uint256 totalBonusesPaid, uint256 bonusSacrificed, uint256 rewardHolders, uint256 bonusHolders) {
        totalRewards = distributor.totalDividends();
        totalRewardsPaid = distributor.totalDistributed();
        rewardsSacrificed = distributor.totalSacrificed();
        totalBonuses = bonusDistributor.totalDividends();
        totalBonusesPaid = bonusDistributor.totalDistributed();
        bonusSacrificed = bonusDistributor.totalSacrificed();
        rewardHolders = distributor.countShareholders();
        bonusHolders = bonusDistributor.countShareholders();
    }
    
    function myStatistics(address wallet) external view returns (uint256 reward, uint256 bonusReward, uint256 rewardClaimed, uint256 bonusClaimed, uint256 rewardsLost, uint256 bonusLost) {
	    reward = distributor.getUnpaidEarnings(wallet);
	    bonusReward = bonusDistributor.getUnpaidEarnings(wallet);
	    rewardClaimed = distributor.getPaidDividends(wallet);
	    bonusClaimed = bonusDistributor.getPaidDividends(wallet);
	    rewardsLost = distributor.getLostRewards(wallet);
	    bonusLost = bonusDistributor.getLostRewards(wallet);
	}
	
	function checkClaimTimes(address wallet) external view returns (uint256 mainPool, uint256 bonusPool) {
	    mainPool = distributor.getClaimTime(wallet);
        bonusPool = bonusDistributor.getClaimTime(wallet);
	}
	
	function claimRewards() external {
        require(distributor.getClaimTime(msg.sender) == 0, "Rewards not ready yet");
	    distributor.claimDividend(msg.sender);
	}
	
	function claimBonusRewards() external {
        require(bonusDistributor.getClaimTime(msg.sender) == 0, "Rewards not ready yet");
	    bonusDistributor.claimDividend(msg.sender);
	}

    event BuybackMultiplierActive(uint256 duration);
    //C U ON THE MOON
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_discountDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_discountNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dumpProtectionDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dumpProtectionNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dumpProtectionThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dumpProtectionTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMultiplierDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMultiplierNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipe","outputs":[{"internalType":"contract IProtect","name":"","type":"address"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBonusDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkClaimTimes","outputs":[{"internalType":"uint256","name":"mainPool","type":"uint256"},{"internalType":"uint256","name":"bonusPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"checkDiscountRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimBonusRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolStatistics","outputs":[{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"totalRewardsPaid","type":"uint256"},{"internalType":"uint256","name":"rewardsSacrificed","type":"uint256"},{"internalType":"uint256","name":"totalBonuses","type":"uint256"},{"internalType":"uint256","name":"totalBonusesPaid","type":"uint256"},{"internalType":"uint256","name":"bonusSacrificed","type":"uint256"},{"internalType":"uint256","name":"rewardHolders","type":"uint256"},{"internalType":"uint256","name":"bonusHolders","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"bonus","type":"bool"}],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"myStatistics","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"bonusReward","type":"uint256"},{"internalType":"uint256","name":"rewardClaimed","type":"uint256"},{"internalType":"uint256","name":"bonusClaimed","type":"uint256"},{"internalType":"uint256","name":"rewardsLost","type":"uint256"},{"internalType":"uint256","name":"bonusLost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeDiscountToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAutoBonusDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setDiscountMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_discountToken","type":"address"},{"internalType":"uint256","name":"_discountMaxWallet","type":"uint256"}],"name":"setDiscountToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributor","type":"address"},{"internalType":"address","name":"_bonusDistributor","type":"address"}],"name":"setDistributors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"},{"internalType":"uint256","name":"dumpThreshold","type":"uint256"},{"internalType":"uint256","name":"dumpTimer","type":"uint256"}],"name":"setDumpMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_bonusPercent","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_protection","type":"address"},{"internalType":"bool","name":"_call","type":"bool"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"}],"name":"setProtectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSellMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleRewards","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerManualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a620005e9565b620000439064e8d4a5100062000601565b6006556064600654600162000059919062000601565b62000065919062000623565b600755606460065460016200007b919062000601565b62000087919062000623565b600855610190600f55606460105560c8601155600a6012556101f46013556104b06014556127106015556064601655606460175560006018556007546064620000d1919062000601565b60199081556001601a8190556000601b819055601c556064601d819055601e805460ff19169092179091556020919091556021556107086027556028805461ffff191690556030805462ffffff60a01b19166201000160a01b1790556006546200013f906107d09062000623565b6031553480156200014f57600080fd5b5060405162005fd838038062005fd8833981016040819052620001729162000663565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e91906200069b565b600180546001600160a01b0319166001600160a01b039283161790556022546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c391906200069b565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b91906200069b565b602380546001600160a01b03199081166001600160a01b03938416178255336000818152600a60208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d808652908352818520600019908190553080875294845282862091865290835281852055848452600b8252808420805460ff199081166001908117909255848652600c8452828620805482168317905586865282862080548216831790557f0ec9aca9afadc09fc0bd96ec7d7d6cfbb5408a5bc5bcf87bc0656b65508e559a8054821683179055975489168552600d8352818520805489168217905585855281852080548916821790559284528084208054881684179055600254881684528084208054881684179055600354881684528084208054909716909217909555601e8054610100600160a81b03191661010089891602179055601f8054909416958816959095179092556006548183526009845284832081905593519384529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620006b9565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200052b5781600019048211156200050f576200050f620004d4565b808516156200051d57918102915b93841c9390800290620004ef565b509250929050565b6000826200054457506001620005e3565b816200055357506000620005e3565b81600181146200056c5760028114620005775762000597565b6001915050620005e3565b60ff8411156200058b576200058b620004d4565b50506001821b620005e3565b5060208310610133831016604e8410600b8410161715620005bc575081810a620005e3565b620005c88383620004ea565b8060001904821115620005df57620005df620004d4565b0290505b92915050565b6000620005fa60ff84168362000533565b9392505050565b60008160001904831182151516156200061e576200061e620004d4565b500290565b6000826200064157634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200065e57600080fd5b919050565b600080604083850312156200067757600080fd5b620006828362000646565b9150620006926020840162000646565b90509250929050565b600060208284031215620006ae57600080fd5b620005fa8262000646565b61590f80620006c96000396000f3fe608060405260043610620004cb5760003560e01c8063844eb202116200027b578063ba0bba401162000153578063d8573b8411620000c5578063f2fde38b1162000084578063f2fde38b1462000f5c578063f708a64f1462000f81578063f84ba65d1462000fa6578063f887ea401462000fcb578063f8a251461462000fed57600080fd5b8063d8573b841462000e8b578063db78ee2f1462000eb0578063dd62ed3e1462000ec8578063df20fd491462000f12578063f14fd1011462000f3757600080fd5b8063c5363caa1162000112578063c5363caa1462000dd4578063ceafd6da1462000df7578063d08aa7eb1462000e1c578063d51ed1c81462000e41578063d5d035f51462000e6657600080fd5b8063ba0bba401462000d16578063ba3194ed1462000d2e578063be12ac2f1462000d82578063bf56b3711462000d9a578063bfe109281462000db257600080fd5b8063a4b45c0011620001ed578063aceac85611620001ac578063aceac8561462000c50578063ae6093801462000ca3578063b04c1e021462000cc4578063b210b06d1462000ce6578063b930e0311462000cfe57600080fd5b8063a4b45c001462000ba3578063a519121a1462000bc8578063a8aa1b311462000be4578063a9059cbb1462000c06578063abe57e701462000c2b57600080fd5b80638c19ec8b116200023a5780638c19ec8b1462000b0f5780638da5cb5b1462000abb5780638f9a55c01462000b3457806391f915451462000b4c57806395d89b411462000b7157600080fd5b8063844eb2021462000a4357806386f6c3c11462000a5b578063882cfb3f1462000a80578063893d20e81462000abb5780638b42507f1462000adb57600080fd5b80633eedc8c911620003af578063676881fe11620003215780637516baec11620002e05780637516baec14620009a657806377cf1ce014620009c95780637c446b6714620009ee5780637d1db4a51462000a0657806382334b941462000a1e57600080fd5b8063676881fe14620008f45780636844e45a146200090c5780636ddd1713146200093157806370a082311462000954578063715018a6146200098e57600080fd5b8063571ac8b0116200036e578063571ac8b014620008485780635804f1e4146200086d57806361bd34851462000885578063658d4b7f14620008aa5780636724348214620008cf57600080fd5b80633eedc8c914620007985780633f4218e014620007b0578063421dd7c714620007e45780634355855a14620007fc5780634567c058146200083057600080fd5b806320aa655911620004495780632d4efa4711620004085780632d4efa4714620007095780632ff83b4c146200072e578063313ce5671462000746578063372500ab14620007645780633bb8a8d4146200077c57600080fd5b806320aa6559146200064757806323b872dd146200066c5780632403975414620006915780632b112e4914620006cc5780632d48e89614620006e457600080fd5b80631161ae3911620004965780631161ae39146200059c57806318160ddd14620005c15780631a6e937d14620005d85780631faf723b14620005fd578063201e7991146200062257600080fd5b80630445b66714620004d8578063048c7baf146200050357806306fdde03146200052a578063095ea7b3146200056657600080fd5b36620004d357005b600080fd5b348015620004e557600080fd5b50620004f060315481565b6040519081526020015b60405180910390f35b3480156200051057600080fd5b5062000528620005223660046200423a565b62001005565b005b3480156200053757600080fd5b5060408051808201909152600781526626b537b63734b960c91b60208201525b604051620004fa919062004278565b3480156200057357600080fd5b506200058b62000585366004620042ed565b62001064565b6040519015158152602001620004fa565b348015620005a957600080fd5b506200058b620005bb3660046200431a565b620010d2565b348015620005ce57600080fd5b50600654620004f0565b348015620005e557600080fd5b5062000528620005f73660046200433d565b620010e8565b3480156200060a57600080fd5b50620005286200061c3660046200431a565b6200112f565b3480156200062f57600080fd5b5062000528620006413660046200431a565b620011aa565b3480156200065457600080fd5b5062000528620006663660046200435d565b620011e2565b3480156200067957600080fd5b506200058b6200068b36600462004395565b62001355565b3480156200069e57600080fd5b50620006b6620006b0366004620043d6565b620013ef565b60408051928352602083019190915201620004fa565b348015620006d957600080fd5b50620004f0620014de565b348015620006f157600080fd5b5062000528620007033660046200431a565b62001528565b3480156200071657600080fd5b506200052862000728366004620043f4565b6200158e565b3480156200073b57600080fd5b50620004f060165481565b3480156200075357600080fd5b5060405160098152602001620004fa565b3480156200077157600080fd5b5062000528620015c9565b3480156200078957600080fd5b506028546200058b9060ff1681565b348015620007a557600080fd5b50620004f060195481565b348015620007bd57600080fd5b506200058b620007cf366004620043d6565b600b6020526000908152604090205460ff1681565b348015620007f157600080fd5b5062000528620016e1565b3480156200080957600080fd5b506200058b6200081b366004620043d6565b600d6020526000908152604090205460ff1681565b3480156200083d57600080fd5b50620004f0601c5481565b3480156200085557600080fd5b506200058b62000867366004620043d6565b62001723565b3480156200087a57600080fd5b50620004f060255481565b3480156200089257600080fd5b50620004f0620008a4366004620043d6565b62001733565b348015620008b757600080fd5b5062000528620008c93660046200440e565b62001740565b348015620008dc57600080fd5b5062000528620008ee3660046200452e565b62001798565b3480156200090157600080fd5b50620004f060175481565b3480156200091957600080fd5b50620005286200092b3660046200431a565b62001911565b3480156200093e57600080fd5b506030546200058b90600160b01b900460ff1681565b3480156200096157600080fd5b50620004f062000973366004620043d6565b6001600160a01b031660009081526009602052604090205490565b3480156200099b57600080fd5b506200052862001985565b348015620009b357600080fd5b506030546200058b90600160a01b900460ff1681565b348015620009d657600080fd5b50620004f0620009e8366004620045fc565b620019fc565b348015620009fb57600080fd5b50620004f060185481565b34801562000a1357600080fd5b50620004f060075481565b34801562000a2b57600080fd5b506200052862000a3d36600462004650565b62001bd8565b34801562000a5057600080fd5b50620004f0601a5481565b34801562000a6857600080fd5b506200052862000a7a36600462004678565b62001c64565b34801562000a8d57600080fd5b5060305462000aa2906001600160a01b031681565b6040516001600160a01b039091168152602001620004fa565b34801562000ac857600080fd5b506000546001600160a01b031662000aa2565b34801562000ae857600080fd5b506200058b62000afa366004620043d6565b600c6020526000908152604090205460ff1681565b34801562000b1c57600080fd5b506200052862000b2e3660046200433d565b62001d51565b34801562000b4157600080fd5b50620004f060085481565b34801562000b5957600080fd5b506200052862000b6b366004620042ed565b62001d91565b34801562000b7e57600080fd5b5060408051808201909152600781526626a527a62724a960c91b602082015262000557565b34801562000bb057600080fd5b506200052862000bc23660046200435d565b62001e5c565b34801562000bd557600080fd5b50601e546200058b9060ff1681565b34801562000bf157600080fd5b5060235462000aa2906001600160a01b031681565b34801562000c1357600080fd5b506200058b62000c25366004620042ed565b62001ec1565b34801562000c3857600080fd5b506200052862000c4a3660046200431a565b62001ed0565b34801562000c5d57600080fd5b5062000c7562000c6f366004620043d6565b62001f4b565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001620004fa565b34801562000cb057600080fd5b506028546200058b90610100900460ff1681565b34801562000cd157600080fd5b50602f5462000aa2906001600160a01b031681565b34801562000cf357600080fd5b506200052862002213565b34801562000d0b57600080fd5b50620004f0601b5481565b34801562000d2357600080fd5b506200052862002247565b34801562000d3b57600080fd5b5062000d46620023ef565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001620004fa565b34801562000d8f57600080fd5b50620004f0601d5481565b34801562000da757600080fd5b50620004f060245481565b34801562000dbf57600080fd5b50602e5462000aa2906001600160a01b031681565b34801562000de157600080fd5b506030546200058b90600160a81b900460ff1681565b34801562000e0457600080fd5b506200052862000e163660046200433d565b620027e5565b34801562000e2957600080fd5b506200052862000e3b3660046200431a565b6200284f565b34801562000e4e57600080fd5b50620004f062000e60366004620043f4565b620028ae565b34801562000e7357600080fd5b506200052862000e853660046200440e565b620028fa565b34801562000e9857600080fd5b506200052862000eaa366004620046bc565b620029b9565b34801562000ebd57600080fd5b506200052862002a46565b34801562000ed557600080fd5b50620004f062000ee73660046200435d565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801562000f1f57600080fd5b506200052862000f31366004620046ef565b62002ad5565b34801562000f4457600080fd5b506200052862000f5636600462004650565b62002b3e565b34801562000f6957600080fd5b506200052862000f7b366004620043d6565b62002c32565b34801562000f8e57600080fd5b506200052862000fa03660046200440e565b62002d21565b34801562000fb357600080fd5b506200052862000fc53660046200440e565b62002f48565b34801562000fd857600080fd5b5060225462000aa2906001600160a01b031681565b34801562000ffa57600080fd5b506200052862002fa0565b6000546001600160a01b031633146200103b5760405162461bcd60e51b8152600401620010329062004710565b60405180910390fd5b6028805460ff1916941515949094179093556029919091556000602a55602b55602c5543602d55565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620010c09086815260200190565b60405180910390a35060015b92915050565b600082620010e083620028ae565b119392505050565b6000546001600160a01b03163314620011155760405162461bcd60e51b8152600401620010329062004710565b602880549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146200115c5760405162461bcd60e51b8152600401620010329062004710565b6000821180156200116d5750600081115b80156200117c57506127108111155b6200118657600080fd5b80826006546200119791906200475b565b620011a391906200477d565b6007555050565b6000546001600160a01b03163314620011d75760405162461bcd60e51b8152600401620010329062004710565b602091909155602155565b6000546001600160a01b031633146200120f5760405162461bcd60e51b8152600401620010329062004710565b602e80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200126557600080fd5b505af11580156200127a573d6000803e3d6000fd5b5050602f80546001600160a01b0319166001600160a01b0385169081179091556040805163204a7f0760e21b81529051919350638129fc1c925060048082019260009290919082900301818387803b158015620012d657600080fd5b505af1158015620012eb573d6000803e3d6000fd5b5050602f54604051633baddff560e21b81526001600160a01b038681166004830152909116925063eeb77fd491506024015b600060405180830381600087803b1580156200133857600080fd5b505af11580156200134d573d6000803e3d6000fd5b505050505050565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914620013d8576001600160a01b0384166000908152600a60209081526040808320338452909152902054620013b3908390620047a0565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b620013e584848462003087565b90505b9392505050565b602e54604051630994fc3160e11b81526001600160a01b0383811660048301526000928392911690631329f86290602401602060405180830381865afa1580156200143e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014649190620047ba565b602f54604051630994fc3160e11b81526001600160a01b038681166004830152929450911690631329f86290602401602060405180830381865afa158015620014b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d79190620047ba565b9050915091565b6003546001600160a01b0390811660009081526009602052604080822054600254909316825281205490916200151491620047d4565b600654620015239190620047a0565b905090565b6000546001600160a01b03163314620015555760405162461bcd60e51b8152600401620010329062004710565b602e546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044016200131d565b6000546001600160a01b03163314620015bb5760405162461bcd60e51b8152600401620010329062004710565b620015c68162003661565b50565b602e54604051630994fc3160e11b81523360048201526001600160a01b0390911690631329f86290602401602060405180830381865afa15801562001612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016389190620047ba565b156200167f5760405162461bcd60e51b815260206004820152601560248201527414995dd85c991cc81b9bdd081c9958591e481e595d605a1b604482015260640162001032565b602e54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015b600060405180830381600087803b158015620016c657600080fd5b505af1158015620016db573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146200170e5760405162461bcd60e51b8152600401620010329062004710565b6030805460ff60a81b1916600160a81b179055565b6000620010cc8260001962001064565b6000620010cc8262003a7a565b6000546001600160a01b031633146200176d5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314620017c55760405162461bcd60e51b8152600401620010329062004710565b60008251118015620017d8575060008151115b8015620017e6575080518251145b620017f057600080fd5b3360005b8351811015620016db576200183a848281518110620018175762001817620047ef565b60200260200101516001600160a01b031660009081526009602052604090205490565b620018fc576001600d60008684815181106200185a576200185a620047ef565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550620018fa82858381518110620018b357620018b3620047ef565b60200260200101516009600a620018cb919062004902565b868581518110620018e057620018e0620047ef565b6020026020010151620018f491906200475b565b62003087565b505b80620019088162004913565b915050620017f4565b6000546001600160a01b031633146200193e5760405162461bcd60e51b8152600401620010329062004710565b6000811180156200195b575060036200195882846200477d565b11155b6200197a5760405162461bcd60e51b8152600401620010329062004931565b601691909155601755565b6000546001600160a01b03163314620019b25760405162461bcd60e51b8152600401620010329062004710565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600043602454600262001a109190620047d4565b111562001a3057600160155462001a289190620047a0565b905062001bd0565b841562001b0057601a5460315462001a4991906200475b565b821115801562001a7f5750601b546001600160a01b0385166000908152600e6020526040902054439162001a7d91620047d4565b105b1562001aa65760175460165460145462001a9a91906200475b565b62001a2891906200477d565b60195460185460145462001abb90856200475b565b62001ac791906200475b565b62001ad391906200477d565b60175460165460145462001ae891906200475b565b62001af491906200477d565b62001a289190620047d4565b6000601954600262001b1391906200475b565b601854601454601a5462001b2890876200475b565b62001b3491906200475b565b62001b4091906200475b565b62001b4c91906200477d565b9050601c546000148062001b7857506001600160a01b0384166000908152600d602052604090205460ff165b1562001b97578060145462001b8e9190620047d4565b91505062001bd0565b80600262001ba58662003a7a565b62001bb191906200477d565b60145462001bc09190620047a0565b62001bcc9190620047d4565b9150505b949350505050565b6000546001600160a01b0316331462001c055760405162461bcd60e51b8152600401620010329062004710565b60025462001c1e9083906001600160a01b031662003c8c565b801562001c6057426026556027546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b5050565b6000546001600160a01b0316331462001c915760405162461bcd60e51b8152600401620010329062004710565b605081111562001cda5760405162461bcd60e51b8152602060048201526013602482015272084dedceae640e0deded840e8dede40d0d2ced606b1b604482015260640162001032565b6012819055600f869055601085905560118490556013839055828462001d018789620047d4565b62001d0d9190620047d4565b62001d199190620047d4565b601455601582905562001d2e6004836200477d565b601454106200134d5760405162461bcd60e51b8152600401620010329062004931565b6000546001600160a01b0316331462001d7e5760405162461bcd60e51b8152600401620010329062004710565b601e805460ff1916911515919091179055565b6000546001600160a01b0316331462001dbe5760405162461bcd60e51b8152600401620010329062004710565b62001dd2826001600160a01b031662003d9f565b62001ddc57600080fd5b6004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0394909416939093179092556005805492830181556000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910155565b6000546001600160a01b0316331462001e895760405162461bcd60e51b8152600401620010329062004710565b601e8054610100600160a81b0319166101006001600160a01b0394851602179055601f80546001600160a01b03191691909216179055565b6000620013e833848462003087565b6000546001600160a01b0316331462001efd5760405162461bcd60e51b8152600401620010329062004710565b60008211801562001f0e5750600081115b801562001f1d57506127108111155b62001f2757600080fd5b808260065462001f3891906200475b565b62001f4491906200477d565b6008555050565b602e5460405163051fa63360e31b81526001600160a01b03838116600483015260009283928392839283928392909116906328fd319890602401602060405180830381865afa15801562001fa3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fc99190620047ba565b602f5460405163051fa63360e31b81526001600160a01b038a811660048301529298509116906328fd319890602401602060405180830381865afa15801562002016573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200203c9190620047ba565b602e54604051633cbf8a6160e01b81526001600160a01b038a81166004830152929750911690633cbf8a6190602401602060405180830381865afa15801562002089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020af9190620047ba565b602f54604051633cbf8a6160e01b81526001600160a01b038a81166004830152929650911690633cbf8a6190602401602060405180830381865afa158015620020fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021229190620047ba565b602e54604051635a3f213160e01b81526001600160a01b038a81166004830152929550911690635a3f213190602401602060405180830381865afa1580156200216f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021959190620047ba565b602f54604051635a3f213160e01b81526001600160a01b038a81166004830152929450911690635a3f213190602401602060405180830381865afa158015620021e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022089190620047ba565b905091939550919395565b6000546001600160a01b03163314620022405760405162461bcd60e51b8152600401620010329062004710565b6000602655565b6000546001600160a01b03163314620022745760405162461bcd60e51b8152600401620010329062004710565b602454156200228257600080fd5b60405162002290906200421d565b604051809103906000f080158015620022ad573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b039290921691821790556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200230557600080fd5b505af11580156200231a573d6000803e3d6000fd5b505050506040516200232c906200421d565b604051809103906000f08015801562002349573d6000803e3d6000fd5b50602f80546001600160a01b0319166001600160a01b039290921691821790556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050602f54602e54604051633baddff560e21b81526001600160a01b0391821660048201529116925063eeb77fd49150602401620016ab565b600080600080600080600080602e60009054906101000a90046001600160a01b03166001600160a01b031663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200244f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024759190620047ba565b9750602e60009054906101000a90046001600160a01b03166001600160a01b031663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024f19190620047ba565b9650602e60009054906101000a90046001600160a01b03166001600160a01b03166342685d746040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200256d9190620047ba565b9550602f60009054906101000a90046001600160a01b03166001600160a01b031663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620025c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025e99190620047ba565b9450602f60009054906101000a90046001600160a01b03166001600160a01b031663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200263f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026659190620047ba565b9350602f60009054906101000a90046001600160a01b03166001600160a01b03166342685d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015620026bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e19190620047ba565b9250602e60009054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275d9190620047ba565b9150602f60009054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027d99190620047ba565b90509091929394959697565b6000546001600160a01b03163314620028125760405162461bcd60e51b8152600401620010329062004710565b80156200283157603054600160a81b900460ff16156200283157600080fd5b60308054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146200287c5760405162461bcd60e51b8152600401620010329062004710565b60008111801562002899575060016200289682846200477d565b11155b620028a357600080fd5b601c91909155601d55565b6000620028ba620014de565b6023546001600160a01b0316600090815260096020526040902054620028e190846200475b565b620028ee9060026200475b565b620010cc91906200477d565b6000546001600160a01b03163314620029275760405162461bcd60e51b8152600401620010329062004710565b6030546001600160a01b038381169116146200297157603054600160a81b900460ff16156200295557600080fd5b603080546001600160a01b0319166001600160a01b0384161790555b801562001c6057603054602354604051633d42475360e01b81523360048201523060248201526001600160a01b039182166044820152911690633d424753906064016200131d565b6000546001600160a01b03163314620029e65760405162461bcd60e51b8152600401620010329062004710565b60008311801562002a035750600362002a0084866200477d565b11155b62002a225760405162461bcd60e51b8152600401620010329062004931565b601884905560075462002a3690846200475b565b601955601a91909155601b555050565b6000546001600160a01b0316331462002a735760405162461bcd60e51b8152600401620010329062004710565b600480548062002a875762002a8762004959565b600082815260209020810160001990810180546001600160a01b0319169055019055600580548062002abd5762002abd62004959565b60019003818190600052602060002001600090559055565b6000546001600160a01b0316331462002b025760405162461bcd60e51b8152600401620010329062004710565b6000811162002b1057600080fd5b6030805460ff60b01b1916600160b01b8415150217905560065462002b379082906200477d565b6031555050565b6000546001600160a01b0316331462002b6b5760405162461bcd60e51b8152600401620010329062004710565b801562002be157602f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bc357600080fd5b505af115801562002bd8573d6000803e3d6000fd5b50505050505050565b602e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bc357600080fd5b6000546001600160a01b0316331462002c5f5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03811662002cc65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001032565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462002d4e5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b038216301480159062002d7657506023546001600160a01b03838116911614155b801562002d9157506002546001600160a01b03838116911614155b801562002dac57506000546001600160a01b03838116911614155b62002db657600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff1916821580159190911790915562002e8657602e54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801562002e3357600080fd5b505af115801562002e48573d6000803e3d6000fd5b5050602f54604051630a5b654b60e11b81526001600160a01b0386811660048301526000602483015290911692506314b6ca9691506044016200131d565b602e546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801562002ee557600080fd5b505af115801562002efa573d6000803e3d6000fd5b5050602f546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b815260048101929092526024820152911692506314b6ca9691506044016200131d565b6000546001600160a01b0316331462002f755760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b602f54604051630994fc3160e11b81523360048201526001600160a01b0390911690631329f86290602401602060405180830381865afa15801562002fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200300f9190620047ba565b15620030565760405162461bcd60e51b815260206004820152601560248201527414995dd85c991cc81b9bdd081c9958591e481e595d605a1b604482015260640162001032565b602f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401620016ab565b6000808211620030da5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20616d6f756e74207472616e73666572726564000000000000000000604482015260640162001032565b6001600160a01b0384166000908152600960205260409020548211156200313b5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640162001032565b60325460ff16156200315c576200315484848462003dd9565b9050620013e8565b62003168848362003e98565b6023546001600160a01b038481169116148015906200319557506002546001600160a01b03848116911614155b15620031c8576001600160a01b0383166000908152600c602052604090205460ff16620031c857620031c8838362003f04565b602454158015620031e657506023546001600160a01b038481169116145b1562003259576000546001600160a01b038581169116146200324b5760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206e6f74206c61756e63686564207965742e000000000000604482015260640162001032565b620032594360245542602555565b6001600160a01b0384166000908152600960205260409020546200327f908390620047a0565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615620032b65782620032c3565b620032c385858562003fdd565b6001600160a01b0385166000908152600b602052604090205490915060ff166200331e57620032f284620040de565b156200330357620033038362003661565b6200330e8462004153565b156200331e576200331e620041d0565b6001600160a01b03841660009081526009602052604090205462003344908290620047d4565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600d909152205460ff166200345d57602e546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620033d757600080fd5b505af1925050508015620033e9575060015b50602f546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200344957600080fd5b505af19250505080156200345b575060015b505b6001600160a01b0384166000908152600d602052604090205460ff166200356357602e546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620034dd57600080fd5b505af1925050508015620034ef575060015b50602f546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200354f57600080fd5b505af192505050801562003561575060015b505b602454151580156200357e5750603054600160a01b900460ff165b15620036085760305460405163090ec10b60e31b81526001600160a01b038781166004830152868116602483015260448201869052909116906348760858906064016020604051808303816000875af1158015620035e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200360691906200496f565b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200364e91815260200190565b60405180910390a3506001949350505050565b6032805460ff19166001179055601a5460315460009162003682916200475b565b8211620036905781620036d5565b601954620036a09060026200475b565b8283601854620036b191906200475b565b620036bd91906200475b565b620036c991906200477d565b620036d59083620047d4565b9050600754811115620036e757506007545b30600090815260096020526040902054811115620037115750306000908152600960205260409020545b6040805160028082526060820183526000926020830190803683370190505090503081600081518110620037495762003749620047ef565b6001600160a01b03928316602091820292909201015260018054835192169183919081106200377c576200377c620047ef565b6001600160a01b03928316602091820292909201015260225460405163791ac94760e01b81524792919091169063791ac94790620037c8908690600090879030904290600401620049d5565b600060405180830381600087803b158015620037e357600080fd5b505af1158015620037f8573d6000803e3d6000fd5b50505050600081476200380c9190620047a0565b90506000601454600f54836200382391906200475b565b6200382f91906200477d565b9050600060145460646200384491906200475b565b6012546011546200385690866200475b565b6200386291906200475b565b6200386e91906200477d565b9050600081601454601154866200388691906200475b565b6200389291906200477d565b6200389e9190620047a0565b9050600060145460105486620038b591906200475b565b620038c191906200477d565b83620038ce8487620047d4565b620038da9190620047d4565b620038e69190620047d4565b620038f29086620047a0565b601e5490915060ff168015620039085750600082115b15620039d957602e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200395f57600080fd5b505af19350505050801562003972575060015b50602f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015620039c457600080fd5b505af193505050508015620039d7575060015b505b801562003a1d57601f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562003a1b573d6000803e3d6000fd5b505b831562003a6557601e546040516101009091046001600160a01b0316906108fc8615029086906000818181858888f1935050505015801562003a63573d6000803e3d6000fd5b505b50506032805460ff1916905550505050505050565b600080600460008154811062003a945762003a94620047ef565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801562003ae8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b0e9190620047ba565b90506000805b60045481101562003c84576004818154811062003b355762003b35620047ef565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa15801562003b89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003baf9190620047ba565b92506005818154811062003bc75762003bc7620047ef565b906000526020600020015483111562003bfe576005818154811062003bf05762003bf0620047ef565b906000526020600020015492505b821562003c6f576005818154811062003c1b5762003c1b620047ef565b9060005260206000200154601d5462003c3591906200475b565b601c548460145462003c4891906200475b565b62003c5491906200475b565b62003c6091906200477d565b62003c6c9083620047d4565b91505b8062003c7b8162004913565b91505062003b14565b509392505050565b6032805460ff19166001179055604080516002808252606082018352600092602083019080368337505060015482519293506001600160a01b03169183915060009062003cdd5762003cdd620047ef565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062003d145762003d14620047ef565b6001600160a01b03928316602091820292909201015260225460405163b6f9de9560e01b815291169063b6f9de9590859062003d5c9060009086908890429060040162004a13565b6000604051808303818588803b15801562003d7657600080fd5b505af115801562003d8b573d6000803e3d6000fd5b50506032805460ff19169055505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159062001bd0575050151592915050565b6001600160a01b03831660009081526009602052604081205462003dff908390620047a0565b6001600160a01b03808616600090815260096020526040808220939093559085168152205462003e31908390620047d4565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062003e869086815260200190565b60405180910390a35060019392505050565b6007548111158062003ec257506001600160a01b0382166000908152600c602052604090205460ff165b62001c605760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640162001032565b600854601c541562003f5257600062003f1d8462003a7a565b9050801562003f505760145462003f3582846200475b565b62003f4191906200477d565b62003f4d9083620047d4565b91505b505b6001600160a01b038316600090815260096020526040902054819062003f7a908490620047d4565b111562003fd85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840162001032565b505050565b601554602354600091829162004004906001600160a01b03878116911614878787620019fc565b6200401090856200475b565b6200401c91906200477d565b6023549091506001600160a01b038581169116141562004052576001600160a01b0385166000908152600e602052604090204390555b306000908152600960205260409020546200406f908290620047d4565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620040c19085815260200190565b60405180910390a3620040d58184620047a0565b95945050505050565b6023546000906001600160a01b0316331480159062004100575060325460ff16155b8015620041165750603054600160b01b900460ff165b80156200413057506023546001600160a01b038381169116145b8015620010cc575060315430600090815260096020526040902054101592915050565b6023546000906001600160a01b0316331480159062004175575060325460ff16155b801562004184575060285460ff165b8015620041a2575043602c54602d546200419f9190620047d4565b11155b8015620041bc57506023546001600160a01b038381169116145b8015620010cc5750602b5447101592915050565b602b54600254620041eb91906001600160a01b031662003c8c565b43602d55602b54602a54620042019190620047d4565b602a81905560295410156200421b576028805460ff191690555b565b610e8f8062004a4b83390190565b8015158114620015c657600080fd5b600080600080608085870312156200425157600080fd5b84356200425e816200422b565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b81811015620042a75785810183015185820160400152820162004289565b81811115620042ba576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114620042e857600080fd5b919050565b600080604083850312156200430157600080fd5b6200430c83620042d0565b946020939093013593505050565b600080604083850312156200432e57600080fd5b50508035926020909101359150565b6000602082840312156200435057600080fd5b8135620013e8816200422b565b600080604083850312156200437157600080fd5b6200437c83620042d0565b91506200438c60208401620042d0565b90509250929050565b600080600060608486031215620043ab57600080fd5b620043b684620042d0565b9250620043c660208501620042d0565b9150604084013590509250925092565b600060208284031215620043e957600080fd5b620013e882620042d0565b6000602082840312156200440757600080fd5b5035919050565b600080604083850312156200442257600080fd5b6200442d83620042d0565b915060208301356200443f816200422b565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200448c576200448c6200444a565b604052919050565b600067ffffffffffffffff821115620044b157620044b16200444a565b5060051b60200190565b600082601f830112620044cd57600080fd5b81356020620044e6620044e08362004494565b62004460565b82815260059290921b840181019181810190868411156200450657600080fd5b8286015b848110156200452357803583529183019183016200450a565b509695505050505050565b600080604083850312156200454257600080fd5b823567ffffffffffffffff808211156200455b57600080fd5b818501915085601f8301126200457057600080fd5b8135602062004583620044e08362004494565b82815260059290921b84018101918181019089841115620045a357600080fd5b948201945b83861015620045cc57620045bc86620042d0565b82529482019490820190620045a8565b96505086013592505080821115620045e357600080fd5b50620045f285828601620044bb565b9150509250929050565b600080600080608085870312156200461357600080fd5b843562004620816200422b565b93506200463060208601620042d0565b92506200464060408601620042d0565b9396929550929360600135925050565b600080604083850312156200466457600080fd5b8235915060208301356200443f816200422b565b60008060008060008060c087890312156200469257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060008060808587031215620046d357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156200470357600080fd5b82356200430c816200422b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562004778576200477862004745565b500290565b6000826200479b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015620047b557620047b562004745565b500390565b600060208284031215620047cd57600080fd5b5051919050565b60008219821115620047ea57620047ea62004745565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b80851115620048465781600019048211156200482a576200482a62004745565b808516156200483857918102915b93841c93908002906200480a565b509250929050565b6000826200485f57506001620010cc565b816200486e57506000620010cc565b81600181146200488757600281146200489257620048b2565b6001915050620010cc565b60ff841115620048a657620048a662004745565b50506001821b620010cc565b5060208310610133831016604e8410600b8410161715620048d7575081810a620010cc565b620048e3838362004805565b8060001904821115620048fa57620048fa62004745565b029392505050565b6000620013e860ff8416836200484e565b60006000198214156200492a576200492a62004745565b5060010190565b6020808252600e908201526d0a8c2f0cae640e8dede40d0d2ced60931b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156200498257600080fd5b8151620013e8816200422b565b600081518084526020808501945080840160005b83811015620049ca5781516001600160a01b031687529582019590820190600101620049a3565b509495945050505050565b85815284602082015260a060408201526000620049f660a08301866200498f565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600062004a2e60808301866200498f565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600a5562015180600b5566038d7ea4c68000600c55600d805460ff60a01b1916905534801561004257600080fd5b50610e3d806100526000396000f3fe6080604052600436106101355760003560e01c806366817df5116100ab578063ce7c2ac21161006f578063ce7c2ac214610309578063d0e30db01461036b578063e2d2e21914610373578063eeb77fd414610389578063efca2eed146103a9578063ffd49c84146103bf57600080fd5b806366817df5146102875780636793141f146102b45780638129fc1c146102c9578063997664d7146102de5780639df62df2146102f457600080fd5b80632d48e896116100fd5780632d48e896146101e55780633a98ef39146102055780633cbf8a611461021b57806342685d741461023b5780634fab0ae8146102515780635a3f21311461026757600080fd5b806311ce023d1461013a5780631329f8621461016357806314b6ca961461018357806315f7e05e146101a557806328fd3198146101c5575b600080fd5b34801561014657600080fd5b50610150600a5481565b6040519081526020015b60405180910390f35b34801561016f57600080fd5b5061015061017e366004610ce7565b6103d5565b34801561018f57600080fd5b506101a361019e366004610d09565b610470565b005b3480156101b157600080fd5b506101a36101c0366004610ce7565b610721565b3480156101d157600080fd5b506101506101e0366004610ce7565b6107af565b3480156101f157600080fd5b506101a3610200366004610d33565b610850565b34801561021157600080fd5b5061015060055481565b34801561022757600080fd5b50610150610236366004610ce7565b610872565b34801561024757600080fd5b5061015060085481565b34801561025d57600080fd5b50610150600c5481565b34801561027357600080fd5b50610150610282366004610ce7565b6108a9565b34801561029357600080fd5b506101506102a2366004610ce7565b60036020526000908152604090205481565b3480156102c057600080fd5b506101506108e0565b3480156102d557600080fd5b506101a36108ff565b3480156102ea57600080fd5b5061015060065481565b34801561030057600080fd5b5061015061093d565b34801561031557600080fd5b5061034b610324366004610ce7565b60046020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161015a565b6101a361095c565b34801561037f57600080fd5b5061015060095481565b34801561039557600080fd5b506101a36103a4366004610ce7565b6109a3565b3480156103b557600080fd5b5061015060075481565b3480156103cb57600080fd5b50610150600b5481565b600080546001600160a01b031633146103ed57600080fd5b600b546001600160a01b038316600090815260036020526040902054429161041491610d6b565b11158061042a5750600d54600160a01b900460ff165b1561043757506000919050565b600b546001600160a01b038316600090815260036020526040902054429161045e91610d6b565b6104689190610d83565b90505b919050565b6000546001600160a01b0316331461048757600080fd5b6000811180156104ad57506001600160a01b038216600090815260046020526040902054155b1561054557600180546001600160a01b03841660008181526002602052604081208390558284018455929092527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055610516816109ff565b6001600160a01b0383166000908152600460209081526040808320600101939093556003905220429055610578565b8015801561056a57506001600160a01b03821660009081526004602052604090205415155b156105785761057882610a2e565b6001600160a01b03821660009081526004602052604081205482119061059d846107af565b9050811561061b576105af8482610b41565b156105be576105be8482610bea565b6001600160a01b0384166000908152600460205260409020546105ea906105e59085610d83565b6109ff565b6001600160a01b03851660009081526004602052604081206001018054909190610615908490610d6b565b90915550505b6001600160a01b038416600090815260046020526040902054600554849161064291610d83565b61064c9190610d6b565b6005556001600160a01b03841660009081526004602052604090208390558161071b578047101561067a5750475b806008546106889190610d6b565b6008556001600160a01b038416600090815260046020526040812060030180548392906106b6908490610d6b565b9091555050600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156106f4573d6000803e3d6000fd5b506106fe836109ff565b6001600160a01b0385166000908152600460205260409020600101555b50505050565b6000546001600160a01b0316331461073857600080fd5b61074a81610745836107af565b610b41565b61079a5760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c65207965740000000000604482015260640160405180910390fd5b6107ac816107a7836107af565b610bea565b50565b600080546001600160a01b031633146107c757600080fd5b6001600160a01b0382166000908152600460205260409020546107ec57506000919050565b6001600160a01b03821660009081526004602052604081205461080e906109ff565b6001600160a01b03841660009081526004602052604090206001015490915080821161083e575060009392505050565b6108488183610d83565b949350505050565b6000546001600160a01b0316331461086757600080fd5b600b91909155600c55565b600080546001600160a01b0316331461088a57600080fd5b506001600160a01b031660009081526004602052604090206002015490565b600080546001600160a01b031633146108c157600080fd5b506001600160a01b031660009081526004602052604090206003015490565b600080546001600160a01b031633146108f857600080fd5b5060075490565b600d54600160a81b900460ff161561091657600080fd5b600080546001600160a01b03191633179055600d805460ff60a81b1916600160a81b179055565b600080546001600160a01b0316331461095557600080fd5b5060015490565b600654349061096c908290610d6b565b600655600554600a54610980908390610d9a565b61098a9190610db9565b6009600082825461099b9190610d6b565b909155505050565b6000546001600160a01b031633146109ba57600080fd5b600d54600160a01b900460ff16156109d157600080fd5b600d80546001600160a81b0319166001600160a01b0390921691909117600160a01b17905562093a80600b55565b600081610a0e57506000919050565b600a54600954610a1e9084610d9a565b610a289190610db9565b92915050565b60018054610a3d908290610d83565b81548110610a4d57610a4d610ddb565b60009182526020808320909101546001600160a01b0384811684526002909252604090922054600180549290931692918110610a8b57610a8b610ddb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260029182905260408120546001805491939291610ad6908290610d83565b81548110610ae657610ae6610ddb565b60009182526020808320909101546001600160a01b031683528201929092526040019020556001805480610b1c57610b1c610df1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600d54600090600160a01b900460ff16610b9157600b546001600160a01b0384166000908152600360205260409020544291610b7c91610d6b565b108015610b8a5750600c5482115b9050610a28565b62093a80610ba3636220adc042610d83565b610bad9190610db9565b610bba9062093a80610d9a565b610bc890636220adc0610d6b565b6001600160a01b03841660009081526003602052604090205410905092915050565b6001600160a01b038216600090815260046020526040902054610c0b575050565b8015610ccc5780600754610c1f9190610d6b565b6007556001600160a01b03821660009081526003602090815260408083204290556004909152902060020154610c56908290610d6b565b6001600160a01b0383166000908152600460205260409020600281019190915554610c80906109ff565b6001600160a01b038316600081815260046020526040808220600101939093559151909183156108fc02918491818181858888f19350505050158015610cca573d6000803e3d6000fd5b505b5050565b80356001600160a01b038116811461046b57600080fd5b600060208284031215610cf957600080fd5b610d0282610cd0565b9392505050565b60008060408385031215610d1c57600080fd5b610d2583610cd0565b946020939093013593505050565b60008060408385031215610d4657600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d7e57610d7e610d55565b500190565b600082821015610d9557610d95610d55565b500390565b6000816000190483118215151615610db457610db4610d55565b500290565b600082610dd657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122099586d3f844cdfe3f8eb18f5218eee11f388a24d3485f39813f1938c705262da64736f6c634300080b0033a26469706673582212207aab0d07b4581e45527a502f3d0679fd86ae756e2ac723616248855bffe07af064736f6c634300080b0033000000000000000000000000122817e1f550a668f5e578a88f542a3673d4764200000000000000000000000080bb8fb3485ba241d15f21cbb1aa0416f87ac695

Deployed Bytecode

0x608060405260043610620004cb5760003560e01c8063844eb202116200027b578063ba0bba401162000153578063d8573b8411620000c5578063f2fde38b1162000084578063f2fde38b1462000f5c578063f708a64f1462000f81578063f84ba65d1462000fa6578063f887ea401462000fcb578063f8a251461462000fed57600080fd5b8063d8573b841462000e8b578063db78ee2f1462000eb0578063dd62ed3e1462000ec8578063df20fd491462000f12578063f14fd1011462000f3757600080fd5b8063c5363caa1162000112578063c5363caa1462000dd4578063ceafd6da1462000df7578063d08aa7eb1462000e1c578063d51ed1c81462000e41578063d5d035f51462000e6657600080fd5b8063ba0bba401462000d16578063ba3194ed1462000d2e578063be12ac2f1462000d82578063bf56b3711462000d9a578063bfe109281462000db257600080fd5b8063a4b45c0011620001ed578063aceac85611620001ac578063aceac8561462000c50578063ae6093801462000ca3578063b04c1e021462000cc4578063b210b06d1462000ce6578063b930e0311462000cfe57600080fd5b8063a4b45c001462000ba3578063a519121a1462000bc8578063a8aa1b311462000be4578063a9059cbb1462000c06578063abe57e701462000c2b57600080fd5b80638c19ec8b116200023a5780638c19ec8b1462000b0f5780638da5cb5b1462000abb5780638f9a55c01462000b3457806391f915451462000b4c57806395d89b411462000b7157600080fd5b8063844eb2021462000a4357806386f6c3c11462000a5b578063882cfb3f1462000a80578063893d20e81462000abb5780638b42507f1462000adb57600080fd5b80633eedc8c911620003af578063676881fe11620003215780637516baec11620002e05780637516baec14620009a657806377cf1ce014620009c95780637c446b6714620009ee5780637d1db4a51462000a0657806382334b941462000a1e57600080fd5b8063676881fe14620008f45780636844e45a146200090c5780636ddd1713146200093157806370a082311462000954578063715018a6146200098e57600080fd5b8063571ac8b0116200036e578063571ac8b014620008485780635804f1e4146200086d57806361bd34851462000885578063658d4b7f14620008aa5780636724348214620008cf57600080fd5b80633eedc8c914620007985780633f4218e014620007b0578063421dd7c714620007e45780634355855a14620007fc5780634567c058146200083057600080fd5b806320aa655911620004495780632d4efa4711620004085780632d4efa4714620007095780632ff83b4c146200072e578063313ce5671462000746578063372500ab14620007645780633bb8a8d4146200077c57600080fd5b806320aa6559146200064757806323b872dd146200066c5780632403975414620006915780632b112e4914620006cc5780632d48e89614620006e457600080fd5b80631161ae3911620004965780631161ae39146200059c57806318160ddd14620005c15780631a6e937d14620005d85780631faf723b14620005fd578063201e7991146200062257600080fd5b80630445b66714620004d8578063048c7baf146200050357806306fdde03146200052a578063095ea7b3146200056657600080fd5b36620004d357005b600080fd5b348015620004e557600080fd5b50620004f060315481565b6040519081526020015b60405180910390f35b3480156200051057600080fd5b5062000528620005223660046200423a565b62001005565b005b3480156200053757600080fd5b5060408051808201909152600781526626b537b63734b960c91b60208201525b604051620004fa919062004278565b3480156200057357600080fd5b506200058b62000585366004620042ed565b62001064565b6040519015158152602001620004fa565b348015620005a957600080fd5b506200058b620005bb3660046200431a565b620010d2565b348015620005ce57600080fd5b50600654620004f0565b348015620005e557600080fd5b5062000528620005f73660046200433d565b620010e8565b3480156200060a57600080fd5b50620005286200061c3660046200431a565b6200112f565b3480156200062f57600080fd5b5062000528620006413660046200431a565b620011aa565b3480156200065457600080fd5b5062000528620006663660046200435d565b620011e2565b3480156200067957600080fd5b506200058b6200068b36600462004395565b62001355565b3480156200069e57600080fd5b50620006b6620006b0366004620043d6565b620013ef565b60408051928352602083019190915201620004fa565b348015620006d957600080fd5b50620004f0620014de565b348015620006f157600080fd5b5062000528620007033660046200431a565b62001528565b3480156200071657600080fd5b506200052862000728366004620043f4565b6200158e565b3480156200073b57600080fd5b50620004f060165481565b3480156200075357600080fd5b5060405160098152602001620004fa565b3480156200077157600080fd5b5062000528620015c9565b3480156200078957600080fd5b506028546200058b9060ff1681565b348015620007a557600080fd5b50620004f060195481565b348015620007bd57600080fd5b506200058b620007cf366004620043d6565b600b6020526000908152604090205460ff1681565b348015620007f157600080fd5b5062000528620016e1565b3480156200080957600080fd5b506200058b6200081b366004620043d6565b600d6020526000908152604090205460ff1681565b3480156200083d57600080fd5b50620004f0601c5481565b3480156200085557600080fd5b506200058b62000867366004620043d6565b62001723565b3480156200087a57600080fd5b50620004f060255481565b3480156200089257600080fd5b50620004f0620008a4366004620043d6565b62001733565b348015620008b757600080fd5b5062000528620008c93660046200440e565b62001740565b348015620008dc57600080fd5b5062000528620008ee3660046200452e565b62001798565b3480156200090157600080fd5b50620004f060175481565b3480156200091957600080fd5b50620005286200092b3660046200431a565b62001911565b3480156200093e57600080fd5b506030546200058b90600160b01b900460ff1681565b3480156200096157600080fd5b50620004f062000973366004620043d6565b6001600160a01b031660009081526009602052604090205490565b3480156200099b57600080fd5b506200052862001985565b348015620009b357600080fd5b506030546200058b90600160a01b900460ff1681565b348015620009d657600080fd5b50620004f0620009e8366004620045fc565b620019fc565b348015620009fb57600080fd5b50620004f060185481565b34801562000a1357600080fd5b50620004f060075481565b34801562000a2b57600080fd5b506200052862000a3d36600462004650565b62001bd8565b34801562000a5057600080fd5b50620004f0601a5481565b34801562000a6857600080fd5b506200052862000a7a36600462004678565b62001c64565b34801562000a8d57600080fd5b5060305462000aa2906001600160a01b031681565b6040516001600160a01b039091168152602001620004fa565b34801562000ac857600080fd5b506000546001600160a01b031662000aa2565b34801562000ae857600080fd5b506200058b62000afa366004620043d6565b600c6020526000908152604090205460ff1681565b34801562000b1c57600080fd5b506200052862000b2e3660046200433d565b62001d51565b34801562000b4157600080fd5b50620004f060085481565b34801562000b5957600080fd5b506200052862000b6b366004620042ed565b62001d91565b34801562000b7e57600080fd5b5060408051808201909152600781526626a527a62724a960c91b602082015262000557565b34801562000bb057600080fd5b506200052862000bc23660046200435d565b62001e5c565b34801562000bd557600080fd5b50601e546200058b9060ff1681565b34801562000bf157600080fd5b5060235462000aa2906001600160a01b031681565b34801562000c1357600080fd5b506200058b62000c25366004620042ed565b62001ec1565b34801562000c3857600080fd5b506200052862000c4a3660046200431a565b62001ed0565b34801562000c5d57600080fd5b5062000c7562000c6f366004620043d6565b62001f4b565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001620004fa565b34801562000cb057600080fd5b506028546200058b90610100900460ff1681565b34801562000cd157600080fd5b50602f5462000aa2906001600160a01b031681565b34801562000cf357600080fd5b506200052862002213565b34801562000d0b57600080fd5b50620004f0601b5481565b34801562000d2357600080fd5b506200052862002247565b34801562000d3b57600080fd5b5062000d46620023ef565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001620004fa565b34801562000d8f57600080fd5b50620004f0601d5481565b34801562000da757600080fd5b50620004f060245481565b34801562000dbf57600080fd5b50602e5462000aa2906001600160a01b031681565b34801562000de157600080fd5b506030546200058b90600160a81b900460ff1681565b34801562000e0457600080fd5b506200052862000e163660046200433d565b620027e5565b34801562000e2957600080fd5b506200052862000e3b3660046200431a565b6200284f565b34801562000e4e57600080fd5b50620004f062000e60366004620043f4565b620028ae565b34801562000e7357600080fd5b506200052862000e853660046200440e565b620028fa565b34801562000e9857600080fd5b506200052862000eaa366004620046bc565b620029b9565b34801562000ebd57600080fd5b506200052862002a46565b34801562000ed557600080fd5b50620004f062000ee73660046200435d565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801562000f1f57600080fd5b506200052862000f31366004620046ef565b62002ad5565b34801562000f4457600080fd5b506200052862000f5636600462004650565b62002b3e565b34801562000f6957600080fd5b506200052862000f7b366004620043d6565b62002c32565b34801562000f8e57600080fd5b506200052862000fa03660046200440e565b62002d21565b34801562000fb357600080fd5b506200052862000fc53660046200440e565b62002f48565b34801562000fd857600080fd5b5060225462000aa2906001600160a01b031681565b34801562000ffa57600080fd5b506200052862002fa0565b6000546001600160a01b031633146200103b5760405162461bcd60e51b8152600401620010329062004710565b60405180910390fd5b6028805460ff1916941515949094179093556029919091556000602a55602b55602c5543602d55565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620010c09086815260200190565b60405180910390a35060015b92915050565b600082620010e083620028ae565b119392505050565b6000546001600160a01b03163314620011155760405162461bcd60e51b8152600401620010329062004710565b602880549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146200115c5760405162461bcd60e51b8152600401620010329062004710565b6000821180156200116d5750600081115b80156200117c57506127108111155b6200118657600080fd5b80826006546200119791906200475b565b620011a391906200477d565b6007555050565b6000546001600160a01b03163314620011d75760405162461bcd60e51b8152600401620010329062004710565b602091909155602155565b6000546001600160a01b031633146200120f5760405162461bcd60e51b8152600401620010329062004710565b602e80546001600160a01b0319166001600160a01b0384169081179091556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200126557600080fd5b505af11580156200127a573d6000803e3d6000fd5b5050602f80546001600160a01b0319166001600160a01b0385169081179091556040805163204a7f0760e21b81529051919350638129fc1c925060048082019260009290919082900301818387803b158015620012d657600080fd5b505af1158015620012eb573d6000803e3d6000fd5b5050602f54604051633baddff560e21b81526001600160a01b038681166004830152909116925063eeb77fd491506024015b600060405180830381600087803b1580156200133857600080fd5b505af11580156200134d573d6000803e3d6000fd5b505050505050565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914620013d8576001600160a01b0384166000908152600a60209081526040808320338452909152902054620013b3908390620047a0565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b620013e584848462003087565b90505b9392505050565b602e54604051630994fc3160e11b81526001600160a01b0383811660048301526000928392911690631329f86290602401602060405180830381865afa1580156200143e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014649190620047ba565b602f54604051630994fc3160e11b81526001600160a01b038681166004830152929450911690631329f86290602401602060405180830381865afa158015620014b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d79190620047ba565b9050915091565b6003546001600160a01b0390811660009081526009602052604080822054600254909316825281205490916200151491620047d4565b600654620015239190620047a0565b905090565b6000546001600160a01b03163314620015555760405162461bcd60e51b8152600401620010329062004710565b602e546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044016200131d565b6000546001600160a01b03163314620015bb5760405162461bcd60e51b8152600401620010329062004710565b620015c68162003661565b50565b602e54604051630994fc3160e11b81523360048201526001600160a01b0390911690631329f86290602401602060405180830381865afa15801562001612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016389190620047ba565b156200167f5760405162461bcd60e51b815260206004820152601560248201527414995dd85c991cc81b9bdd081c9958591e481e595d605a1b604482015260640162001032565b602e54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e906024015b600060405180830381600087803b158015620016c657600080fd5b505af1158015620016db573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146200170e5760405162461bcd60e51b8152600401620010329062004710565b6030805460ff60a81b1916600160a81b179055565b6000620010cc8260001962001064565b6000620010cc8262003a7a565b6000546001600160a01b031633146200176d5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314620017c55760405162461bcd60e51b8152600401620010329062004710565b60008251118015620017d8575060008151115b8015620017e6575080518251145b620017f057600080fd5b3360005b8351811015620016db576200183a848281518110620018175762001817620047ef565b60200260200101516001600160a01b031660009081526009602052604090205490565b620018fc576001600d60008684815181106200185a576200185a620047ef565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550620018fa82858381518110620018b357620018b3620047ef565b60200260200101516009600a620018cb919062004902565b868581518110620018e057620018e0620047ef565b6020026020010151620018f491906200475b565b62003087565b505b80620019088162004913565b915050620017f4565b6000546001600160a01b031633146200193e5760405162461bcd60e51b8152600401620010329062004710565b6000811180156200195b575060036200195882846200477d565b11155b6200197a5760405162461bcd60e51b8152600401620010329062004931565b601691909155601755565b6000546001600160a01b03163314620019b25760405162461bcd60e51b8152600401620010329062004710565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600043602454600262001a109190620047d4565b111562001a3057600160155462001a289190620047a0565b905062001bd0565b841562001b0057601a5460315462001a4991906200475b565b821115801562001a7f5750601b546001600160a01b0385166000908152600e6020526040902054439162001a7d91620047d4565b105b1562001aa65760175460165460145462001a9a91906200475b565b62001a2891906200477d565b60195460185460145462001abb90856200475b565b62001ac791906200475b565b62001ad391906200477d565b60175460165460145462001ae891906200475b565b62001af491906200477d565b62001a289190620047d4565b6000601954600262001b1391906200475b565b601854601454601a5462001b2890876200475b565b62001b3491906200475b565b62001b4091906200475b565b62001b4c91906200477d565b9050601c546000148062001b7857506001600160a01b0384166000908152600d602052604090205460ff165b1562001b97578060145462001b8e9190620047d4565b91505062001bd0565b80600262001ba58662003a7a565b62001bb191906200477d565b60145462001bc09190620047a0565b62001bcc9190620047d4565b9150505b949350505050565b6000546001600160a01b0316331462001c055760405162461bcd60e51b8152600401620010329062004710565b60025462001c1e9083906001600160a01b031662003c8c565b801562001c6057426026556027546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b5050565b6000546001600160a01b0316331462001c915760405162461bcd60e51b8152600401620010329062004710565b605081111562001cda5760405162461bcd60e51b8152602060048201526013602482015272084dedceae640e0deded840e8dede40d0d2ced606b1b604482015260640162001032565b6012819055600f869055601085905560118490556013839055828462001d018789620047d4565b62001d0d9190620047d4565b62001d199190620047d4565b601455601582905562001d2e6004836200477d565b601454106200134d5760405162461bcd60e51b8152600401620010329062004931565b6000546001600160a01b0316331462001d7e5760405162461bcd60e51b8152600401620010329062004710565b601e805460ff1916911515919091179055565b6000546001600160a01b0316331462001dbe5760405162461bcd60e51b8152600401620010329062004710565b62001dd2826001600160a01b031662003d9f565b62001ddc57600080fd5b6004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0394909416939093179092556005805492830181556000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910155565b6000546001600160a01b0316331462001e895760405162461bcd60e51b8152600401620010329062004710565b601e8054610100600160a81b0319166101006001600160a01b0394851602179055601f80546001600160a01b03191691909216179055565b6000620013e833848462003087565b6000546001600160a01b0316331462001efd5760405162461bcd60e51b8152600401620010329062004710565b60008211801562001f0e5750600081115b801562001f1d57506127108111155b62001f2757600080fd5b808260065462001f3891906200475b565b62001f4491906200477d565b6008555050565b602e5460405163051fa63360e31b81526001600160a01b03838116600483015260009283928392839283928392909116906328fd319890602401602060405180830381865afa15801562001fa3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fc99190620047ba565b602f5460405163051fa63360e31b81526001600160a01b038a811660048301529298509116906328fd319890602401602060405180830381865afa15801562002016573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200203c9190620047ba565b602e54604051633cbf8a6160e01b81526001600160a01b038a81166004830152929750911690633cbf8a6190602401602060405180830381865afa15801562002089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020af9190620047ba565b602f54604051633cbf8a6160e01b81526001600160a01b038a81166004830152929650911690633cbf8a6190602401602060405180830381865afa158015620020fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021229190620047ba565b602e54604051635a3f213160e01b81526001600160a01b038a81166004830152929550911690635a3f213190602401602060405180830381865afa1580156200216f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021959190620047ba565b602f54604051635a3f213160e01b81526001600160a01b038a81166004830152929450911690635a3f213190602401602060405180830381865afa158015620021e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022089190620047ba565b905091939550919395565b6000546001600160a01b03163314620022405760405162461bcd60e51b8152600401620010329062004710565b6000602655565b6000546001600160a01b03163314620022745760405162461bcd60e51b8152600401620010329062004710565b602454156200228257600080fd5b60405162002290906200421d565b604051809103906000f080158015620022ad573d6000803e3d6000fd5b50602e80546001600160a01b0319166001600160a01b039290921691821790556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b1580156200230557600080fd5b505af11580156200231a573d6000803e3d6000fd5b505050506040516200232c906200421d565b604051809103906000f08015801562002349573d6000803e3d6000fd5b50602f80546001600160a01b0319166001600160a01b039290921691821790556040805163204a7f0760e21b81529051638129fc1c9160048082019260009290919082900301818387803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050602f54602e54604051633baddff560e21b81526001600160a01b0391821660048201529116925063eeb77fd49150602401620016ab565b600080600080600080600080602e60009054906101000a90046001600160a01b03166001600160a01b031663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200244f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024759190620047ba565b9750602e60009054906101000a90046001600160a01b03166001600160a01b031663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620024cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024f19190620047ba565b9650602e60009054906101000a90046001600160a01b03166001600160a01b03166342685d746040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200256d9190620047ba565b9550602f60009054906101000a90046001600160a01b03166001600160a01b031663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620025c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025e99190620047ba565b9450602f60009054906101000a90046001600160a01b03166001600160a01b031663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200263f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026659190620047ba565b9350602f60009054906101000a90046001600160a01b03166001600160a01b03166342685d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015620026bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026e19190620047ba565b9250602e60009054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200275d9190620047ba565b9150602f60009054906101000a90046001600160a01b03166001600160a01b0316639df62df26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620027b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027d99190620047ba565b90509091929394959697565b6000546001600160a01b03163314620028125760405162461bcd60e51b8152600401620010329062004710565b80156200283157603054600160a81b900460ff16156200283157600080fd5b60308054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146200287c5760405162461bcd60e51b8152600401620010329062004710565b60008111801562002899575060016200289682846200477d565b11155b620028a357600080fd5b601c91909155601d55565b6000620028ba620014de565b6023546001600160a01b0316600090815260096020526040902054620028e190846200475b565b620028ee9060026200475b565b620010cc91906200477d565b6000546001600160a01b03163314620029275760405162461bcd60e51b8152600401620010329062004710565b6030546001600160a01b038381169116146200297157603054600160a81b900460ff16156200295557600080fd5b603080546001600160a01b0319166001600160a01b0384161790555b801562001c6057603054602354604051633d42475360e01b81523360048201523060248201526001600160a01b039182166044820152911690633d424753906064016200131d565b6000546001600160a01b03163314620029e65760405162461bcd60e51b8152600401620010329062004710565b60008311801562002a035750600362002a0084866200477d565b11155b62002a225760405162461bcd60e51b8152600401620010329062004931565b601884905560075462002a3690846200475b565b601955601a91909155601b555050565b6000546001600160a01b0316331462002a735760405162461bcd60e51b8152600401620010329062004710565b600480548062002a875762002a8762004959565b600082815260209020810160001990810180546001600160a01b0319169055019055600580548062002abd5762002abd62004959565b60019003818190600052602060002001600090559055565b6000546001600160a01b0316331462002b025760405162461bcd60e51b8152600401620010329062004710565b6000811162002b1057600080fd5b6030805460ff60b01b1916600160b01b8415150217905560065462002b379082906200477d565b6031555050565b6000546001600160a01b0316331462002b6b5760405162461bcd60e51b8152600401620010329062004710565b801562002be157602f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bc357600080fd5b505af115801562002bd8573d6000803e3d6000fd5b50505050505050565b602e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bc357600080fd5b6000546001600160a01b0316331462002c5f5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03811662002cc65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001032565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462002d4e5760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b038216301480159062002d7657506023546001600160a01b03838116911614155b801562002d9157506002546001600160a01b03838116911614155b801562002dac57506000546001600160a01b03838116911614155b62002db657600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff1916821580159190911790915562002e8657602e54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801562002e3357600080fd5b505af115801562002e48573d6000803e3d6000fd5b5050602f54604051630a5b654b60e11b81526001600160a01b0386811660048301526000602483015290911692506314b6ca9691506044016200131d565b602e546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801562002ee557600080fd5b505af115801562002efa573d6000803e3d6000fd5b5050602f546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b815260048101929092526024820152911692506314b6ca9691506044016200131d565b6000546001600160a01b0316331462002f755760405162461bcd60e51b8152600401620010329062004710565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b602f54604051630994fc3160e11b81523360048201526001600160a01b0390911690631329f86290602401602060405180830381865afa15801562002fe9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200300f9190620047ba565b15620030565760405162461bcd60e51b815260206004820152601560248201527414995dd85c991cc81b9bdd081c9958591e481e595d605a1b604482015260640162001032565b602f54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401620016ab565b6000808211620030da5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20616d6f756e74207472616e73666572726564000000000000000000604482015260640162001032565b6001600160a01b0384166000908152600960205260409020548211156200313b5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640162001032565b60325460ff16156200315c576200315484848462003dd9565b9050620013e8565b62003168848362003e98565b6023546001600160a01b038481169116148015906200319557506002546001600160a01b03848116911614155b15620031c8576001600160a01b0383166000908152600c602052604090205460ff16620031c857620031c8838362003f04565b602454158015620031e657506023546001600160a01b038481169116145b1562003259576000546001600160a01b038581169116146200324b5760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206e6f74206c61756e63686564207965742e000000000000604482015260640162001032565b620032594360245542602555565b6001600160a01b0384166000908152600960205260409020546200327f908390620047a0565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615620032b65782620032c3565b620032c385858562003fdd565b6001600160a01b0385166000908152600b602052604090205490915060ff166200331e57620032f284620040de565b156200330357620033038362003661565b6200330e8462004153565b156200331e576200331e620041d0565b6001600160a01b03841660009081526009602052604090205462003344908290620047d4565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600d909152205460ff166200345d57602e546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620033d757600080fd5b505af1925050508015620033e9575060015b50602f546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200344957600080fd5b505af19250505080156200345b575060015b505b6001600160a01b0384166000908152600d602052604090205460ff166200356357602e546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015620034dd57600080fd5b505af1925050508015620034ef575060015b50602f546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200354f57600080fd5b505af192505050801562003561575060015b505b602454151580156200357e5750603054600160a01b900460ff165b15620036085760305460405163090ec10b60e31b81526001600160a01b038781166004830152868116602483015260448201869052909116906348760858906064016020604051808303816000875af1158015620035e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200360691906200496f565b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200364e91815260200190565b60405180910390a3506001949350505050565b6032805460ff19166001179055601a5460315460009162003682916200475b565b8211620036905781620036d5565b601954620036a09060026200475b565b8283601854620036b191906200475b565b620036bd91906200475b565b620036c991906200477d565b620036d59083620047d4565b9050600754811115620036e757506007545b30600090815260096020526040902054811115620037115750306000908152600960205260409020545b6040805160028082526060820183526000926020830190803683370190505090503081600081518110620037495762003749620047ef565b6001600160a01b03928316602091820292909201015260018054835192169183919081106200377c576200377c620047ef565b6001600160a01b03928316602091820292909201015260225460405163791ac94760e01b81524792919091169063791ac94790620037c8908690600090879030904290600401620049d5565b600060405180830381600087803b158015620037e357600080fd5b505af1158015620037f8573d6000803e3d6000fd5b50505050600081476200380c9190620047a0565b90506000601454600f54836200382391906200475b565b6200382f91906200477d565b9050600060145460646200384491906200475b565b6012546011546200385690866200475b565b6200386291906200475b565b6200386e91906200477d565b9050600081601454601154866200388691906200475b565b6200389291906200477d565b6200389e9190620047a0565b9050600060145460105486620038b591906200475b565b620038c191906200477d565b83620038ce8487620047d4565b620038da9190620047d4565b620038e69190620047d4565b620038f29086620047a0565b601e5490915060ff168015620039085750600082115b15620039d957602e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200395f57600080fd5b505af19350505050801562003972575060015b50602f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015620039c457600080fd5b505af193505050508015620039d7575060015b505b801562003a1d57601f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562003a1b573d6000803e3d6000fd5b505b831562003a6557601e546040516101009091046001600160a01b0316906108fc8615029086906000818181858888f1935050505015801562003a63573d6000803e3d6000fd5b505b50506032805460ff1916905550505050505050565b600080600460008154811062003a945762003a94620047ef565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801562003ae8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b0e9190620047ba565b90506000805b60045481101562003c84576004818154811062003b355762003b35620047ef565b6000918252602090912001546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa15801562003b89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003baf9190620047ba565b92506005818154811062003bc75762003bc7620047ef565b906000526020600020015483111562003bfe576005818154811062003bf05762003bf0620047ef565b906000526020600020015492505b821562003c6f576005818154811062003c1b5762003c1b620047ef565b9060005260206000200154601d5462003c3591906200475b565b601c548460145462003c4891906200475b565b62003c5491906200475b565b62003c6091906200477d565b62003c6c9083620047d4565b91505b8062003c7b8162004913565b91505062003b14565b509392505050565b6032805460ff19166001179055604080516002808252606082018352600092602083019080368337505060015482519293506001600160a01b03169183915060009062003cdd5762003cdd620047ef565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811062003d145762003d14620047ef565b6001600160a01b03928316602091820292909201015260225460405163b6f9de9560e01b815291169063b6f9de9590859062003d5c9060009086908890429060040162004a13565b6000604051808303818588803b15801562003d7657600080fd5b505af115801562003d8b573d6000803e3d6000fd5b50506032805460ff19169055505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159062001bd0575050151592915050565b6001600160a01b03831660009081526009602052604081205462003dff908390620047a0565b6001600160a01b03808616600090815260096020526040808220939093559085168152205462003e31908390620047d4565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062003e869086815260200190565b60405180910390a35060019392505050565b6007548111158062003ec257506001600160a01b0382166000908152600c602052604090205460ff165b62001c605760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640162001032565b600854601c541562003f5257600062003f1d8462003a7a565b9050801562003f505760145462003f3582846200475b565b62003f4191906200477d565b62003f4d9083620047d4565b91505b505b6001600160a01b038316600090815260096020526040902054819062003f7a908490620047d4565b111562003fd85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b606482015260840162001032565b505050565b601554602354600091829162004004906001600160a01b03878116911614878787620019fc565b6200401090856200475b565b6200401c91906200477d565b6023549091506001600160a01b038581169116141562004052576001600160a01b0385166000908152600e602052604090204390555b306000908152600960205260409020546200406f908290620047d4565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620040c19085815260200190565b60405180910390a3620040d58184620047a0565b95945050505050565b6023546000906001600160a01b0316331480159062004100575060325460ff16155b8015620041165750603054600160b01b900460ff165b80156200413057506023546001600160a01b038381169116145b8015620010cc575060315430600090815260096020526040902054101592915050565b6023546000906001600160a01b0316331480159062004175575060325460ff16155b801562004184575060285460ff165b8015620041a2575043602c54602d546200419f9190620047d4565b11155b8015620041bc57506023546001600160a01b038381169116145b8015620010cc5750602b5447101592915050565b602b54600254620041eb91906001600160a01b031662003c8c565b43602d55602b54602a54620042019190620047d4565b602a81905560295410156200421b576028805460ff191690555b565b610e8f8062004a4b83390190565b8015158114620015c657600080fd5b600080600080608085870312156200425157600080fd5b84356200425e816200422b565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b81811015620042a75785810183015185820160400152820162004289565b81811115620042ba576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114620042e857600080fd5b919050565b600080604083850312156200430157600080fd5b6200430c83620042d0565b946020939093013593505050565b600080604083850312156200432e57600080fd5b50508035926020909101359150565b6000602082840312156200435057600080fd5b8135620013e8816200422b565b600080604083850312156200437157600080fd5b6200437c83620042d0565b91506200438c60208401620042d0565b90509250929050565b600080600060608486031215620043ab57600080fd5b620043b684620042d0565b9250620043c660208501620042d0565b9150604084013590509250925092565b600060208284031215620043e957600080fd5b620013e882620042d0565b6000602082840312156200440757600080fd5b5035919050565b600080604083850312156200442257600080fd5b6200442d83620042d0565b915060208301356200443f816200422b565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200448c576200448c6200444a565b604052919050565b600067ffffffffffffffff821115620044b157620044b16200444a565b5060051b60200190565b600082601f830112620044cd57600080fd5b81356020620044e6620044e08362004494565b62004460565b82815260059290921b840181019181810190868411156200450657600080fd5b8286015b848110156200452357803583529183019183016200450a565b509695505050505050565b600080604083850312156200454257600080fd5b823567ffffffffffffffff808211156200455b57600080fd5b818501915085601f8301126200457057600080fd5b8135602062004583620044e08362004494565b82815260059290921b84018101918181019089841115620045a357600080fd5b948201945b83861015620045cc57620045bc86620042d0565b82529482019490820190620045a8565b96505086013592505080821115620045e357600080fd5b50620045f285828601620044bb565b9150509250929050565b600080600080608085870312156200461357600080fd5b843562004620816200422b565b93506200463060208601620042d0565b92506200464060408601620042d0565b9396929550929360600135925050565b600080604083850312156200466457600080fd5b8235915060208301356200443f816200422b565b60008060008060008060c087890312156200469257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060008060808587031215620046d357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156200470357600080fd5b82356200430c816200422b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562004778576200477862004745565b500290565b6000826200479b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015620047b557620047b562004745565b500390565b600060208284031215620047cd57600080fd5b5051919050565b60008219821115620047ea57620047ea62004745565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b80851115620048465781600019048211156200482a576200482a62004745565b808516156200483857918102915b93841c93908002906200480a565b509250929050565b6000826200485f57506001620010cc565b816200486e57506000620010cc565b81600181146200488757600281146200489257620048b2565b6001915050620010cc565b60ff841115620048a657620048a662004745565b50506001821b620010cc565b5060208310610133831016604e8410600b8410161715620048d7575081810a620010cc565b620048e3838362004805565b8060001904821115620048fa57620048fa62004745565b029392505050565b6000620013e860ff8416836200484e565b60006000198214156200492a576200492a62004745565b5060010190565b6020808252600e908201526d0a8c2f0cae640e8dede40d0d2ced60931b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156200498257600080fd5b8151620013e8816200422b565b600081518084526020808501945080840160005b83811015620049ca5781516001600160a01b031687529582019590820190600101620049a3565b509495945050505050565b85815284602082015260a060408201526000620049f660a08301866200498f565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600062004a2e60808301866200498f565b6001600160a01b0394909416604083015250606001529291505056fe60806040526ec097ce7bc90715b34b9f1000000000600a5562015180600b5566038d7ea4c68000600c55600d805460ff60a01b1916905534801561004257600080fd5b50610e3d806100526000396000f3fe6080604052600436106101355760003560e01c806366817df5116100ab578063ce7c2ac21161006f578063ce7c2ac214610309578063d0e30db01461036b578063e2d2e21914610373578063eeb77fd414610389578063efca2eed146103a9578063ffd49c84146103bf57600080fd5b806366817df5146102875780636793141f146102b45780638129fc1c146102c9578063997664d7146102de5780639df62df2146102f457600080fd5b80632d48e896116100fd5780632d48e896146101e55780633a98ef39146102055780633cbf8a611461021b57806342685d741461023b5780634fab0ae8146102515780635a3f21311461026757600080fd5b806311ce023d1461013a5780631329f8621461016357806314b6ca961461018357806315f7e05e146101a557806328fd3198146101c5575b600080fd5b34801561014657600080fd5b50610150600a5481565b6040519081526020015b60405180910390f35b34801561016f57600080fd5b5061015061017e366004610ce7565b6103d5565b34801561018f57600080fd5b506101a361019e366004610d09565b610470565b005b3480156101b157600080fd5b506101a36101c0366004610ce7565b610721565b3480156101d157600080fd5b506101506101e0366004610ce7565b6107af565b3480156101f157600080fd5b506101a3610200366004610d33565b610850565b34801561021157600080fd5b5061015060055481565b34801561022757600080fd5b50610150610236366004610ce7565b610872565b34801561024757600080fd5b5061015060085481565b34801561025d57600080fd5b50610150600c5481565b34801561027357600080fd5b50610150610282366004610ce7565b6108a9565b34801561029357600080fd5b506101506102a2366004610ce7565b60036020526000908152604090205481565b3480156102c057600080fd5b506101506108e0565b3480156102d557600080fd5b506101a36108ff565b3480156102ea57600080fd5b5061015060065481565b34801561030057600080fd5b5061015061093d565b34801561031557600080fd5b5061034b610324366004610ce7565b60046020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161015a565b6101a361095c565b34801561037f57600080fd5b5061015060095481565b34801561039557600080fd5b506101a36103a4366004610ce7565b6109a3565b3480156103b557600080fd5b5061015060075481565b3480156103cb57600080fd5b50610150600b5481565b600080546001600160a01b031633146103ed57600080fd5b600b546001600160a01b038316600090815260036020526040902054429161041491610d6b565b11158061042a5750600d54600160a01b900460ff165b1561043757506000919050565b600b546001600160a01b038316600090815260036020526040902054429161045e91610d6b565b6104689190610d83565b90505b919050565b6000546001600160a01b0316331461048757600080fd5b6000811180156104ad57506001600160a01b038216600090815260046020526040902054155b1561054557600180546001600160a01b03841660008181526002602052604081208390558284018455929092527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055610516816109ff565b6001600160a01b0383166000908152600460209081526040808320600101939093556003905220429055610578565b8015801561056a57506001600160a01b03821660009081526004602052604090205415155b156105785761057882610a2e565b6001600160a01b03821660009081526004602052604081205482119061059d846107af565b9050811561061b576105af8482610b41565b156105be576105be8482610bea565b6001600160a01b0384166000908152600460205260409020546105ea906105e59085610d83565b6109ff565b6001600160a01b03851660009081526004602052604081206001018054909190610615908490610d6b565b90915550505b6001600160a01b038416600090815260046020526040902054600554849161064291610d83565b61064c9190610d6b565b6005556001600160a01b03841660009081526004602052604090208390558161071b578047101561067a5750475b806008546106889190610d6b565b6008556001600160a01b038416600090815260046020526040812060030180548392906106b6908490610d6b565b9091555050600080546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156106f4573d6000803e3d6000fd5b506106fe836109ff565b6001600160a01b0385166000908152600460205260409020600101555b50505050565b6000546001600160a01b0316331461073857600080fd5b61074a81610745836107af565b610b41565b61079a5760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c65207965740000000000604482015260640160405180910390fd5b6107ac816107a7836107af565b610bea565b50565b600080546001600160a01b031633146107c757600080fd5b6001600160a01b0382166000908152600460205260409020546107ec57506000919050565b6001600160a01b03821660009081526004602052604081205461080e906109ff565b6001600160a01b03841660009081526004602052604090206001015490915080821161083e575060009392505050565b6108488183610d83565b949350505050565b6000546001600160a01b0316331461086757600080fd5b600b91909155600c55565b600080546001600160a01b0316331461088a57600080fd5b506001600160a01b031660009081526004602052604090206002015490565b600080546001600160a01b031633146108c157600080fd5b506001600160a01b031660009081526004602052604090206003015490565b600080546001600160a01b031633146108f857600080fd5b5060075490565b600d54600160a81b900460ff161561091657600080fd5b600080546001600160a01b03191633179055600d805460ff60a81b1916600160a81b179055565b600080546001600160a01b0316331461095557600080fd5b5060015490565b600654349061096c908290610d6b565b600655600554600a54610980908390610d9a565b61098a9190610db9565b6009600082825461099b9190610d6b565b909155505050565b6000546001600160a01b031633146109ba57600080fd5b600d54600160a01b900460ff16156109d157600080fd5b600d80546001600160a81b0319166001600160a01b0390921691909117600160a01b17905562093a80600b55565b600081610a0e57506000919050565b600a54600954610a1e9084610d9a565b610a289190610db9565b92915050565b60018054610a3d908290610d83565b81548110610a4d57610a4d610ddb565b60009182526020808320909101546001600160a01b0384811684526002909252604090922054600180549290931692918110610a8b57610a8b610ddb565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260029182905260408120546001805491939291610ad6908290610d83565b81548110610ae657610ae6610ddb565b60009182526020808320909101546001600160a01b031683528201929092526040019020556001805480610b1c57610b1c610df1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600d54600090600160a01b900460ff16610b9157600b546001600160a01b0384166000908152600360205260409020544291610b7c91610d6b565b108015610b8a5750600c5482115b9050610a28565b62093a80610ba3636220adc042610d83565b610bad9190610db9565b610bba9062093a80610d9a565b610bc890636220adc0610d6b565b6001600160a01b03841660009081526003602052604090205410905092915050565b6001600160a01b038216600090815260046020526040902054610c0b575050565b8015610ccc5780600754610c1f9190610d6b565b6007556001600160a01b03821660009081526003602090815260408083204290556004909152902060020154610c56908290610d6b565b6001600160a01b0383166000908152600460205260409020600281019190915554610c80906109ff565b6001600160a01b038316600081815260046020526040808220600101939093559151909183156108fc02918491818181858888f19350505050158015610cca573d6000803e3d6000fd5b505b5050565b80356001600160a01b038116811461046b57600080fd5b600060208284031215610cf957600080fd5b610d0282610cd0565b9392505050565b60008060408385031215610d1c57600080fd5b610d2583610cd0565b946020939093013593505050565b60008060408385031215610d4657600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d7e57610d7e610d55565b500190565b600082821015610d9557610d95610d55565b500390565b6000816000190483118215151615610db457610db4610d55565b500290565b600082610dd657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122099586d3f844cdfe3f8eb18f5218eee11f388a24d3485f39813f1938c705262da64736f6c634300080b0033a26469706673582212207aab0d07b4581e45527a502f3d0679fd86ae756e2ac723616248855bffe07af064736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000122817e1f550a668f5e578a88f542a3673d4764200000000000000000000000080bb8fb3485ba241d15f21cbb1aa0416f87ac695

-----Decoded View---------------
Arg [0] : _marketing (address): 0x122817e1F550a668F5E578A88f542A3673d47642
Arg [1] : _dev (address): 0x80bb8FB3485bA241D15f21CBb1aa0416f87aC695

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000122817e1f550a668f5e578a88f542a3673d47642
Arg [1] : 00000000000000000000000080bb8fb3485ba241d15f21cbb1aa0416f87ac695


Deployed Bytecode Sourcemap

20614:23046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23217:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;23217:50:0;;;;;;;;36758:358;;;;;;;;;;-1:-1:-1;36758:358:0;;;;;:::i;:::-;;:::i;:::-;;24610:71;;;;;;;;;;-1:-1:-1;24673:5:0;;;;;;;;;;;;-1:-1:-1;;;24673:5:0;;;;24610:71;;;;;;;:::i;25531:216::-;;;;;;;;;;-1:-1:-1;25531:216:0;;;;;:::i;:::-;;:::i;:::-;;;1974:14:1;;1967:22;1949:41;;1937:2;1922:18;25531:216:0;1809:187:1;41401:150:0;;;;;;;;;;-1:-1:-1;41401:150:0;;;;;:::i;:::-;;:::i;24358:88::-;;;;;;;;;;-1:-1:-1;24431:12:0;;24358:88;;37128:107;;;;;;;;;;-1:-1:-1;37128:107:0;;;;;:::i;:::-;;:::i;37461:213::-;;;;;;;;;;-1:-1:-1;37461:213:0;;;;;:::i;:::-;;:::i;40707:182::-;;;;;;;;;;-1:-1:-1;40707:182:0;;;;;:::i;:::-;;:::i;30043:365::-;;;;;;;;;;-1:-1:-1;30043:365:0;;;;;:::i;:::-;;:::i;26049:341::-;;;;;;;;;;-1:-1:-1;26049:341:0;;;;;:::i;:::-;;:::i;42996:217::-;;;;;;;;;;-1:-1:-1;42996:217:0;;;;;:::i;:::-;;:::i;:::-;;;;3463:25:1;;;3519:2;3504:18;;3497:34;;;;3436:18;42996:217:0;3289:248:1;41087:138:0;;;;;;;;;;;;;:::i;40897:182::-;;;;;;;;;;-1:-1:-1;40897:182:0;;;;;:::i;:::-;;:::i;35763:90::-;;;;;;;;;;-1:-1:-1;35763:90:0;;;;;:::i;:::-;;:::i;21772:45::-;;;;;;;;;;;;;;;;24452:71;;;;;;;;;;-1:-1:-1;24452:71:0;;21022:1;3869:36:1;;3857:2;3842:18;24452:71:0;3727:184:1;43219:169:0;;;;;;;;;;;;;:::i;22701:38::-;;;;;;;;;;-1:-1:-1;22701:38:0;;;;;;;;21928:62;;;;;;;;;;;;;;;;21340:44;;;;;;;;;;-1:-1:-1;21340:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29939:92;;;;;;;;;;;;;:::i;21446:49::-;;;;;;;;;;-1:-1:-1;21446:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22093:37;;;;;;;;;;;;;;;;25755:122;;;;;;;;;;-1:-1:-1;25755:122:0;;;;;:::i;:::-;;:::i;22569:27::-;;;;;;;;;;;;;;;;41563:124;;;;;;;;;;-1:-1:-1;41563:124:0;;;;;:::i;:::-;;:::i;39375:119::-;;;;;;;;;;-1:-1:-1;39375:119:0;;;;;:::i;:::-;;:::i;25020:503::-;;;;;;;;;;-1:-1:-1;25020:503:0;;;;;:::i;:::-;;:::i;21824:47::-;;;;;;;;;;;;;;;;37917:263;;;;;;;;;;-1:-1:-1;37917:263:0;;;;;:::i;:::-;;:::i;23180:30::-;;;;;;;;;;-1:-1:-1;23180:30:0;;;;-1:-1:-1;;;23180:30:0;;;;;;24764:105;;;;;;;;;;-1:-1:-1;24764:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;24848:18:0;24830:7;24848:18;;;:9;:18;;;;;;;24764:105;10783:148;;;;;;;;;;;;;:::i;23090:36::-;;;;;;;;;;-1:-1:-1;23090:36:0;;;;-1:-1:-1;;;23090:36:0;;;;;;31415:967;;;;;;;;;;-1:-1:-1;31415:967:0;;;;;:::i;:::-;;:::i;21878:43::-;;;;;;;;;;;;;;;;21099:54;;;;;;;;;;;;;;;;35203:317;;;;;;;;;;-1:-1:-1;35203:317:0;;;;;:::i;:::-;;:::i;21997:43::-;;;;;;;;;;;;;;;;39637:606;;;;;;;;;;-1:-1:-1;39637:606:0;;;;;:::i;:::-;;:::i;23058:25::-;;;;;;;;;;-1:-1:-1;23058:25:0;;;;-1:-1:-1;;;;;23058:25:0;;;;;;-1:-1:-1;;;;;8140:32:1;;;8122:51;;8110:2;8095:18;23058:25:0;7959:220:1;24687:71:0;;;;;;;;;;-1:-1:-1;24730:7:0;10207:6;-1:-1:-1;;;;;10207:6:0;24687:71;41087:138;21391:48;;;;;;;;;;-1:-1:-1;21391:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35865:96;;;;;;;;;;-1:-1:-1;35865:96:0;;;;;:::i;:::-;;:::i;21160:56::-;;;;;;;;;;;;;;;;30420:264;;;;;;;;;;-1:-1:-1;30420:264:0;;;;;:::i;:::-;;:::i;24529:75::-;;;;;;;;;;-1:-1:-1;24594:7:0;;;;;;;;;;;;-1:-1:-1;;;24594:7:0;;;;24529:75;;40251:224;;;;;;;;;;-1:-1:-1;40251:224:0;;;;;:::i;:::-;;:::i;22185:32::-;;;;;;;;;;-1:-1:-1;22185:32:0;;;;;;;;22509:19;;;;;;;;;;-1:-1:-1;22509:19:0;;;;-1:-1:-1;;;;;22509:19:0;;;25885:156;;;;;;;;;;-1:-1:-1;25885:156:0;;;;;:::i;:::-;;:::i;37686:219::-;;;;;;;;;;-1:-1:-1;37686:219:0;;;;;:::i;:::-;;:::i;42445:545::-;;;;;;;;;;-1:-1:-1;42445:545:0;;;;;:::i;:::-;;:::i;:::-;;;;8679:25:1;;;8735:2;8720:18;;8713:34;;;;8763:18;;;8756:34;;;;8821:2;8806:18;;8799:34;8864:3;8849:19;;8842:35;8908:3;8893:19;;8886:35;8666:3;8651:19;42445:545:0;8392:535:1;22746:36:0;;;;;;;;;;-1:-1:-1;22746:36:0;;;;;;;;;;;23006:43;;;;;;;;;;-1:-1:-1;23006:43:0;;;;-1:-1:-1;;;;;23006:43:0;;;35969:104;;;;;;;;;;;;;:::i;22047:39::-;;;;;;;;;;;;;;;;29079:326;;;;;;;;;;;;;:::i;41699:734::-;;;;;;;;;;;;;:::i;:::-;;;;9511:25:1;;;9567:2;9552:18;;9545:34;;;;9595:18;;;9588:34;;;;9653:2;9638:18;;9631:34;;;;9696:3;9681:19;;9674:35;9740:3;9725:19;;9718:35;9784:3;9769:19;;9762:35;9828:3;9813:19;;9806:35;9498:3;9483:19;41699:734:0;9168:679:1;22137:41:0;;;;;;;;;;;;;;;;22537:25;;;;;;;;;;;;;;;;22961:38;;;;;;;;;;-1:-1:-1;22961:38:0;;;;-1:-1:-1;;;;;22961:38:0;;;23133;;;;;;;;;;-1:-1:-1;23133:38:0;;;;-1:-1:-1;;;23133:38:0;;;;;;29413:177;;;;;;;;;;-1:-1:-1;29413:177:0;;;;;:::i;:::-;;:::i;38619:237::-;;;;;;;;;;-1:-1:-1;38619:237:0;;;;;:::i;:::-;;:::i;41233:160::-;;;;;;;;;;-1:-1:-1;41233:160:0;;;;;:::i;:::-;;:::i;29602:325::-;;;;;;;;;;-1:-1:-1;29602:325:0;;;;;:::i;:::-;;:::i;38192:415::-;;;;;;;;;;-1:-1:-1;38192:415:0;;;;;:::i;:::-;;:::i;30696:128::-;;;;;;;;;;;;;:::i;24875:133::-;;;;;;;;;;-1:-1:-1;24875:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;24977:19:0;;;24959:7;24977:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;24875:133;40483:216;;;;;;;;;;-1:-1:-1;40483:216:0;;;;;:::i;:::-;;:::i;35532:219::-;;;;;;;;;;-1:-1:-1;35532:219:0;;;;;:::i;:::-;;:::i;11086:244::-;;;;;;;;;;-1:-1:-1;11086:244:0;;;;;:::i;:::-;;:::i;38864:503::-;;;;;;;;;;-1:-1:-1;38864:503:0;;;;;:::i;:::-;;:::i;39502:127::-;;;;;;;;;;-1:-1:-1;39502:127:0;;;;;:::i;:::-;;:::i;22392:24::-;;;;;;;;;;-1:-1:-1;22392:24:0;;;;-1:-1:-1;;;;;22392:24:0;;;43394:184;;;;;;;;;;;;;:::i;36758:358::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;;;;;;;;;36883:18:::1;:29:::0;;-1:-1:-1;;36883:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;36923:14:::1;:21:::0;;;;-1:-1:-1;36955:22:0::1;:26:::0;36992:17:::1;:27:::0;37030:22:::1;:32:::0;37096:12:::1;37073:20;:35:::0;36758:358::o;25531:216::-;25635:10;25606:4;25623:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;25623:32:0;;;;;;;;;;:41;;;25680:37;25606:4;;25623:32;;25680:37;;;;25658:6;160:25:1;;148:2;133:18;;14:177;25680:37:0;;;;;;;;-1:-1:-1;25735:4:0;25531:216;;;;;:::o;41401:150::-;41481:4;41537:6;41505:29;41525:8;41505:19;:29::i;:::-;:38;;41401:150;-1:-1:-1;;;41401:150:0:o;37128:107::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;37201:16:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;37201:26:0;;::::1;::::0;;;::::1;::::0;;37128:107::o;37461:213::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;37567:1:::1;37555:9;:13;:28;;;;;37582:1;37572:7;:11;37555:28;:48;;;;;37598:5;37587:7;:16;;37555:48;37547:57;;;::::0;::::1;;37659:7;37646:9;37631:12;;:24;;;;:::i;:::-;37630:36;;;;:::i;:::-;37615:12;:51:::0;-1:-1:-1;;37461:213:0:o;40707:182::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;40804:15:::1;:25:::0;;;;40840:26:::1;:41:::0;40707:182::o;30043:365::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;30147:11:::1;:47:::0;;-1:-1:-1;;;;;;30147:47:0::1;-1:-1:-1::0;;;;;30147:47:0;::::1;::::0;;::::1;::::0;;;30205:24:::1;::::0;;-1:-1:-1;;;30205:24:0;;;;:22:::1;::::0;:24:::1;::::0;;::::1;::::0;-1:-1:-1;;30205:24:0;;;;;;;;-1:-1:-1;30147:47:0;30205:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30240:16:0::1;:57:::0;;-1:-1:-1;;;;;;30240:57:0::1;-1:-1:-1::0;;;;;30240:57:0;::::1;::::0;;::::1;::::0;;;30308:29:::1;::::0;;-1:-1:-1;;;30308:29:0;;;;30240:57;;-1:-1:-1;30308:27:0::1;::::0;-1:-1:-1;30308:29:0::1;::::0;;::::1;::::0;-1:-1:-1;;30308:29:0;;;;;;;;-1:-1:-1;30240:57:0;30308:29;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30348:16:0::1;::::0;:52:::1;::::0;-1:-1:-1;;;30348:52:0;;-1:-1:-1;;;;;8140:32:1;;;30348:52:0::1;::::0;::::1;8122:51:1::0;30348:16:0;;::::1;::::0;-1:-1:-1;30348:38:0::1;::::0;-1:-1:-1;8095:18:1;;30348:52:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30043:365:::0;;:::o;26049:341::-;-1:-1:-1;;;;;26169:19:0;;26149:4;26169:19;;;:11;:19;;;;;;;;26189:10;26169:31;;;;;;;;-1:-1:-1;;26169:52:0;26166:157;;-1:-1:-1;;;;;26271:19:0;;;;;;:11;:19;;;;;;;;26291:10;26271:31;;;;;;;;:40;;26305:6;;26271:40;:::i;:::-;-1:-1:-1;;;;;26237:19:0;;;;;;:11;:19;;;;;;;;26257:10;26237:31;;;;;;;:74;26166:157;26342:40;26356:6;26364:9;26375:6;26342:13;:40::i;:::-;26335:47;;26049:341;;;;;;:::o;42996:217::-;43116:11;;:32;;-1:-1:-1;;;43116:32:0;;-1:-1:-1;;;;;8140:32:1;;;43116::0;;;8122:51:1;43060:16:0;;;;43116:11;;;:24;;8095:18:1;;43116:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43171:16;;:37;;-1:-1:-1;;;43171:37:0;;-1:-1:-1;;;;;8140:32:1;;;43171:37:0;;;8122:51:1;43105:43:0;;-1:-1:-1;43171:16:0;;;:29;;8095:18:1;;43171:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43159:49;;42996:217;;;:::o;41087:138::-;41211:4;;-1:-1:-1;;;;;41211:4:0;;;41140:7;24848:18;;;:9;:18;;;;;;;41193:4;;;;;24848:18;;;;;41140:7;;41183:33;;;:::i;:::-;41167:12;;:50;;;;:::i;:::-;41160:57;;41087:138;:::o;40897:182::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;41006:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;41006:65:0;;::::1;::::0;::::1;3463:25:1::0;;;3504:18;;;3497:34;;;-1:-1:-1;;;;;41006:11:0;;::::1;::::0;:35:::1;::::0;3436:18:1;;41006:65:0::1;3289:248:1::0;35763:90:0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;35829:16:::1;35838:6;35829:8;:16::i;:::-;35763:90:::0;:::o;43219:169::-;43271:11;;:36;;-1:-1:-1;;;43271:36:0;;43296:10;43271:36;;;8122:51:1;-1:-1:-1;;;;;43271:11:0;;;;:24;;8095:18:1;;43271:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;43263:75;;;;-1:-1:-1;;;43263:75:0;;12324:2:1;43263:75:0;;;12306:21:1;12363:2;12343:18;;;12336:30;-1:-1:-1;;;12382:18:1;;;12375:51;12443:18;;43263:75:0;12122:345:1;43263:75:0;43346:11;;:37;;-1:-1:-1;;;43346:37:0;;43372:10;43346:37;;;8122:51:1;-1:-1:-1;;;;;43346:11:0;;;;:25;;8095:18:1;;43346:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43219:169::o;29939:92::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;29998:18:::1;:25:::0;;-1:-1:-1;;;;29998:25:0::1;-1:-1:-1::0;;;29998:25:0::1;::::0;;29939:92::o;25755:122::-;25810:4;25834:35;25842:7;-1:-1:-1;;25834:7:0;:35::i;41563:124::-;41629:7;41656:23;41672:6;41656:15;:23::i;39375:119::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39458:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;39458:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39375:119::o;25020:503::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;25148:1:::1;25129:9;:16;:20;:42;;;;;25170:1;25153:7;:14;:18;25129:42;:80;;;;;25195:7;:14;25175:9;:16;:34;25129:80;25121:89;;;::::0;::::1;;25236:10;25221:12;25257:259;25278:9;:16;25274:1;:20;25257:259;;;25319:23;25329:9;25339:1;25329:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24848:18:0;24830:7;24848:18;;;:9;:18;;;;;;;24764:105;25319:23:::1;25316:189;;25401:4;25368:16;:30;25385:9;25395:1;25385:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;25368:30:0::1;-1:-1:-1::0;;;;;25368:30:0::1;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;25424:65;25438:4;25444:9;25454:1;25444:12;;;;;;;;:::i;:::-;;;;;;;21022:1;25472:2;:15;;;;:::i;:::-;25458:7;25466:1;25458:10;;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;25424:13;:65::i;:::-;;25316:189;25296:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25257:259;;37917:263:::0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;38030:1:::1;38020:7;:11;:39;;;;-1:-1:-1::0;38058:1:0::1;38035:19;38047:7:::0;38035:9;:19:::1;:::i;:::-;:24;;38020:39;38012:66;;;;-1:-1:-1::0;;;38012:66:0::1;;;;;;;:::i;:::-;38089:24;:36:::0;;;;38136:26:::1;:36:::0;37917:263::o;10783:148::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;10890:1:::1;10874:6:::0;;10853:40:::1;::::0;-1:-1:-1;;;;;10874:6:0;;::::1;::::0;10853:40:::1;::::0;10890:1;;10853:40:::1;10921:1;10904:19:::0;;-1:-1:-1;;;;;;10904:19:0::1;::::0;;10783:148::o;31415:967::-;31522:7;31562:12;31545:10;;31558:1;31545:14;;;;:::i;:::-;:29;31542:63;;;31601:1;31584:14;;:18;;;;:::i;:::-;31577:25;;;;31542:63;31618:7;31615:432;;;31671:24;;31655:13;;:40;;;;:::i;:::-;31645:6;:50;;:108;;;;-1:-1:-1;31718:20:0;;-1:-1:-1;;;;;31699:16:0;;;;;;:8;:16;;;;;;31741:12;;31699:39;;;:::i;:::-;:54;31645:108;31641:394;;;31819:26;;31791:24;;31780:8;;:35;;;;:::i;:::-;31779:66;;;;:::i;31641:394::-;32008:26;;31979:24;;31968:8;;31959:17;;:6;:17;:::i;:::-;:44;;;;:::i;:::-;31958:77;;;;:::i;:::-;31929:26;;31901:24;;31890:8;;:35;;;;:::i;:::-;31889:66;;;;:::i;:::-;:146;;;;:::i;31641:394::-;32057:16;32153:26;;32180:1;32153:28;;;;:::i;:::-;32124:24;;32113:8;;32086:24;;32077:33;;:6;:33;:::i;:::-;:44;;;;:::i;:::-;:71;;;;:::i;:::-;32076:106;;;;:::i;:::-;32057:125;;32197:18;;32219:1;32197:23;:54;;;-1:-1:-1;;;;;;32224:27:0;;;;;;:16;:27;;;;;;;;32197:54;32193:100;;;32285:8;32274;;:19;;;;:::i;:::-;32267:26;;;;;32193:100;32365:8;32360:1;32333:26;32349:9;32333:15;:26::i;:::-;:28;;;;:::i;:::-;32322:8;;:39;;;;:::i;:::-;32321:52;;;;:::i;:::-;32314:59;;;31415:967;;;;;;;:::o;35203:317::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;35328:4:::1;::::0;35310:23:::1;::::0;35320:6;;-1:-1:-1;;;;;35328:4:0::1;35310:9;:23::i;:::-;35347:24;35344:169;;;35418:15;35387:28;:46:::0;35477:23:::1;::::0;35453:48:::1;::::0;160:25:1;;;35453:48:0::1;::::0;148:2:1;133:18;35453:48:0::1;;;;;;;35344:169;35203:317:::0;;:::o;39637:606::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;39842:2:::1;39825:13;:19;;39817:51;;;::::0;-1:-1:-1;;;39817:51:0;;14672:2:1;39817:51:0::1;::::0;::::1;14654:21:1::0;14711:2;14691:18;;;14684:30;-1:-1:-1;;;14730:18:1;;;14723:49;14789:18;;39817:51:0::1;14470:343:1::0;39817:51:0::1;39879:12;:28:::0;;;39918:6:::1;:16:::0;;;39945:10:::1;:24:::0;;;39980:13:::1;:30:::0;;;40021:12:::1;:28:::0;;;40036:13;39996:14;40071:21:::1;39958:11:::0;39927:7;40071:21:::1;:::i;:::-;:38;;;;:::i;:::-;:54;;;;:::i;:::-;40060:8;:65:::0;40136:14:::1;:32:::0;;;40198:18:::1;40215:1;40153:15:::0;40198:18:::1;:::i;:::-;40187:8;;:29;40179:56;;;;-1:-1:-1::0;;;40179:56:0::1;;;;;;;:::i;35865:96::-:0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;35931:13:::1;:22:::0;;-1:-1:-1;;35931:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35865:96::o;30420:264::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;30536:27:::1;:14;-1:-1:-1::0;;;;;30536:25:0::1;;:27::i;:::-;30528:36;;;::::0;::::1;;30575:14;:43:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;;30575:43:0::1;-1:-1:-1::0;;;;;30575:43:0;;;::::1;::::0;;;::::1;::::0;;;30629:22:::1;:47:::0;;;;::::1;::::0;;-1:-1:-1;30629:47:0;;;;::::1;::::0;30420:264::o;40251:224::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;40362:14:::1;:41:::0;;-1:-1:-1;;;;;;40362:41:0::1;;-1:-1:-1::0;;;;;40362:41:0;;::::1;;;::::0;;40414:20:::1;:53:::0;;-1:-1:-1;;;;;;40414:53:0::1;::::0;;;::::1;;::::0;;40251:224::o;25885:156::-;25965:4;25989:44;26003:10;26015:9;26026:6;25989:13;:44::i;37686:219::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;37796:1:::1;37784:9;:13;:28;;;;;37811:1;37801:7;:11;37784:28;:48;;;;;37827:5;37816:7;:16;;37784:48;37776:57;;;::::0;::::1;;37890:7;37877:9;37862:12;;:24;;;;:::i;:::-;37861:36;;;;:::i;:::-;37844:14;:53:::0;-1:-1:-1;;37686:219:0:o;42445:545::-;42645:11;;:37;;-1:-1:-1;;;42645:37:0;;-1:-1:-1;;;;;8140:32:1;;;42645:37:0;;;8122:51:1;42506:14:0;;;;;;;;;;;;42645:11;;;;:29;;8095:18:1;;42645:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42704:16;;:42;;-1:-1:-1;;;42704:42:0;;-1:-1:-1;;;;;8140:32:1;;;42704:42:0;;;8122:51:1;42636:46:0;;-1:-1:-1;42704:16:0;;;:34;;8095:18:1;;42704:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42770:11;;:36;;-1:-1:-1;;;42770:36:0;;-1:-1:-1;;;;;8140:32:1;;;42770:36:0;;;8122:51:1;42690:56:0;;-1:-1:-1;42770:11:0;;;:28;;8095:18:1;;42770:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42829:16;;:41;;-1:-1:-1;;;42829:41:0;;-1:-1:-1;;;;;8140:32:1;;;42829:41:0;;;8122:51:1;42754:52:0;;-1:-1:-1;42829:16:0;;;:33;;8095:18:1;;42829:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42892:11;;:34;;-1:-1:-1;;;42892:34:0;;-1:-1:-1;;;;;8140:32:1;;;42892:34:0;;;8122:51:1;42814:56:0;;-1:-1:-1;42892:11:0;;;:26;;8095:18:1;;42892:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42946:16;;:39;;-1:-1:-1;;;42946:39:0;;-1:-1:-1;;;;;8140:32:1;;;42946:39:0;;;8122:51:1;42878:48:0;;-1:-1:-1;42946:16:0;;;:31;;8095:18:1;;42946:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42934:51;;42445:545;;;;;;;:::o;35969:104::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;36064:1:::1;36033:28;:32:::0;35969:104::o;29079:326::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;37310:10;;:15;29126:20:::1;;;::::0;::::1;;29171:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29157:11:0::1;:39:::0;;-1:-1:-1;;;;;;29157:39:0::1;-1:-1:-1::0;;;;;29157:39:0;;;::::1;::::0;;::::1;::::0;;29207:24:::1;::::0;;-1:-1:-1;;;29207:24:0;;;;:22:::1;::::0;:24:::1;::::0;;::::1;::::0;-1:-1:-1;;29207:24:0;;;;;;;;-1:-1:-1;29157:39:0;29207:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29261:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;29242:16:0::1;:44:::0;;-1:-1:-1;;;;;;29242:44:0::1;-1:-1:-1::0;;;;;29242:44:0;;;::::1;::::0;;::::1;::::0;;29297:29:::1;::::0;;-1:-1:-1;;;29297:29:0;;;;:27:::1;::::0;:29:::1;::::0;;::::1;::::0;-1:-1:-1;;29297:29:0;;;;;;;;-1:-1:-1;29242:44:0;29297:29;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;29337:16:0::1;::::0;29384:11:::1;::::0;29337:60:::1;::::0;-1:-1:-1;;;29337:60:0;;-1:-1:-1;;;;;29384:11:0;;::::1;29337:60;::::0;::::1;8122:51:1::0;29337:16:0;::::1;::::0;-1:-1:-1;29337:38:0::1;::::0;-1:-1:-1;8095:18:1;;29337:60:0::1;7959:220:1::0;41699:734:0;41751:20;41773:24;41799:25;41826:20;41848:24;41874:23;41899:21;41922:20;41970:11;;;;;;;;;-1:-1:-1;;;;;41970:11:0;-1:-1:-1;;;;;41970:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41955:43;;42028:11;;;;;;;;;-1:-1:-1;;;;;42028:11:0;-1:-1:-1;;;;;42028:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42009:49;;42089:11;;;;;;;;;-1:-1:-1;;;;;42089:11:0;-1:-1:-1;;;;;42089:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42069:49;;42144:16;;;;;;;;;-1:-1:-1;;;;;42144:16:0;-1:-1:-1;;;;;42144:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42129:48;;42207:16;;;;;;;;;-1:-1:-1;;;;;42207:16:0;-1:-1:-1;;;;;42207:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42188:54;;42271:16;;;;;;;;;-1:-1:-1;;;;;42271:16:0;-1:-1:-1;;;;;42271:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42253:52;;42332:11;;;;;;;;;-1:-1:-1;;;;;42332:11:0;-1:-1:-1;;;;;42332:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42316:47;;42389:16;;;;;;;;;-1:-1:-1;;;;;42389:16:0;-1:-1:-1;;;;;42389:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42374:51;;41699:734;;;;;;;;:::o;29413:177::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;29492:8:::1;29488:55;;;29524:18;::::0;-1:-1:-1;;;29524:18:0;::::1;;;29523:19;29515:28;;;::::0;::::1;;29554:17;:28:::0;;;::::1;;-1:-1:-1::0;;;29554:28:0::1;-1:-1:-1::0;;;;29554:28:0;;::::1;::::0;;;::::1;::::0;;29413:177::o;38619:237::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;38736:1:::1;38726:7;:11;:39;;;;-1:-1:-1::0;38764:1:0::1;38741:19;38753:7:::0;38741:9;:19:::1;:::i;:::-;:24;;38726:39;38718:48;;;::::0;::::1;;38777:18;:30:::0;;;;38818:20:::1;:30:::0;38619:237::o;41233:160::-;41301:7;41363:22;:20;:22::i;:::-;41350:4;;-1:-1:-1;;;;;41350:4:0;24830:7;24848:18;;;:9;:18;;;;;;41329:26;;:8;:26;:::i;:::-;:30;;41358:1;41329:30;:::i;:::-;41328:57;;;;:::i;29602:325::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;29715:9:::1;::::0;-1:-1:-1;;;;;29692:33:0;;::::1;29715:9:::0;::::1;29692:33;29688:141;;29750:18;::::0;-1:-1:-1;;;29750:18:0;::::1;;;29749:19;29741:28;;;::::0;::::1;;29784:9;:33:::0;;-1:-1:-1;;;;;;29784:33:0::1;-1:-1:-1::0;;;;;29784:33:0;::::1;;::::0;;29688:141:::1;29843:5;29839:80;;;29863:9;::::0;29914:4:::1;::::0;29863:56:::1;::::0;-1:-1:-1;;;29863:56:0;;29887:10:::1;29863:56;::::0;::::1;15058:34:1::0;29907:4:0::1;15108:18:1::0;;;15101:43;-1:-1:-1;;;;;29914:4:0;;::::1;15160:18:1::0;;;15153:43;29863:9:0;::::1;::::0;:23:::1;::::0;14993:18:1;;29863:56:0::1;14818:384:1::0;38192:415:0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;38347:1:::1;38337:7;:11;:39;;;;-1:-1:-1::0;38375:1:0::1;38352:19;38364:7:::0;38352:9;:19:::1;:::i;:::-;:24;;38337:39;38329:67;;;;-1:-1:-1::0;;;38329:67:0::1;;;;;;;:::i;:::-;38407:24;:36:::0;;;38493:12:::1;::::0;38483:22:::1;::::0;:7;:22:::1;:::i;:::-;38454:26;:51:::0;38516:24:::1;:40:::0;;;;38567:20:::1;:32:::0;-1:-1:-1;;38192:415:0:o;30696:128::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;30757:14:::1;:20;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;30757:20:0;;;;;-1:-1:-1;;;;;;30757:20:0::1;::::0;;;;;30788:22:::1;:28:::0;;;::::1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;30696:128::o:0;40483:216::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;40602:1:::1;40587:12;:16;40579:25;;;::::0;::::1;;40615:11;:22:::0;;-1:-1:-1;;;;40615:22:0::1;-1:-1:-1::0;;;40615:22:0;::::1;;;;::::0;;40664:12:::1;::::0;:27:::1;::::0;40679:12;;40664:27:::1;:::i;:::-;40648:13;:43:::0;-1:-1:-1;;40483:216:0:o;35532:219::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;35617:5:::1;35613:130;;;35637:16;;;;;;;;;-1:-1:-1::0;;;;;35637:16:0::1;-1:-1:-1::0;;;;;35637:24:0::1;;35669:6;35637:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;35203:317:::0;;:::o;35613:130::-:1;35707:11;;;;;;;;;-1:-1:-1::0;;;;;35707:11:0::1;-1:-1:-1::0;;;;;35707:19:0::1;;35734:6;35707:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;11086:244:::0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11175:22:0;::::1;11167:73;;;::::0;-1:-1:-1;;;11167:73:0;;15541:2:1;11167:73:0::1;::::0;::::1;15523:21:1::0;15580:2;15560:18;;;15553:30;15619:34;15599:18;;;15592:62;-1:-1:-1;;;15670:18:1;;;15663:36;15716:19;;11167:73:0::1;15339:402:1::0;11167:73:0::1;11277:6;::::0;;11256:38:::1;::::0;-1:-1:-1;;;;;11256:38:0;;::::1;::::0;11277:6;::::1;::::0;11256:38:::1;::::0;::::1;11305:6;:17:::0;;-1:-1:-1;;;;;;11305:17:0::1;-1:-1:-1::0;;;;;11305:17:0;;;::::1;::::0;;;::::1;::::0;;11086:244::o;38864:503::-;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38960:23:0;::::1;38978:4;38960:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;38997:4:0::1;::::0;-1:-1:-1;;;;;38987:14:0;;::::1;38997:4:::0;::::1;38987:14;;38960:41;:59;;;;-1:-1:-1::0;39015:4:0::1;::::0;-1:-1:-1;;;;;39005:14:0;;::::1;39015:4:::0;::::1;39005:14;;38960:59;:80;;;;-1:-1:-1::0;10180:7:0;10207:6;-1:-1:-1;;;;;39023:17:0;;::::1;10207:6:::0;;39023:17:::1;;38960:80;38952:89;;;::::0;::::1;;-1:-1:-1::0;;;;;39052:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;39052:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;39096:264:::1;;39121:11;::::0;:31:::1;::::0;-1:-1:-1;;;39121:31:0;;-1:-1:-1;;;;;15946:32:1;;;39121:31:0::1;::::0;::::1;15928:51:1::0;39121:11:0::1;15995:18:1::0;;;15988:34;39121:11:0;;::::1;::::0;:20:::1;::::0;15901:18:1;;39121:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39167:16:0::1;::::0;:36:::1;::::0;-1:-1:-1;;;39167:36:0;;-1:-1:-1;;;;;15946:32:1;;;39167:36:0::1;::::0;::::1;15928:51:1::0;39167:16:0::1;15995:18:1::0;;;15988:34;39167:16:0;;::::1;::::0;-1:-1:-1;39167:25:0::1;::::0;-1:-1:-1;15901:18:1;;39167:36:0::1;15746:282:1::0;39096:264:0::1;39234:11;::::0;-1:-1:-1;;;;;39263:17:0;;::::1;39234:11;39263:17:::0;;;:9:::1;:17;::::0;;;;;;;39234:47;;-1:-1:-1;;;39234:47:0;;::::1;::::0;::::1;15928:51:1::0;;;;15995:18;;;15988:34;39234:11:0;::::1;::::0;:20:::1;::::0;15901:18:1;;39234:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;39296:16:0::1;::::0;-1:-1:-1;;;;;39330:17:0;;::::1;39296:16;39330:17:::0;;;:9:::1;:17;::::0;;;;;;;39296:52;;-1:-1:-1;;;39296:52:0;;::::1;::::0;::::1;15928:51:1::0;;;;15995:18;;;15988:34;39296:16:0;::::1;::::0;-1:-1:-1;39296:25:0::1;::::0;-1:-1:-1;15901:18:1;;39296:52:0::1;15746:282:1::0;39502:127:0;10354:6;;-1:-1:-1;;;;;10354:6:0;6317:10;10354:22;10346:67;;;;-1:-1:-1;;;10346:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39589:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;39589:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39502:127::o;43394:184::-;43451:16;;:41;;-1:-1:-1;;;43451:41:0;;43481:10;43451:41;;;8122:51:1;-1:-1:-1;;;;;43451:16:0;;;;:29;;8095:18:1;;43451:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;43443:80;;;;-1:-1:-1;;;43443:80:0;;12324:2:1;43443:80:0;;;12306:21:1;12363:2;12343:18;;;12336:30;-1:-1:-1;;;12382:18:1;;;12375:51;12443:18;;43443:80:0;12122:345:1;43443:80:0;43531:16;;:42;;-1:-1:-1;;;43531:42:0;;43562:10;43531:42;;;8122:51:1;-1:-1:-1;;;;;43531:16:0;;;;:30;;8095:18:1;;43531:42:0;7959:220:1;26398:1717:0;26490:4;26524:1;26515:6;:10;26507:46;;;;-1:-1:-1;;;26507:46:0;;16514:2:1;26507:46:0;;;16496:21:1;16553:2;16533:18;;;16526:30;16592:25;16572:18;;;16565:53;16635:18;;26507:46:0;16312:347:1;26507:46:0;-1:-1:-1;;;;;26572:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;26572:27:0;26564:60;;;;-1:-1:-1;;;26564:60:0;;16866:2:1;26564:60:0;;;16848:21:1;16905:2;16885:18;;;16878:30;-1:-1:-1;;;16924:18:1;;;16917:50;16984:18;;26564:60:0;16664:344:1;26564:60:0;26638:6;;;;26635:63;;;26654:41;26669:6;26677:9;26688:6;26654:14;:41::i;:::-;26647:48;;;;26635:63;26710:28;26723:6;26731;26710:12;:28::i;:::-;26776:4;;-1:-1:-1;;;;;26763:17:0;;;26776:4;;26763:17;;;;:38;;-1:-1:-1;26797:4:0;;-1:-1:-1;;;;;26784:17:0;;;26797:4;;26784:17;;26763:38;26759:139;;;-1:-1:-1;;;;;26823:26:0;;;;;;:15;:26;;;;;;;;26818:68;;26851:35;26868:9;26879:6;26851:16;:35::i;:::-;37310:10;;:15;;;26913:32;;-1:-1:-1;26941:4:0;;-1:-1:-1;;;;;26928:17:0;;;26941:4;;26928:17;26913:32;26910:107;;;10180:7;10207:6;-1:-1:-1;;;;;26956:17:0;;;10207:6;;26956:17;26948:56;;;;-1:-1:-1;;;26948:56:0;;17215:2:1;26948:56:0;;;17197:21:1;17254:2;17234:18;;;17227:30;17293:28;17273:18;;;17266:56;17339:18;;26948:56:0;17013:350:1;26948:56:0;27006:8;37392:12;37379:10;:25;37430:15;37415:12;:30;37341:112;27006:8;-1:-1:-1;;;;;27049:17:0;;;;;;:9;:17;;;;;;:26;;27069:6;;27049:26;:::i;:::-;-1:-1:-1;;;;;27029:17:0;;;;;;:9;:17;;;;;;;;:46;;;;27114:11;:19;;;;;;;;27113:20;:66;;27173:6;27113:66;;;27136:34;27144:6;27152:9;27163:6;27136:7;:34::i;:::-;-1:-1:-1;;;;;27204:22:0;;;;;;:11;:22;;;;;;27088:91;;-1:-1:-1;27204:22:0;;27200:175;;27246:25;27261:9;27246:14;:25::i;:::-;27243:50;;;27274:16;27283:6;27274:8;:16::i;:::-;27310:28;27328:9;27310:17;:28::i;:::-;27307:57;;;27341:20;:18;:20::i;:::-;-1:-1:-1;;;;;27419:20:0;;;;;;:9;:20;;;;;;:37;;27442:14;;27419:37;:::i;:::-;-1:-1:-1;;;;;27396:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;27473:24;;;;;:16;:24;;;;;;;27469:202;;27518:11;;-1:-1:-1;;;;;27547:17:0;;;27518:11;27547:17;;;:9;:17;;;;;;;;27518:47;;-1:-1:-1;;;27518:47:0;;;;;15928:51:1;;;;15995:18;;;15988:34;27518:11:0;;;:20;;15901:18:1;;27518:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27514:63;27596:16;;-1:-1:-1;;;;;27630:17:0;;;27596:16;27630:17;;;:9;:17;;;;;;;;27596:52;;-1:-1:-1;;;27596:52:0;;;;;15928:51:1;;;;15995:18;;;15988:34;27596:16:0;;;:25;;15901:18:1;;27596:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27592:68;;-1:-1:-1;;;;;27685:27:0;;;;;;:16;:27;;;;;;;;27681:217;;27733:11;;-1:-1:-1;;;;;27765:20:0;;;27733:11;27765:20;;;:9;:20;;;;;;;;27733:53;;-1:-1:-1;;;27733:53:0;;;;;15928:51:1;;;;15995:18;;;15988:34;27733:11:0;;;:20;;15901:18:1;;27733:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27729:69;27817:16;;-1:-1:-1;;;;;27854:20:0;;;27817:16;27854:20;;;:9;:20;;;;;;;;27817:58;;-1:-1:-1;;;27817:58:0;;;;;15928:51:1;;;;15995:18;;;15988:34;27817:16:0;;;:25;;15901:18:1;;27817:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27813:74;;37310:10;;:15;;27913:31;;;;-1:-1:-1;27927:17:0;;-1:-1:-1;;;27927:17:0;;;;27913:31;27910:104;;;27959:9;;:55;;-1:-1:-1;;;27959:55:0;;-1:-1:-1;;;;;17626:15:1;;;27959:55:0;;;17608:34:1;17678:15;;;17658:18;;;17651:43;17710:18;;;17703:34;;;27959:9:0;;;;:28;;17543:18:1;;27959:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27910:104;28049:9;-1:-1:-1;;;;;28032:43:0;28041:6;-1:-1:-1;;;;;28032:43:0;;28060:14;28032:43;;;;160:25:1;;148:2;133:18;;14:177;28032:43:0;;;;;;;;-1:-1:-1;28103:4:0;;26398:1717;-1:-1:-1;;;;26398:1717:0:o;33132:1706::-;23314:6;:13;;-1:-1:-1;;23314:13:0;23323:4;23314:13;;;33251:24:::1;::::0;33235:13:::1;::::0;23314:6;;33235:40:::1;::::0;::::1;:::i;:::-;33226:6;:49;:147;;33367:6;33226:147;;;33335:26;::::0;:28:::1;::::0;33362:1:::1;33335:28;:::i;:::-;33324:6;33315;33288:24;;:33;;;;:::i;:::-;:42;;;;:::i;:::-;33287:77;;;;:::i;:::-;33278:86;::::0;:6;:86:::1;:::i;:::-;33195:178;;33411:12;;33388:20;:35;33384:76;;;-1:-1:-1::0;33448:12:0::1;::::0;33384:76:::1;33493:4;33475:24;::::0;;;:9:::1;:24;::::0;;;;;:47;-1:-1:-1;33471:100:0::1;;;-1:-1:-1::0;33565:4:0::1;33547:24;::::0;;;:9:::1;:24;::::0;;;;;33471:100:::1;33608:16;::::0;;33622:1:::1;33608:16:::0;;;;;::::1;::::0;;33584:21:::1;::::0;33608:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;33608:16:0::1;33584:40;;33653:4;33635;33640:1;33635:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33635:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;33679:4:::1;::::0;;33669:7;;33679:4;::::1;::::0;33669;;33679;33669:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;33669:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;33762:6:::1;::::0;:196:::1;::::0;-1:-1:-1;;;33762:196:0;;33728:21:::1;::::0;33762:6;;;::::1;::::0;:57:::1;::::0;:196:::1;::::0;33834:20;;33704:21:::1;::::0;33885:4;;33912::::1;::::0;33932:15:::1;::::0;33762:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33971:17;34015:13;33991:21;:37;;;;:::i;:::-;33971:57;;34041:17;34084:8;;34074:6;;34062:9;:18;;;;:::i;:::-;34061:31;;;;:::i;:::-;34041:51;;34103:23;34175:8;;34186:3;34175:14;;;;:::i;:::-;34158:12;::::0;34142:13:::1;::::0;34130:25:::1;::::0;:9;:25:::1;:::i;:::-;:40;;;;:::i;:::-;34129:61;;;;:::i;:::-;34103:87;;34201:23;34270:15;34258:8;;34241:13;;34229:9;:25;;;;:::i;:::-;34228:38;;;;:::i;:::-;34227:58;;;;:::i;:::-;34201:84;;34296:23;34410:8;;34396:10;;34384:9;:22;;;;:::i;:::-;34383:35;;;;:::i;:::-;34365:15:::0;34335:27:::1;34347:15:::0;34335:9;:27:::1;:::i;:::-;:45;;;;:::i;:::-;:83;;;;:::i;:::-;34322:97;::::0;:9;:97:::1;:::i;:::-;34444:13;::::0;34296:123;;-1:-1:-1;34444:13:0::1;;:36:::0;::::1;;;;34479:1;34461:15;:19;34444:36;34440:208;;;34500:11;;;;;;;;;-1:-1:-1::0;;;;;34500:11:0::1;-1:-1:-1::0;;;;;34500:19:0::1;;34527:15;34500:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;34496:61:::0;34575:16:::1;;;;;;;;;-1:-1:-1::0;;;;;34575:16:0::1;-1:-1:-1::0;;;;;34575:24:0::1;;34607:15;34575:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;34571:66:::0;::::1;34672:19:::0;;34668:84:::1;;34706:20;::::0;:46:::1;::::0;-1:-1:-1;;;;;34706:20:0;;::::1;::::0;:46;::::1;;;::::0;34736:15;;34706:20:::1;:46:::0;:20;:46;34736:15;34706:20;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;34668:84;34768:13:::0;;34765:65:::1;;34796:14;::::0;:34:::1;::::0;:14:::1;::::0;;::::1;-1:-1:-1::0;;;;;34796:14:0::1;::::0;:34:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;:14;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;34765:65;-1:-1:-1::0;;23332:6:0;:14;;-1:-1:-1;;23332:14:0;;;-1:-1:-1;;;;;;;33132:1706:0:o;30836:571::-;30901:7;30921:15;30939:14;30954:1;30939:17;;;;;;;;:::i;:::-;;;;;;;;;;;:36;;-1:-1:-1;;;30939:36:0;;-1:-1:-1;;;;;8140:32:1;;;30939:36:0;;;8122:51:1;30939:17:0;;;;:27;;8095:18:1;;30939:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30921:54;-1:-1:-1;30986:16:0;;31013:361;31034:14;:21;31030:25;;31013:361;;;31087:14;31102:1;31087:17;;;;;;;;:::i;:::-;;;;;;;;;;;:36;;-1:-1:-1;;;31087:36:0;;-1:-1:-1;;;;;8140:32:1;;;31087:36:0;;;8122:51:1;31087:17:0;;;;:27;;8095:18:1;;31087:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31077:46;;31152:22;31175:1;31152:25;;;;;;;;:::i;:::-;;;;;;;;;31142:7;:35;31138:76;;;31189:22;31212:1;31189:25;;;;;;;;:::i;:::-;;;;;;;;;31179:35;;31138:76;31233:11;;31229:133;;31336:22;31359:1;31336:25;;;;;;;;:::i;:::-;;;;;;;;;31313:20;;:48;;;;:::i;:::-;31290:18;;31280:7;31269:8;;:18;;;;:::i;:::-;:39;;;;:::i;:::-;31268:94;;;;:::i;:::-;31257:105;;:8;:105;:::i;:::-;31246:116;;31229:133;31057:3;;;;:::i;:::-;;;;31013:361;;;-1:-1:-1;31391:8:0;30836:571;-1:-1:-1;;;30836:571:0:o;36389:361::-;23314:6;:13;;-1:-1:-1;;23314:13:0;23323:4;23314:13;;;36489:16:::1;::::0;;36503:1:::1;36489:16:::0;;;;;::::1;::::0;;-1:-1:-1;;36489:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;36526:4:0::1;::::0;36516:7;;;;-1:-1:-1;;;;;;36526:4:0::1;::::0;36516:7;;-1:-1:-1;36526:4:0::1;::::0;36516:7:::1;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;36516:14:0::1;;;-1:-1:-1::0;;;;;36516:14:0::1;;;::::0;::::1;36559:4;36541;36546:1;36541:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36541:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;36577:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;36577:165:0;;:6;::::1;::::0;:57:::1;::::0;36642:6;;36577:165:::1;::::0;:6:::1;::::0;36680:4;;36699:2;;36716:15:::1;::::0;36577:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23332:6:0;:14;;-1:-1:-1;;23332:14:0;;;-1:-1:-1;;;;;;36389:361:0:o;718:619::-;778:4;1246:20;;1089:66;1286:23;;;;;;:42;;-1:-1:-1;;1313:15:0;;;1278:51;-1:-1:-1;;718:619:0:o;28123:300::-;-1:-1:-1;;;;;28253:17:0;;28216:4;28253:17;;;:9;:17;;;;;;:26;;28273:6;;28253:26;:::i;:::-;-1:-1:-1;;;;;28233:17:0;;;;;;;:9;:17;;;;;;:46;;;;28313:20;;;;;;;:29;;28336:6;;28313:29;:::i;:::-;-1:-1:-1;;;;;28290:20:0;;;;;;;:9;:20;;;;;;;:52;;;;28358:35;;;;;;;;;;28386:6;160:25:1;;148:2;133:18;;14:177;28358:35:0;;;;;;;;-1:-1:-1;28411:4:0;28123:300;;;;;:::o;28901:166::-;28998:12;;28988:6;:22;;:49;;;-1:-1:-1;;;;;;29014:23:0;;;;;;:15;:23;;;;;;;;28988:49;28980:79;;;;-1:-1:-1;;;28980:79:0;;19768:2:1;28980:79:0;;;19750:21:1;19807:2;19787:18;;;19780:30;-1:-1:-1;;;19826:18:1;;;19819:47;19883:18;;28980:79:0;19566:341:1;28435:458:0;28543:14;;28572:18;;:22;28568:213;;28611:16;28630:26;28646:9;28630:15;:26::i;:::-;28611:45;-1:-1:-1;28675:12:0;;28671:98;;28761:8;;28735:22;28749:8;28735:11;:22;:::i;:::-;28734:35;;;;:::i;:::-;28720:49;;:11;:49;:::i;:::-;28706:63;;28671:98;28596:185;28568:213;-1:-1:-1;;;;;28799:20:0;;;;;;:9;:20;;;;;;28832:11;;28799:29;;28822:6;;28799:29;:::i;:::-;:44;;28791:94;;;;-1:-1:-1;;;28791:94:0;;20114:2:1;28791:94:0;;;20096:21:1;20153:2;20133:18;;;20126:30;20192:34;20172:18;;;20165:62;-1:-1:-1;;;20243:18:1;;;20236:35;20288:19;;28791:94:0;19912:401:1;28791:94:0;28510:383;28435:458;;:::o;32390:482::-;32587:14;;32551:4;;32476:7;;;;32526:57;;-1:-1:-1;;;;;32538:17:0;;;32551:4;;32538:17;32557:6;32538:9;32576:6;32526:11;:57::i;:::-;32517:66;;:6;:66;:::i;:::-;32516:85;;;;:::i;:::-;32629:4;;32496:105;;-1:-1:-1;;;;;;32616:17:0;;;32629:4;;32616:17;32612:81;;;-1:-1:-1;;;;;32650:16:0;;;;;;:8;:16;;;;;32669:12;32650:31;;32612:81;32750:4;32732:24;;;;:9;:24;;;;;;:36;;32759:9;;32732:36;:::i;:::-;32723:4;32705:24;;;;:9;:24;;;;;;;:63;;;;32784:42;;-1:-1:-1;;;;;32784:42:0;;;;;;;32816:9;160:25:1;;148:2;133:18;;14:177;32784:42:0;;;;;;;;32846:18;32855:9;32846:6;:18;:::i;:::-;32839:25;32390:482;-1:-1:-1;;;;;32390:482:0:o;32880:244::-;32984:4;;32946;;-1:-1:-1;;;;;32984:4:0;32970:10;:18;;;;:38;;-1:-1:-1;33002:6:0;;;;33001:7;32970:38;:62;;;;-1:-1:-1;33021:11:0;;-1:-1:-1;;;33021:11:0;;;;32970:62;:92;;;;-1:-1:-1;33058:4:0;;-1:-1:-1;;;;;33045:17:0;;;33058:4;;33045:17;32970:92;:146;;;;-1:-1:-1;33103:13:0;;33093:4;33075:24;;;;:9;:24;;;;;;:41;;32963:153;32880:244;-1:-1:-1;;32880:244:0:o;34846:349::-;34953:4;;34915;;-1:-1:-1;;;;;34953:4:0;34939:10;:18;;;;:42;;-1:-1:-1;34975:6:0;;;;34974:7;34939:42;:77;;;;-1:-1:-1;34998:18:0;;;;34939:77;:155;;;;;35082:12;35056:22;;35033:20;;:45;;;;:::i;:::-;:61;;34939:155;:189;;;;-1:-1:-1;35124:4:0;;-1:-1:-1;;;;;35111:17:0;;;35124:4;;35111:17;34939:189;:248;;;;;35170:17;;35145:21;:42;;34932:255;34846:349;-1:-1:-1;;34846:349:0:o;36081:300::-;36141:17;;36160:4;;36131:34;;36141:17;-1:-1:-1;;;;;36160:4:0;36131:9;:34::i;:::-;36199:12;36176:20;:35;36272:17;;36247:22;;:42;;36272:17;36247:42;:::i;:::-;36222:22;:67;;;36328:14;;-1:-1:-1;36300:74:0;;;36345:18;:26;;-1:-1:-1;;36345:26:0;;;36300:74;36081:300::o;-1:-1:-1:-;;;;;;;;:::o;196:118:1:-;282:5;275:13;268:21;261:5;258:32;248:60;;304:1;301;294:12;319:446;402:6;410;418;426;479:3;467:9;458:7;454:23;450:33;447:53;;;496:1;493;486:12;447:53;535:9;522:23;554:28;576:5;554:28;:::i;:::-;601:5;653:2;638:18;;625:32;;-1:-1:-1;704:2:1;689:18;;676:32;;755:2;740:18;727:32;;-1:-1:-1;319:446:1;-1:-1:-1;;;319:446:1:o;770:597::-;882:4;911:2;940;929:9;922:21;972:6;966:13;1015:6;1010:2;999:9;995:18;988:34;1040:1;1050:140;1064:6;1061:1;1058:13;1050:140;;;1159:14;;;1155:23;;1149:30;1125:17;;;1144:2;1121:26;1114:66;1079:10;;1050:140;;;1208:6;1205:1;1202:13;1199:91;;;1278:1;1273:2;1264:6;1253:9;1249:22;1245:31;1238:42;1199:91;-1:-1:-1;1351:2:1;1330:15;-1:-1:-1;;1326:29:1;1311:45;;;;1358:2;1307:54;;770:597;-1:-1:-1;;;770:597:1:o;1372:173::-;1440:20;;-1:-1:-1;;;;;1489:31:1;;1479:42;;1469:70;;1535:1;1532;1525:12;1469:70;1372:173;;;:::o;1550:254::-;1618:6;1626;1679:2;1667:9;1658:7;1654:23;1650:32;1647:52;;;1695:1;1692;1685:12;1647:52;1718:29;1737:9;1718:29;:::i;:::-;1708:39;1794:2;1779:18;;;;1766:32;;-1:-1:-1;;;1550:254:1:o;2001:248::-;2069:6;2077;2130:2;2118:9;2109:7;2105:23;2101:32;2098:52;;;2146:1;2143;2136:12;2098:52;-1:-1:-1;;2169:23:1;;;2239:2;2224:18;;;2211:32;;-1:-1:-1;2001:248:1:o;2254:241::-;2310:6;2363:2;2351:9;2342:7;2338:23;2334:32;2331:52;;;2379:1;2376;2369:12;2331:52;2418:9;2405:23;2437:28;2459:5;2437:28;:::i;2500:260::-;2568:6;2576;2629:2;2617:9;2608:7;2604:23;2600:32;2597:52;;;2645:1;2642;2635:12;2597:52;2668:29;2687:9;2668:29;:::i;:::-;2658:39;;2716:38;2750:2;2739:9;2735:18;2716:38;:::i;:::-;2706:48;;2500:260;;;;;:::o;2765:328::-;2842:6;2850;2858;2911:2;2899:9;2890:7;2886:23;2882:32;2879:52;;;2927:1;2924;2917:12;2879:52;2950:29;2969:9;2950:29;:::i;:::-;2940:39;;2998:38;3032:2;3021:9;3017:18;2998:38;:::i;:::-;2988:48;;3083:2;3072:9;3068:18;3055:32;3045:42;;2765:328;;;;;:::o;3098:186::-;3157:6;3210:2;3198:9;3189:7;3185:23;3181:32;3178:52;;;3226:1;3223;3216:12;3178:52;3249:29;3268:9;3249:29;:::i;3542:180::-;3601:6;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;-1:-1:-1;3693:23:1;;3542:180;-1:-1:-1;3542:180:1:o;3916:315::-;3981:6;3989;4042:2;4030:9;4021:7;4017:23;4013:32;4010:52;;;4058:1;4055;4048:12;4010:52;4081:29;4100:9;4081:29;:::i;:::-;4071:39;;4160:2;4149:9;4145:18;4132:32;4173:28;4195:5;4173:28;:::i;:::-;4220:5;4210:15;;;3916:315;;;;;:::o;4236:127::-;4297:10;4292:3;4288:20;4285:1;4278:31;4328:4;4325:1;4318:15;4352:4;4349:1;4342:15;4368:275;4439:2;4433:9;4504:2;4485:13;;-1:-1:-1;;4481:27:1;4469:40;;4539:18;4524:34;;4560:22;;;4521:62;4518:88;;;4586:18;;:::i;:::-;4622:2;4615:22;4368:275;;-1:-1:-1;4368:275:1:o;4648:183::-;4708:4;4741:18;4733:6;4730:30;4727:56;;;4763:18;;:::i;:::-;-1:-1:-1;4808:1:1;4804:14;4820:4;4800:25;;4648:183::o;4836:662::-;4890:5;4943:3;4936:4;4928:6;4924:17;4920:27;4910:55;;4961:1;4958;4951:12;4910:55;4997:6;4984:20;5023:4;5047:60;5063:43;5103:2;5063:43;:::i;:::-;5047:60;:::i;:::-;5141:15;;;5227:1;5223:10;;;;5211:23;;5207:32;;;5172:12;;;;5251:15;;;5248:35;;;5279:1;5276;5269:12;5248:35;5315:2;5307:6;5303:15;5327:142;5343:6;5338:3;5335:15;5327:142;;;5409:17;;5397:30;;5447:12;;;;5360;;5327:142;;;-1:-1:-1;5487:5:1;4836:662;-1:-1:-1;;;;;;4836:662:1:o;5503:1146::-;5621:6;5629;5682:2;5670:9;5661:7;5657:23;5653:32;5650:52;;;5698:1;5695;5688:12;5650:52;5738:9;5725:23;5767:18;5808:2;5800:6;5797:14;5794:34;;;5824:1;5821;5814:12;5794:34;5862:6;5851:9;5847:22;5837:32;;5907:7;5900:4;5896:2;5892:13;5888:27;5878:55;;5929:1;5926;5919:12;5878:55;5965:2;5952:16;5987:4;6011:60;6027:43;6067:2;6027:43;:::i;6011:60::-;6105:15;;;6187:1;6183:10;;;;6175:19;;6171:28;;;6136:12;;;;6211:19;;;6208:39;;;6243:1;6240;6233:12;6208:39;6267:11;;;;6287:148;6303:6;6298:3;6295:15;6287:148;;;6369:23;6388:3;6369:23;:::i;:::-;6357:36;;6320:12;;;;6413;;;;6287:148;;;6454:5;-1:-1:-1;;6497:18:1;;6484:32;;-1:-1:-1;;6528:16:1;;;6525:36;;;6557:1;6554;6547:12;6525:36;;6580:63;6635:7;6624:8;6613:9;6609:24;6580:63;:::i;:::-;6570:73;;;5503:1146;;;;;:::o;6654:458::-;6737:6;6745;6753;6761;6814:3;6802:9;6793:7;6789:23;6785:33;6782:53;;;6831:1;6828;6821:12;6782:53;6870:9;6857:23;6889:28;6911:5;6889:28;:::i;:::-;6936:5;-1:-1:-1;6960:38:1;6994:2;6979:18;;6960:38;:::i;:::-;6950:48;;7017:38;7051:2;7040:9;7036:18;7017:38;:::i;:::-;6654:458;;;;-1:-1:-1;7007:48:1;;7102:2;7087:18;7074:32;;-1:-1:-1;;6654:458:1:o;7117:309::-;7182:6;7190;7243:2;7231:9;7222:7;7218:23;7214:32;7211:52;;;7259:1;7256;7249:12;7211:52;7295:9;7282:23;7272:33;;7355:2;7344:9;7340:18;7327:32;7368:28;7390:5;7368:28;:::i;7431:523::-;7535:6;7543;7551;7559;7567;7575;7628:3;7616:9;7607:7;7603:23;7599:33;7596:53;;;7645:1;7642;7635:12;7596:53;-1:-1:-1;;7668:23:1;;;7738:2;7723:18;;7710:32;;-1:-1:-1;7789:2:1;7774:18;;7761:32;;7840:2;7825:18;;7812:32;;-1:-1:-1;7891:3:1;7876:19;;7863:33;;-1:-1:-1;7943:3:1;7928:19;7915:33;;-1:-1:-1;7431:523:1;-1:-1:-1;7431:523:1:o;9852:385::-;9938:6;9946;9954;9962;10015:3;10003:9;9994:7;9990:23;9986:33;9983:53;;;10032:1;10029;10022:12;9983:53;-1:-1:-1;;10055:23:1;;;10125:2;10110:18;;10097:32;;-1:-1:-1;10176:2:1;10161:18;;10148:32;;10227:2;10212:18;10199:32;;-1:-1:-1;9852:385:1;-1:-1:-1;9852:385:1:o;10242:309::-;10307:6;10315;10368:2;10356:9;10347:7;10343:23;10339:32;10336:52;;;10384:1;10381;10374:12;10336:52;10423:9;10410:23;10442:28;10464:5;10442:28;:::i;10782:356::-;10984:2;10966:21;;;11003:18;;;10996:30;11062:34;11057:2;11042:18;;11035:62;11129:2;11114:18;;10782:356::o;11143:127::-;11204:10;11199:3;11195:20;11192:1;11185:31;11235:4;11232:1;11225:15;11259:4;11256:1;11249:15;11275:168;11315:7;11381:1;11377;11373:6;11369:14;11366:1;11363:21;11358:1;11351:9;11344:17;11340:45;11337:71;;;11388:18;;:::i;:::-;-1:-1:-1;11428:9:1;;11275:168::o;11448:217::-;11488:1;11514;11504:132;;11558:10;11553:3;11549:20;11546:1;11539:31;11593:4;11590:1;11583:15;11621:4;11618:1;11611:15;11504:132;-1:-1:-1;11650:9:1;;11448:217::o;11670:125::-;11710:4;11738:1;11735;11732:8;11729:34;;;11743:18;;:::i;:::-;-1:-1:-1;11780:9:1;;11670:125::o;11800:184::-;11870:6;11923:2;11911:9;11902:7;11898:23;11894:32;11891:52;;;11939:1;11936;11929:12;11891:52;-1:-1:-1;11962:16:1;;11800:184;-1:-1:-1;11800:184:1:o;11989:128::-;12029:3;12060:1;12056:6;12053:1;12050:13;12047:39;;;12066:18;;:::i;:::-;-1:-1:-1;12102:9:1;;11989:128::o;12472:127::-;12533:10;12528:3;12524:20;12521:1;12514:31;12564:4;12561:1;12554:15;12588:4;12585:1;12578:15;12604:422;12693:1;12736:5;12693:1;12750:270;12771:7;12761:8;12758:21;12750:270;;;12830:4;12826:1;12822:6;12818:17;12812:4;12809:27;12806:53;;;12839:18;;:::i;:::-;12889:7;12879:8;12875:22;12872:55;;;12909:16;;;;12872:55;12988:22;;;;12948:15;;;;12750:270;;;12754:3;12604:422;;;;;:::o;13031:806::-;13080:5;13110:8;13100:80;;-1:-1:-1;13151:1:1;13165:5;;13100:80;13199:4;13189:76;;-1:-1:-1;13236:1:1;13250:5;;13189:76;13281:4;13299:1;13294:59;;;;13367:1;13362:130;;;;13274:218;;13294:59;13324:1;13315:10;;13338:5;;;13362:130;13399:3;13389:8;13386:17;13383:43;;;13406:18;;:::i;:::-;-1:-1:-1;;13462:1:1;13448:16;;13477:5;;13274:218;;13576:2;13566:8;13563:16;13557:3;13551:4;13548:13;13544:36;13538:2;13528:8;13525:16;13520:2;13514:4;13511:12;13507:35;13504:77;13501:159;;;-1:-1:-1;13613:19:1;;;13645:5;;13501:159;13692:34;13717:8;13711:4;13692:34;:::i;:::-;13762:6;13758:1;13754:6;13750:19;13741:7;13738:32;13735:58;;;13773:18;;:::i;:::-;13811:20;;13031:806;-1:-1:-1;;;13031:806:1:o;13842:140::-;13900:5;13929:47;13970:4;13960:8;13956:19;13950:4;13929:47;:::i;13987:135::-;14026:3;-1:-1:-1;;14047:17:1;;14044:43;;;14067:18;;:::i;:::-;-1:-1:-1;14114:1:1;14103:13;;13987:135::o;14127:338::-;14329:2;14311:21;;;14368:2;14348:18;;;14341:30;-1:-1:-1;;;14402:2:1;14387:18;;14380:44;14456:2;14441:18;;14127:338::o;15207:127::-;15268:10;15263:3;15259:20;15256:1;15249:31;15299:4;15296:1;15289:15;15323:4;15320:1;15313:15;17748:245;17815:6;17868:2;17856:9;17847:7;17843:23;17839:32;17836:52;;;17884:1;17881;17874:12;17836:52;17916:9;17910:16;17935:28;17957:5;17935:28;:::i;17998:461::-;18051:3;18089:5;18083:12;18116:6;18111:3;18104:19;18142:4;18171:2;18166:3;18162:12;18155:19;;18208:2;18201:5;18197:14;18229:1;18239:195;18253:6;18250:1;18247:13;18239:195;;;18318:13;;-1:-1:-1;;;;;18314:39:1;18302:52;;18374:12;;;;18409:15;;;;18350:1;18268:9;18239:195;;;-1:-1:-1;18450:3:1;;17998:461;-1:-1:-1;;;;;17998:461:1:o;18464:582::-;18763:6;18752:9;18745:25;18806:6;18801:2;18790:9;18786:18;18779:34;18849:3;18844:2;18833:9;18829:18;18822:31;18726:4;18870:57;18922:3;18911:9;18907:19;18899:6;18870:57;:::i;:::-;-1:-1:-1;;;;;18963:32:1;;;;18958:2;18943:18;;18936:60;-1:-1:-1;19027:3:1;19012:19;19005:35;18862:65;18464:582;-1:-1:-1;;;18464:582:1:o;19051:510::-;19322:6;19311:9;19304:25;19365:3;19360:2;19349:9;19345:18;19338:31;19285:4;19386:57;19438:3;19427:9;19423:19;19415:6;19386:57;:::i;:::-;-1:-1:-1;;;;;19479:32:1;;;;19474:2;19459:18;;19452:60;-1:-1:-1;19543:2:1;19528:18;19521:34;19378:65;19051:510;-1:-1:-1;;19051:510:1:o

Swarm Source

ipfs://7aab0d07b4581e45527a502f3d0679fd86ae756e2ac723616248855bffe07af0
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.