S Price: $0.504095 (-0.89%)

Token

Infinite Sonic Glitch (ISG)

Overview

Max Total Supply

100,000,000 ISG

Holders

4

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
35,057,261.08651399108901274 ISG

Value
$0.00
0xca6fb7fb777d65882a3155d2527ddd97c12fd91d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

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

Contract Name:
InfiniteSonicGlitch

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-03-08
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

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

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

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

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

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

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

// File: infinitesonicglitch.sol


pragma solidity ^0.8.20;



contract InfiniteSonicGlitch is Ownable {
    using SafeMath for uint256;

    string public constant name = "Infinite Sonic Glitch";
    string public constant symbol = "ISG";
    uint8 public constant decimals = 18;
    uint256 public constant totalSupply = 100000000 * 10 ** 18; // 100M ISG, fixed supply

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

    // Tax variables
    uint256 public buyTaxFee = 4; // 4% tax in $S before buy
    uint256 public sellTaxFee = 4; // 4% tax in $S after sell
    uint256 public constant TAX_DENOMINATOR = 100;

    // Special wallets
    address public immutable marketingWallet;
    address public immutable developmentWallet;
    address public immutable liquidityWallet;
    address public immutable burnWallet;
    address public immutable ownerWallet;

    // Tax distribution percentages
    uint256 public constant REWARD_SHARE = 50;
    uint256 public constant MARKETING_SHARE = 15;
    uint256 public constant DEVELOPMENT_SHARE = 10;
    uint256 public constant LIQUIDITY_SHARE = 10;
    uint256 public constant BURN_SHARE = 10;
    uint256 public constant OWNER_SHARE = 5;

    // Staking variables
    mapping(address => uint256) public stakedBalances;
    mapping(address => uint256) public stakingStartTime;
    mapping(address => uint256) public accumulatedStakingRewards; // $S rewards accrued daily for stakers
    uint256 public totalStaked;
    uint256 public stakingPeriod = 7 days;
    uint256 public constant STAKING_BOOST = 2; // 2x rewards for stakers

    // Reward variables
    uint256 public rewardPool; // $S pool for rewards
    uint256 public lastRewardDistribution;
    uint256 public constant REWARD_INTERVAL = 24 hours;

    // Holder tracking for rewards (only non-staked holders)
    address[] public holders;
    mapping(address => uint256) public holderIndex;
    mapping(address => bool) public isHolder;
    uint256 public totalEligibleSupply; // Total unstaked ISG held by eligible holders

    // Trading control
    bool public tradingEnabled;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Staked(address indexed user, uint256 amount);
    event Unstaked(address indexed user, uint256 amount, uint256 reward);
    event RewardDistributed(address indexed user, uint256 reward);
    event TaxCollected(address indexed user, uint256 amount, bool isBuy);
    event TradingEnabled();
    event HolderAdded(address indexed holder);
    event HolderRemoved(address indexed holder);

    constructor(
        address _marketingWallet,
        address _developmentWallet,
        address _liquidityWallet,
        address _burnWallet
    ) Ownable(msg.sender) { // Initialize Ownable with deployer as initial owner
        require(_marketingWallet != address(0), "Invalid marketing wallet");
        require(_developmentWallet != address(0), "Invalid development wallet");
        require(_liquidityWallet != address(0), "Invalid liquidity wallet");
        require(_burnWallet != address(0), "Invalid burn wallet");

        _balances[msg.sender] = totalSupply;
        marketingWallet = _marketingWallet;
        developmentWallet = _developmentWallet;
        liquidityWallet = _liquidityWallet;
        burnWallet = _burnWallet;
        ownerWallet = msg.sender; // Set ownerWallet to deployer, consistent with Ownable
        lastRewardDistribution = block.timestamp;

        if (!isExcluded(msg.sender)) {
            holders.push(msg.sender);
            holderIndex[msg.sender] = 0;
            isHolder[msg.sender] = true;
            totalEligibleSupply = totalSupply;
        }

        emit Transfer(address(0), msg.sender, totalSupply);
    }

    // Basic ERC-20 functions
    function balanceOf(address account) external view returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        require(tradingEnabled || msg.sender == owner(), "Trading not enabled");
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        require(tradingEnabled || msg.sender == owner(), "Trading not enabled");
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Insufficient allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "Transfer from zero address");
        require(recipient != address(0), "Transfer to zero address");
        require(_balances[sender] >= amount, "Insufficient balance");

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

        updateHolderList(sender, recipient);

        emit Transfer(sender, recipient, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "Approve from zero address");
        require(spender != address(0), "Approve to zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    // Check if an address is excluded from taxes and rewards
    function isExcluded(address account) public view returns (bool) {
        return account == marketingWallet ||
               account == developmentWallet ||
               account == liquidityWallet ||
               account == burnWallet ||
               account == ownerWallet;
    }

    // Update holder list (only tracks unstaked balances for daily rewards)
    function updateHolderList(address sender, address recipient) internal {
        bool senderExcluded = isExcluded(sender);
        bool recipientExcluded = isExcluded(recipient);

        if (!senderExcluded) {
            uint256 senderBalance = _balances[sender];
            if (senderBalance == 0 && stakedBalances[sender] == 0 && isHolder[sender]) {
                totalEligibleSupply = totalEligibleSupply.sub(_balances[sender]);
                removeHolder(sender);
            } else if (senderBalance > 0 && !isHolder[sender] && stakedBalances[sender] == 0) {
                addHolder(sender);
                totalEligibleSupply = totalEligibleSupply.add(senderBalance);
            } else if (isHolder[sender] && stakedBalances[sender] == 0) {
                totalEligibleSupply = totalEligibleSupply.sub(_balances[sender]).add(senderBalance);
            } else if (isHolder[sender] && stakedBalances[sender] > 0) {
                totalEligibleSupply = totalEligibleSupply.sub(_balances[sender]);
                removeHolder(sender);
            }
        }

        if (!recipientExcluded) {
            uint256 recipientBalance = _balances[recipient];
            if (recipientBalance > 0 && !isHolder[recipient] && stakedBalances[recipient] == 0) {
                addHolder(recipient);
                totalEligibleSupply = totalEligibleSupply.add(recipientBalance);
            } else if (isHolder[recipient] && stakedBalances[recipient] == 0) {
                totalEligibleSupply = totalEligibleSupply.sub(_balances[recipient]).add(recipientBalance);
            } else if (isHolder[recipient] && stakedBalances[recipient] > 0) {
                totalEligibleSupply = totalEligibleSupply.sub(_balances[recipient]);
                removeHolder(recipient);
            }
        }
    }

    function addHolder(address holder) internal {
        holders.push(holder);
        holderIndex[holder] = holders.length - 1;
        isHolder[holder] = true;
        emit HolderAdded(holder);
    }

    function removeHolder(address holder) internal {
        uint256 index = holderIndex[holder];
        address lastHolder = holders[holders.length - 1];
        holders[index] = lastHolder;
        holderIndex[lastHolder] = index;
        holders.pop();
        delete holderIndex[holder];
        isHolder[holder] = false;
        emit HolderRemoved(holder);
    }

    // Tax collection
    function collectBuyTax(uint256 isgAmount) external payable {
        require(!isExcluded(msg.sender), "Excluded wallet cannot pay tax");
        uint256 taxAmount = isgAmount.mul(buyTaxFee).div(TAX_DENOMINATOR);
        require(msg.value >= taxAmount, "Insufficient $S for buy tax");
        _distributeTax(msg.value);
        emit TaxCollected(msg.sender, msg.value, true);
    }

    function collectSellTax(uint256 isgAmount) external payable {
        require(!isExcluded(msg.sender), "Excluded wallet cannot pay tax");
        uint256 taxAmount = isgAmount.mul(sellTaxFee).div(TAX_DENOMINATOR);
        require(msg.value >= taxAmount, "Insufficient $S for sell tax");
        _distributeTax(msg.value);
        emit TaxCollected(msg.sender, msg.value, false);
    }

    function _distributeTax(uint256 taxAmount) internal {
        uint256 rewardShare = taxAmount.mul(REWARD_SHARE).div(TAX_DENOMINATOR);
        uint256 marketingShare = taxAmount.mul(MARKETING_SHARE).div(TAX_DENOMINATOR);
        uint256 devShare = taxAmount.mul(DEVELOPMENT_SHARE).div(TAX_DENOMINATOR);
        uint256 liqShare = taxAmount.mul(LIQUIDITY_SHARE).div(TAX_DENOMINATOR);
        uint256 burnShare = taxAmount.mul(BURN_SHARE).div(TAX_DENOMINATOR);
        uint256 ownerShare = taxAmount.mul(OWNER_SHARE).div(TAX_DENOMINATOR);

        rewardPool += rewardShare;
        _safeTransfer(marketingWallet, marketingShare);
        _safeTransfer(developmentWallet, devShare);
        _safeTransfer(liquidityWallet, liqShare);
        _safeTransfer(burnWallet, burnShare);
        _safeTransfer(ownerWallet, ownerShare);
    }

    // Staking functions
    function stake(uint256 amount) external {
        require(tradingEnabled || msg.sender == owner(), "Trading not enabled");
        require(amount > 0, "Cannot stake 0");
        require(_balances[msg.sender] >= amount, "Insufficient balance");

        _transfer(msg.sender, address(this), amount);
        stakedBalances[msg.sender] += amount;
        totalStaked += amount;
        if (stakingStartTime[msg.sender] == 0) stakingStartTime[msg.sender] = block.timestamp;
        emit Staked(msg.sender, amount);
    }

    function unstake(uint256 amount) external {
        require(amount > 0, "Cannot unstake 0");
        require(stakedBalances[msg.sender] >= amount, "Insufficient staked balance");
        require(block.timestamp >= stakingStartTime[msg.sender] + stakingPeriod, "Staking period not completed");

        uint256 reward = accumulatedStakingRewards[msg.sender];
        stakedBalances[msg.sender] -= amount;
        totalStaked -= amount;
        if (stakedBalances[msg.sender] == 0) {
            stakingStartTime[msg.sender] = 0;
            accumulatedStakingRewards[msg.sender] = 0; // Reset rewards if fully unstaked
        }
        _balances[msg.sender] += amount;

        if (reward > 0 && !isExcluded(msg.sender)) {
            _safeTransfer(msg.sender, reward);
            emit RewardDistributed(msg.sender, reward);
        }

        updateHolderList(msg.sender, address(this));
        emit Unstaked(msg.sender, amount, reward);
        emit Transfer(address(this), msg.sender, amount);
    }

    // Reward distribution
    function distributeRewards() external {
        require(block.timestamp >= lastRewardDistribution + REWARD_INTERVAL, "24 hours not passed");
        require(rewardPool > 0, "No $S to distribute");

        uint256 totalReward = rewardPool;
        uint256 totalWeightedSupply = totalEligibleSupply + (totalStaked * STAKING_BOOST); // Stakers get 2x weight

        if (totalWeightedSupply == 0) {
            lastRewardDistribution = block.timestamp;
            return; // No eligible holders or stakers
        }

        // Distribute to non-staked holders
        for (uint256 i = 0; i < holders.length; i++) {
            address holder = holders[i];
            uint256 balance = _balances[holder];
            if (balance > 0) {
                uint256 holderReward = balance.mul(totalReward).div(totalWeightedSupply);
                if (holderReward > 0 && rewardPool >= holderReward) {
                    rewardPool -= holderReward;
                    _safeTransfer(holder, holderReward);
                    emit RewardDistributed(holder, holderReward);
                }
            }
        }

        // Calculate and reserve staking rewards
        for (uint256 i = 0; i < holders.length; i++) {
            address holder = holders[i];
            uint256 stakedBalance = stakedBalances[holder];
            if (stakedBalance > 0 && !isExcluded(holder)) {
                uint256 stakerReward = stakedBalance.mul(STAKING_BOOST).mul(totalReward).div(totalWeightedSupply);
                if (stakerReward > 0 && rewardPool >= stakerReward) {
                    rewardPool -= stakerReward;
                    accumulatedStakingRewards[holder] += stakerReward;
                }
            }
        }

        lastRewardDistribution = block.timestamp;
    }

    // Safe $S transfer
    function _safeTransfer(address to, uint256 amount) internal {
        (bool success, ) = to.call{value: amount}("");
        require(success, "Transfer failed");
    }

    // Owner functions
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading already enabled");
        tradingEnabled = true;
        emit TradingEnabled();
    }

    function setTaxFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 10 && newSellFee <= 10, "Tax fee too high");
        buyTaxFee = newBuyFee;
        sellTaxFee = newSellFee;
    }

    function setStakingPeriod(uint256 newPeriod) external onlyOwner {
        require(newPeriod >= 1 days, "Staking period too short");
        stakingPeriod = newPeriod;
    }

    receive() external payable {
        rewardPool += msg.value;
    }

    function getHolderCount() external view returns (uint256) {
        return holders.length;
    }

    // View accumulated staking rewards
    function getAccumulatedStakingRewards(address account) external view returns (uint256) {
        return accumulatedStakingRewards[account];
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_developmentWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_burnWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"HolderAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"HolderRemoved","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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"}],"name":"TaxCollected","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"BURN_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVELOPMENT_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REWARD_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REWARD_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_BOOST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accumulatedStakingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"isgAmount","type":"uint256"}],"name":"collectBuyTax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"isgAmount","type":"uint256"}],"name":"collectSellTax","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccumulatedStakingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setStakingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakedBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEligibleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

