ETH Price: $3,304.50 (-2.81%)
 

Overview

Max Total Supply

1,000,000,000 CBM

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,674,529.551566280182274028 CBM

Value
$0.00
0xdb4d0bf50b352431e680944d187a48f00da87e56
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Cerebrum

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-01-09
*/

/** 
Website: https://cerebrum.dev/
Telegram: https://t.me/cerebrumdev
Twitter: https://x.com/cerebrumdev
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
  function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
  }

  function sendValue(address payable recipient, uint256 amount) internal {
    require(address(this).balance >= amount, "Address: insufficient balance");

    (bool success, ) = recipient.call{value: amount}("");
    require(
      success,
      "Address: unable to send value, recipient may have reverted"
    );
  }

  function functionCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionCallWithValue(target, data, 0, "Address: low-level call failed");
  }

  function functionCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    return functionCallWithValue(target, data, 0, errorMessage);
  }

  function functionCallWithValue(
    address target,
    bytes memory data,
    uint256 value
  ) internal returns (bytes memory) {
    return
      functionCallWithValue(
        target,
        data,
        value,
        "Address: low-level call with value failed"
      );
  }

  function functionCallWithValue(
    address target,
    bytes memory data,
    uint256 value,
    string memory errorMessage
  ) internal returns (bytes memory) {
    require(
      address(this).balance >= value,
      "Address: insufficient balance for call"
    );
    (bool success, bytes memory returndata) = target.call{value: value}(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionStaticCall(
    address target,
    bytes memory data
  ) internal view returns (bytes memory) {
    return
      functionStaticCall(target, data, "Address: low-level static call failed");
  }

  function functionStaticCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    (bool success, bytes memory returndata) = target.staticcall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionDelegateCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionDelegateCall(
        target,
        data,
        "Address: low-level delegate call failed"
      );
  }

  function functionDelegateCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    (bool success, bytes memory returndata) = target.delegatecall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function verifyCallResultFromTarget(
    address target,
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    if (success) {
      if (returndata.length == 0) {
        // only check isContract if the call was successful and the return data is empty
        // otherwise we already know that it was a contract
        require(isContract(target), "Address: call to non-contract");
      }
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function verifyCallResult(
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal pure returns (bytes memory) {
    if (success) {
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function _revert(
    bytes memory returndata,
    string memory errorMessage
  ) private pure {
    // Look for revert reason and bubble it up if present
    if (returndata.length > 0) {
      // The easiest way to bubble the revert reason is using memory via assembly
      /// @solidity memory-safe-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert(errorMessage);
    }
  }
}

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address account) external view returns (uint256);

  function transfer(address recipient, uint256 amount) external returns (bool);

  function allowance(
    address owner,
    address spender
  ) external view returns (uint256);

  function approve(address spender, uint256 amount) external returns (bool);

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external returns (bool);

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface IDEXRouter {
  function factory() external pure returns (address);

  function WETH() external pure returns (address);

  function addLiquidityETH(
    address token,
    uint amountTokenDesired,
    uint amountTokenMin,
    uint amountETHMin,
    address to,
    uint deadline
  ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

abstract contract Ownable is Context {
  address private _owner;

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

  constructor() {
    _transferOwnership(_msgSender());
  }

  modifier onlyOwner() {
    _checkOwner();
    _;
  }

  function owner() public view virtual returns (address) {
    return _owner;
  }

  function _checkOwner() internal view virtual {
    require(owner() == _msgSender(), "Ownable: caller is not the owner");
  }

  function renounceOwnership() public virtual onlyOwner {
    _transferOwnership(address(0));
  }

  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal virtual {
    address oldOwner = _owner;
    _owner = newOwner;
    emit OwnershipTransferred(oldOwner, newOwner);
  }
}

contract Cerebrum is IERC20, Ownable {
  using Address for address;

  address DEAD = 0x000000000000000000000000000000000000dEaD;
  address ZERO = 0x0000000000000000000000000000000000000000;

  string constant _name = "Cerebrum";
  string constant _symbol = "CBM";
  uint8 constant _decimals = 18;

  uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
  uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxSellTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxWalletSize = (_totalSupply * 1) / 100;

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

  mapping(uint256 => uint256) public swapBackCounter;
  uint256 public swapBackRateLimit = 3;

  mapping(address => bool) public isFeeExempt;
  mapping(address => bool) public isTxLimitExempt;
  mapping(address => bool) public isLiquidityCreator;

  uint256 marketingBuyFee = 1000;
  uint256 marketingSellFee = 4000;
  uint256 liquidityBuyFee = 0;
  uint256 liquiditySellFee = 0;
  uint256 totalBuyFee = marketingBuyFee + liquidityBuyFee;
  uint256 totalSellFee = marketingSellFee + liquiditySellFee;
  uint256 feeDenominator = 10000;

  bool public transferTax = false;

  address payable public liquidityFeeReceiver = payable(0x262E59856Ea1EE7f339ff82d0Cf4efF09a375807);
  address payable public marketingFeeReceiver = payable(0x262E59856Ea1EE7f339ff82d0Cf4efF09a375807);

  IDEXRouter public router;
  address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
  mapping(address => bool) liquidityPools;
  address public pair;

  mapping(address => uint256) public blacklist;
  uint256 public blacklistCount;

  uint256 public launchBlock;
  uint256 public launchTimestamp;
  bool isTradingEnabled = false;

  bool public swapEnabled = false;
  uint256 public swapThreshold = _totalSupply / 1000;
  uint256 public swapAtMinimum = _totalSupply / 10000;
  bool inSwap;

  modifier swapping() {
    inSwap = true;
    _;
    inSwap = false;
  }

  mapping(address => bool) teamMembers;

  modifier onlyTeam() {
    require(
      teamMembers[_msgSender()] || msg.sender == owner(),
      "Caller is not a team member"
    );
    _;
  }

  event WalletBlacklisted(address, address, uint256);

  constructor() {
    router = IDEXRouter(routerAddress);
    pair = IDEXFactory(router.factory()).createPair(
      router.WETH(),
      address(this)
    );
    liquidityPools[pair] = true;
    _allowances[owner()][routerAddress] = type(uint256).max;
    _allowances[address(this)][routerAddress] = type(uint256).max;

    isFeeExempt[owner()] = true;
    isLiquidityCreator[owner()] = true;

    isTxLimitExempt[address(this)] = true;
    isTxLimitExempt[owner()] = true;
    isTxLimitExempt[routerAddress] = true;
    isTxLimitExempt[DEAD] = true;

    _balances[owner()] = _totalSupply;

    emit Transfer(address(0), owner(), _totalSupply);
  }

  receive() external payable {}

  function totalSupply() external view override returns (uint256) {
    return _totalSupply;
  }

  function decimals() external pure returns (uint8) {
    return _decimals;
  }

  function symbol() external pure returns (string memory) {
    return _symbol;
  }

  function name() external pure returns (string memory) {
    return _name;
  }

  function getOwner() external view returns (address) {
    return owner();
  }

  function maxBuyTxTokens() external view returns (uint256) {
    return _maxBuyTxAmount / (10 ** _decimals);
  }

  function maxSellTxTokens() external view returns (uint256) {
    return _maxSellTxAmount / (10 ** _decimals);
  }

  function maxWalletTokens() external view returns (uint256) {
    return _maxWalletSize / (10 ** _decimals);
  }

  function balanceOf(address account) public view override returns (uint256) {
    return _balances[account];
  }

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

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

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

  function setTeamMember(address _team, bool _enabled) external onlyOwner {
    teamMembers[_team] = _enabled;
  }

  function airdrop(
    address[] calldata addresses,
    uint256[] calldata amounts
  ) external onlyOwner {
    require(addresses.length > 0 && amounts.length == addresses.length);
    address from = msg.sender;

    for (uint i = 0; i < addresses.length; i++) {
      if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
        _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
      }
    }
  }

  function clearStuckBalance(
    uint256 amountPercentage,
    address adr
  ) external onlyTeam {
    uint256 amountETH = address(this).balance;

    if (amountETH > 0) {
      (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
      require(sent, "Failed to transfer funds");
    }
  }

  function blacklistWallets(
    address[] calldata _wallets,
    bool _blacklist
  ) external onlyTeam {
    for (uint i = 0; i < _wallets.length; i++) {
      if (_blacklist) {
        blacklistCount++;
        emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
      } else {
        if (blacklist[_wallets[i]] != 0) blacklistCount--;
      }
      blacklist[_wallets[i]] = _blacklist ? block.number : 0;
    }
  }

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

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

    return _transferFrom(sender, recipient, amount);
  }

  function _transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    require(sender != address(0), "ERC20: transfer from 0x0");
    require(recipient != address(0), "ERC20: transfer to 0x0");
    require(amount > 0, "Amount must be > zero");
    require(_balances[sender] >= amount, "Insufficient balance");
    if (!launched() && liquidityPools[recipient]) {
      require(isLiquidityCreator[sender], "Liquidity not added yet.");
      launch();
    }
    if (!isTradingEnabled) {
      require(
        isLiquidityCreator[sender] || isLiquidityCreator[recipient],
        "Trading is not launched yet."
      );
    }

    checkTxLimit(sender, recipient, amount);

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

    if (inSwap) {
      return _basicTransfer(sender, recipient, amount);
    }

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

    uint256 amountReceived = amount;

    if (shouldTakeFee(sender, recipient)) {
      amountReceived = takeFee(recipient, amount);
      if (shouldSwapBack(recipient) && amount > 0) swapBack(amount);
    }

    _balances[recipient] = _balances[recipient] + amountReceived;

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

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

  function launch() internal {
    launchBlock = block.number;
    launchTimestamp = block.timestamp;
  }

  function openTrading() external onlyTeam {
    require(!isTradingEnabled, "Can't re-open trading");
    isTradingEnabled = true;
    swapEnabled = true;
  }

  function _basicTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    _balances[sender] = _balances[sender] - amount;
    _balances[recipient] = _balances[recipient] + amount;
    emit Transfer(sender, recipient, amount);
    return true;
  }

  function checkWalletLimit(address recipient, uint256 amount) internal view {
    uint256 walletLimit = _maxWalletSize;
    require(
      _balances[recipient] + amount <= walletLimit,
      "Amount exceeds the max wallet size."
    );
  }

  function checkTxLimit(
    address sender,
    address recipient,
    uint256 amount
  ) internal view {
    if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;

    require(
      amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount),
      "Amount exceeds the tx limit."
    );

    require(blacklist[sender] == 0, "Wallet blacklisted!");
  }

  function shouldTakeFee(
    address sender,
    address recipient
  ) public view returns (bool) {
    if (!transferTax && !liquidityPools[recipient] && !liquidityPools[sender])
      return false;
    return !isFeeExempt[sender] && !isFeeExempt[recipient];
  }

  function getTotalFee(bool selling) public view returns (uint256) {
    if (selling) return totalSellFee;
    return totalBuyFee;
  }

  function takeFee(
    address recipient,
    uint256 amount
  ) internal returns (uint256) {
    bool selling = liquidityPools[recipient];
    uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;

    _balances[address(this)] += feeAmount;

    return amount - feeAmount;
  }

  function shouldSwapBack(address recipient) internal view returns (bool) {
    return
      !liquidityPools[msg.sender] &&
      !inSwap &&
      swapEnabled &&
      swapBackCounter[block.number] < swapBackRateLimit &&
      liquidityPools[recipient] &&
      _balances[address(this)] >= swapAtMinimum &&
      totalBuyFee + totalSellFee > 0;
  }

  function swapBack(uint256 amount) internal swapping {
    uint256 totalFee = totalBuyFee + totalSellFee;
    uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
    if (_balances[address(this)] < amountToSwap)
      amountToSwap = _balances[address(this)];

    uint256 totalLiquidityFee = liquidityBuyFee + liquiditySellFee;
    uint256 amountToLiquify = ((amountToSwap * totalLiquidityFee) / 2) /
      totalFee;
    amountToSwap -= amountToLiquify;

    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = router.WETH();

    uint256 balanceBefore = address(this).balance;

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

    uint256 amountETH = address(this).balance - balanceBefore;
    uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

    uint256 amountETHLiquidity = ((amountETH * totalLiquidityFee) / 2) /
      totalETHFee;
    uint256 amountETHMarketing = amountETH - amountETHLiquidity;

    if (amountETHMarketing > 0) {
      (bool sentMarketing, ) = marketingFeeReceiver.call{
        value: amountETHMarketing
      }("");
      if (!sentMarketing) {
        //Failed to transfer to marketing wallet
      }
    }

    if (amountToLiquify > 0) {
      router.addLiquidityETH{value: amountETHLiquidity}(
        address(this),
        amountToLiquify,
        0,
        0,
        liquidityFeeReceiver,
        block.timestamp
      );
    }
    swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
    emit FundsDistributed(
      amountETHMarketing,
      amountETHLiquidity,
      amountToLiquify
    );
  }

  function addLiquidityPool(address lp, bool isPool) external onlyOwner {
    require(lp != pair, "Can't alter current liquidity pair");
    liquidityPools[lp] = isPool;
  }

  function setSwapBackRateLimit(uint256 rate) external onlyOwner {
    swapBackRateLimit = rate;
  }

  function setTxLimit(
    uint256 buyNumerator,
    uint256 sellNumerator,
    uint256 divisor
  ) external onlyOwner {
    require(
      buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000
    );
    _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
    _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
  }

  function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner {
    require(numerator > 0 && divisor > 0 && divisor <= 10000);
    _maxWalletSize = (_totalSupply * numerator) / divisor;
  }

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

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

  function setFees(
    uint256 _liquidityBuyFee,
    uint256 _liquiditySellFee,
    uint256 _marketingBuyFee,
    uint256 _marketingSellFee,
    uint256 _feeDenominator
  ) external onlyOwner {
    require(
      ((_liquidityBuyFee + _liquiditySellFee) / 2) * 2 ==
        (_liquidityBuyFee + _liquiditySellFee),
      "Liquidity fee must be an even number for rounding compatibility."
    );
    liquidityBuyFee = _liquidityBuyFee;
    liquiditySellFee = _liquiditySellFee;
    marketingBuyFee = _marketingBuyFee;
    marketingSellFee = _marketingSellFee;
    totalBuyFee = _liquidityBuyFee + _marketingBuyFee;
    totalSellFee = _liquiditySellFee + _marketingSellFee;
    feeDenominator = _feeDenominator;
    emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
  }

  function toggleTransferTax() external onlyOwner {
    transferTax = !transferTax;
  }

  function setFeeReceivers(
    address _liquidityFeeReceiver,
    address _marketingFeeReceiver
  ) external onlyOwner {
    liquidityFeeReceiver = payable(_liquidityFeeReceiver);
    marketingFeeReceiver = payable(_marketingFeeReceiver);
  }

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

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

  event FundsDistributed(
    uint256 marketingETH,
    uint256 liquidityETH,
    uint256 liquidityTokens
  );
  event FeesSet(
    uint256 totalBuyFees,
    uint256 totalSellFees,
    uint256 denominator
  );
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"WalletBlacklisted","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_blacklist","type":"bool"}],"name":"blacklistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSwapBackRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapAtMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapBackCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackRateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326012600a620005ff565b6200004290633b9aca0062000617565b6003556064600354600162000058919062000617565b62000064919062000631565b600455606460035460016200007a919062000617565b62000086919062000631565b600555606460035460016200009c919062000617565b620000a8919062000631565b6006556003600a556103e8600e55610fa0600f5560006010556000601155601054600e54620000d8919062000654565b601255601154600f54620000ed919062000654565b6013556127106014556015805474262e59856ea1ee7f339ff82d0cf4eff09a375807006001600160a81b0319909116179055601680546001600160a01b031990811673262e59856ea1ee7f339ff82d0cf4eff09a3758071790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601f805461ffff1916905560035462000184906103e89062000631565b60205561271060035462000199919062000631565b602155348015620001a957600080fd5b50620001b5336200049a565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023891906200066a565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200066a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033391906200066a565b601a80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff1916600117905560001990600890620003856000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000695565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000541578160001904821115620005255762000525620004ea565b808516156200053357918102915b93841c939080029062000505565b509250929050565b6000826200055a57506001620005f9565b816200056957506000620005f9565b81600181146200058257600281146200058d57620005ad565b6001915050620005f9565b60ff841115620005a157620005a1620004ea565b50506001821b620005f9565b5060208310610133831016604e8410600b8410161715620005d2575081810a620005f9565b620005de838362000500565b8060001904821115620005f557620005f5620004ea565b0290505b92915050565b60006200061060ff84168362000549565b9392505050565b8082028115828204841417620005f957620005f9620004ea565b6000826200064f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005f957620005f9620004ea565b6000602082840312156200067d57600080fd5b81516001600160a01b03811681146200061057600080fd5b6127db80620006a56000396000f3fe6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b14610949578063f84ba65d14610969578063f887ea4014610989578063f9f92be4146109a957600080fd5b8063e8b574f2146108dc578063e96fada214610909578063f1f3bca31461092957600080fd5b8063c9567bf914610816578063d00efb2f1461082b578063d088935814610841578063d58d850c14610861578063d912b2ce14610881578063dd62ed3e1461089657600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079c578063bafe446b146107bc578063bb2188b4146107d1578063bfa21d6a146107f157600080fd5b8063a845bd8614610746578063a8aa1b311461075c578063a9059cbb1461077c57600080fd5b8063893d20e81461065a5780638b42507f1461068c5780638da5cb5b146106bc57806395d89b41146106da5780639fdc800514610706578063a4b45c001461072657600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d657806370a08231146105f5578063715018a61461062b5780638124f7ac1461064057600080fd5b8063658d4b7f1461058057806365cf7c9b146105a057806367243482146105b657600080fd5b8063492a937b146104bb57806350713935146104db57806356a227f2146104fb57806360bba03d1461051b57806360eef7411461053b57806363a803e11461056b57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043a578063313ce5671461044f578063332402f81461046b5780633f4218e01461048b57600080fd5b8063188d1644146103ef578063234e94941461040557806323b872dd1461041a57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610394578063178a18ce146103c457806318160ddd146103da57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612173565b6109d6565b005b34801561036657600080fd5b50604080518082019091526008815267436572656272756d60c01b60208201525b60405161032f91906121ae565b3480156103a057600080fd5b506103b46103af366004612211565b610b04565b604051901515815260200161032f565b3480156103d057600080fd5b50610325600a5481565b3480156103e657600080fd5b50600354610325565b3480156103fb57600080fd5b50610325601c5481565b34801561041157600080fd5b50610325610b71565b34801561042657600080fd5b506103b461043536600461223d565b610b91565b34801561044657600080fd5b50610325610c26565b34801561045b57600080fd5b506040516012815260200161032f565b34801561047757600080fd5b506103b461048636600461227e565b610c67565b34801561049757600080fd5b506103b46104a63660046122b7565b600b6020526000908152604090205460ff1681565b3480156104c757600080fd5b506103586104d63660046122e9565b610d0e565b3480156104e757600080fd5b506103586104f636600461231e565b610daa565b34801561050757600080fd5b5061035861051636600461234a565b610e23565b34801561052757600080fd5b506103586105363660046122e9565b610f29565b34801561054757600080fd5b506103b46105563660046122b7565b600d6020526000908152604090205460ff1681565b34801561057757600080fd5b50610325610f5c565b34801561058c57600080fd5b5061035861059b3660046122e9565b610f77565b3480156105ac57600080fd5b50610325601e5481565b3480156105c257600080fd5b506103586105d13660046123bb565b610faa565b3480156105e257600080fd5b50601f546103b490610100900460ff1681565b34801561060157600080fd5b506103256106103660046122b7565b6001600160a01b031660009081526007602052604090205490565b34801561063757600080fd5b506103586110ef565b34801561064c57600080fd5b506015546103b49060ff1681565b34801561066657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069857600080fd5b506103b46106a73660046122b7565b600c6020526000908152604090205460ff1681565b3480156106c857600080fd5b506000546001600160a01b0316610674565b3480156106e657600080fd5b5060408051808201909152600381526243424d60e81b6020820152610387565b34801561071257600080fd5b506103b46107213660046122b7565b611103565b34801561073257600080fd5b5061035861074136600461227e565b611111565b34801561075257600080fd5b5061032560215481565b34801561076857600080fd5b50601a54610674906001600160a01b031681565b34801561078857600080fd5b506103b4610797366004612211565b611151565b3480156107a857600080fd5b506103586107b7366004612427565b61115e565b3480156107c857600080fd5b506103256111ad565b3480156107dd57600080fd5b506103586107ec366004612449565b6111c8565b3480156107fd57600080fd5b506015546106749061010090046001600160a01b031681565b34801561082257600080fd5b5061035861136f565b34801561083757600080fd5b50610325601d5481565b34801561084d57600080fd5b5061035861085c36600461249d565b61140f565b34801561086d57600080fd5b5061035861087c3660046124d0565b611466565b34801561088d57600080fd5b50610358611473565b3480156108a257600080fd5b506103256108b136600461227e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e857600080fd5b506103256108f73660046124d0565b60096020526000908152604090205481565b34801561091557600080fd5b50601654610674906001600160a01b031681565b34801561093557600080fd5b506103256109443660046124e9565b61148f565b34801561095557600080fd5b506103586109643660046122b7565b6114a7565b34801561097557600080fd5b506103586109843660046122e9565b611520565b34801561099557600080fd5b50601754610674906001600160a01b031681565b3480156109b557600080fd5b506103256109c43660046122b7565b601b6020526000908152604090205481565b6109de611553565b6109e8848661251a565b60026109f4868861251a565b6109fe919061252d565b610a0990600261254f565b14610a83576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa1838661251a565b601255610aae828561251a565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b5f9086815260200190565b60405180910390a35060015b92915050565b6000610b7f6012600a61264a565b600554610b8c919061252d565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c11576001600160a01b0384166000908152600860209081526040808320338452909152902054610bec908390612659565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1c8484846115ad565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5a9161251a565b600354610b8c9190612659565b60155460009060ff16158015610c9657506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbb57506001600160a01b03831660009081526019602052604090205460ff16155b15610cc857506000610b6b565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c1f5750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d16611553565b601a546001600160a01b0390811690831603610d7f5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7a565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db2611553565b600083118015610dc25750600082115b8015610dce5750600081115b8015610ddc57506127108111155b610de557600080fd5b8083600354610df4919061254f565b610dfe919061252d565b6004556003548190610e1190849061254f565b610e1b919061252d565b600555505050565b3360009081526023602052604090205460ff1680610e4b57506000546001600160a01b031633145b610e675760405162461bcd60e51b8152600401610a7a9061266c565b478015610f245760006001600160a01b0383166064610e86868561254f565b610e90919061252d565b604051600081818185875af1925050503d8060008114610ecc576040519150601f19603f3d011682016040523d82523d6000602084013e610ed1565b606091505b5050905080610f225760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7a565b505b505050565b610f31611553565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6a6012600a61264a565b600654610b8c919061252d565b610f7f611553565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb2611553565b8215801590610fc057508083145b610fc957600080fd5b3360005b848110156110e75760196000878784818110610feb57610feb6126a3565b905060200201602081019061100091906122b7565b6001600160a01b0316815260208101919091526040016000205460ff1615801561106f5750600d600087878481811061103b5761103b6126a3565b905060200201602081019061105091906122b7565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d5576110d38287878481811061108a5761108a6126a3565b905060200201602081019061109f91906122b7565b6110ab6012600a61264a565b8787868181106110bd576110bd6126a3565b905060200201356110ce919061254f565b6119c7565b505b806110df816126b9565b915050610fcd565b505050505050565b6110f7611553565b6111016000611a81565b565b6000610b6b82600019610b04565b611119611553565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c1f3384846115ad565b611166611553565b6000821180156111765750600081115b801561118457506127108111155b61118d57600080fd5b808260035461119c919061254f565b6111a6919061252d565b6006555050565b60006111bb6012600a61264a565b600454610b8c919061252d565b3360009081526023602052604090205460ff16806111f057506000546001600160a01b031633145b61120c5760405162461bcd60e51b8152600401610a7a9061266c565b60005b82811015610f225781156112aa57601c805490600061122d836126b9565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611266576112666126a3565b905060200201602081019061127b91906122b7565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130a565b601b60008585848181106112c0576112c06126a3565b90506020020160208101906112d591906122b7565b6001600160a01b031681526020810191909152604001600020541561130a57601c8054906000611304836126d2565b91905055505b81611316576000611318565b435b601b600086868581811061132e5761132e6126a3565b905060200201602081019061134391906122b7565b6001600160a01b0316815260208101919091526040016000205580611367816126b9565b91505061120f565b3360009081526023602052604090205460ff168061139757506000546001600160a01b031633145b6113b35760405162461bcd60e51b8152600401610a7a9061266c565b601f5460ff16156113fe5760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7a565b601f805461ffff1916610101179055565b611417611553565b6000821161142457600080fd5b601f805461ff0019166101008515150217905560035461144590839061252d565b6020556114546012600a61264a565b61145e908261254f565b602155505050565b61146e611553565b600a55565b61147b611553565b6015805460ff19811660ff90911615179055565b6000811561149f57505060135490565b505060125490565b6114af611553565b6001600160a01b0381166115145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7a565b61151d81611a81565b50565b611528611553565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7a565b60006001600160a01b0384166116055760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7a565b6001600160a01b0383166116545760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7a565b6000821161169c5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7a565b6001600160a01b0384166000908152600760205260409020548211156116fb5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7a565b601d5415801561172357506001600160a01b03831660009081526019602052604090205460ff165b1561179d576001600160a01b0384166000908152600d602052604090205460ff166117905760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7a565b61179d43601d5542601e55565b601f5460ff16611832576001600160a01b0384166000908152600d602052604090205460ff16806117e657506001600160a01b0383166000908152600d602052604090205460ff165b6118325760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7a565b61183d848484611ad1565b6001600160a01b03831660009081526019602052604090205460ff1615801561187457506001546001600160a01b03848116911614155b156118a3576001600160a01b0383166000908152600c602052604090205460ff166118a3576118a38383611bf1565b60225460ff16156118c0576118b98484846119c7565b9050610c1f565b6001600160a01b0384166000908152600760205260409020546118e4908390612659565b6001600160a01b038516600090815260076020526040902055816119088585610c67565b1561193c576119178484611c74565b905061192284611cf2565b801561192e5750600083115b1561193c5761193c83611da5565b6001600160a01b03841660009081526007602052604090205461196090829061251a565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b49085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119eb908390612659565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1b90839061251a565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a6f9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1057506001600160a01b0382166000908152600c602052604090205460ff165b15611b1a57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4257600554611b46565b6004545b811115611b955760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7a565b6001600160a01b0383166000908152601b602052604090205415610f245760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7a565b6006546001600160a01b0383166000908152600760205260409020548190611c1a90849061251a565b1115610f245760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7a565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca18361148f565b611cab908661254f565b611cb5919061252d565b30600090815260076020526040812080549293508392909190611cd990849061251a565b90915550611ce990508185612659565b95945050505050565b3360009081526019602052604081205460ff16158015611d15575060225460ff16155b8015611d285750601f54610100900460ff165b8015611d445750600a5443600090815260096020526040902054105b8015611d6857506001600160a01b03821660009081526019602052604090205460ff165b8015611d8557506021543060009081526007602052604090205410155b8015610b6b57506000601354601254611d9e919061251a565b1192915050565b6022805460ff19166001179055601354601254600091611dc49161251a565b905060006020548310611dd957602054611ddb565b825b30600090815260076020526040902054909150811115611e075750306000908152600760205260409020545b6000601154601054611e19919061251a565b90506000836002611e2a848661254f565b611e34919061252d565b611e3e919061252d565b9050611e4a8184612659565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8457611e846126a3565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0191906126e9565b81600181518110611f1457611f146126a3565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f5e908890600090879030904290600401612706565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b5050505060008147611f9e9190612659565b90506000611fad60028761252d565b611fb79089612659565b90506000816002611fc8898661254f565b611fd2919061252d565b611fdc919061252d565b90506000611fea8285612659565b90508015612049576016546040516000916001600160a01b03169083908381818185875af1925050503d806000811461203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b505050505b86156120ed5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120e99190612777565b5050505b4360009081526009602052604090205461210890600161251a565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121db578581018301518582016040015282016121bf565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151d57600080fd5b6000806040838503121561222457600080fd5b823561222f816121fc565b946020939093013593505050565b60008060006060848603121561225257600080fd5b833561225d816121fc565b9250602084013561226d816121fc565b929592945050506040919091013590565b6000806040838503121561229157600080fd5b823561229c816121fc565b915060208301356122ac816121fc565b809150509250929050565b6000602082840312156122c957600080fd5b8135610c1f816121fc565b803580151581146122e457600080fd5b919050565b600080604083850312156122fc57600080fd5b8235612307816121fc565b9150612315602084016122d4565b90509250929050565b60008060006060848603121561233357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235d57600080fd5b8235915060208301356122ac816121fc565b60008083601f84011261238157600080fd5b50813567ffffffffffffffff81111561239957600080fd5b6020830191508360208260051b85010111156123b457600080fd5b9250929050565b600080600080604085870312156123d157600080fd5b843567ffffffffffffffff808211156123e957600080fd5b6123f58883890161236f565b9096509450602087013591508082111561240e57600080fd5b5061241b8782880161236f565b95989497509550505050565b6000806040838503121561243a57600080fd5b50508035926020909101359150565b60008060006040848603121561245e57600080fd5b833567ffffffffffffffff81111561247557600080fd5b6124818682870161236f565b90945092506124949050602085016122d4565b90509250925092565b6000806000606084860312156124b257600080fd5b6124bb846122d4565b95602085013595506040909401359392505050565b6000602082840312156124e257600080fd5b5035919050565b6000602082840312156124fb57600080fd5b610c1f826122d4565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6b57610b6b612504565b60008261254a57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6b57610b6b612504565b600181815b808511156125a157816000190482111561258757612587612504565b8085161561259457918102915b93841c939080029061256b565b509250929050565b6000826125b857506001610b6b565b816125c557506000610b6b565b81600181146125db57600281146125e557612601565b6001915050610b6b565b60ff8411156125f6576125f6612504565b50506001821b610b6b565b5060208310610133831016604e8410600b8410161715612624575081810a610b6b565b61262e8383612566565b806000190482111561264257612642612504565b029392505050565b6000610c1f60ff8416836125a9565b81810381811115610b6b57610b6b612504565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cb576126cb612504565b5060010190565b6000816126e1576126e1612504565b506000190190565b6000602082840312156126fb57600080fd5b8151610c1f816121fc565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127565784516001600160a01b031683529383019391830191600101612731565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220edb5ab8d37a36cb028e4be0b04b5535d0945442beb03becea1db01e92181b96764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b14610949578063f84ba65d14610969578063f887ea4014610989578063f9f92be4146109a957600080fd5b8063e8b574f2146108dc578063e96fada214610909578063f1f3bca31461092957600080fd5b8063c9567bf914610816578063d00efb2f1461082b578063d088935814610841578063d58d850c14610861578063d912b2ce14610881578063dd62ed3e1461089657600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079c578063bafe446b146107bc578063bb2188b4146107d1578063bfa21d6a146107f157600080fd5b8063a845bd8614610746578063a8aa1b311461075c578063a9059cbb1461077c57600080fd5b8063893d20e81461065a5780638b42507f1461068c5780638da5cb5b146106bc57806395d89b41146106da5780639fdc800514610706578063a4b45c001461072657600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d657806370a08231146105f5578063715018a61461062b5780638124f7ac1461064057600080fd5b8063658d4b7f1461058057806365cf7c9b146105a057806367243482146105b657600080fd5b8063492a937b146104bb57806350713935146104db57806356a227f2146104fb57806360bba03d1461051b57806360eef7411461053b57806363a803e11461056b57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043a578063313ce5671461044f578063332402f81461046b5780633f4218e01461048b57600080fd5b8063188d1644146103ef578063234e94941461040557806323b872dd1461041a57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610394578063178a18ce146103c457806318160ddd146103da57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612173565b6109d6565b005b34801561036657600080fd5b50604080518082019091526008815267436572656272756d60c01b60208201525b60405161032f91906121ae565b3480156103a057600080fd5b506103b46103af366004612211565b610b04565b604051901515815260200161032f565b3480156103d057600080fd5b50610325600a5481565b3480156103e657600080fd5b50600354610325565b3480156103fb57600080fd5b50610325601c5481565b34801561041157600080fd5b50610325610b71565b34801561042657600080fd5b506103b461043536600461223d565b610b91565b34801561044657600080fd5b50610325610c26565b34801561045b57600080fd5b506040516012815260200161032f565b34801561047757600080fd5b506103b461048636600461227e565b610c67565b34801561049757600080fd5b506103b46104a63660046122b7565b600b6020526000908152604090205460ff1681565b3480156104c757600080fd5b506103586104d63660046122e9565b610d0e565b3480156104e757600080fd5b506103586104f636600461231e565b610daa565b34801561050757600080fd5b5061035861051636600461234a565b610e23565b34801561052757600080fd5b506103586105363660046122e9565b610f29565b34801561054757600080fd5b506103b46105563660046122b7565b600d6020526000908152604090205460ff1681565b34801561057757600080fd5b50610325610f5c565b34801561058c57600080fd5b5061035861059b3660046122e9565b610f77565b3480156105ac57600080fd5b50610325601e5481565b3480156105c257600080fd5b506103586105d13660046123bb565b610faa565b3480156105e257600080fd5b50601f546103b490610100900460ff1681565b34801561060157600080fd5b506103256106103660046122b7565b6001600160a01b031660009081526007602052604090205490565b34801561063757600080fd5b506103586110ef565b34801561064c57600080fd5b506015546103b49060ff1681565b34801561066657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069857600080fd5b506103b46106a73660046122b7565b600c6020526000908152604090205460ff1681565b3480156106c857600080fd5b506000546001600160a01b0316610674565b3480156106e657600080fd5b5060408051808201909152600381526243424d60e81b6020820152610387565b34801561071257600080fd5b506103b46107213660046122b7565b611103565b34801561073257600080fd5b5061035861074136600461227e565b611111565b34801561075257600080fd5b5061032560215481565b34801561076857600080fd5b50601a54610674906001600160a01b031681565b34801561078857600080fd5b506103b4610797366004612211565b611151565b3480156107a857600080fd5b506103586107b7366004612427565b61115e565b3480156107c857600080fd5b506103256111ad565b3480156107dd57600080fd5b506103586107ec366004612449565b6111c8565b3480156107fd57600080fd5b506015546106749061010090046001600160a01b031681565b34801561082257600080fd5b5061035861136f565b34801561083757600080fd5b50610325601d5481565b34801561084d57600080fd5b5061035861085c36600461249d565b61140f565b34801561086d57600080fd5b5061035861087c3660046124d0565b611466565b34801561088d57600080fd5b50610358611473565b3480156108a257600080fd5b506103256108b136600461227e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e857600080fd5b506103256108f73660046124d0565b60096020526000908152604090205481565b34801561091557600080fd5b50601654610674906001600160a01b031681565b34801561093557600080fd5b506103256109443660046124e9565b61148f565b34801561095557600080fd5b506103586109643660046122b7565b6114a7565b34801561097557600080fd5b506103586109843660046122e9565b611520565b34801561099557600080fd5b50601754610674906001600160a01b031681565b3480156109b557600080fd5b506103256109c43660046122b7565b601b6020526000908152604090205481565b6109de611553565b6109e8848661251a565b60026109f4868861251a565b6109fe919061252d565b610a0990600261254f565b14610a83576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa1838661251a565b601255610aae828561251a565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b5f9086815260200190565b60405180910390a35060015b92915050565b6000610b7f6012600a61264a565b600554610b8c919061252d565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c11576001600160a01b0384166000908152600860209081526040808320338452909152902054610bec908390612659565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1c8484846115ad565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5a9161251a565b600354610b8c9190612659565b60155460009060ff16158015610c9657506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbb57506001600160a01b03831660009081526019602052604090205460ff16155b15610cc857506000610b6b565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c1f5750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d16611553565b601a546001600160a01b0390811690831603610d7f5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7a565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db2611553565b600083118015610dc25750600082115b8015610dce5750600081115b8015610ddc57506127108111155b610de557600080fd5b8083600354610df4919061254f565b610dfe919061252d565b6004556003548190610e1190849061254f565b610e1b919061252d565b600555505050565b3360009081526023602052604090205460ff1680610e4b57506000546001600160a01b031633145b610e675760405162461bcd60e51b8152600401610a7a9061266c565b478015610f245760006001600160a01b0383166064610e86868561254f565b610e90919061252d565b604051600081818185875af1925050503d8060008114610ecc576040519150601f19603f3d011682016040523d82523d6000602084013e610ed1565b606091505b5050905080610f225760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7a565b505b505050565b610f31611553565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6a6012600a61264a565b600654610b8c919061252d565b610f7f611553565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb2611553565b8215801590610fc057508083145b610fc957600080fd5b3360005b848110156110e75760196000878784818110610feb57610feb6126a3565b905060200201602081019061100091906122b7565b6001600160a01b0316815260208101919091526040016000205460ff1615801561106f5750600d600087878481811061103b5761103b6126a3565b905060200201602081019061105091906122b7565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d5576110d38287878481811061108a5761108a6126a3565b905060200201602081019061109f91906122b7565b6110ab6012600a61264a565b8787868181106110bd576110bd6126a3565b905060200201356110ce919061254f565b6119c7565b505b806110df816126b9565b915050610fcd565b505050505050565b6110f7611553565b6111016000611a81565b565b6000610b6b82600019610b04565b611119611553565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c1f3384846115ad565b611166611553565b6000821180156111765750600081115b801561118457506127108111155b61118d57600080fd5b808260035461119c919061254f565b6111a6919061252d565b6006555050565b60006111bb6012600a61264a565b600454610b8c919061252d565b3360009081526023602052604090205460ff16806111f057506000546001600160a01b031633145b61120c5760405162461bcd60e51b8152600401610a7a9061266c565b60005b82811015610f225781156112aa57601c805490600061122d836126b9565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611266576112666126a3565b905060200201602081019061127b91906122b7565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130a565b601b60008585848181106112c0576112c06126a3565b90506020020160208101906112d591906122b7565b6001600160a01b031681526020810191909152604001600020541561130a57601c8054906000611304836126d2565b91905055505b81611316576000611318565b435b601b600086868581811061132e5761132e6126a3565b905060200201602081019061134391906122b7565b6001600160a01b0316815260208101919091526040016000205580611367816126b9565b91505061120f565b3360009081526023602052604090205460ff168061139757506000546001600160a01b031633145b6113b35760405162461bcd60e51b8152600401610a7a9061266c565b601f5460ff16156113fe5760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7a565b601f805461ffff1916610101179055565b611417611553565b6000821161142457600080fd5b601f805461ff0019166101008515150217905560035461144590839061252d565b6020556114546012600a61264a565b61145e908261254f565b602155505050565b61146e611553565b600a55565b61147b611553565b6015805460ff19811660ff90911615179055565b6000811561149f57505060135490565b505060125490565b6114af611553565b6001600160a01b0381166115145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7a565b61151d81611a81565b50565b611528611553565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7a565b60006001600160a01b0384166116055760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7a565b6001600160a01b0383166116545760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7a565b6000821161169c5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7a565b6001600160a01b0384166000908152600760205260409020548211156116fb5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7a565b601d5415801561172357506001600160a01b03831660009081526019602052604090205460ff165b1561179d576001600160a01b0384166000908152600d602052604090205460ff166117905760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7a565b61179d43601d5542601e55565b601f5460ff16611832576001600160a01b0384166000908152600d602052604090205460ff16806117e657506001600160a01b0383166000908152600d602052604090205460ff165b6118325760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7a565b61183d848484611ad1565b6001600160a01b03831660009081526019602052604090205460ff1615801561187457506001546001600160a01b03848116911614155b156118a3576001600160a01b0383166000908152600c602052604090205460ff166118a3576118a38383611bf1565b60225460ff16156118c0576118b98484846119c7565b9050610c1f565b6001600160a01b0384166000908152600760205260409020546118e4908390612659565b6001600160a01b038516600090815260076020526040902055816119088585610c67565b1561193c576119178484611c74565b905061192284611cf2565b801561192e5750600083115b1561193c5761193c83611da5565b6001600160a01b03841660009081526007602052604090205461196090829061251a565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b49085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119eb908390612659565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1b90839061251a565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a6f9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1057506001600160a01b0382166000908152600c602052604090205460ff165b15611b1a57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4257600554611b46565b6004545b811115611b955760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7a565b6001600160a01b0383166000908152601b602052604090205415610f245760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7a565b6006546001600160a01b0383166000908152600760205260409020548190611c1a90849061251a565b1115610f245760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7a565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca18361148f565b611cab908661254f565b611cb5919061252d565b30600090815260076020526040812080549293508392909190611cd990849061251a565b90915550611ce990508185612659565b95945050505050565b3360009081526019602052604081205460ff16158015611d15575060225460ff16155b8015611d285750601f54610100900460ff165b8015611d445750600a5443600090815260096020526040902054105b8015611d6857506001600160a01b03821660009081526019602052604090205460ff165b8015611d8557506021543060009081526007602052604090205410155b8015610b6b57506000601354601254611d9e919061251a565b1192915050565b6022805460ff19166001179055601354601254600091611dc49161251a565b905060006020548310611dd957602054611ddb565b825b30600090815260076020526040902054909150811115611e075750306000908152600760205260409020545b6000601154601054611e19919061251a565b90506000836002611e2a848661254f565b611e34919061252d565b611e3e919061252d565b9050611e4a8184612659565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8457611e846126a3565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0191906126e9565b81600181518110611f1457611f146126a3565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f5e908890600090879030904290600401612706565b600060405180830381600087803b158015611f7857600080fd5b505af1158015611f8c573d6000803e3d6000fd5b5050505060008147611f9e9190612659565b90506000611fad60028761252d565b611fb79089612659565b90506000816002611fc8898661254f565b611fd2919061252d565b611fdc919061252d565b90506000611fea8285612659565b90508015612049576016546040516000916001600160a01b03169083908381818185875af1925050503d806000811461203f576040519150601f19603f3d011682016040523d82523d6000602084013e612044565b606091505b505050505b86156120ed5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120e99190612777565b5050505b4360009081526009602052604090205461210890600161251a565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121db578581018301518582016040015282016121bf565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151d57600080fd5b6000806040838503121561222457600080fd5b823561222f816121fc565b946020939093013593505050565b60008060006060848603121561225257600080fd5b833561225d816121fc565b9250602084013561226d816121fc565b929592945050506040919091013590565b6000806040838503121561229157600080fd5b823561229c816121fc565b915060208301356122ac816121fc565b809150509250929050565b6000602082840312156122c957600080fd5b8135610c1f816121fc565b803580151581146122e457600080fd5b919050565b600080604083850312156122fc57600080fd5b8235612307816121fc565b9150612315602084016122d4565b90509250929050565b60008060006060848603121561233357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235d57600080fd5b8235915060208301356122ac816121fc565b60008083601f84011261238157600080fd5b50813567ffffffffffffffff81111561239957600080fd5b6020830191508360208260051b85010111156123b457600080fd5b9250929050565b600080600080604085870312156123d157600080fd5b843567ffffffffffffffff808211156123e957600080fd5b6123f58883890161236f565b9096509450602087013591508082111561240e57600080fd5b5061241b8782880161236f565b95989497509550505050565b6000806040838503121561243a57600080fd5b50508035926020909101359150565b60008060006040848603121561245e57600080fd5b833567ffffffffffffffff81111561247557600080fd5b6124818682870161236f565b90945092506124949050602085016122d4565b90509250925092565b6000806000606084860312156124b257600080fd5b6124bb846122d4565b95602085013595506040909401359392505050565b6000602082840312156124e257600080fd5b5035919050565b6000602082840312156124fb57600080fd5b610c1f826122d4565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6b57610b6b612504565b60008261254a57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6b57610b6b612504565b600181815b808511156125a157816000190482111561258757612587612504565b8085161561259457918102915b93841c939080029061256b565b509250929050565b6000826125b857506001610b6b565b816125c557506000610b6b565b81600181146125db57600281146125e557612601565b6001915050610b6b565b60ff8411156125f6576125f6612504565b50506001821b610b6b565b5060208310610133831016604e8410600b8410161715612624575081810a610b6b565b61262e8383612566565b806000190482111561264257612642612504565b029392505050565b6000610c1f60ff8416836125a9565b81810381811115610b6b57610b6b612504565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cb576126cb612504565b5060010190565b6000816126e1576126e1612504565b506000190190565b6000602082840312156126fb57600080fd5b8151610c1f816121fc565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127565784516001600160a01b031683529383019391830191600101612731565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220edb5ab8d37a36cb028e4be0b04b5535d0945442beb03becea1db01e92181b96764736f6c63430008110033

Deployed Bytecode Sourcemap

6952:14844:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8787:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8787:50:0;;;;;;;;19987:791;;;;;;;;;;-1:-1:-1;19987:791:0;;;;;:::i;:::-;;:::i;:::-;;10241:79;;;;;;;;;;-1:-1:-1;10309:5:0;;;;;;;;;;;;-1:-1:-1;;;10309:5:0;;;;10241:79;;;;;;;:::i;11051:217::-;;;;;;;;;;-1:-1:-1;11051:217:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;11051:217:0;1664:187:1;7654:36:0;;;;;;;;;;;;;;;;9965:96;;;;;;;;;;-1:-1:-1;10043:12:0;;9965:96;;8613:29;;;;;;;;;;;;;;;;10530:115;;;;;;;;;;;;;:::i;12918:361::-;;;;;;;;;;-1:-1:-1;12918:361:0;;;;;:::i;:::-;;:::i;21439:132::-;;;;;;;;;;;;;:::i;10067:79::-;;;;;;;;;;-1:-1:-1;10067:79:0;;7254:2;2459:36:1;;2447:2;2432:18;10067:79:0;2317:184:1;16021:268:0;;;;;;;;;;-1:-1:-1;16021:268:0;;;;;:::i;:::-;;:::i;7697:43::-;;;;;;;;;;-1:-1:-1;7697:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18877:174;;;;;;;;;;-1:-1:-1;18877:174:0;;;;;:::i;:::-;;:::i;19163:359::-;;;;;;;;;;-1:-1:-1;19163:359:0;;;;;:::i;:::-;;:::i;11976:320::-;;;;;;;;;;-1:-1:-1;11976:320:0;;;;;:::i;:::-;;:::i;11402:114::-;;;;;;;;;;-1:-1:-1;11402:114:0;;;;;:::i;:::-;;:::i;7797:50::-;;;;;;;;;;-1:-1:-1;7797:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10651:113;;;;;;;;;;;;;:::i;19741:::-;;;;;;;;;;-1:-1:-1;19741:113:0;;;;;:::i;:::-;;:::i;8680:30::-;;;;;;;;;;;;;;;;11522:448;;;;;;;;;;-1:-1:-1;11522:448:0;;;;;:::i;:::-;;:::i;8751:31::-;;;;;;;;;;-1:-1:-1;8751:31:0;;;;;;;;;;;10770:113;;;;;;;;;;-1:-1:-1;10770:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;10859:18:0;10836:7;10859:18;;;:9;:18;;;;;;;10770:113;6468:97;;;;;;;;;;;;;:::i;8150:31::-;;;;;;;;;;-1:-1:-1;8150:31:0;;;;;;;;10326:79;;;;;;;;;;-1:-1:-1;10369:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;10326:79;;;-1:-1:-1;;;;;5591:32:1;;;5573:51;;5561:2;5546:18;10326:79:0;5427:203:1;7745:47:0;;;;;;;;;;-1:-1:-1;7745:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6249:81;;;;;;;;;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;6249:81;;10152:83;;;;;;;;;;-1:-1:-1;10222:7:0;;;;;;;;;;;;-1:-1:-1;;;10222:7:0;;;;10152:83;;11274:122;;;;;;;;;;-1:-1:-1;11274:122:0;;;;;:::i;:::-;;:::i;20877:247::-;;;;;;;;;;-1:-1:-1;20877:247:0;;;;;:::i;:::-;;:::i;8842:51::-;;;;;;;;;;;;;;;;8538:19;;;;;;;;;;-1:-1:-1;8538:19:0;;;;-1:-1:-1;;;;;8538:19:0;;;12747:165;;;;;;;;;;-1:-1:-1;12747:165:0;;;;;:::i;:::-;;:::i;19528:207::-;;;;;;;;;;-1:-1:-1;19528:207:0;;;;;:::i;:::-;;:::i;10411:113::-;;;;;;;;;;;;;:::i;12302:439::-;;;;;;;;;;-1:-1:-1;12302:439:0;;;;;:::i;:::-;;:::i;8188:97::-;;;;;;;;;;-1:-1:-1;8188:97:0;;;;;;;-1:-1:-1;;;;;8188:97:0;;;14901:160;;;;;;;;;;;;;:::i;8649:26::-;;;;;;;;;;;;;;;;21130:303;;;;;;;;;;-1:-1:-1;21130:303:0;;;;;:::i;:::-;;:::i;19057:100::-;;;;;;;;;;-1:-1:-1;19057:100:0;;;;;:::i;:::-;;:::i;20784:87::-;;;;;;;;;;;;;:::i;10889:156::-;;;;;;;;;;-1:-1:-1;10889:156:0;;;;;:::i;:::-;-1:-1:-1;;;;;11011:19:0;;;10988:7;11011:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10889:156;7599:50;;;;;;;;;;-1:-1:-1;7599:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;8290:97;;;;;;;;;;-1:-1:-1;8290:97:0;;;;-1:-1:-1;;;;;8290:97:0;;;16295:135;;;;;;;;;;-1:-1:-1;16295:135:0;;;;;:::i;:::-;;:::i;6571:191::-;;;;;;;;;;-1:-1:-1;6571:191:0;;;;;:::i;:::-;;:::i;19860:121::-;;;;;;;;;;-1:-1:-1;19860:121:0;;;;;:::i;:::-;;:::i;8394:24::-;;;;;;;;;;-1:-1:-1;8394:24:0;;;;-1:-1:-1;;;;;8394:24:0;;;8564:44;;;;;;;;;;-1:-1:-1;8564:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;19987:791;6216:13;:11;:13::i;:::-;20269:36:::1;20288:17:::0;20269:16;:36:::1;:::i;:::-;20249:1;20209:36;20228:17:::0;20209:16;:36:::1;:::i;:::-;20208:42;;;;:::i;:::-;20207:48;::::0;20254:1:::1;20207:48;:::i;:::-;:99;20191:197;;;::::0;;-1:-1:-1;;;20191:197:0;;8398:2:1;20191:197:0::1;::::0;::::1;8380:21:1::0;8417:18;;;8410:30;;;;8476:34;8456:18;;;8449:62;8547:34;8527:18;;;8520:62;8599:19;;20191:197:0::1;;;;;;;;;20395:15;:34:::0;;;20436:16:::1;:36:::0;;;20479:15:::1;:34:::0;;;20520:16:::1;:36:::0;;;20577:35:::1;20497:16:::0;20413;20577:35:::1;:::i;:::-;20563:11;:49:::0;20634:37:::1;20654:17:::0;20634;:37:::1;:::i;:::-;20619:12;:52:::0;;;20678:14:::1;:32:::0;;;20730:11:::1;::::0;20722:50:::1;::::0;;8831:25:1;;;8887:2;8872:18;;8865:34;;;;8915:18;;;8908:34;;;20722:50:0::1;::::0;8819:2:1;8804:18;20722:50:0::1;;;;;;;19987:791:::0;;;;;:::o;11051:217::-;11166:10;11141:4;11154:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11154:32:0;;;;;;;;;;:41;;;11207:37;11141:4;;11154:32;;11207:37;;;;11189:6;160:25:1;;148:2;133:18;;14:177;11207:37:0;;;;;;;;-1:-1:-1;11258:4:0;11051:217;;;;;:::o;10530:115::-;10580:7;10623:15;7254:2;10623;:15;:::i;:::-;10603:16;;:36;;;;:::i;:::-;10596:43;;10530:115;:::o;12918:361::-;-1:-1:-1;;;;;13055:19:0;;13038:4;13055:19;;;:11;:19;;;;;;;;13075:10;13055:31;;;;;;;;-1:-1:-1;;13055:52:0;13051:167;;-1:-1:-1;;;;;13161:19:0;;;;;;:11;:19;;;;;;;;13181:10;13161:31;;;;;;;;:49;;13204:6;;13161:49;:::i;:::-;-1:-1:-1;;;;;13118:19:0;;;;;;:11;:19;;;;;;;;13138:10;13118:31;;;;;;;:92;13051:167;13233:40;13247:6;13255:9;13266:6;13233:13;:40::i;:::-;13226:47;;12918:361;;;;;;:::o;21439:132::-;21559:4;;-1:-1:-1;;;;;21559:4:0;;;21492:7;10859:18;;;:9;:18;;;;;;;21541:4;;;;;10859:18;;;;;21492:7;;21531:33;;;:::i;:::-;21515:12;;:50;;;;:::i;16021:268::-;16133:11;;16115:4;;16133:11;;16132:12;:42;;;;-1:-1:-1;;;;;;16149:25:0;;;;;;:14;:25;;;;;;;;16148:26;16132:42;:69;;;;-1:-1:-1;;;;;;16179:22:0;;;;;;:14;:22;;;;;;;;16178:23;16132:69;16128:94;;;-1:-1:-1;16217:5:0;16210:12;;16128:94;-1:-1:-1;;;;;16237:19:0;;;;;;:11;:19;;;;;;;;16236:20;:47;;;;-1:-1:-1;;;;;;;16261:22:0;;;;;:11;:22;;;;;;;;16260:23;;16229:54;-1:-1:-1;16021:268:0:o;18877:174::-;6216:13;:11;:13::i;:::-;18968:4:::1;::::0;-1:-1:-1;;;;;18968:4:0;;::::1;18962:10:::0;;::::1;::::0;18954:57:::1;;;::::0;-1:-1:-1;;;18954:57:0;;10671:2:1;18954:57:0::1;::::0;::::1;10653:21:1::0;10710:2;10690:18;;;10683:30;10749:34;10729:18;;;10722:62;-1:-1:-1;;;10800:18:1;;;10793:32;10842:19;;18954:57:0::1;10469:398:1::0;18954:57:0::1;-1:-1:-1::0;;;;;19018:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19018:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18877:174::o;19163:359::-;6216:13;:11;:13::i;:::-;19322:1:::1;19307:12;:16;:37;;;;;19343:1;19327:13;:17;19307:37;:52;;;;;19358:1;19348:7;:11;19307:52;:72;;;;;19374:5;19363:7;:16;;19307:72;19291:95;;;::::0;::::1;;19443:7;19427:12;19412;;:27;;;;:::i;:::-;19411:39;;;;:::i;:::-;19393:15;:57:::0;19477:12:::1;::::0;19509:7;;19477:28:::1;::::0;19492:13;;19477:28:::1;:::i;:::-;19476:40;;;;:::i;:::-;19457:16;:59:::0;-1:-1:-1;;;19163:359:0:o;11976:320::-;4404:10;9083:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9112:10;:21;9083:50;9067:111;;;;-1:-1:-1;;;9067:111:0;;;;;;;:::i;:::-;12102:21:::1;12136:13:::0;;12132:159:::1;;12161:9;-1:-1:-1::0;;;;;12176:8:0;::::1;12225:3;12193:28;12205:16:::0;12193:9;:28:::1;:::i;:::-;12192:36;;;;:::i;:::-;12176:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12160:73;;;12250:4;12242:41;;;::::0;-1:-1:-1;;;12242:41:0;;11640:2:1;12242:41:0::1;::::0;::::1;11622:21:1::0;11679:2;11659:18;;;11652:30;11718:26;11698:18;;;11691:54;11762:18;;12242:41:0::1;11438:348:1::0;12242:41:0::1;12151:140;12132:159;12075:221;11976:320:::0;;:::o;11402:114::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;11481:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:29;;-1:-1:-1;;11481:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11402:114::o;10651:113::-;10701:7;10742:15;7254:2;10742;:15;:::i;:::-;10724:14;;:34;;;;:::i;19741:113::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;19820:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;19820:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19741:113::o;11522:448::-;6216:13;:11;:13::i;:::-;11646:20;;;;;:58:::1;;-1:-1:-1::0;11670:34:0;;::::1;11646:58;11638:67;;;::::0;::::1;;11727:10;11712:12;11746:219;11763:20:::0;;::::1;11746:219;;;11804:14;:28;11819:9;;11829:1;11819:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11804:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11804:28:0;;::::1;;11803:29;:66:::0;::::1;;;;11837:18;:32;11856:9;;11866:1;11856:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11837:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11837:32:0;;::::1;;11836:33;11803:66;11799:159;;;11882:66;11897:4;11903:9;;11913:1;11903:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11931:15;7254:2;11931;:15;:::i;:::-;11917:7;;11925:1;11917:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;11882:14;:66::i;:::-;;11799:159;11785:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11746:219;;;;11631:339;11522:448:::0;;;;:::o;6468:97::-;6216:13;:11;:13::i;:::-;6529:30:::1;6556:1;6529:18;:30::i;:::-;6468:97::o:0;11274:122::-;11335:4;11355:35;11363:7;-1:-1:-1;;11355:7:0;:35::i;20877:247::-;6216:13;:11;:13::i;:::-;21005:20:::1;:53:::0;;-1:-1:-1;;;;;;21005:53:0::1;;-1:-1:-1::0;;;;;21005:53:0;;::::1;;;::::0;;21065:20:::1;:53:::0;;-1:-1:-1;;;;;;21065:53:0::1;::::0;;;::::1;;::::0;;20877:247::o;12747:165::-;12842:4;12862:44;12876:10;12888:9;12899:6;12862:13;:44::i;19528:207::-;6216:13;:11;:13::i;:::-;19632:1:::1;19620:9;:13;:28;;;;;19647:1;19637:7;:11;19620:28;:48;;;;;19663:5;19652:7;:16;;19620:48;19612:57;;;::::0;::::1;;19722:7;19709:9;19694:12;;:24;;;;:::i;:::-;19693:36;;;;:::i;:::-;19676:14;:53:::0;-1:-1:-1;;19528:207:0:o;10411:113::-;10460:7;10502:15;7254:2;10502;:15;:::i;:::-;10483;;:35;;;;:::i;12302:439::-;4404:10;9083:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9112:10;:21;9083:50;9067:111;;;;-1:-1:-1;;;9067:111:0;;;;;;;:::i;:::-;12419:6:::1;12414:322;12431:19:::0;;::::1;12414:322;;;12470:10;12466:200;;;12493:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12525:55;12543:9;12554:8;;12563:1;12554:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12525:55;::::0;;-1:-1:-1;;;;;12321:15:1;;;12303:34;;12373:15;;;;12368:2;12353:18;;12346:43;12567:12:0::1;12405:18:1::0;;;12398:34;12253:2;12238:18;12525:55:0::1;;;;;;;12466:200;;;12611:9;:22;12621:8;;12630:1;12621:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12611:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12611:22:0;;:27;12607:49:::1;;12640:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12607:49;12699:10;:29;;12727:1;12699:29;;;12712:12;12699:29;12674:9;:22;12684:8;;12693:1;12684:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12674:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12674:22:0;:54;12452:3;::::1;::::0;::::1;:::i;:::-;;;;12414:322;;14901:160:::0;4404:10;9083:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9112:10;:21;9083:50;9067:111;;;;-1:-1:-1;;;9067:111:0;;;;;;;:::i;:::-;14958:16:::1;::::0;::::1;;14957:17;14949:51;;;::::0;-1:-1:-1;;;14949:51:0;;12786:2:1;14949:51:0::1;::::0;::::1;12768:21:1::0;12825:2;12805:18;;;12798:30;-1:-1:-1;;;12844:18:1;;;12837:51;12905:18;;14949:51:0::1;12584:345:1::0;14949:51:0::1;15007:16;:23:::0;;-1:-1:-1;;15037:18:0;;;;;14901:160::o;21130:303::-;6216:13;:11;:13::i;:::-;21289:1:::1;21274:12;:16;21266:25;;;::::0;::::1;;21298:11;:22:::0;;-1:-1:-1;;21298:22:0::1;;::::0;::::1;;;;::::0;;21343:12:::1;::::0;:27:::1;::::0;21358:12;;21343:27:::1;:::i;:::-;21327:13;:43:::0;21411:15:::1;7254:2;21411;:15;:::i;:::-;21393:34;::::0;:14;:34:::1;:::i;:::-;21377:13;:50:::0;-1:-1:-1;;;21130:303:0:o;19057:100::-;6216:13;:11;:13::i;:::-;19127:17:::1;:24:::0;19057:100::o;20784:87::-;6216:13;:11;:13::i;:::-;20854:11:::1;::::0;;-1:-1:-1;;20839:26:0;::::1;20854:11;::::0;;::::1;20853:12;20839:26;::::0;;20784:87::o;16295:135::-;16351:7;16371;16367:32;;;-1:-1:-1;;16387:12:0;;;16295:135::o;16367:32::-;-1:-1:-1;;16413:11:0;;;16295:135::o;6571:191::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;6656:22:0;::::1;6648:73;;;::::0;-1:-1:-1;;;6648:73:0;;13136:2:1;6648:73:0::1;::::0;::::1;13118:21:1::0;13175:2;13155:18;;;13148:30;13214:34;13194:18;;;13187:62;-1:-1:-1;;;13265:18:1;;;13258:36;13311:19;;6648:73:0::1;12934:402:1::0;6648:73:0::1;6728:28;6747:8;6728:18;:28::i;:::-;6571:191:::0;:::o;19860:121::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;19943:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;19943:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19860:121::o;6336:126::-;6295:7;6318:6;-1:-1:-1;;;;;6318:6:0;4404:10;6396:23;6388:68;;;;-1:-1:-1;;;6388:68:0;;13543:2:1;6388:68:0;;;13525:21:1;;;13562:18;;;13555:30;13621:34;13601:18;;;13594:62;13673:18;;6388:68:0;13341:356:1;13285:1407:0;13397:4;-1:-1:-1;;;;;13418:20:0;;13410:57;;;;-1:-1:-1;;;13410:57:0;;13904:2:1;13410:57:0;;;13886:21:1;13943:2;13923:18;;;13916:30;13982:26;13962:18;;;13955:54;14026:18;;13410:57:0;13702:348:1;13410:57:0;-1:-1:-1;;;;;13482:23:0;;13474:58;;;;-1:-1:-1;;;13474:58:0;;14257:2:1;13474:58:0;;;14239:21:1;14296:2;14276:18;;;14269:30;-1:-1:-1;;;14315:18:1;;;14308:52;14377:18;;13474:58:0;14055:346:1;13474:58:0;13556:1;13547:6;:10;13539:44;;;;-1:-1:-1;;;13539:44:0;;14608:2:1;13539:44:0;;;14590:21:1;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:1;;;14659:51;14727:18;;13539:44:0;14406:345:1;13539:44:0;-1:-1:-1;;;;;13598:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13598:27:0;13590:60;;;;-1:-1:-1;;;13590:60:0;;14958:2:1;13590:60:0;;;14940:21:1;14997:2;14977:18;;;14970:30;-1:-1:-1;;;15016:18:1;;;15009:50;15076:18;;13590:60:0;14756:344:1;13590:60:0;14761:11;;:16;;;13661:40;;-1:-1:-1;;;;;;13676:25:0;;;;;;:14;:25;;;;;;;;13661:40;13657:143;;;-1:-1:-1;;;;;13720:26:0;;;;;;:18;:26;;;;;;;;13712:63;;;;-1:-1:-1;;;13712:63:0;;15307:2:1;13712:63:0;;;15289:21:1;15346:2;15326:18;;;15319:30;15385:26;15365:18;;;15358:54;15429:18;;13712:63:0;15105:348:1;13712:63:0;13784:8;14837:12;14823:11;:26;14874:15;14856;:33;14789:106;13784:8;13811:16;;;;13806:167;;-1:-1:-1;;;;;13856:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;13886:29:0;;;;;;:18;:29;;;;;;;;13856:59;13838:127;;;;-1:-1:-1;;;13838:127:0;;15660:2:1;13838:127:0;;;15642:21:1;15699:2;15679:18;;;15672:30;15738;15718:18;;;15711:58;15786:18;;13838:127:0;15458:352:1;13838:127:0;13981:39;13994:6;14002:9;14013:6;13981:12;:39::i;:::-;-1:-1:-1;;;;;14034:25:0;;;;;;:14;:25;;;;;;;;14033:26;:47;;;;-1:-1:-1;14076:4:0;;-1:-1:-1;;;;;14063:17:0;;;14076:4;;14063:17;;14033:47;14029:158;;;-1:-1:-1;;;;;14096:26:0;;;;;;:15;:26;;;;;;;;14091:89;;14135:35;14152:9;14163:6;14135:16;:35::i;:::-;14199:6;;;;14195:77;;;14223:41;14238:6;14246:9;14257:6;14223:14;:41::i;:::-;14216:48;;;;14195:77;-1:-1:-1;;;;;14300:17:0;;;;;;:9;:17;;;;;;:26;;14320:6;;14300:26;:::i;:::-;-1:-1:-1;;;;;14280:17:0;;;;;;:9;:17;;;;;:46;14360:6;14379:32;14290:6;14401:9;14379:13;:32::i;:::-;14375:168;;;14439:26;14447:9;14458:6;14439:7;:26::i;:::-;14422:43;;14478:25;14493:9;14478:14;:25::i;:::-;:39;;;;;14516:1;14507:6;:10;14478:39;14474:61;;;14519:16;14528:6;14519:8;:16::i;:::-;-1:-1:-1;;;;;14574:20:0;;;;;;:9;:20;;;;;;:37;;14597:14;;14574:37;:::i;:::-;-1:-1:-1;;;;;14551:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14625:43;;;;;;;;;;14653:14;160:25:1;;148:2;133:18;;14:177;14625:43:0;;;;;;;;-1:-1:-1;14682:4:0;;13285:1407;-1:-1:-1;;;;13285:1407:0:o;15067:302::-;-1:-1:-1;;;;;15213:17:0;;15180:4;15213:17;;;:9;:17;;;;;;:26;;15233:6;;15213:26;:::i;:::-;-1:-1:-1;;;;;15193:17:0;;;;;;;:9;:17;;;;;;:46;;;;15269:20;;;;;;;:29;;15292:6;;15269:29;:::i;:::-;-1:-1:-1;;;;;15246:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15310:35;;;;;;;;;;15338:6;160:25:1;;148:2;133:18;;14:177;15310:35:0;;;;;;;;-1:-1:-1;15359:4:0;15067:302;;;;;:::o;6768:177::-;6838:16;6857:6;;-1:-1:-1;;;;;6870:17:0;;;-1:-1:-1;;;;;;6870:17:0;;;;;;6899:40;;6857:6;;;;;;;6899:40;;6838:16;6899:40;6831:114;6768:177;:::o;15625:390::-;-1:-1:-1;;;;;15743:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;15770:26:0;;;;;;:15;:26;;;;;;;;15743:53;15739:66;;;15625:390;;;:::o;15739:66::-;-1:-1:-1;;;;;15840:22:0;;;;;;:14;:22;;;;;;;;:59;;15883:16;;15840:59;;;15865:15;;15840:59;15829:6;:71;;15813:133;;;;-1:-1:-1;;;15813:133:0;;16017:2:1;15813:133:0;;;15999:21:1;16056:2;16036:18;;;16029:30;16095;16075:18;;;16068:58;16143:18;;15813:133:0;15815:352:1;15813:133:0;-1:-1:-1;;;;;15963:17:0;;;;;;:9;:17;;;;;;:22;15955:54;;;;-1:-1:-1;;;15955:54:0;;16374:2:1;15955:54:0;;;16356:21:1;16413:2;16393:18;;;16386:30;-1:-1:-1;;;16432:18:1;;;16425:49;16491:18;;15955:54:0;16172:343:1;15375:244:0;15479:14;;-1:-1:-1;;;;;15516:20:0;;15457:19;15516:20;;;:9;:20;;;;;;15479:14;;15516:29;;15539:6;;15516:29;:::i;:::-;:44;;15500:113;;;;-1:-1:-1;;;15500:113:0;;16722:2:1;15500:113:0;;;16704:21:1;16761:2;16741:18;;;16734:30;16800:34;16780:18;;;16773:62;-1:-1:-1;;;16851:18:1;;;16844:33;16894:19;;15500:113:0;16520:399:1;16436:302:0;-1:-1:-1;;;;;16552:25:0;;16521:7;16552:25;;;:14;:25;;;;;;16638:14;;16552:25;;;;;16521:7;;16614:20;16552:25;16614:11;:20::i;:::-;16605:29;;:6;:29;:::i;:::-;16604:48;;;;:::i;:::-;16679:4;16661:24;;;;:9;:24;;;;;:37;;16584:68;;-1:-1:-1;16584:68:0;;16661:24;;;:37;;16584:68;;16661:37;:::i;:::-;;;;-1:-1:-1;16714:18:0;;-1:-1:-1;16723:9:0;16714:6;:18;:::i;:::-;16707:25;16436:302;-1:-1:-1;;;;;16436:302:0:o;16744:355::-;16853:10;16810:4;16838:26;;;:14;:26;;;;;;;;16837:27;:45;;;;-1:-1:-1;16876:6:0;;;;16875:7;16837:45;:67;;;;-1:-1:-1;16893:11:0;;;;;;;16837:67;:127;;;;-1:-1:-1;16947:17:0;;16931:12;16915:29;;;;:15;:29;;;;;;:49;16837:127;:163;;;;-1:-1:-1;;;;;;16975:25:0;;;;;;:14;:25;;;;;;;;16837:163;:215;;;;-1:-1:-1;17039:13:0;;17029:4;17011:24;;;;:9;:24;;;;;;:41;;16837:215;:256;;;;;17092:1;17077:12;;17063:11;;:26;;;;:::i;:::-;:30;16823:270;16744:355;-1:-1:-1;;16744:355:0:o;17105:1766::-;8943:6;:13;;-1:-1:-1;;8943:13:0;8952:4;8943:13;;;17197:12:::1;::::0;17183:11:::1;::::0;8943:6;;17183:26:::1;::::0;::::1;:::i;:::-;17164:45;;17216:20;17248:13;;17239:6;:22;:47;;17273:13;;17239:47;;;17264:6;17239:47;17315:4;17297:24;::::0;;;:9:::1;:24;::::0;;;;;17216:70;;-1:-1:-1;17297:39:0;-1:-1:-1;17293:91:0::1;;;-1:-1:-1::0;17378:4:0::1;17360:24;::::0;;;:9:::1;:24;::::0;;;;;17293:91:::1;17393:25;17439:16;;17421:15;;:34;;;;:::i;:::-;17393:62:::0;-1:-1:-1;17462:23:0::1;17538:8:::0;17526:1:::1;17490:32;17393:62:::0;17490:12;:32:::1;:::i;:::-;17489:38;;;;:::i;:::-;17488:58;;;;:::i;:::-;17462:84:::0;-1:-1:-1;17553:31:0::1;17462:84:::0;17553:31;::::1;:::i;:::-;17617:16;::::0;;17631:1:::1;17617:16:::0;;;;;::::1;::::0;;17553:31;;-1:-1:-1;17593:21:0::1;::::0;17617:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17617:16:0::1;17593:40;;17658:4;17640;17645:1;17640:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17640:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17680:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17680:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17640:7;;17680:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17670:4;17675:1;17670:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17670:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17756:6:::1;::::0;:154:::1;::::0;-1:-1:-1;;;17756:154:0;;17726:21:::1;::::0;17756:6;;;::::1;::::0;:57:::1;::::0;:154:::1;::::0;17822:12;;17702:21:::1;::::0;17853:4;;17874::::1;::::0;17888:15:::1;::::0;17756:154:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17919:17;17963:13;17939:21;:37;;;;:::i;:::-;17919:57:::0;-1:-1:-1;17983:19:0::1;18017:21;18037:1;18017:17:::0;:21:::1;:::i;:::-;18005:34;::::0;:8;:34:::1;:::i;:::-;17983:56:::0;-1:-1:-1;18048:26:0::1;17983:56:::0;18112:1:::1;18079:29;18091:17:::0;18079:9;:29:::1;:::i;:::-;18078:35;;;;:::i;:::-;18077:58;;;;:::i;:::-;18048:87:::0;-1:-1:-1;18142:26:0::1;18171:30;18048:87:::0;18171:9;:30:::1;:::i;:::-;18142:59:::0;-1:-1:-1;18214:22:0;;18210:232:::1;;18272:20;::::0;:74:::1;::::0;18248:18:::1;::::0;-1:-1:-1;;;;;18272:20:0::1;::::0;18315:18;;18248;18272:74;18248:18;18272:74;18315:18;18272:20;:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;18210:232:0::1;18454:19:::0;;18450:231:::1;;18484:6;::::0;18618:20:::1;::::0;18484:189:::1;::::0;-1:-1:-1;;;18484:189:0;;18552:4:::1;18484:189;::::0;::::1;18646:34:1::0;18696:18;;;18689:34;;;-1:-1:-1;18739:18:1;;;18732:34;;;18782:18;;;18775:34;-1:-1:-1;;;;;18484:6:0::1;18618:20:::0;;::::1;::::0;::::1;18825:19:1::0;;;18818:44;18649:15:0::1;18878:19:1::0;;;18871:35;18484:6:0;::::1;::::0;:22:::1;::::0;18514:18;;18580:19:1;;18484:189:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18450:231;18735:12;18719:29;::::0;;;:15:::1;:29;::::0;;;;;:33:::1;::::0;18751:1:::1;18719:33;:::i;:::-;18703:12;18687:29;::::0;;;:15:::1;:29;::::0;;;;;;;;:65;;;;18764:101;;8831:25:1;;;8872:18;;;8865:34;;;8915:18;;8908:34;;;18764:101:0::1;::::0;8819:2:1;8804:18;18764:101:0::1;;;;;;;-1:-1:-1::0;;8971:6:0;:14;;-1:-1:-1;;8971:14:0;;;-1:-1:-1;;;;;;;;;17105:1766:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:548::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;939:3;1124:1;1119:2;1110:6;1099:9;1095:22;1091:31;1084:42;1194:2;1187;1183:7;1178:2;1170:6;1166:15;1162:29;1151:9;1147:45;1143:54;1135:62;;;;655:548;;;;:::o;1208:131::-;-1:-1:-1;;;;;1283:31:1;;1273:42;;1263:70;;1329:1;1326;1319:12;1344:315;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:456::-;1933:6;1941;1949;2002:2;1990:9;1981:7;1977:23;1973:32;1970:52;;;2018:1;2015;2008:12;1970:52;2057:9;2044:23;2076:31;2101:5;2076:31;:::i;:::-;2126:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2196:33;2155:32;2196:33;:::i;:::-;1856:456;;2248:7;;-1:-1:-1;;;2302:2:1;2287:18;;;;2274:32;;1856:456::o;2506:388::-;2574:6;2582;2635:2;2623:9;2614:7;2610:23;2606:32;2603:52;;;2651:1;2648;2641:12;2603:52;2690:9;2677:23;2709:31;2734:5;2709:31;:::i;:::-;2759:5;-1:-1:-1;2816:2:1;2801:18;;2788:32;2829:33;2788:32;2829:33;:::i;:::-;2881:7;2871:17;;;2506:388;;;;;:::o;2899:247::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;3151:160::-;3216:20;;3272:13;;3265:21;3255:32;;3245:60;;3301:1;3298;3291:12;3245:60;3151:160;;;:::o;3316:315::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3590:35:1;3621:2;3606:18;;3590:35;:::i;:::-;3580:45;;3316:315;;;;;:::o;3636:316::-;3713:6;3721;3729;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;-1:-1:-1;;3821:23:1;;;3891:2;3876:18;;3863:32;;-1:-1:-1;3942:2:1;3927:18;;;3914:32;;3636:316;-1:-1:-1;3636:316:1:o;3957:315::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4138:9;4125:23;4115:33;;4198:2;4187:9;4183:18;4170:32;4211:31;4236:5;4211:31;:::i;4277:367::-;4340:8;4350:6;4404:3;4397:4;4389:6;4385:17;4381:27;4371:55;;4422:1;4419;4412:12;4371:55;-1:-1:-1;4445:20:1;;4488:18;4477:30;;4474:50;;;4520:1;4517;4510:12;4474:50;4557:4;4549:6;4545:17;4533:29;;4617:3;4610:4;4600:6;4597:1;4593:14;4585:6;4581:27;4577:38;4574:47;4571:67;;;4634:1;4631;4624:12;4571:67;4277:367;;;;;:::o;4649:773::-;4771:6;4779;4787;4795;4848:2;4836:9;4827:7;4823:23;4819:32;4816:52;;;4864:1;4861;4854:12;4816:52;4904:9;4891:23;4933:18;4974:2;4966:6;4963:14;4960:34;;;4990:1;4987;4980:12;4960:34;5029:70;5091:7;5082:6;5071:9;5067:22;5029:70;:::i;:::-;5118:8;;-1:-1:-1;5003:96:1;-1:-1:-1;5206:2:1;5191:18;;5178:32;;-1:-1:-1;5222:16:1;;;5219:36;;;5251:1;5248;5241:12;5219:36;;5290:72;5354:7;5343:8;5332:9;5328:24;5290:72;:::i;:::-;4649:773;;;;-1:-1:-1;5381:8:1;-1:-1:-1;;;;4649:773:1:o;5635:248::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;-1:-1:-1;;5803:23:1;;;5873:2;5858:18;;;5845:32;;-1:-1:-1;5635:248:1:o;5888:505::-;5980:6;5988;5996;6049:2;6037:9;6028:7;6024:23;6020:32;6017:52;;;6065:1;6062;6055:12;6017:52;6105:9;6092:23;6138:18;6130:6;6127:30;6124:50;;;6170:1;6167;6160:12;6124:50;6209:70;6271:7;6262:6;6251:9;6247:22;6209:70;:::i;:::-;6298:8;;-1:-1:-1;6183:96:1;-1:-1:-1;6352:35:1;;-1:-1:-1;6383:2:1;6368:18;;6352:35;:::i;:::-;6342:45;;5888:505;;;;;:::o;6622:316::-;6696:6;6704;6712;6765:2;6753:9;6744:7;6740:23;6736:32;6733:52;;;6781:1;6778;6771:12;6733:52;6804:26;6820:9;6804:26;:::i;:::-;6794:36;6877:2;6862:18;;6849:32;;-1:-1:-1;6928:2:1;6913:18;;;6900:32;;6622:316;-1:-1:-1;;;6622:316:1:o;6943:180::-;7002:6;7055:2;7043:9;7034:7;7030:23;7026:32;7023:52;;;7071:1;7068;7061:12;7023:52;-1:-1:-1;7094:23:1;;6943:180;-1:-1:-1;6943:180:1:o;7128:::-;7184:6;7237:2;7225:9;7216:7;7212:23;7208:32;7205:52;;;7253:1;7250;7243:12;7205:52;7276:26;7292:9;7276:26;:::i;7539:127::-;7600:10;7595:3;7591:20;7588:1;7581:31;7631:4;7628:1;7621:15;7655:4;7652:1;7645:15;7671:125;7736:9;;;7757:10;;;7754:36;;;7770:18;;:::i;7801:217::-;7841:1;7867;7857:132;;7911:10;7906:3;7902:20;7899:1;7892:31;7946:4;7943:1;7936:15;7974:4;7971:1;7964:15;7857:132;-1:-1:-1;8003:9:1;;7801:217::o;8023:168::-;8096:9;;;8127;;8144:15;;;8138:22;;8124:37;8114:71;;8165:18;;:::i;8953:422::-;9042:1;9085:5;9042:1;9099:270;9120:7;9110:8;9107:21;9099:270;;;9179:4;9175:1;9171:6;9167:17;9161:4;9158:27;9155:53;;;9188:18;;:::i;:::-;9238:7;9228:8;9224:22;9221:55;;;9258:16;;;;9221:55;9337:22;;;;9297:15;;;;9099:270;;;9103:3;8953:422;;;;;:::o;9380:806::-;9429:5;9459:8;9449:80;;-1:-1:-1;9500:1:1;9514:5;;9449:80;9548:4;9538:76;;-1:-1:-1;9585:1:1;9599:5;;9538:76;9630:4;9648:1;9643:59;;;;9716:1;9711:130;;;;9623:218;;9643:59;9673:1;9664:10;;9687:5;;;9711:130;9748:3;9738:8;9735:17;9732:43;;;9755:18;;:::i;:::-;-1:-1:-1;;9811:1:1;9797:16;;9826:5;;9623:218;;9925:2;9915:8;9912:16;9906:3;9900:4;9897:13;9893:36;9887:2;9877:8;9874:16;9869:2;9863:4;9860:12;9856:35;9853:77;9850:159;;;-1:-1:-1;9962:19:1;;;9994:5;;9850:159;10041:34;10066:8;10060:4;10041:34;:::i;:::-;10111:6;10107:1;10103:6;10099:19;10090:7;10087:32;10084:58;;;10122:18;;:::i;:::-;10160:20;;9380:806;-1:-1:-1;;;9380:806:1:o;10191:140::-;10249:5;10278:47;10319:4;10309:8;10305:19;10299:4;10278:47;:::i;10336:128::-;10403:9;;;10424:11;;;10421:37;;;10438:18;;:::i;10872:351::-;11074:2;11056:21;;;11113:2;11093:18;;;11086:30;11152:29;11147:2;11132:18;;11125:57;11214:2;11199:18;;10872:351::o;11791:127::-;11852:10;11847:3;11843:20;11840:1;11833:31;11883:4;11880:1;11873:15;11907:4;11904:1;11897:15;11923:135;11962:3;11983:17;;;11980:43;;12003:18;;:::i;:::-;-1:-1:-1;12050:1:1;12039:13;;11923:135::o;12443:136::-;12482:3;12510:5;12500:39;;12519:18;;:::i;:::-;-1:-1:-1;;;12555:18:1;;12443:136::o;17056:251::-;17126:6;17179:2;17167:9;17158:7;17154:23;17150:32;17147:52;;;17195:1;17192;17185:12;17147:52;17227:9;17221:16;17246:31;17271:5;17246:31;:::i;17312:980::-;17574:4;17622:3;17611:9;17607:19;17653:6;17642:9;17635:25;17679:2;17717:6;17712:2;17701:9;17697:18;17690:34;17760:3;17755:2;17744:9;17740:18;17733:31;17784:6;17819;17813:13;17850:6;17842;17835:22;17888:3;17877:9;17873:19;17866:26;;17927:2;17919:6;17915:15;17901:29;;17948:1;17958:195;17972:6;17969:1;17966:13;17958:195;;;18037:13;;-1:-1:-1;;;;;18033:39:1;18021:52;;18128:15;;;;18093:12;;;;18069:1;17987:9;17958:195;;;-1:-1:-1;;;;;;;18209:32:1;;;;18204:2;18189:18;;18182:60;-1:-1:-1;;;18273:3:1;18258:19;18251:35;18170:3;17312:980;-1:-1:-1;;;17312:980:1:o;18917:306::-;19005:6;19013;19021;19074:2;19062:9;19053:7;19049:23;19045:32;19042:52;;;19090:1;19087;19080:12;19042:52;19119:9;19113:16;19103:26;;19169:2;19158:9;19154:18;19148:25;19138:35;;19213:2;19202:9;19198:18;19192:25;19182:35;;18917:306;;;;;:::o

Swarm Source

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

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