61012060405260046003556004805562093a8060095534801562000021575f80fd5b5060405162004e7538038062004e758339818101604052810190620000479190620007ca565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000bb575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000b291906200084a565b60405180910390fd5b620000cc816200058660201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200013e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013590620008c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a69062000931565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000217906200099f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002889062000a0d565b60405180910390fd5b6a52b7d2dcc80cd2e400000060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250503373ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff168152505042600b81905550620003fb336200064760201b60201c565b6200050a57600c33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e4000000600f819055505b3373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e400000060405162000574919062000a47565b60405180910390a35050505062000a62565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60805173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620006b2575060a05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620006eb575060c05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8062000724575060e05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200075e57506101005173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007948262000769565b9050919050565b620007a68162000788565b8114620007b1575f80fd5b50565b5f81519050620007c4816200079b565b92915050565b5f805f8060808587031215620007e557620007e462000765565b5b5f620007f487828801620007b4565b94505060206200080787828801620007b4565b93505060406200081a87828801620007b4565b92505060606200082d87828801620007b4565b91505092959194509250565b620008448162000788565b82525050565b5f6020820190506200085f5f83018462000839565b92915050565b5f82825260208201905092915050565b7f496e76616c6964206d61726b6574696e672077616c6c657400000000000000005f82015250565b5f620008ab60188362000865565b9150620008b88262000875565b602082019050919050565b5f6020820190508181035f830152620008dc816200089d565b9050919050565b7f496e76616c696420646576656c6f706d656e742077616c6c65740000000000005f82015250565b5f62000919601a8362000865565b91506200092682620008e3565b602082019050919050565b5f6020820190508181035f8301526200094a816200090b565b9050919050565b7f496e76616c6964206c69717569646974792077616c6c657400000000000000005f82015250565b5f6200098760188362000865565b9150620009948262000951565b602082019050919050565b5f6020820190508181035f830152620009b88162000979565b9050919050565b7f496e76616c6964206275726e2077616c6c6574000000000000000000000000005f82015250565b5f620009f560138362000865565b915062000a0282620009bf565b602082019050919050565b5f6020820190508181035f83015262000a2681620009e7565b9050919050565b5f819050919050565b62000a418162000a2d565b82525050565b5f60208201905062000a5c5f83018462000a36565b92915050565b60805160a05160c05160e0516101005161438f62000ae65f395f818161196e01528181612051015261304401525f8181610bf101528181611ffb015261301a01525f8181611fa5015281816120bd0152612ff001525f8181611dc101528181611f4f0152612fc601525f818161180e01528181611efa0152612f9c015261438f5ff3fe6080604052600436106102e7575f3560e01c8063817b1cd21161018f578063b0cd9cff116100db578063d469801611610094578063e9bbb0401161006e578063e9bbb04014610b37578063f2fde38b14610b73578063f42c0f0214610b9b578063f8a25a9414610bc557610305565b8063d469801614610a95578063d4d7b19a14610abf578063dd62ed3e14610afb57610305565b8063b0cd9cff14610983578063c03d5b47146109ad578063c04a5414146109d7578063c54705a014610a01578063cba0e99614610a1d578063d123273014610a5957610305565b8063941fa5cd11610148578063a51c9ace11610122578063a51c9ace146108b9578063a694fc3a146108e3578063a8bbfd3a1461090b578063a9059cbb1461094757610305565b8063941fa5cd1461083d578063957d77801461086757806395d89b411461088f57610305565b8063817b1cd21461075557806389c3d5081461077f5780638a8c523c146107a95780638da5cb5b146107bf5780639335dcb7146107e957806393b998fb1461081357610305565b806343270d561161024e5780636a96204e116102075780637136982b116101e15780637136982b146106c3578063715018a6146106ed57806375f0a8741461070357806381230a831461072d57610305565b80636a96204e146106555780636f4a2cd01461067157806370a082311461068757610305565b806343270d56146105595780634ada218b14610583578063565e5db3146105ad5780635dbdda69146105d757806366666aa9146106015780636a1c6e781461062b57610305565b806322693d93116102a057806322693d931461042957806323b872dd146104535780632a11ced01461048f5780632e164fe6146104cb5780632e17de7814610507578063313ce5671461052f57610305565b8063062287491461030957806306fdde0314610333578063095ea7b31461035d5780631460fa871461039957806318160ddd146103d55780632048c9e1146103ff57610305565b366103055734600a5f8282546102fd91906135bc565b925050819055005b5f80fd5b348015610314575f80fd5b5061031d610bef565b60405161032a919061362e565b60405180910390f35b34801561033e575f80fd5b50610347610c13565b60405161035491906136d1565b60405180910390f35b348015610368575f80fd5b50610383600480360381019061037e9190613749565b610c4c565b60405161039091906137a1565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906137ba565b610c62565b6040516103cc91906137f4565b60405180910390f35b3480156103e0575f80fd5b506103e9610c77565b6040516103f691906137f4565b60405180910390f35b34801561040a575f80fd5b50610413610c86565b60405161042091906137f4565b60405180910390f35b348015610434575f80fd5b5061043d610c8b565b60405161044a91906137f4565b60405180910390f35b34801561045e575f80fd5b506104796004803603810190610474919061380d565b610c91565b60405161048691906137a1565b60405180910390f35b34801561049a575f80fd5b506104b560048036038101906104b0919061385d565b610e09565b6040516104c2919061362e565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec91906137ba565b610e44565b6040516104fe91906137f4565b60405180910390f35b348015610512575f80fd5b5061052d6004803603810190610528919061385d565b610e59565b005b34801561053a575f80fd5b506105436112a6565b60405161055091906138a3565b60405180910390f35b348015610564575f80fd5b5061056d6112ab565b60405161057a91906137f4565b60405180910390f35b34801561058e575f80fd5b506105976112b0565b6040516105a491906137a1565b60405180910390f35b3480156105b8575f80fd5b506105c16112c2565b6040516105ce91906137f4565b60405180910390f35b3480156105e2575f80fd5b506105eb6112c7565b6040516105f891906137f4565b60405180910390f35b34801561060c575f80fd5b506106156112ce565b60405161062291906137f4565b60405180910390f35b348015610636575f80fd5b5061063f6112d4565b60405161064c91906137f4565b60405180910390f35b61066f600480360381019061066a919061385d565b6112d9565b005b34801561067c575f80fd5b506106856113ee565b005b348015610692575f80fd5b506106ad60048036038101906106a891906137ba565b6117a7565b6040516106ba91906137f4565b60405180910390f35b3480156106ce575f80fd5b506106d76117ed565b6040516106e491906137f4565b60405180910390f35b3480156106f8575f80fd5b506107016117f9565b005b34801561070e575f80fd5b5061071761180c565b604051610724919061362e565b60405180910390f35b348015610738575f80fd5b50610753600480360381019061074e91906138bc565b611830565b005b348015610760575f80fd5b5061076961189b565b60405161077691906137f4565b60405180910390f35b34801561078a575f80fd5b506107936118a1565b6040516107a091906137f4565b60405180910390f35b3480156107b4575f80fd5b506107bd6118a6565b005b3480156107ca575f80fd5b506107d3611945565b6040516107e0919061362e565b60405180910390f35b3480156107f4575f80fd5b506107fd61196c565b60405161080a919061362e565b60405180910390f35b34801561081e575f80fd5b50610827611990565b60405161083491906137f4565b60405180910390f35b348015610848575f80fd5b50610851611995565b60405161085e91906137f4565b60405180910390f35b348015610872575f80fd5b5061088d6004803603810190610888919061385d565b61199b565b005b34801561089a575f80fd5b506108a36119f3565b6040516108b091906136d1565b60405180910390f35b3480156108c4575f80fd5b506108cd611a2c565b6040516108da91906137f4565b60405180910390f35b3480156108ee575f80fd5b506109096004803603810190610904919061385d565b611a31565b005b348015610916575f80fd5b50610931600480360381019061092c91906137ba565b611ccc565b60405161093e91906137f4565b60405180910390f35b348015610952575f80fd5b5061096d60048036038101906109689190613749565b611d12565b60405161097a91906137a1565b60405180910390f35b34801561098e575f80fd5b50610997611db3565b6040516109a491906137f4565b60405180910390f35b3480156109b8575f80fd5b506109c1611db9565b6040516109ce91906137f4565b60405180910390f35b3480156109e2575f80fd5b506109eb611dbf565b6040516109f8919061362e565b60405180910390f35b610a1b6004803603810190610a16919061385d565b611de3565b005b348015610a28575f80fd5b50610a436004803603810190610a3e91906137ba565b611ef7565b604051610a5091906137a1565b60405180910390f35b348015610a64575f80fd5b50610a7f6004803603810190610a7a91906137ba565b6120a6565b604051610a8c91906137f4565b60405180910390f35b348015610aa0575f80fd5b50610aa96120bb565b604051610ab6919061362e565b60405180910390f35b348015610aca575f80fd5b50610ae56004803603810190610ae091906137ba565b6120df565b604051610af291906137a1565b60405180910390f35b348015610b06575f80fd5b50610b216004803603810190610b1c91906138fa565b6120fc565b604051610b2e91906137f4565b60405180910390f35b348015610b42575f80fd5b50610b5d6004803603810190610b5891906137ba565b61217e565b604051610b6a91906137f4565b60405180910390f35b348015610b7e575f80fd5b50610b996004803603810190610b9491906137ba565b612193565b005b348015610ba6575f80fd5b50610baf612217565b604051610bbc91906137f4565b60405180910390f35b348015610bd0575f80fd5b50610bd961221c565b604051610be691906137f4565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b6040518060400160405280601581526020017f496e66696e69746520536f6e696320476c69746368000000000000000000000081525081565b5f610c58338484612222565b6001905092915050565b6005602052805f5260405f205f915090505481565b6a52b7d2dcc80cd2e400000081565b600a81565b600f5481565b5f60105f9054906101000a900460ff1680610cde5750610caf611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613982565b60405180910390fd5b610d288484846123e5565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906139ea565b60405180910390fd5b610dfd85338584610df89190613a08565b612222565b60019150509392505050565b600c8181548110610e18575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915090505481565b5f8111610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290613a85565b60405180910390fd5b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613aed565b60405180910390fd5b60095460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f6691906135bc565b421015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613b55565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110359190613a08565b925050819055508160085f82825461104d9190613a08565b925050819055505f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361111d575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461116991906135bc565b925050819055505f81118015611185575061118333611ef7565b155b156111e357611194338261265b565b3373ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6826040516111da91906137f4565b60405180910390a25b6111ed3330612708565b3373ffffffffffffffffffffffffffffffffffffffff167f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e8383604051611235929190613b73565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161129a91906137f4565b60405180910390a35050565b601281565b600a81565b60105f9054906101000a900460ff1681565b603281565b6201518081565b600a5481565b600581565b6112e233611ef7565b15611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990613be4565b60405180910390fd5b5f61134b606461133d60035485612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905080341015611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790613c4c565b60405180910390fd5b61139934612e83565b3373ffffffffffffffffffffffffffffffffffffffff167fee32cb2307349beabd02d4eb3bcf8bc239d05d6f856e440036dafd1c94323a1a3460016040516113e2929190613c6a565b60405180910390a25050565b62015180600b546113ff91906135bc565b421015611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613cdb565b60405180910390fd5b5f600a5411611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90613d43565b60405180910390fd5b5f600a5490505f600260085461149b9190613d61565b600f546114a891906135bc565b90505f81036114bf5742600b8190555050506117a5565b5f5b600c8054905081101561161c575f600c82815481106114e3576114e2613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115611607575f61157c8561156e8885612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f8111801561158f575080600a5410155b156116055780600a5f8282546115a59190613a08565b925050819055506115b6838261265b565b8273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6826040516115fc91906137f4565b60405180910390a25b505b5050808061161490613dcf565b9150506114c1565b505f5b600c8054905081101561179a575f600c828154811061164157611640613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811180156116c157506116bf82611ef7565b155b15611785575f6116ff856116f1886116e3600287612e5990919063ffffffff16565b612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f81118015611712575080600a5410155b156117835780600a5f8282546117289190613a08565b925050819055508060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461177b91906135bc565b925050819055505b505b5050808061179290613dcf565b91505061161f565b5042600b8190555050505b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600c80549050905090565b611801613072565b61180a5f6130f9565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b611838613072565b600a821115801561184a5750600a8111155b611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613e60565b60405180910390fd5b81600381905550806004819055505050565b60085481565b600281565b6118ae613072565b60105f9054906101000a900460ff16156118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613ec8565b60405180910390fd5b600160105f6101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a81565b60035481565b6119a3613072565b620151808110156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613f30565b60405180910390fd5b8060098190555050565b6040518060400160405280600381526020017f495347000000000000000000000000000000000000000000000000000000000081525081565b606481565b60105f9054906101000a900460ff1680611a7d5750611a4e611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613982565b60405180910390fd5b5f8111611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613f98565b60405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590614000565b60405180910390fd5b611b893330836123e5565b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bd591906135bc565b925050819055508060085f828254611bed91906135bc565b925050819055505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611c7b574260065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d82604051611cc191906137f4565b60405180910390a250565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60105f9054906101000a900460ff1680611d5f5750611d30611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613982565b60405180910390fd5b611da93384846123e5565b6001905092915050565b600b5481565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b611dec33611ef7565b15611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613be4565b60405180910390fd5b5f611e556064611e4760045485612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905080341015611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190614068565b60405180910390fd5b611ea334612e83565b3373ffffffffffffffffffffffffffffffffffffffff167fee32cb2307349beabd02d4eb3bcf8bc239d05d6f856e440036dafd1c94323a1a345f604051611eeb929190613c6a565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611f9d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ff357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061204957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061209f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6006602052805f5260405f205f915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d602052805f5260405f205f915090505481565b61219b613072565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220b575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612202919061362e565b60405180910390fd5b612214816130f9565b50565b600f81565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612287906140d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614138565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123d891906137f4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a906141a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614208565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253890614000565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461258d9190613a08565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125e091906135bc565b925050819055506125f18383612708565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264e91906137f4565b60405180910390a3505050565b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161268090614253565b5f6040518083038185875af1925050503d805f81146126ba576040519150601f19603f3d011682016040523d82523d5f602084013e6126bf565b606091505b5050905080612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906142b1565b60405180910390fd5b505050565b5f61271283611ef7565b90505f61271e83611ef7565b905081612b3e575f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811480156127b157505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b80156128035750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561286e5761285a60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612869856131cf565b612b3c565b5f811180156128c45750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561290c57505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b1561293a5761291a8561341c565b61292f81600f5461356a90919063ffffffff16565b600f81905550612b3b565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129cc57505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612a4057612a3581612a2760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b61356a90919063ffffffff16565b600f81905550612b3a565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad257505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612b3957612b2960015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612b38856131cf565b5b5b5b5b505b80612e53575f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81118015612bda5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c2257505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612c5057612c308461341c565b612c4581600f5461356a90919063ffffffff16565b600f81905550612e51565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ce257505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612d5657612d4b81612d3d60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b61356a90919063ffffffff16565b600f81905550612e50565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612de857505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612e4f57612e3f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612e4e846131cf565b5b5b5b505b50505050565b5f8183612e669190613d61565b905092915050565b5f8183612e7b91906142fc565b905092915050565b5f612eab6064612e9d603285612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612ed56064612ec7600f86612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612eff6064612ef1600a87612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f296064612f1b600a88612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f536064612f45600a89612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f7d6064612f6f60058a612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905085600a5f828254612f9091906135bc565b92505081905550612fc17f00000000000000000000000000000000000000000000000000000000000000008661265b565b612feb7f00000000000000000000000000000000000000000000000000000000000000008561265b565b6130157f00000000000000000000000000000000000000000000000000000000000000008461265b565b61303f7f00000000000000000000000000000000000000000000000000000000000000008361265b565b6130697f00000000000000000000000000000000000000000000000000000000000000008261265b565b50505050505050565b61307a61357f565b73ffffffffffffffffffffffffffffffffffffffff16613098611945565b73ffffffffffffffffffffffffffffffffffffffff16146130f7576130bb61357f565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016130ee919061362e565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836131c79190613a08565b905092915050565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600c6001600c805490506132259190613a08565b8154811061323657613235613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600c838154811061327557613274613da2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c80548061330e5761330d61432c565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167fd9bc583d1445615d8b795b7374f03ff79efa83b6359a91331efd95e4cf023ab660405160405180910390a2505050565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c8054905061348e9190613a08565b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f9894d458cf29e8bc4eb7e591bac54b31dc90125dfa852474419972ab4347dd1260405160405180910390a250565b5f818361357791906135bc565b905092915050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135c682613586565b91506135d183613586565b92508282019050808211156135e9576135e861358f565b5b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613618826135ef565b9050919050565b6136288161360e565b82525050565b5f6020820190506136415f83018461361f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561367e578082015181840152602081019050613663565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6136a382613647565b6136ad8185613651565b93506136bd818560208601613661565b6136c681613689565b840191505092915050565b5f6020820190508181035f8301526136e98184613699565b905092915050565b5f80fd5b6136fe8161360e565b8114613708575f80fd5b50565b5f81359050613719816136f5565b92915050565b61372881613586565b8114613732575f80fd5b50565b5f813590506137438161371f565b92915050565b5f806040838503121561375f5761375e6136f1565b5b5f61376c8582860161370b565b925050602061377d85828601613735565b9150509250929050565b5f8115159050919050565b61379b81613787565b82525050565b5f6020820190506137b45f830184613792565b92915050565b5f602082840312156137cf576137ce6136f1565b5b5f6137dc8482850161370b565b91505092915050565b6137ee81613586565b82525050565b5f6020820190506138075f8301846137e5565b92915050565b5f805f60608486031215613824576138236136f1565b5b5f6138318682870161370b565b93505060206138428682870161370b565b925050604061385386828701613735565b9150509250925092565b5f60208284031215613872576138716136f1565b5b5f61387f84828501613735565b91505092915050565b5f60ff82169050919050565b61389d81613888565b82525050565b5f6020820190506138b65f830184613894565b92915050565b5f80604083850312156138d2576138d16136f1565b5b5f6138df85828601613735565b92505060206138f085828601613735565b9150509250929050565b5f80604083850312156139105761390f6136f1565b5b5f61391d8582860161370b565b925050602061392e8582860161370b565b9150509250929050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f61396c601383613651565b915061397782613938565b602082019050919050565b5f6020820190508181035f83015261399981613960565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6139d4601683613651565b91506139df826139a0565b602082019050919050565b5f6020820190508181035f830152613a01816139c8565b9050919050565b5f613a1282613586565b9150613a1d83613586565b9250828203905081811115613a3557613a3461358f565b5b92915050565b7f43616e6e6f7420756e7374616b652030000000000000000000000000000000005f82015250565b5f613a6f601083613651565b9150613a7a82613a3b565b602082019050919050565b5f6020820190508181035f830152613a9c81613a63565b9050919050565b7f496e73756666696369656e74207374616b65642062616c616e636500000000005f82015250565b5f613ad7601b83613651565b9150613ae282613aa3565b602082019050919050565b5f6020820190508181035f830152613b0481613acb565b9050919050565b7f5374616b696e6720706572696f64206e6f7420636f6d706c65746564000000005f82015250565b5f613b3f601c83613651565b9150613b4a82613b0b565b602082019050919050565b5f6020820190508181035f830152613b6c81613b33565b9050919050565b5f604082019050613b865f8301856137e5565b613b9360208301846137e5565b9392505050565b7f4578636c756465642077616c6c65742063616e6e6f74207061792074617800005f82015250565b5f613bce601e83613651565b9150613bd982613b9a565b602082019050919050565b5f6020820190508181035f830152613bfb81613bc2565b9050919050565b7f496e73756666696369656e7420245320666f72206275792074617800000000005f82015250565b5f613c36601b83613651565b9150613c4182613c02565b602082019050919050565b5f6020820190508181035f830152613c6381613c2a565b9050919050565b5f604082019050613c7d5f8301856137e5565b613c8a6020830184613792565b9392505050565b7f323420686f757273206e6f7420706173736564000000000000000000000000005f82015250565b5f613cc5601383613651565b9150613cd082613c91565b602082019050919050565b5f6020820190508181035f830152613cf281613cb9565b9050919050565b7f4e6f20245320746f2064697374726962757465000000000000000000000000005f82015250565b5f613d2d601383613651565b9150613d3882613cf9565b602082019050919050565b5f6020820190508181035f830152613d5a81613d21565b9050919050565b5f613d6b82613586565b9150613d7683613586565b9250828202613d8481613586565b91508282048414831517613d9b57613d9a61358f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613dd982613586565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e0b57613e0a61358f565b5b600182019050919050565b7f5461782066656520746f6f2068696768000000000000000000000000000000005f82015250565b5f613e4a601083613651565b9150613e5582613e16565b602082019050919050565b5f6020820190508181035f830152613e7781613e3e565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f613eb2601783613651565b9150613ebd82613e7e565b602082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b7f5374616b696e6720706572696f6420746f6f2073686f727400000000000000005f82015250565b5f613f1a601883613651565b9150613f2582613ee6565b602082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f613f82600e83613651565b9150613f8d82613f4e565b602082019050919050565b5f6020820190508181035f830152613faf81613f76565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613fea601483613651565b9150613ff582613fb6565b602082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f496e73756666696369656e7420245320666f722073656c6c20746178000000005f82015250565b5f614052601c83613651565b915061405d8261401e565b602082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f417070726f76652066726f6d207a65726f2061646472657373000000000000005f82015250565b5f6140ba601983613651565b91506140c582614086565b602082019050919050565b5f6020820190508181035f8301526140e7816140ae565b9050919050565b7f417070726f766520746f207a65726f20616464726573730000000000000000005f82015250565b5f614122601783613651565b915061412d826140ee565b602082019050919050565b5f6020820190508181035f83015261414f81614116565b9050919050565b7f5472616e736665722066726f6d207a65726f20616464726573730000000000005f82015250565b5f61418a601a83613651565b915061419582614156565b602082019050919050565b5f6020820190508181035f8301526141b78161417e565b9050919050565b7f5472616e7366657220746f207a65726f206164647265737300000000000000005f82015250565b5f6141f2601883613651565b91506141fd826141be565b602082019050919050565b5f6020820190508181035f83015261421f816141e6565b9050919050565b5f81905092915050565b50565b5f61423e5f83614226565b915061424982614230565b5f82019050919050565b5f61425d82614233565b9150819050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f61429b600f83613651565b91506142a682614267565b602082019050919050565b5f6020820190508181035f8301526142c88161428f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61430682613586565b915061431183613586565b925082614321576143206142cf565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220b6196d3428a529b45aa87d32f7e08b36a89a86454c76344acff7bb1a104cf49b64736f6c63430008140033000000000000000000000000ea0a641825b3c46a6904dc8164638048d7303789000000000000000000000000c634e944c48c058c05e39c6479e229bd835ae502000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f40000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f40

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c8063817b1cd21161018f578063b0cd9cff116100db578063d469801611610094578063e9bbb0401161006e578063e9bbb04014610b37578063f2fde38b14610b73578063f42c0f0214610b9b578063f8a25a9414610bc557610305565b8063d469801614610a95578063d4d7b19a14610abf578063dd62ed3e14610afb57610305565b8063b0cd9cff14610983578063c03d5b47146109ad578063c04a5414146109d7578063c54705a014610a01578063cba0e99614610a1d578063d123273014610a5957610305565b8063941fa5cd11610148578063a51c9ace11610122578063a51c9ace146108b9578063a694fc3a146108e3578063a8bbfd3a1461090b578063a9059cbb1461094757610305565b8063941fa5cd1461083d578063957d77801461086757806395d89b411461088f57610305565b8063817b1cd21461075557806389c3d5081461077f5780638a8c523c146107a95780638da5cb5b146107bf5780639335dcb7146107e957806393b998fb1461081357610305565b806343270d561161024e5780636a96204e116102075780637136982b116101e15780637136982b146106c3578063715018a6146106ed57806375f0a8741461070357806381230a831461072d57610305565b80636a96204e146106555780636f4a2cd01461067157806370a082311461068757610305565b806343270d56146105595780634ada218b14610583578063565e5db3146105ad5780635dbdda69146105d757806366666aa9146106015780636a1c6e781461062b57610305565b806322693d93116102a057806322693d931461042957806323b872dd146104535780632a11ced01461048f5780632e164fe6146104cb5780632e17de7814610507578063313ce5671461052f57610305565b8063062287491461030957806306fdde0314610333578063095ea7b31461035d5780631460fa871461039957806318160ddd146103d55780632048c9e1146103ff57610305565b366103055734600a5f8282546102fd91906135bc565b925050819055005b5f80fd5b348015610314575f80fd5b5061031d610bef565b60405161032a919061362e565b60405180910390f35b34801561033e575f80fd5b50610347610c13565b60405161035491906136d1565b60405180910390f35b348015610368575f80fd5b50610383600480360381019061037e9190613749565b610c4c565b60405161039091906137a1565b60405180910390f35b3480156103a4575f80fd5b506103bf60048036038101906103ba91906137ba565b610c62565b6040516103cc91906137f4565b60405180910390f35b3480156103e0575f80fd5b506103e9610c77565b6040516103f691906137f4565b60405180910390f35b34801561040a575f80fd5b50610413610c86565b60405161042091906137f4565b60405180910390f35b348015610434575f80fd5b5061043d610c8b565b60405161044a91906137f4565b60405180910390f35b34801561045e575f80fd5b506104796004803603810190610474919061380d565b610c91565b60405161048691906137a1565b60405180910390f35b34801561049a575f80fd5b506104b560048036038101906104b0919061385d565b610e09565b6040516104c2919061362e565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec91906137ba565b610e44565b6040516104fe91906137f4565b60405180910390f35b348015610512575f80fd5b5061052d6004803603810190610528919061385d565b610e59565b005b34801561053a575f80fd5b506105436112a6565b60405161055091906138a3565b60405180910390f35b348015610564575f80fd5b5061056d6112ab565b60405161057a91906137f4565b60405180910390f35b34801561058e575f80fd5b506105976112b0565b6040516105a491906137a1565b60405180910390f35b3480156105b8575f80fd5b506105c16112c2565b6040516105ce91906137f4565b60405180910390f35b3480156105e2575f80fd5b506105eb6112c7565b6040516105f891906137f4565b60405180910390f35b34801561060c575f80fd5b506106156112ce565b60405161062291906137f4565b60405180910390f35b348015610636575f80fd5b5061063f6112d4565b60405161064c91906137f4565b60405180910390f35b61066f600480360381019061066a919061385d565b6112d9565b005b34801561067c575f80fd5b506106856113ee565b005b348015610692575f80fd5b506106ad60048036038101906106a891906137ba565b6117a7565b6040516106ba91906137f4565b60405180910390f35b3480156106ce575f80fd5b506106d76117ed565b6040516106e491906137f4565b60405180910390f35b3480156106f8575f80fd5b506107016117f9565b005b34801561070e575f80fd5b5061071761180c565b604051610724919061362e565b60405180910390f35b348015610738575f80fd5b50610753600480360381019061074e91906138bc565b611830565b005b348015610760575f80fd5b5061076961189b565b60405161077691906137f4565b60405180910390f35b34801561078a575f80fd5b506107936118a1565b6040516107a091906137f4565b60405180910390f35b3480156107b4575f80fd5b506107bd6118a6565b005b3480156107ca575f80fd5b506107d3611945565b6040516107e0919061362e565b60405180910390f35b3480156107f4575f80fd5b506107fd61196c565b60405161080a919061362e565b60405180910390f35b34801561081e575f80fd5b50610827611990565b60405161083491906137f4565b60405180910390f35b348015610848575f80fd5b50610851611995565b60405161085e91906137f4565b60405180910390f35b348015610872575f80fd5b5061088d6004803603810190610888919061385d565b61199b565b005b34801561089a575f80fd5b506108a36119f3565b6040516108b091906136d1565b60405180910390f35b3480156108c4575f80fd5b506108cd611a2c565b6040516108da91906137f4565b60405180910390f35b3480156108ee575f80fd5b506109096004803603810190610904919061385d565b611a31565b005b348015610916575f80fd5b50610931600480360381019061092c91906137ba565b611ccc565b60405161093e91906137f4565b60405180910390f35b348015610952575f80fd5b5061096d60048036038101906109689190613749565b611d12565b60405161097a91906137a1565b60405180910390f35b34801561098e575f80fd5b50610997611db3565b6040516109a491906137f4565b60405180910390f35b3480156109b8575f80fd5b506109c1611db9565b6040516109ce91906137f4565b60405180910390f35b3480156109e2575f80fd5b506109eb611dbf565b6040516109f8919061362e565b60405180910390f35b610a1b6004803603810190610a16919061385d565b611de3565b005b348015610a28575f80fd5b50610a436004803603810190610a3e91906137ba565b611ef7565b604051610a5091906137a1565b60405180910390f35b348015610a64575f80fd5b50610a7f6004803603810190610a7a91906137ba565b6120a6565b604051610a8c91906137f4565b60405180910390f35b348015610aa0575f80fd5b50610aa96120bb565b604051610ab6919061362e565b60405180910390f35b348015610aca575f80fd5b50610ae56004803603810190610ae091906137ba565b6120df565b604051610af291906137a1565b60405180910390f35b348015610b06575f80fd5b50610b216004803603810190610b1c91906138fa565b6120fc565b604051610b2e91906137f4565b60405180910390f35b348015610b42575f80fd5b50610b5d6004803603810190610b5891906137ba565b61217e565b604051610b6a91906137f4565b60405180910390f35b348015610b7e575f80fd5b50610b996004803603810190610b9491906137ba565b612193565b005b348015610ba6575f80fd5b50610baf612217565b604051610bbc91906137f4565b60405180910390f35b348015610bd0575f80fd5b50610bd961221c565b604051610be691906137f4565b60405180910390f35b7f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f4081565b6040518060400160405280601581526020017f496e66696e69746520536f6e696320476c69746368000000000000000000000081525081565b5f610c58338484612222565b6001905092915050565b6005602052805f5260405f205f915090505481565b6a52b7d2dcc80cd2e400000081565b600a81565b600f5481565b5f60105f9054906101000a900460ff1680610cde5750610caf611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1490613982565b60405180910390fd5b610d288484846123e5565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906139ea565b60405180910390fd5b610dfd85338584610df89190613a08565b612222565b60019150509392505050565b600c8181548110610e18575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052805f5260405f205f915090505481565b5f8111610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290613a85565b60405180910390fd5b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613aed565b60405180910390fd5b60095460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f6691906135bc565b421015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613b55565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110359190613a08565b925050819055508160085f82825461104d9190613a08565b925050819055505f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361111d575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461116991906135bc565b925050819055505f81118015611185575061118333611ef7565b155b156111e357611194338261265b565b3373ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6826040516111da91906137f4565b60405180910390a25b6111ed3330612708565b3373ffffffffffffffffffffffffffffffffffffffff167f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e8383604051611235929190613b73565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161129a91906137f4565b60405180910390a35050565b601281565b600a81565b60105f9054906101000a900460ff1681565b603281565b6201518081565b600a5481565b600581565b6112e233611ef7565b15611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990613be4565b60405180910390fd5b5f61134b606461133d60035485612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905080341015611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790613c4c565b60405180910390fd5b61139934612e83565b3373ffffffffffffffffffffffffffffffffffffffff167fee32cb2307349beabd02d4eb3bcf8bc239d05d6f856e440036dafd1c94323a1a3460016040516113e2929190613c6a565b60405180910390a25050565b62015180600b546113ff91906135bc565b421015611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613cdb565b60405180910390fd5b5f600a5411611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90613d43565b60405180910390fd5b5f600a5490505f600260085461149b9190613d61565b600f546114a891906135bc565b90505f81036114bf5742600b8190555050506117a5565b5f5b600c8054905081101561161c575f600c82815481106114e3576114e2613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115611607575f61157c8561156e8885612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f8111801561158f575080600a5410155b156116055780600a5f8282546115a59190613a08565b925050819055506115b6838261265b565b8273ffffffffffffffffffffffffffffffffffffffff167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6826040516115fc91906137f4565b60405180910390a25b505b5050808061161490613dcf565b9150506114c1565b505f5b600c8054905081101561179a575f600c828154811061164157611640613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811180156116c157506116bf82611ef7565b155b15611785575f6116ff856116f1886116e3600287612e5990919063ffffffff16565b612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f81118015611712575080600a5410155b156117835780600a5f8282546117289190613a08565b925050819055508060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461177b91906135bc565b925050819055505b505b5050808061179290613dcf565b91505061161f565b5042600b8190555050505b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600c80549050905090565b611801613072565b61180a5f6130f9565b565b7f000000000000000000000000ea0a641825b3c46a6904dc8164638048d730378981565b611838613072565b600a821115801561184a5750600a8111155b611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613e60565b60405180910390fd5b81600381905550806004819055505050565b60085481565b600281565b6118ae613072565b60105f9054906101000a900460ff16156118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613ec8565b60405180910390fd5b600160105f6101000a81548160ff0219169083151502179055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000ca6fb7fb777d65882a3155d2527ddd97c12fd91d81565b600a81565b60035481565b6119a3613072565b620151808110156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613f30565b60405180910390fd5b8060098190555050565b6040518060400160405280600381526020017f495347000000000000000000000000000000000000000000000000000000000081525081565b606481565b60105f9054906101000a900460ff1680611a7d5750611a4e611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613982565b60405180910390fd5b5f8111611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613f98565b60405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590614000565b60405180910390fd5b611b893330836123e5565b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bd591906135bc565b925050819055508060085f828254611bed91906135bc565b925050819055505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403611c7b574260065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b3373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d82604051611cc191906137f4565b60405180910390a250565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60105f9054906101000a900460ff1680611d5f5750611d30611945565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613982565b60405180910390fd5b611da93384846123e5565b6001905092915050565b600b5481565b60095481565b7f000000000000000000000000c634e944c48c058c05e39c6479e229bd835ae50281565b611dec33611ef7565b15611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613be4565b60405180910390fd5b5f611e556064611e4760045485612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905080341015611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190614068565b60405180910390fd5b611ea334612e83565b3373ffffffffffffffffffffffffffffffffffffffff167fee32cb2307349beabd02d4eb3bcf8bc239d05d6f856e440036dafd1c94323a1a345f604051611eeb929190613c6a565b60405180910390a25050565b5f7f000000000000000000000000ea0a641825b3c46a6904dc8164638048d730378973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611f9d57507f000000000000000000000000c634e944c48c058c05e39c6479e229bd835ae50273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ff357507f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f4073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061204957507f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f4073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061209f57507f000000000000000000000000ca6fb7fb777d65882a3155d2527ddd97c12fd91d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6006602052805f5260405f205f915090505481565b7f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f4081565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d602052805f5260405f205f915090505481565b61219b613072565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361220b575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612202919061362e565b60405180910390fd5b612214816130f9565b50565b600f81565b60045481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612287906140d0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614138565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123d891906137f4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a906141a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614208565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253890614000565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461258d9190613a08565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125e091906135bc565b925050819055506125f18383612708565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161264e91906137f4565b60405180910390a3505050565b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161268090614253565b5f6040518083038185875af1925050503d805f81146126ba576040519150601f19603f3d011682016040523d82523d5f602084013e6126bf565b606091505b5050905080612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906142b1565b60405180910390fd5b505050565b5f61271283611ef7565b90505f61271e83611ef7565b905081612b3e575f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811480156127b157505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b80156128035750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561286e5761285a60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612869856131cf565b612b3c565b5f811180156128c45750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561290c57505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b1561293a5761291a8561341c565b61292f81600f5461356a90919063ffffffff16565b600f81905550612b3b565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129cc57505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612a4057612a3581612a2760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b61356a90919063ffffffff16565b600f81905550612b3a565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ad257505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612b3957612b2960015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612b38856131cf565b5b5b5b5b505b80612e53575f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81118015612bda5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c2257505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612c5057612c308461341c565b612c4581600f5461356a90919063ffffffff16565b600f81905550612e51565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ce257505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15612d5657612d4b81612d3d60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b61356a90919063ffffffff16565b600f81905550612e50565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612de857505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612e4f57612e3f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600f546131ba90919063ffffffff16565b600f81905550612e4e846131cf565b5b5b5b505b50505050565b5f8183612e669190613d61565b905092915050565b5f8183612e7b91906142fc565b905092915050565b5f612eab6064612e9d603285612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612ed56064612ec7600f86612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612eff6064612ef1600a87612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f296064612f1b600a88612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f536064612f45600a89612e5990919063ffffffff16565b612e6e90919063ffffffff16565b90505f612f7d6064612f6f60058a612e5990919063ffffffff16565b612e6e90919063ffffffff16565b905085600a5f828254612f9091906135bc565b92505081905550612fc17f000000000000000000000000ea0a641825b3c46a6904dc8164638048d73037898661265b565b612feb7f000000000000000000000000c634e944c48c058c05e39c6479e229bd835ae5028561265b565b6130157f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f408461265b565b61303f7f000000000000000000000000ab359f1ed47f5989714fd88bf05a6e5665f99f408361265b565b6130697f000000000000000000000000ca6fb7fb777d65882a3155d2527ddd97c12fd91d8261265b565b50505050505050565b61307a61357f565b73ffffffffffffffffffffffffffffffffffffffff16613098611945565b73ffffffffffffffffffffffffffffffffffffffff16146130f7576130bb61357f565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016130ee919061362e565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81836131c79190613a08565b905092915050565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600c6001600c805490506132259190613a08565b8154811061323657613235613da2565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600c838154811061327557613274613da2565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c80548061330e5761330d61432c565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167fd9bc583d1445615d8b795b7374f03ff79efa83b6359a91331efd95e4cf023ab660405160405180910390a2505050565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c8054905061348e9190613a08565b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f9894d458cf29e8bc4eb7e591bac54b31dc90125dfa852474419972ab4347dd1260405160405180910390a250565b5f818361357791906135bc565b905092915050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135c682613586565b91506135d183613586565b92508282019050808211156135e9576135e861358f565b5b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613618826135ef565b9050919050565b6136288161360e565b82525050565b5f6020820190506136415f83018461361f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561367e578082015181840152602081019050613663565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6136a382613647565b6136ad8185613651565b93506136bd818560208601613661565b6136c681613689565b840191505092915050565b5f6020820190508181035f8301526136e98184613699565b905092915050565b5f80fd5b6136fe8161360e565b8114613708575f80fd5b50565b5f81359050613719816136f5565b92915050565b61372881613586565b8114613732575f80fd5b50565b5f813590506137438161371f565b92915050565b5f806040838503121561375f5761375e6136f1565b5b5f61376c8582860161370b565b925050602061377d85828601613735565b9150509250929050565b5f8115159050919050565b61379b81613787565b82525050565b5f6020820190506137b45f830184613792565b92915050565b5f602082840312156137cf576137ce6136f1565b5b5f6137dc8482850161370b565b91505092915050565b6137ee81613586565b82525050565b5f6020820190506138075f8301846137e5565b92915050565b5f805f60608486031215613824576138236136f1565b5b5f6138318682870161370b565b93505060206138428682870161370b565b925050604061385386828701613735565b9150509250925092565b5f60208284031215613872576138716136f1565b5b5f61387f84828501613735565b91505092915050565b5f60ff82169050919050565b61389d81613888565b82525050565b5f6020820190506138b65f830184613894565b92915050565b5f80604083850312156138d2576138d16136f1565b5b5f6138df85828601613735565b92505060206138f085828601613735565b9150509250929050565b5f80604083850312156139105761390f6136f1565b5b5f61391d8582860161370b565b925050602061392e8582860161370b565b9150509250929050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f61396c601383613651565b915061397782613938565b602082019050919050565b5f6020820190508181035f83015261399981613960565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6139d4601683613651565b91506139df826139a0565b602082019050919050565b5f6020820190508181035f830152613a01816139c8565b9050919050565b5f613a1282613586565b9150613a1d83613586565b9250828203905081811115613a3557613a3461358f565b5b92915050565b7f43616e6e6f7420756e7374616b652030000000000000000000000000000000005f82015250565b5f613a6f601083613651565b9150613a7a82613a3b565b602082019050919050565b5f6020820190508181035f830152613a9c81613a63565b9050919050565b7f496e73756666696369656e74207374616b65642062616c616e636500000000005f82015250565b5f613ad7601b83613651565b9150613ae282613aa3565b602082019050919050565b5f6020820190508181035f830152613b0481613acb565b9050919050565b7f5374616b696e6720706572696f64206e6f7420636f6d706c65746564000000005f82015250565b5f613b3f601c83613651565b9150613b4a82613b0b565b602082019050919050565b5f6020820190508181035f830152613b6c81613b33565b9050919050565b5f604082019050613b865f8301856137e5565b613b9360208301846137e5565b9392505050565b7f4578636c756465642077616c6c65742063616e6e6f74207061792074617800005f82015250565b5f613bce601e83613651565b9150613bd982613b9a565b602082019050919050565b5f6020820190508181035f830152613bfb81613bc2565b9050919050565b7f496e73756666696369656e7420245320666f72206275792074617800000000005f82015250565b5f613c36601b83613651565b9150613c4182613c02565b602082019050919050565b5f6020820190508181035f830152613c6381613c2a565b9050919050565b5f604082019050613c7d5f8301856137e5565b613c8a6020830184613792565b9392505050565b7f323420686f757273206e6f7420706173736564000000000000000000000000005f82015250565b5f613cc5601383613651565b9150613cd082613c91565b602082019050919050565b5f6020820190508181035f830152613cf281613cb9565b9050919050565b7f4e6f20245320746f2064697374726962757465000000000000000000000000005f82015250565b5f613d2d601383613651565b9150613d3882613cf9565b602082019050919050565b5f6020820190508181035f830152613d5a81613d21565b9050919050565b5f613d6b82613586565b9150613d7683613586565b9250828202613d8481613586565b91508282048414831517613d9b57613d9a61358f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613dd982613586565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e0b57613e0a61358f565b5b600182019050919050565b7f5461782066656520746f6f2068696768000000000000000000000000000000005f82015250565b5f613e4a601083613651565b9150613e5582613e16565b602082019050919050565b5f6020820190508181035f830152613e7781613e3e565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f613eb2601783613651565b9150613ebd82613e7e565b602082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b7f5374616b696e6720706572696f6420746f6f2073686f727400000000000000005f82015250565b5f613f1a601883613651565b9150613f2582613ee6565b602082019050919050565b5f6020820190508181035f830152613f4781613f0e565b9050919050565b7f43616e6e6f74207374616b6520300000000000000000000000000000000000005f82015250565b5f613f82600e83613651565b9150613f8d82613f4e565b602082019050919050565b5f6020820190508181035f830152613faf81613f76565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613fea601483613651565b9150613ff582613fb6565b602082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f496e73756666696369656e7420245320666f722073656c6c20746178000000005f82015250565b5f614052601c83613651565b915061405d8261401e565b602082019050919050565b5f6020820190508181035f83015261407f81614046565b9050919050565b7f417070726f76652066726f6d207a65726f2061646472657373000000000000005f82015250565b5f6140ba601983613651565b91506140c582614086565b602082019050919050565b5f6020820190508181035f8301526140e7816140ae565b9050919050565b7f417070726f766520746f207a65726f20616464726573730000000000000000005f82015250565b5f614122601783613651565b915061412d826140ee565b602082019050919050565b5f6020820190508181035f83015261414f81614116565b9050919050565b7f5472616e736665722066726f6d207a65726f20616464726573730000000000005f82015250565b5f61418a601a83613651565b915061419582614156565b602082019050919050565b5f6020820190508181035f8301526141b78161417e565b9050919050565b7f5472616e7366657220746f207a65726f206164647265737300000000000000005f82015250565b5f6141f2601883613651565b91506141fd826141be565b602082019050919050565b5f6020820190508181035f83015261421f816141e6565b9050919050565b5f81905092915050565b50565b5f61423e5f83614226565b915061424982614230565b5f82019050919050565b5f61425d82614233565b9150819050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f61429b600f83613651565b91506142a682614267565b602082019050919050565b5f6020820190508181035f8301526142c88161428f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61430682613586565b915061431183613586565b925082614321576143206142cf565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220b6196d3428a529b45aa87d32f7e08b36a89a86454c76344acff7bb1a104cf49b64736f6c63430008140033

Deployed Bytecode Sourcemap

11206:15117:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26001:9;25987:10;;:23;;;;;;;:::i;:::-;;;;;;;;11206:15117;;;;12023:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11288:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15536:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12470:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11434:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12246:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13220:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15696:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13089:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12584:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22231:1026;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11392:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12299:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13334:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12147:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12968:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12869:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12396:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20027:386;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23293:1817;;;;;;;;;;;;;:::i;:::-;;15168:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26026:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:103;;;;;;;;;;;;;:::i;:::-;;11880:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25531:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12691:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12768:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25345:178;;;;;;;;;;;;;:::i;:::-;;2686:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12065:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12350:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11677:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25766:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11348:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11802:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21696:527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26173:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12924:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12724;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11927:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20421:390;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17185:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12526:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11976:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16167:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13120:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3619:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12195:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11739:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12023:35;;;:::o;11288:53::-;;;;;;;;;;;;;;;;;;;:::o;15536:152::-;15604:4;15621:37;15630:10;15642:7;15651:6;15621:8;:37::i;:::-;15676:4;15669:11;;15536:152;;;;:::o;12470:49::-;;;;;;;;;;;;;;;;;:::o;11434:58::-;11472:20;11434:58;:::o;12246:46::-;12290:2;12246:46;:::o;13220:34::-;;;;:::o;15696:463::-;15787:4;15812:14;;;;;;;;;;;:39;;;;15844:7;:5;:7::i;:::-;15830:21;;:10;:21;;;15812:39;15804:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15886:36;15896:6;15904:9;15915:6;15886:9;:36::i;:::-;15933:24;15960:11;:19;15972:6;15960:19;;;;;;;;;;;;;;;:31;15980:10;15960:31;;;;;;;;;;;;;;;;15933:58;;16030:6;16010:16;:26;;16002:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16074:55;16083:6;16091:10;16122:6;16103:16;:25;;;;:::i;:::-;16074:8;:55::i;:::-;16147:4;16140:11;;;15696:463;;;;;:::o;13089:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12584:60::-;;;;;;;;;;;;;;;;;:::o;22231:1026::-;22301:1;22292:6;:10;22284:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;22372:6;22342:14;:26;22357:10;22342:26;;;;;;;;;;;;;;;;:36;;22334:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:13;;22448:16;:28;22465:10;22448:28;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;22429:15;:63;;22421:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22538:14;22555:25;:37;22581:10;22555:37;;;;;;;;;;;;;;;;22538:54;;22633:6;22603:14;:26;22618:10;22603:26;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;22665:6;22650:11;;:21;;;;;;;:::i;:::-;;;;;;;;22716:1;22686:14;:26;22701:10;22686:26;;;;;;;;;;;;;;;;:31;22682:187;;22765:1;22734:16;:28;22751:10;22734:28;;;;;;;;;;;;;;;:32;;;;22821:1;22781:25;:37;22807:10;22781:37;;;;;;;;;;;;;;;:41;;;;22682:187;22904:6;22879:9;:21;22889:10;22879:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;22936:1;22927:6;:10;:37;;;;;22942:22;22953:10;22942;:22::i;:::-;22941:23;22927:37;22923:160;;;22981:33;22995:10;23007:6;22981:13;:33::i;:::-;23052:10;23034:37;;;23064:6;23034:37;;;;;;:::i;:::-;;;;;;;;22923:160;23095:43;23112:10;23132:4;23095:16;:43::i;:::-;23163:10;23154:36;;;23175:6;23183;23154:36;;;;;;;:::i;:::-;;;;;;;;23230:10;23206:43;;23223:4;23206:43;;;23242:6;23206:43;;;;;;:::i;:::-;;;;;;;;22273:984;22231:1026;:::o;11392:35::-;11425:2;11392:35;:::o;12299:44::-;12341:2;12299:44;:::o;13334:26::-;;;;;;;;;;;;;:::o;12147:41::-;12186:2;12147:41;:::o;12968:50::-;13010:8;12968:50;:::o;12869:25::-;;;;:::o;12396:39::-;12434:1;12396:39;:::o;20027:386::-;20106:22;20117:10;20106;:22::i;:::-;20105:23;20097:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20174:17;20194:45;11844:3;20194:24;20208:9;;20194;:13;;:24;;;;:::i;:::-;:28;;:45;;;;:::i;:::-;20174:65;;20271:9;20258;:22;;20250:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20323:25;20338:9;20323:14;:25::i;:::-;20377:10;20364:41;;;20389:9;20400:4;20364:41;;;;;;;:::i;:::-;;;;;;;;20086:327;20027:386;:::o;23293:1817::-;13010:8;23369:22;;:40;;;;:::i;:::-;23350:15;:59;;23342:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;23465:1;23452:10;;:14;23444:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23503:19;23525:10;;23503:32;;23546:27;12808:1;23599:11;;:27;;;;:::i;:::-;23576:19;;:51;;;;:::i;:::-;23546:81;;23692:1;23669:19;:24;23665:152;;23735:15;23710:22;:40;;;;23765:7;;;;23665:152;23879:9;23874:551;23898:7;:14;;;;23894:1;:18;23874:551;;;23934:14;23951:7;23959:1;23951:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23934:27;;23976:15;23994:9;:17;24004:6;23994:17;;;;;;;;;;;;;;;;23976:35;;24040:1;24030:7;:11;24026:388;;;24062:20;24085:49;24114:19;24085:24;24097:11;24085:7;:11;;:24;;;;:::i;:::-;:28;;:49;;;;:::i;:::-;24062:72;;24172:1;24157:12;:16;:46;;;;;24191:12;24177:10;;:26;;24157:46;24153:246;;;24242:12;24228:10;;:26;;;;;;;:::i;:::-;;;;;;;;24277:35;24291:6;24299:12;24277:13;:35::i;:::-;24358:6;24340:39;;;24366:12;24340:39;;;;;;:::i;:::-;;;;;;;;24153:246;24043:371;24026:388;23919:506;;23914:3;;;;;:::i;:::-;;;;23874:551;;;;24492:9;24487:563;24511:7;:14;;;;24507:1;:18;24487:563;;;24547:14;24564:7;24572:1;24564:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24547:27;;24589:21;24613:14;:22;24628:6;24613:22;;;;;;;;;;;;;;;;24589:46;;24670:1;24654:13;:17;:40;;;;;24676:18;24687:6;24676:10;:18::i;:::-;24675:19;24654:40;24650:389;;;24715:20;24738:74;24792:19;24738:49;24775:11;24738:32;12808:1;24738:13;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;:53;;:74;;;;:::i;:::-;24715:97;;24850:1;24835:12;:16;:46;;;;;24869:12;24855:10;;:26;;24835:46;24831:193;;;24920:12;24906:10;;:26;;;;;;;:::i;:::-;;;;;;;;24992:12;24955:25;:33;24981:6;24955:33;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;24831:193;24696:343;24650:389;24532:518;;24527:3;;;;;:::i;:::-;;;;24487:563;;;;25087:15;25062:22;:40;;;;23331:1779;;23293:1817;:::o;15168:112::-;15227:7;15254:9;:18;15264:7;15254:18;;;;;;;;;;;;;;;;15247:25;;15168:112;;;:::o;26026:98::-;26075:7;26102;:14;;;;26095:21;;26026:98;:::o;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;11880:40::-;;;:::o;25531:227::-;2572:13;:11;:13::i;:::-;25641:2:::1;25628:9;:15;;:35;;;;;25661:2;25647:10;:16;;25628:35;25620:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25707:9;25695;:21;;;;25740:10;25727;:23;;;;25531:227:::0;;:::o;12691:26::-;;;;:::o;12768:41::-;12808:1;12768:41;:::o;25345:178::-;2572:13;:11;:13::i;:::-;25409:14:::1;;;;;;;;;;;25408:15;25400:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25479:4;25462:14;;:21;;;;;;;;;;;;;;;;;;25499:16;;;;;;;;;;25345:178::o:0;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;12065:36::-;;;:::o;12350:39::-;12387:2;12350:39;:::o;11677:28::-;;;;:::o;25766:175::-;2572:13;:11;:13::i;:::-;25862:6:::1;25849:9;:19;;25841:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;25924:9;25908:13;:25;;;;25766:175:::0;:::o;11348:37::-;;;;;;;;;;;;;;;;;;;:::o;11802:45::-;11844:3;11802:45;:::o;21696:527::-;21755:14;;;;;;;;;;;:39;;;;21787:7;:5;:7::i;:::-;21773:21;;:10;:21;;;21755:39;21747:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21846:1;21837:6;:10;21829:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;21910:6;21885:9;:21;21895:10;21885:21;;;;;;;;;;;;;;;;:31;;21877:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21954:44;21964:10;21984:4;21991:6;21954:9;:44::i;:::-;22039:6;22009:14;:26;22024:10;22009:26;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;22071:6;22056:11;;:21;;;;;;;:::i;:::-;;;;;;;;22124:1;22092:16;:28;22109:10;22092:28;;;;;;;;;;;;;;;;:33;22088:85;;22158:15;22127:16;:28;22144:10;22127:28;;;;;;;;;;;;;;;:46;;;;22088:85;22196:10;22189:26;;;22208:6;22189:26;;;;;;:::i;:::-;;;;;;;;21696:527;:::o;26173:147::-;26251:7;26278:25;:34;26304:7;26278:34;;;;;;;;;;;;;;;;26271:41;;26173:147;;;:::o;15288:240::-;15359:4;15384:14;;;;;;;;;;;:39;;;;15416:7;:5;:7::i;:::-;15402:21;;:10;:21;;;15384:39;15376:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15458:40;15468:10;15480:9;15491:6;15458:9;:40::i;:::-;15516:4;15509:11;;15288:240;;;;:::o;12924:37::-;;;;:::o;12724:::-;;;;:::o;11927:42::-;;;:::o;20421:390::-;20501:22;20512:10;20501;:22::i;:::-;20500:23;20492:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20569:17;20589:46;11844:3;20589:25;20603:10;;20589:9;:13;;:25;;;;:::i;:::-;:29;;:46;;;;:::i;:::-;20569:66;;20667:9;20654;:22;;20646:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20720:25;20735:9;20720:14;:25::i;:::-;20774:10;20761:42;;;20786:9;20797:5;20761:42;;;;;;;:::i;:::-;;;;;;;;20481:330;20421:390;:::o;17185:293::-;17243:4;17278:15;17267:26;;:7;:26;;;:74;;;;17324:17;17313:28;;:7;:28;;;17267:74;:120;;;;17372:15;17361:26;;:7;:26;;;17267:120;:161;;;;17418:10;17407:21;;:7;:21;;;17267:161;:203;;;;17459:11;17448:22;;:7;:22;;;17267:203;17260:210;;17185:293;;;:::o;12526:51::-;;;;;;;;;;;;;;;;;:::o;11976:40::-;;;:::o;13173:::-;;;;;;;;;;;;;;;;;;;;;;:::o;16167:136::-;16241:7;16268:11;:18;16280:5;16268:18;;;;;;;;;;;;;;;:27;16287:7;16268:27;;;;;;;;;;;;;;;;16261:34;;16167:136;;;;:::o;13120:46::-;;;;;;;;;;;;;;;;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;12195:44::-;12237:2;12195:44;:::o;11739:29::-;;;;:::o;16800:314::-;16911:1;16894:19;;:5;:19;;;16886:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;16981:1;16962:21;;:7;:21;;;16954:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;17052:6;17022:11;:18;17034:5;17022:18;;;;;;;;;;;;;;;:27;17041:7;17022:27;;;;;;;;;;;;;;;:36;;;;17090:7;17074:32;;17083:5;17074:32;;;17099:6;17074:32;;;;;;:::i;:::-;;;;;;;;16800:314;;;:::o;16311:481::-;16427:1;16409:20;;:6;:20;;;16401:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16500:1;16479:23;;:9;:23;;;16471:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16571:6;16550:9;:17;16560:6;16550:17;;;;;;;;;;;;;;;;:27;;16542:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16636:6;16615:9;:17;16625:6;16615:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;16677:6;16653:9;:20;16663:9;16653:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;16696:35;16713:6;16721:9;16696:16;:35::i;:::-;16766:9;16749:35;;16758:6;16749:35;;;16777:6;16749:35;;;;;;:::i;:::-;;;;;;;;16311:481;;;:::o;25143:170::-;25215:12;25233:2;:7;;25248:6;25233:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25214:45;;;25278:7;25270:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;25203:110;25143:170;;:::o;17563:1841::-;17644:19;17666:18;17677:6;17666:10;:18::i;:::-;17644:40;;17695:22;17720:21;17731:9;17720:10;:21::i;:::-;17695:46;;17759:14;17754:901;;17790:21;17814:9;:17;17824:6;17814:17;;;;;;;;;;;;;;;;17790:41;;17867:1;17850:13;:18;:49;;;;;17898:1;17872:14;:22;17887:6;17872:22;;;;;;;;;;;;;;;;:27;17850:49;:69;;;;;17903:8;:16;17912:6;17903:16;;;;;;;;;;;;;;;;;;;;;;;;;17850:69;17846:798;;;17962:42;17986:9;:17;17996:6;17986:17;;;;;;;;;;;;;;;;17962:19;;:23;;:42;;;;:::i;:::-;17940:19;:64;;;;18023:20;18036:6;18023:12;:20::i;:::-;17846:798;;;18085:1;18069:13;:17;:38;;;;;18091:8;:16;18100:6;18091:16;;;;;;;;;;;;;;;;;;;;;;;;;18090:17;18069:38;:69;;;;;18137:1;18111:14;:22;18126:6;18111:22;;;;;;;;;;;;;;;;:27;18069:69;18065:579;;;18159:17;18169:6;18159:9;:17::i;:::-;18217:38;18241:13;18217:19;;:23;;:38;;;;:::i;:::-;18195:19;:60;;;;18065:579;;;18281:8;:16;18290:6;18281:16;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;18327:1;18301:14;:22;18316:6;18301:22;;;;;;;;;;;;;;;;:27;18281:47;18277:367;;;18371:61;18418:13;18371:42;18395:9;:17;18405:6;18395:17;;;;;;;;;;;;;;;;18371:19;;:23;;:42;;;;:::i;:::-;:46;;:61;;;;:::i;:::-;18349:19;:83;;;;18277:367;;;18458:8;:16;18467:6;18458:16;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;18503:1;18478:14;:22;18493:6;18478:22;;;;;;;;;;;;;;;;:26;18458:46;18454:190;;;18547:42;18571:9;:17;18581:6;18571:17;;;;;;;;;;;;;;;;18547:19;;:23;;:42;;;;:::i;:::-;18525:19;:64;;;;18608:20;18621:6;18608:12;:20::i;:::-;18454:190;18277:367;18065:579;17846:798;17775:880;17754:901;18672:17;18667:730;;18706:24;18733:9;:20;18743:9;18733:20;;;;;;;;;;;;;;;;18706:47;;18791:1;18772:16;:20;:44;;;;;18797:8;:19;18806:9;18797:19;;;;;;;;;;;;;;;;;;;;;;;;;18796:20;18772:44;:78;;;;;18849:1;18820:14;:25;18835:9;18820:25;;;;;;;;;;;;;;;;:30;18772:78;18768:618;;;18871:20;18881:9;18871;:20::i;:::-;18932:41;18956:16;18932:19;;:23;;:41;;;;:::i;:::-;18910:19;:63;;;;18768:618;;;18999:8;:19;19008:9;18999:19;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;19051:1;19022:14;:25;19037:9;19022:25;;;;;;;;;;;;;;;;:30;18999:53;18995:391;;;19095:67;19145:16;19095:45;19119:9;:20;19129:9;19119:20;;;;;;;;;;;;;;;;19095:19;;:23;;:45;;;;:::i;:::-;:49;;:67;;;;:::i;:::-;19073:19;:89;;;;18995:391;;;19188:8;:19;19197:9;19188:19;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;19239:1;19211:14;:25;19226:9;19211:25;;;;;;;;;;;;;;;;:29;19188:52;19184:202;;;19283:45;19307:9;:20;19317:9;19307:20;;;;;;;;;;;;;;;;19283:19;;:23;;:45;;;;:::i;:::-;19261:19;:67;;;;19347:23;19360:9;19347:12;:23::i;:::-;19184:202;18995:391;18768:618;18691:706;18667:730;17633:1771;;17563:1841;;:::o;7811:98::-;7869:7;7900:1;7896;:5;;;;:::i;:::-;7889:12;;7811:98;;;;:::o;8210:::-;8268:7;8299:1;8295;:5;;;;:::i;:::-;8288:12;;8210:98;;;;:::o;20819:843::-;20882:19;20904:48;11844:3;20904:27;12186:2;20904:9;:13;;:27;;;;:::i;:::-;:31;;:48;;;;:::i;:::-;20882:70;;20963:22;20988:51;11844:3;20988:30;12237:2;20988:9;:13;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;20963:76;;21050:16;21069:53;11844:3;21069:32;12290:2;21069:9;:13;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;21050:72;;21133:16;21152:51;11844:3;21152:30;12341:2;21152:9;:13;;:30;;;;:::i;:::-;:34;;:51;;;;:::i;:::-;21133:70;;21214:17;21234:46;11844:3;21234:25;12387:2;21234:9;:13;;:25;;;;:::i;:::-;:29;;:46;;;;:::i;:::-;21214:66;;21291:18;21312:47;11844:3;21312:26;12434:1;21312:9;:13;;:26;;;;:::i;:::-;:30;;:47;;;;:::i;:::-;21291:68;;21386:11;21372:10;;:25;;;;;;;:::i;:::-;;;;;;;;21408:46;21422:15;21439:14;21408:13;:46::i;:::-;21465:42;21479:17;21498:8;21465:13;:42::i;:::-;21518:40;21532:15;21549:8;21518:13;:40::i;:::-;21569:36;21583:10;21595:9;21569:13;:36::i;:::-;21616:38;21630:11;21643:10;21616:13;:38::i;:::-;20871:791;;;;;;20819:843;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;7454:98::-;7512:7;7543:1;7539;:5;;;;:::i;:::-;7532:12;;7454:98;;;;:::o;19623:373::-;19681:13;19697:11;:19;19709:6;19697:19;;;;;;;;;;;;;;;;19681:35;;19727:18;19748:7;19773:1;19756:7;:14;;;;:18;;;;:::i;:::-;19748:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19727:48;;19803:10;19786:7;19794:5;19786:14;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19850:5;19824:11;:23;19836:10;19824:23;;;;;;;;;;;;;;;:31;;;;19866:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;19897:11;:19;19909:6;19897:19;;;;;;;;;;;;;;;19890:26;;;19946:5;19927:8;:16;19936:6;19927:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;19981:6;19967:21;;;;;;;;;;;;19670:326;;19623:373;:::o;19412:203::-;19467:7;19480:6;19467:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19537:1;19520:7;:14;;;;:18;;;;:::i;:::-;19498:11;:19;19510:6;19498:19;;;;;;;;;;;;;;;:40;;;;19568:4;19549:8;:16;19558:6;19549:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;19600:6;19588:19;;;;;;;;;;;;19412:203;:::o;7073:98::-;7131:7;7162:1;7158;:5;;;;:::i;:::-;7151:12;;7073:98;;;;:::o;695:::-;748:7;775:10;768:17;;695:98;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:191;316:3;335:20;353:1;335:20;:::i;:::-;330:25;;369:20;387:1;369:20;:::i;:::-;364:25;;412:1;409;405:9;398:16;;433:3;430:1;427:10;424:36;;;440:18;;:::i;:::-;424:36;276:191;;;;:::o;473:126::-;510:7;550:42;543:5;539:54;528:65;;473:126;;;:::o;605:96::-;642:7;671:24;689:5;671:24;:::i;:::-;660:35;;605:96;;;:::o;707:118::-;794:24;812:5;794:24;:::i;:::-;789:3;782:37;707:118;;:::o;831:222::-;924:4;962:2;951:9;947:18;939:26;;975:71;1043:1;1032:9;1028:17;1019:6;975:71;:::i;:::-;831:222;;;;:::o;1059:99::-;1111:6;1145:5;1139:12;1129:22;;1059:99;;;:::o;1164:169::-;1248:11;1282:6;1277:3;1270:19;1322:4;1317:3;1313:14;1298:29;;1164:169;;;;:::o;1339:246::-;1420:1;1430:113;1444:6;1441:1;1438:13;1430:113;;;1529:1;1524:3;1520:11;1514:18;1510:1;1505:3;1501:11;1494:39;1466:2;1463:1;1459:10;1454:15;;1430:113;;;1577:1;1568:6;1563:3;1559:16;1552:27;1401:184;1339:246;;;:::o;1591:102::-;1632:6;1683:2;1679:7;1674:2;1667:5;1663:14;1659:28;1649:38;;1591:102;;;:::o;1699:377::-;1787:3;1815:39;1848:5;1815:39;:::i;:::-;1870:71;1934:6;1929:3;1870:71;:::i;:::-;1863:78;;1950:65;2008:6;2003:3;1996:4;1989:5;1985:16;1950:65;:::i;:::-;2040:29;2062:6;2040:29;:::i;:::-;2035:3;2031:39;2024:46;;1791:285;1699:377;;;;:::o;2082:313::-;2195:4;2233:2;2222:9;2218:18;2210:26;;2282:9;2276:4;2272:20;2268:1;2257:9;2253:17;2246:47;2310:78;2383:4;2374:6;2310:78;:::i;:::-;2302:86;;2082:313;;;;:::o;2482:117::-;2591:1;2588;2581:12;2728:122;2801:24;2819:5;2801:24;:::i;:::-;2794:5;2791:35;2781:63;;2840:1;2837;2830:12;2781:63;2728:122;:::o;2856:139::-;2902:5;2940:6;2927:20;2918:29;;2956:33;2983:5;2956:33;:::i;:::-;2856:139;;;;:::o;3001:122::-;3074:24;3092:5;3074:24;:::i;:::-;3067:5;3064:35;3054:63;;3113:1;3110;3103:12;3054:63;3001:122;:::o;3129:139::-;3175:5;3213:6;3200:20;3191:29;;3229:33;3256:5;3229:33;:::i;:::-;3129:139;;;;:::o;3274:474::-;3342:6;3350;3399:2;3387:9;3378:7;3374:23;3370:32;3367:119;;;3405:79;;:::i;:::-;3367:119;3525:1;3550:53;3595:7;3586:6;3575:9;3571:22;3550:53;:::i;:::-;3540:63;;3496:117;3652:2;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3623:118;3274:474;;;;;:::o;3754:90::-;3788:7;3831:5;3824:13;3817:21;3806:32;;3754:90;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:329::-;5552:6;5601:2;5589:9;5580:7;5576:23;5572:32;5569:119;;;5607:79;;:::i;:::-;5569:119;5727:1;5752:53;5797:7;5788:6;5777:9;5773:22;5752:53;:::i;:::-;5742:63;;5698:117;5493:329;;;;:::o;5828:86::-;5863:7;5903:4;5896:5;5892:16;5881:27;;5828:86;;;:::o;5920:112::-;6003:22;6019:5;6003:22;:::i;:::-;5998:3;5991:35;5920:112;;:::o;6038:214::-;6127:4;6165:2;6154:9;6150:18;6142:26;;6178:67;6242:1;6231:9;6227:17;6218:6;6178:67;:::i;:::-;6038:214;;;;:::o;6258:474::-;6326:6;6334;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6636:2;6662:53;6707:7;6698:6;6687:9;6683:22;6662:53;:::i;:::-;6652:63;;6607:118;6258:474;;;;;:::o;6738:::-;6806:6;6814;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6960:117;7116:2;7142:53;7187:7;7178:6;7167:9;7163:22;7142:53;:::i;:::-;7132:63;;7087:118;6738:474;;;;;:::o;7218:169::-;7358:21;7354:1;7346:6;7342:14;7335:45;7218:169;:::o;7393:366::-;7535:3;7556:67;7620:2;7615:3;7556:67;:::i;:::-;7549:74;;7632:93;7721:3;7632:93;:::i;:::-;7750:2;7745:3;7741:12;7734:19;;7393:366;;;:::o;7765:419::-;7931:4;7969:2;7958:9;7954:18;7946:26;;8018:9;8012:4;8008:20;8004:1;7993:9;7989:17;7982:47;8046:131;8172:4;8046:131;:::i;:::-;8038:139;;7765:419;;;:::o;8190:172::-;8330:24;8326:1;8318:6;8314:14;8307:48;8190:172;:::o;8368:366::-;8510:3;8531:67;8595:2;8590:3;8531:67;:::i;:::-;8524:74;;8607:93;8696:3;8607:93;:::i;:::-;8725:2;8720:3;8716:12;8709:19;;8368:366;;;:::o;8740:419::-;8906:4;8944:2;8933:9;8929:18;8921:26;;8993:9;8987:4;8983:20;8979:1;8968:9;8964:17;8957:47;9021:131;9147:4;9021:131;:::i;:::-;9013:139;;8740:419;;;:::o;9165:194::-;9205:4;9225:20;9243:1;9225:20;:::i;:::-;9220:25;;9259:20;9277:1;9259:20;:::i;:::-;9254:25;;9303:1;9300;9296:9;9288:17;;9327:1;9321:4;9318:11;9315:37;;;9332:18;;:::i;:::-;9315:37;9165:194;;;;:::o;9365:166::-;9505:18;9501:1;9493:6;9489:14;9482:42;9365:166;:::o;9537:366::-;9679:3;9700:67;9764:2;9759:3;9700:67;:::i;:::-;9693:74;;9776:93;9865:3;9776:93;:::i;:::-;9894:2;9889:3;9885:12;9878:19;;9537:366;;;:::o;9909:419::-;10075:4;10113:2;10102:9;10098:18;10090:26;;10162:9;10156:4;10152:20;10148:1;10137:9;10133:17;10126:47;10190:131;10316:4;10190:131;:::i;:::-;10182:139;;9909:419;;;:::o;10334:177::-;10474:29;10470:1;10462:6;10458:14;10451:53;10334:177;:::o;10517:366::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:419::-;11055:4;11093:2;11082:9;11078:18;11070:26;;11142:9;11136:4;11132:20;11128:1;11117:9;11113:17;11106:47;11170:131;11296:4;11170:131;:::i;:::-;11162:139;;10889:419;;;:::o;11314:178::-;11454:30;11450:1;11442:6;11438:14;11431:54;11314:178;:::o;11498:366::-;11640:3;11661:67;11725:2;11720:3;11661:67;:::i;:::-;11654:74;;11737:93;11826:3;11737:93;:::i;:::-;11855:2;11850:3;11846:12;11839:19;;11498:366;;;:::o;11870:419::-;12036:4;12074:2;12063:9;12059:18;12051:26;;12123:9;12117:4;12113:20;12109:1;12098:9;12094:17;12087:47;12151:131;12277:4;12151:131;:::i;:::-;12143:139;;11870:419;;;:::o;12295:332::-;12416:4;12454:2;12443:9;12439:18;12431:26;;12467:71;12535:1;12524:9;12520:17;12511:6;12467:71;:::i;:::-;12548:72;12616:2;12605:9;12601:18;12592:6;12548:72;:::i;:::-;12295:332;;;;;:::o;12633:180::-;12773:32;12769:1;12761:6;12757:14;12750:56;12633:180;:::o;12819:366::-;12961:3;12982:67;13046:2;13041:3;12982:67;:::i;:::-;12975:74;;13058:93;13147:3;13058:93;:::i;:::-;13176:2;13171:3;13167:12;13160:19;;12819:366;;;:::o;13191:419::-;13357:4;13395:2;13384:9;13380:18;13372:26;;13444:9;13438:4;13434:20;13430:1;13419:9;13415:17;13408:47;13472:131;13598:4;13472:131;:::i;:::-;13464:139;;13191:419;;;:::o;13616:177::-;13756:29;13752:1;13744:6;13740:14;13733:53;13616:177;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:419::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14424:9;14418:4;14414:20;14410:1;14399:9;14395:17;14388:47;14452:131;14578:4;14452:131;:::i;:::-;14444:139;;14171:419;;;:::o;14596:320::-;14711:4;14749:2;14738:9;14734:18;14726:26;;14762:71;14830:1;14819:9;14815:17;14806:6;14762:71;:::i;:::-;14843:66;14905:2;14894:9;14890:18;14881:6;14843:66;:::i;:::-;14596:320;;;;;:::o;14922:169::-;15062:21;15058:1;15050:6;15046:14;15039:45;14922:169;:::o;15097:366::-;15239:3;15260:67;15324:2;15319:3;15260:67;:::i;:::-;15253:74;;15336:93;15425:3;15336:93;:::i;:::-;15454:2;15449:3;15445:12;15438:19;;15097:366;;;:::o;15469:419::-;15635:4;15673:2;15662:9;15658:18;15650:26;;15722:9;15716:4;15712:20;15708:1;15697:9;15693:17;15686:47;15750:131;15876:4;15750:131;:::i;:::-;15742:139;;15469:419;;;:::o;15894:169::-;16034:21;16030:1;16022:6;16018:14;16011:45;15894:169;:::o;16069:366::-;16211:3;16232:67;16296:2;16291:3;16232:67;:::i;:::-;16225:74;;16308:93;16397:3;16308:93;:::i;:::-;16426:2;16421:3;16417:12;16410:19;;16069:366;;;:::o;16441:419::-;16607:4;16645:2;16634:9;16630:18;16622:26;;16694:9;16688:4;16684:20;16680:1;16669:9;16665:17;16658:47;16722:131;16848:4;16722:131;:::i;:::-;16714:139;;16441:419;;;:::o;16866:410::-;16906:7;16929:20;16947:1;16929:20;:::i;:::-;16924:25;;16963:20;16981:1;16963:20;:::i;:::-;16958:25;;17018:1;17015;17011:9;17040:30;17058:11;17040:30;:::i;:::-;17029:41;;17219:1;17210:7;17206:15;17203:1;17200:22;17180:1;17173:9;17153:83;17130:139;;17249:18;;:::i;:::-;17130:139;16914:362;16866:410;;;;:::o;17282:180::-;17330:77;17327:1;17320:88;17427:4;17424:1;17417:15;17451:4;17448:1;17441:15;17468:233;17507:3;17530:24;17548:5;17530:24;:::i;:::-;17521:33;;17576:66;17569:5;17566:77;17563:103;;17646:18;;:::i;:::-;17563:103;17693:1;17686:5;17682:13;17675:20;;17468:233;;;:::o;17707:166::-;17847:18;17843:1;17835:6;17831:14;17824:42;17707:166;:::o;17879:366::-;18021:3;18042:67;18106:2;18101:3;18042:67;:::i;:::-;18035:74;;18118:93;18207:3;18118:93;:::i;:::-;18236:2;18231:3;18227:12;18220:19;;17879:366;;;:::o;18251:419::-;18417:4;18455:2;18444:9;18440:18;18432:26;;18504:9;18498:4;18494:20;18490:1;18479:9;18475:17;18468:47;18532:131;18658:4;18532:131;:::i;:::-;18524:139;;18251:419;;;:::o;18676:173::-;18816:25;18812:1;18804:6;18800:14;18793:49;18676:173;:::o;18855:366::-;18997:3;19018:67;19082:2;19077:3;19018:67;:::i;:::-;19011:74;;19094:93;19183:3;19094:93;:::i;:::-;19212:2;19207:3;19203:12;19196:19;;18855:366;;;:::o;19227:419::-;19393:4;19431:2;19420:9;19416:18;19408:26;;19480:9;19474:4;19470:20;19466:1;19455:9;19451:17;19444:47;19508:131;19634:4;19508:131;:::i;:::-;19500:139;;19227:419;;;:::o;19652:174::-;19792:26;19788:1;19780:6;19776:14;19769:50;19652:174;:::o;19832:366::-;19974:3;19995:67;20059:2;20054:3;19995:67;:::i;:::-;19988:74;;20071:93;20160:3;20071:93;:::i;:::-;20189:2;20184:3;20180:12;20173:19;;19832:366;;;:::o;20204:419::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20485:131;20611:4;20485:131;:::i;:::-;20477:139;;20204:419;;;:::o;20629:164::-;20769:16;20765:1;20757:6;20753:14;20746:40;20629:164;:::o;20799:366::-;20941:3;20962:67;21026:2;21021:3;20962:67;:::i;:::-;20955:74;;21038:93;21127:3;21038:93;:::i;:::-;21156:2;21151:3;21147:12;21140:19;;20799:366;;;:::o;21171:419::-;21337:4;21375:2;21364:9;21360:18;21352:26;;21424:9;21418:4;21414:20;21410:1;21399:9;21395:17;21388:47;21452:131;21578:4;21452:131;:::i;:::-;21444:139;;21171:419;;;:::o;21596:170::-;21736:22;21732:1;21724:6;21720:14;21713:46;21596:170;:::o;21772:366::-;21914:3;21935:67;21999:2;21994:3;21935:67;:::i;:::-;21928:74;;22011:93;22100:3;22011:93;:::i;:::-;22129:2;22124:3;22120:12;22113:19;;21772:366;;;:::o;22144:419::-;22310:4;22348:2;22337:9;22333:18;22325:26;;22397:9;22391:4;22387:20;22383:1;22372:9;22368:17;22361:47;22425:131;22551:4;22425:131;:::i;:::-;22417:139;;22144:419;;;:::o;22569:178::-;22709:30;22705:1;22697:6;22693:14;22686:54;22569:178;:::o;22753:366::-;22895:3;22916:67;22980:2;22975:3;22916:67;:::i;:::-;22909:74;;22992:93;23081:3;22992:93;:::i;:::-;23110:2;23105:3;23101:12;23094:19;;22753:366;;;:::o;23125:419::-;23291:4;23329:2;23318:9;23314:18;23306:26;;23378:9;23372:4;23368:20;23364:1;23353:9;23349:17;23342:47;23406:131;23532:4;23406:131;:::i;:::-;23398:139;;23125:419;;;:::o;23550:175::-;23690:27;23686:1;23678:6;23674:14;23667:51;23550:175;:::o;23731:366::-;23873:3;23894:67;23958:2;23953:3;23894:67;:::i;:::-;23887:74;;23970:93;24059:3;23970:93;:::i;:::-;24088:2;24083:3;24079:12;24072:19;;23731:366;;;:::o;24103:419::-;24269:4;24307:2;24296:9;24292:18;24284:26;;24356:9;24350:4;24346:20;24342:1;24331:9;24327:17;24320:47;24384:131;24510:4;24384:131;:::i;:::-;24376:139;;24103:419;;;:::o;24528:173::-;24668:25;24664:1;24656:6;24652:14;24645:49;24528:173;:::o;24707:366::-;24849:3;24870:67;24934:2;24929:3;24870:67;:::i;:::-;24863:74;;24946:93;25035:3;24946:93;:::i;:::-;25064:2;25059:3;25055:12;25048:19;;24707:366;;;:::o;25079:419::-;25245:4;25283:2;25272:9;25268:18;25260:26;;25332:9;25326:4;25322:20;25318:1;25307:9;25303:17;25296:47;25360:131;25486:4;25360:131;:::i;:::-;25352:139;;25079:419;;;:::o;25504:176::-;25644:28;25640:1;25632:6;25628:14;25621:52;25504:176;:::o;25686:366::-;25828:3;25849:67;25913:2;25908:3;25849:67;:::i;:::-;25842:74;;25925:93;26014:3;25925:93;:::i;:::-;26043:2;26038:3;26034:12;26027:19;;25686:366;;;:::o;26058:419::-;26224:4;26262:2;26251:9;26247:18;26239:26;;26311:9;26305:4;26301:20;26297:1;26286:9;26282:17;26275:47;26339:131;26465:4;26339:131;:::i;:::-;26331:139;;26058:419;;;:::o;26483:174::-;26623:26;26619:1;26611:6;26607:14;26600:50;26483:174;:::o;26663:366::-;26805:3;26826:67;26890:2;26885:3;26826:67;:::i;:::-;26819:74;;26902:93;26991:3;26902:93;:::i;:::-;27020:2;27015:3;27011:12;27004:19;;26663:366;;;:::o;27035:419::-;27201:4;27239:2;27228:9;27224:18;27216:26;;27288:9;27282:4;27278:20;27274:1;27263:9;27259:17;27252:47;27316:131;27442:4;27316:131;:::i;:::-;27308:139;;27035:419;;;:::o;27460:147::-;27561:11;27598:3;27583:18;;27460:147;;;;:::o;27613:114::-;;:::o;27733:398::-;27892:3;27913:83;27994:1;27989:3;27913:83;:::i;:::-;27906:90;;28005:93;28094:3;28005:93;:::i;:::-;28123:1;28118:3;28114:11;28107:18;;27733:398;;;:::o;28137:379::-;28321:3;28343:147;28486:3;28343:147;:::i;:::-;28336:154;;28507:3;28500:10;;28137:379;;;:::o;28522:165::-;28662:17;28658:1;28650:6;28646:14;28639:41;28522:165;:::o;28693:366::-;28835:3;28856:67;28920:2;28915:3;28856:67;:::i;:::-;28849:74;;28932:93;29021:3;28932:93;:::i;:::-;29050:2;29045:3;29041:12;29034:19;;28693:366;;;:::o;29065:419::-;29231:4;29269:2;29258:9;29254:18;29246:26;;29318:9;29312:4;29308:20;29304:1;29293:9;29289:17;29282:47;29346:131;29472:4;29346:131;:::i;:::-;29338:139;;29065:419;;;:::o;29490:180::-;29538:77;29535:1;29528:88;29635:4;29632:1;29625:15;29659:4;29656:1;29649:15;29676:185;29716:1;29733:20;29751:1;29733:20;:::i;:::-;29728:25;;29767:20;29785:1;29767:20;:::i;:::-;29762:25;;29806:1;29796:35;;29811:18;;:::i;:::-;29796:35;29853:1;29850;29846:9;29841:14;;29676:185;;;;:::o;29867:180::-;29915:77;29912:1;29905:88;30012:4;30009:1;30002:15;30036:4;30033:1;30026:15

Swarm Source

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