ETH Price: $3,479.69 (+4.38%)

Token

Patriot (PATRIOT)
 

Overview

Max Total Supply

10,000,000,000 PATRIOT

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
79,200,000 PATRIOT

Value
$0.00
0x0e4b5f3d403fe338b18ad17237449035e5fdb793
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:
Patriot

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-16
*/

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.26;

  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          return a + b;
      }

      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return a - b;
      }

      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          return a * b;
      }

      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return a / b;
      }

      function sub(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b <= a, errorMessage);
              return a - b;
          }
      }

      function div(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b > 0, errorMessage);
              return a / b;
          }
      }
  }

  interface IUniswapV2Factory {
      function createPair(address tokenA, address tokenB) external returns (address pair);
      function getPair(address tokenA, address tokenB) external view returns (address pair);
  }

  interface IUniswapV2Router02 {
      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 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 to, 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 from,
          address to,
          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 IERC20Metadata is IERC20 {
      function name() external view returns (string memory);
      function symbol() external view returns (string memory);
      function decimals() external view returns (uint8);
  }

  contract ERC20 is Context, IERC20, IERC20Metadata {
      mapping(address => uint256) private _balances;
      mapping(address => mapping(address => uint256)) private _allowances;

      uint256 private _totalSupply;

      string private _name;
      string private _symbol;

      constructor(string memory name_, string memory symbol_) {
          _name = name_;
          _symbol = symbol_;
      }

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

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

      function decimals() public view virtual override returns (uint8) {
          return 18;
      }

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

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

      function transfer(address to, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _transfer(owner, to, amount);
          return true;
      }

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

      function approve(address spender, uint256 amount) public virtual override returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, amount);
          return true;
      }

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          address owner = _msgSender();
          _approve(owner, spender, _allowances[owner][spender] + addedValue);
          return true;
      }

      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          address owner = _msgSender();
          uint256 currentAllowance = _allowances[owner][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(owner, spender, currentAllowance - subtractedValue);
          }

          return true;
      }

      function _transfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {
          require(from != address(0), "ERC20: transfer from the zero address");
          require(to != address(0), "ERC20: transfer to the zero address");

          _beforeTokenTransfer(from, to, amount);

          uint256 fromBalance = _balances[from];
          require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
          unchecked {
              _balances[from] = fromBalance - amount;
          }
          _balances[to] += amount;

          emit Transfer(from, to, amount);

          _afterTokenTransfer(from, to, amount);
      }

      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");

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

          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);

          _afterTokenTransfer(address(0), account, amount);
      }

      function _burn(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: burn from the zero address");

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

          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          unchecked {
              _balances[account] = accountBalance - amount;
          }
          _totalSupply -= amount;

          emit Transfer(account, address(0), amount);

          _afterTokenTransfer(account, address(0), amount);
      }

      function _approve(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          require(owner != address(0), "ERC20: approve from the zero address");
          require(spender != address(0), "ERC20: approve to the zero address");

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

      function _spendAllowance(
          address owner,
          address spender,
          uint256 amount
      ) internal virtual {
          uint256 currentAllowance = allowance(owner, spender);
          if (currentAllowance != type(uint256).max) {
              require(currentAllowance >= amount, "ERC20: insufficient allowance");
              unchecked {
                  _approve(owner, spender, currentAllowance - amount);
              }
          }
      }

      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}

      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }

  abstract contract Ownable is Context {
      address private _owner;

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

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

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

      modifier onlyOwner() {
          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 Patriot is ERC20, Ownable {
    using SafeMath for uint256;


    address public uniPair;
    address public immutable feeRecipientAddress;

    uint256 public maxSwapAmount;
    uint256 public maxHoldings;
    uint256 public feeTokenThreshold;

    uint256 public buyTaxPercent;
    uint256 public sellTaxPercent;

    bool private _inSwap;
    mapping (address => bool) private _excludedLimits;
    mapping (address => bool) public blacklisted;

    event FeeSwap(uint256 indexed value);

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);


    constructor() ERC20("Patriot", "PATRIOT") payable {
        uint256 totalSupply = 10000000000 * 1e18;
        uint256 lpSupply = totalSupply.mul(100).div(100);

        maxSwapAmount = totalSupply.mul(20).div(1000);
        maxHoldings = totalSupply.mul(20).div(1000);
        feeTokenThreshold = totalSupply.mul(20).div(1000);

        feeRecipientAddress = 0x832715a5d2638B1872C8764942e420c1951Da00B;

        buyTaxPercent = 20;
        sellTaxPercent = 25;

        _excludedLimits[feeRecipientAddress] = true;
        _excludedLimits[msg.sender] = true;
        _excludedLimits[tx.origin] = true;
        _excludedLimits[address(this)] = true;
        _excludedLimits[address(0xdead)] = true;

        _mint(msg.sender, lpSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');
        require(!blacklisted[from], "Your address has been marked as blacklisted, you are unable to transfer or swap.");

        bool excluded = _excludedLimits[from] || _excludedLimits[to];
        require(uniPair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniPair;
        bool isBuy = from == uniPair;

        if ((isBuy || isSell) && maxSwapAmount > 0 && !excluded)
            require(amount <= maxSwapAmount, "Swap value exceeds max swap amount, try again with less swap value.");

        if (!isSell && maxHoldings > 0 && !excluded)
            require(balanceOf(to) + amount <= maxHoldings, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeTokenThreshold &&
          !_inSwap && isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBackTokenFee();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyTaxPercent : sellTaxPercent;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function _swapBackTokenFee() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeTokenThreshold) contractBalance = feeTokenThreshold;

        uint256 initETHBal = address(this).balance;

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

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance.sub(initETHBal);
        uint256 splitFee = ethFee.mul(5).div(100);

        ethFee = ethFee.sub(splitFee);
        payable(feeRecipientAddress).transfer(ethFee);
        payable(0x832715a5d2638B1872C8764942e420c1951Da00B).transfer(splitFee);

        emit FeeSwap(splitFee);
    }

    function removeLimits() external onlyOwner {
        maxHoldings = 0;
        maxSwapAmount = 0;
    }

    function removeMaxWallet() external onlyOwner {
        maxHoldings = 0;
    }

    function removeMaxTxn() external onlyOwner {
        maxSwapAmount = 0;
    }

    function godBlessAmerica() external onlyOwner {
        uniPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateSwapThreshold(uint256 newThreshold) external {
        require(msg.sender == feeRecipientAddress || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeTokenThreshold = newThreshold;
    }

    function setFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 99 && newSellFee <= 99, 'Attempting to set fee higher than initial fee.');
        buyTaxPercent = newBuyFee;
        sellTaxPercent = newSellFee;
    }

    function addBlacklist(address target, bool state) external onlyOwner {
        require(target != uniPair, "Cannot blacklist the pair address.");
        blacklisted[target] = state;
    }

    function rescueETH() external  {
        require(msg.sender == feeRecipientAddress || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function rescueERC20(IERC20 token) external  {
      require(msg.sender == feeRecipientAddress || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"godBlessAmerica","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600760a08181526614185d1c9a5bdd60ca1b60c05261012060405260e091825266141055149253d560ca1b6101005290600361003b8382610377565b5060046100488282610377565b50505061006161005c61018760201b60201c565b61018b565b6b204fce5e3e250261100000005f610084606461007e84826101dc565b906101f0565b90506100976103e861007e8460146101dc565b6007556100ab6103e861007e8460146101dc565b6008556100bf6103e861007e8460146101dc565b60095573832715a5d2638b1872c8764942e420c1951da00b6080526014600a556019600b55600d6020527f6daa1e7e85f0ed859a9564076ad584cfb28bd090a7868cd78398e1480fa4581e8054600160ff199182168117909255335f8181526040808220805485168617905532825280822080548516861790553082528120805484168517905561dead90527fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a8054909216909217905561018090826101fb565b505061048e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6101e78284610445565b90505b92915050565b5f6101e7828461045c565b6001600160a01b0382166102555760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254610266919061047b565b90915550506001600160a01b0382165f908152602081905260408120805483929061029290849061047b565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061030857607f821691505b60208210810361032657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102db57805f5260205f20601f840160051c810160208510156103515750805b601f840160051c820191505b81811015610370575f815560010161035d565b5050505050565b81516001600160401b03811115610390576103906102e0565b6103a48161039e84546102f4565b8461032c565b6020601f8211600181146103d6575f83156103bf5750848201515b5f19600385901b1c1916600184901b178455610370565b5f84815260208120601f198516915b8281101561040557878501518255602094850194600190920191016103e5565b508482101561042257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176101ea576101ea610431565b5f8261047657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156101ea576101ea610431565b608051611dc96104c25f395f8181610569015281816107fe01528181610b9b01528181610cff01526117e40152611dc95ff3fe6080604052600436106101d2575f3560e01c8063751039fc116100fd578063cce987d411610092578063dd62ed3e11610062578063dd62ed3e146104ff578063e54f4faa14610543578063f1bab2ec14610558578063f2fde38b1461058b575f80fd5b8063cce987d414610489578063ccec37161461049e578063dbac26e9146104bd578063dc07b617146104eb575f80fd5b806395d89b41116100cd57806395d89b4114610418578063a457c2d71461042c578063a9059cbb1461044b578063cc274b291461046a575f80fd5b8063751039fc146103be5780637df405a4146103d25780638da5cb5b146103e7578063922a5fe514610404575f80fd5b806320800a0011610173578063395093511161014357806339509351146103425780636fb1896c1461036157806370a0823114610376578063715018a6146103aa575f80fd5b806320800a00146102bd57806323b872dd146102d1578063313ce567146102f057806332972e461461030b575f80fd5b80630b78f9c0116101ae5780630b78f9c01461024c57806317ca2e411461026b57806318160ddd1461028a5780631ffc2998146102a8575f80fd5b80620f9d37146101dd57806306fdde03146101f3578063095ea7b31461021d575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101f16105aa565b005b3480156101fe575f80fd5b506102076105e3565b6040516102149190611a72565b60405180910390f35b348015610228575f80fd5b5061023c610237366004611abb565b610673565b6040519015158152602001610214565b348015610257575f80fd5b506101f1610266366004611ae5565b61068c565b348015610276575f80fd5b506101f1610285366004611b12565b610736565b348015610295575f80fd5b506002545b604051908152602001610214565b3480156102b3575f80fd5b5061029a60095481565b3480156102c8575f80fd5b506101f16107f3565b3480156102dc575f80fd5b5061023c6102eb366004611b49565b610868565b3480156102fb575f80fd5b5060405160128152602001610214565b348015610316575f80fd5b5060065461032a906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b34801561034d575f80fd5b5061023c61035c366004611abb565b61088b565b34801561036c575f80fd5b5061029a600b5481565b348015610381575f80fd5b5061029a610390366004611b87565b6001600160a01b03165f9081526020819052604090205490565b3480156103b5575f80fd5b506101f16108c9565b3480156103c9575f80fd5b506101f16108fe565b3480156103dd575f80fd5b5061029a600a5481565b3480156103f2575f80fd5b506005546001600160a01b031661032a565b34801561040f575f80fd5b506101f1610933565b348015610423575f80fd5b50610207610ae3565b348015610437575f80fd5b5061023c610446366004611abb565b610af2565b348015610456575f80fd5b5061023c610465366004611abb565b610b83565b348015610475575f80fd5b506101f1610484366004611ba2565b610b90565b348015610494575f80fd5b5061029a60075481565b3480156104a9575f80fd5b506101f16104b8366004611b87565b610cf4565b3480156104c8575f80fd5b5061023c6104d7366004611b87565b600e6020525f908152604090205460ff1681565b3480156104f6575f80fd5b506101f1610e1d565b34801561050a575f80fd5b5061029a610519366004611bb9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561054e575f80fd5b5061029a60085481565b348015610563575f80fd5b5061032a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610596575f80fd5b506101f16105a5366004611b87565b610e4d565b6005546001600160a01b031633146105dd5760405162461bcd60e51b81526004016105d490611be5565b60405180910390fd5b5f600755565b6060600380546105f290611c1a565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90611c1a565b80156106695780601f1061064057610100808354040283529160200191610669565b820191905f5260205f20905b81548152906001019060200180831161064c57829003601f168201915b5050505050905090565b5f33610680818585610ee5565b60019150505b92915050565b6005546001600160a01b031633146106b65760405162461bcd60e51b81526004016105d490611be5565b606382111580156106c8575060638111155b61072b5760405162461bcd60e51b815260206004820152602e60248201527f417474656d7074696e6720746f2073657420666565206869676865722074686160448201526d371034b734ba34b0b6103332b29760911b60648201526084016105d4565b600a91909155600b55565b6005546001600160a01b031633146107605760405162461bcd60e51b81526004016105d490611be5565b6006546001600160a01b03908116908316036107c95760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420626c61636b6c69737420746865207061697220616464726573604482015261399760f11b60648201526084016105d4565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061083457506005546001600160a01b031633145b61083c575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610865573d5f803e3d5ffd5b50565b5f33610875858285611008565b610880858585611098565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061068090829086906108c4908790611c66565b610ee5565b6005546001600160a01b031633146108f35760405162461bcd60e51b81526004016105d490611be5565b6108fc5f611581565b565b6005546001600160a01b031633146109285760405162461bcd60e51b81526004016105d490611be5565b5f6008819055600755565b6005546001600160a01b0316331461095d5760405162461bcd60e51b81526004016105d490611be5565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d19190611c79565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611c79565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac19190611c79565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105f290611c1a565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d4565b6108808286868403610ee5565b5f33610680818585611098565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610bd157506005546001600160a01b031633145b610bd9575f80fd5b610bfa620186a0610bf46001610bee60025490565b906115d2565b906115e4565b811015610c6f5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016105d4565b610c826064610bf46002610bee60025490565b811115610cef5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016105d4565b600955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d3557506005546001600160a01b031633145b610d3d575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190611c94565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e199190611cab565b5050565b6005546001600160a01b03163314610e475760405162461bcd60e51b81526004016105d490611be5565b5f600855565b6005546001600160a01b03163314610e775760405162461bcd60e51b81526004016105d490611be5565b6001600160a01b038116610edc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d4565b61086581611581565b6001600160a01b038316610f475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d4565b6001600160a01b038216610fa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461109257818110156110855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d4565b6110928484848403610ee5565b50505050565b6001600160a01b0383166111025760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016105d4565b6001600160a01b03821661116a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016105d4565b5f81116111cc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016105d4565b6001600160a01b0383165f908152600e602052604090205460ff16156112735760405162461bcd60e51b815260206004820152605060248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460648201526f3930b739b332b91037b91039bbb0b81760811b608482015260a4016105d4565b6001600160a01b0383165f908152600d602052604081205460ff16806112b057506001600160a01b0383165f908152600d602052604090205460ff165b6006549091506001600160a01b03161515806112c95750805b6113155760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016105d4565b6006546001600160a01b0390811684821681149186161480806113355750815b801561134257505f600754115b801561134c575082155b156113d5576007548411156113d55760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016105d4565b811580156113e457505f600854115b80156113ee575082155b156114a15760085484611415876001600160a01b03165f9081526020819052604090205490565b61141f9190611c66565b11156114a15760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016105d4565b600954305f90815260208190526040902054101580156114c45750600c5460ff16155b80156114cd5750815b80156114d7575082155b156114fc57600c805460ff191660011790556114f16115ef565b600c805460ff191690555b5f8161150a57600b5461150e565b600a545b9050801561156d57831580156115275750600c5460ff16155b8015611537575081806115375750825b1561156d575f61154c6064610bf488856115d2565b9050801561155f5761155f88308361189b565b6115698682611a67565b9550505b61157887878761189b565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6115dd8284611cc6565b9392505050565b5f6115dd8284611cdd565b305f90815260208190526040812054908190036116095750565b60095481111561161857506009545b60408051600280825260608201835247925f92919060208301908036833701905050905030815f8151811061164f5761164f611cfc565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e39190611c79565b816001815181106116f6576116f6611cfc565b60200260200101906001600160a01b031690816001600160a01b03168152505061173530737a250d5630b4cf539739df2c5dacb4c659f2488d85610ee5565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117749086905f90869030904290600401611d10565b5f604051808303815f87803b15801561178b575f80fd5b505af115801561179d573d5f803e3d5ffd5b505050505f6117b58347611a6790919063ffffffff16565b90505f6117c86064610bf48460056115d2565b90506117d48282611a67565b6040519092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083156108fc029084905f818181858888f1935050505015801561182a573d5f803e3d5ffd5b5060405173832715a5d2638b1872c8764942e420c1951da00b9082156108fc029083905f818181858888f19350505050158015611869573d5f803e3d5ffd5b5060405181907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b87905f90a25050505050565b6001600160a01b0383166118ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d4565b6001600160a01b0382166119615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d4565b6001600160a01b0383165f90815260208190526040902054818110156119d85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d4565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a0e908490611c66565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5a91815260200190565b60405180910390a3611092565b5f6115dd8284611d80565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610865575f80fd5b5f8060408385031215611acc575f80fd5b8235611ad781611aa7565b946020939093013593505050565b5f8060408385031215611af6575f80fd5b50508035926020909101359150565b8015158114610865575f80fd5b5f8060408385031215611b23575f80fd5b8235611b2e81611aa7565b91506020830135611b3e81611b05565b809150509250929050565b5f805f60608486031215611b5b575f80fd5b8335611b6681611aa7565b92506020840135611b7681611aa7565b929592945050506040919091013590565b5f60208284031215611b97575f80fd5b81356115dd81611aa7565b5f60208284031215611bb2575f80fd5b5035919050565b5f8060408385031215611bca575f80fd5b8235611bd581611aa7565b91506020830135611b3e81611aa7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611c2e57607f821691505b602082108103611c4c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068657610686611c52565b5f60208284031215611c89575f80fd5b81516115dd81611aa7565b5f60208284031215611ca4575f80fd5b5051919050565b5f60208284031215611cbb575f80fd5b81516115dd81611b05565b808202811582820484141761068657610686611c52565b5f82611cf757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611d605783516001600160a01b0316835260209384019390920191600101611d39565b50506001600160a01b039590951660608401525050608001529392505050565b8181038181111561068657610686611c5256fea2646970667358221220a42a15427b084d8ec0f9ea6c2c4accb2cf056d84e04f07acd7366f60e1273e5864736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101d2575f3560e01c8063751039fc116100fd578063cce987d411610092578063dd62ed3e11610062578063dd62ed3e146104ff578063e54f4faa14610543578063f1bab2ec14610558578063f2fde38b1461058b575f80fd5b8063cce987d414610489578063ccec37161461049e578063dbac26e9146104bd578063dc07b617146104eb575f80fd5b806395d89b41116100cd57806395d89b4114610418578063a457c2d71461042c578063a9059cbb1461044b578063cc274b291461046a575f80fd5b8063751039fc146103be5780637df405a4146103d25780638da5cb5b146103e7578063922a5fe514610404575f80fd5b806320800a0011610173578063395093511161014357806339509351146103425780636fb1896c1461036157806370a0823114610376578063715018a6146103aa575f80fd5b806320800a00146102bd57806323b872dd146102d1578063313ce567146102f057806332972e461461030b575f80fd5b80630b78f9c0116101ae5780630b78f9c01461024c57806317ca2e411461026b57806318160ddd1461028a5780631ffc2998146102a8575f80fd5b80620f9d37146101dd57806306fdde03146101f3578063095ea7b31461021d575f80fd5b366101d957005b5f80fd5b3480156101e8575f80fd5b506101f16105aa565b005b3480156101fe575f80fd5b506102076105e3565b6040516102149190611a72565b60405180910390f35b348015610228575f80fd5b5061023c610237366004611abb565b610673565b6040519015158152602001610214565b348015610257575f80fd5b506101f1610266366004611ae5565b61068c565b348015610276575f80fd5b506101f1610285366004611b12565b610736565b348015610295575f80fd5b506002545b604051908152602001610214565b3480156102b3575f80fd5b5061029a60095481565b3480156102c8575f80fd5b506101f16107f3565b3480156102dc575f80fd5b5061023c6102eb366004611b49565b610868565b3480156102fb575f80fd5b5060405160128152602001610214565b348015610316575f80fd5b5060065461032a906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b34801561034d575f80fd5b5061023c61035c366004611abb565b61088b565b34801561036c575f80fd5b5061029a600b5481565b348015610381575f80fd5b5061029a610390366004611b87565b6001600160a01b03165f9081526020819052604090205490565b3480156103b5575f80fd5b506101f16108c9565b3480156103c9575f80fd5b506101f16108fe565b3480156103dd575f80fd5b5061029a600a5481565b3480156103f2575f80fd5b506005546001600160a01b031661032a565b34801561040f575f80fd5b506101f1610933565b348015610423575f80fd5b50610207610ae3565b348015610437575f80fd5b5061023c610446366004611abb565b610af2565b348015610456575f80fd5b5061023c610465366004611abb565b610b83565b348015610475575f80fd5b506101f1610484366004611ba2565b610b90565b348015610494575f80fd5b5061029a60075481565b3480156104a9575f80fd5b506101f16104b8366004611b87565b610cf4565b3480156104c8575f80fd5b5061023c6104d7366004611b87565b600e6020525f908152604090205460ff1681565b3480156104f6575f80fd5b506101f1610e1d565b34801561050a575f80fd5b5061029a610519366004611bb9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561054e575f80fd5b5061029a60085481565b348015610563575f80fd5b5061032a7f000000000000000000000000832715a5d2638b1872c8764942e420c1951da00b81565b348015610596575f80fd5b506101f16105a5366004611b87565b610e4d565b6005546001600160a01b031633146105dd5760405162461bcd60e51b81526004016105d490611be5565b60405180910390fd5b5f600755565b6060600380546105f290611c1a565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90611c1a565b80156106695780601f1061064057610100808354040283529160200191610669565b820191905f5260205f20905b81548152906001019060200180831161064c57829003601f168201915b5050505050905090565b5f33610680818585610ee5565b60019150505b92915050565b6005546001600160a01b031633146106b65760405162461bcd60e51b81526004016105d490611be5565b606382111580156106c8575060638111155b61072b5760405162461bcd60e51b815260206004820152602e60248201527f417474656d7074696e6720746f2073657420666565206869676865722074686160448201526d371034b734ba34b0b6103332b29760911b60648201526084016105d4565b600a91909155600b55565b6005546001600160a01b031633146107605760405162461bcd60e51b81526004016105d490611be5565b6006546001600160a01b03908116908316036107c95760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420626c61636b6c69737420746865207061697220616464726573604482015261399760f11b60648201526084016105d4565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b336001600160a01b037f000000000000000000000000832715a5d2638b1872c8764942e420c1951da00b16148061083457506005546001600160a01b031633145b61083c575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610865573d5f803e3d5ffd5b50565b5f33610875858285611008565b610880858585611098565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061068090829086906108c4908790611c66565b610ee5565b6005546001600160a01b031633146108f35760405162461bcd60e51b81526004016105d490611be5565b6108fc5f611581565b565b6005546001600160a01b031633146109285760405162461bcd60e51b81526004016105d490611be5565b5f6008819055600755565b6005546001600160a01b0316331461095d5760405162461bcd60e51b81526004016105d490611be5565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d19190611c79565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611c79565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac19190611c79565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105f290611c1a565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d4565b6108808286868403610ee5565b5f33610680818585611098565b336001600160a01b037f000000000000000000000000832715a5d2638b1872c8764942e420c1951da00b161480610bd157506005546001600160a01b031633145b610bd9575f80fd5b610bfa620186a0610bf46001610bee60025490565b906115d2565b906115e4565b811015610c6f5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084016105d4565b610c826064610bf46002610bee60025490565b811115610cef5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b60648201526084016105d4565b600955565b336001600160a01b037f000000000000000000000000832715a5d2638b1872c8764942e420c1951da00b161480610d3557506005546001600160a01b031633145b610d3d575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190611c94565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e199190611cab565b5050565b6005546001600160a01b03163314610e475760405162461bcd60e51b81526004016105d490611be5565b5f600855565b6005546001600160a01b03163314610e775760405162461bcd60e51b81526004016105d490611be5565b6001600160a01b038116610edc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d4565b61086581611581565b6001600160a01b038316610f475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d4565b6001600160a01b038216610fa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461109257818110156110855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d4565b6110928484848403610ee5565b50505050565b6001600160a01b0383166111025760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b60648201526084016105d4565b6001600160a01b03821661116a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b60648201526084016105d4565b5f81116111cc5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016105d4565b6001600160a01b0383165f908152600e602052604090205460ff16156112735760405162461bcd60e51b815260206004820152605060248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f626c61636b6c69737465642c20796f752061726520756e61626c6520746f207460648201526f3930b739b332b91037b91039bbb0b81760811b608482015260a4016105d4565b6001600160a01b0383165f908152600d602052604081205460ff16806112b057506001600160a01b0383165f908152600d602052604090205460ff165b6006549091506001600160a01b03161515806112c95750805b6113155760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e0060448201526064016105d4565b6006546001600160a01b0390811684821681149186161480806113355750815b801561134257505f600754115b801561134c575082155b156113d5576007548411156113d55760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a4016105d4565b811580156113e457505f600854115b80156113ee575082155b156114a15760085484611415876001600160a01b03165f9081526020819052604090205490565b61141f9190611c66565b11156114a15760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a4016105d4565b600954305f90815260208190526040902054101580156114c45750600c5460ff16155b80156114cd5750815b80156114d7575082155b156114fc57600c805460ff191660011790556114f16115ef565b600c805460ff191690555b5f8161150a57600b5461150e565b600a545b9050801561156d57831580156115275750600c5460ff16155b8015611537575081806115375750825b1561156d575f61154c6064610bf488856115d2565b9050801561155f5761155f88308361189b565b6115698682611a67565b9550505b61157887878761189b565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6115dd8284611cc6565b9392505050565b5f6115dd8284611cdd565b305f90815260208190526040812054908190036116095750565b60095481111561161857506009545b60408051600280825260608201835247925f92919060208301908036833701905050905030815f8151811061164f5761164f611cfc565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e39190611c79565b816001815181106116f6576116f6611cfc565b60200260200101906001600160a01b031690816001600160a01b03168152505061173530737a250d5630b4cf539739df2c5dacb4c659f2488d85610ee5565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117749086905f90869030904290600401611d10565b5f604051808303815f87803b15801561178b575f80fd5b505af115801561179d573d5f803e3d5ffd5b505050505f6117b58347611a6790919063ffffffff16565b90505f6117c86064610bf48460056115d2565b90506117d48282611a67565b6040519092506001600160a01b037f000000000000000000000000832715a5d2638b1872c8764942e420c1951da00b169083156108fc029084905f818181858888f1935050505015801561182a573d5f803e3d5ffd5b5060405173832715a5d2638b1872c8764942e420c1951da00b9082156108fc029083905f818181858888f19350505050158015611869573d5f803e3d5ffd5b5060405181907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b87905f90a25050505050565b6001600160a01b0383166118ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d4565b6001600160a01b0382166119615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d4565b6001600160a01b0383165f90815260208190526040902054818110156119d85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d4565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a0e908490611c66565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5a91815260200190565b60405180910390a3611092565b5f6115dd8284611d80565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610865575f80fd5b5f8060408385031215611acc575f80fd5b8235611ad781611aa7565b946020939093013593505050565b5f8060408385031215611af6575f80fd5b50508035926020909101359150565b8015158114610865575f80fd5b5f8060408385031215611b23575f80fd5b8235611b2e81611aa7565b91506020830135611b3e81611b05565b809150509250929050565b5f805f60608486031215611b5b575f80fd5b8335611b6681611aa7565b92506020840135611b7681611aa7565b929592945050506040919091013590565b5f60208284031215611b97575f80fd5b81356115dd81611aa7565b5f60208284031215611bb2575f80fd5b5035919050565b5f8060408385031215611bca575f80fd5b8235611bd581611aa7565b91506020830135611b3e81611aa7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611c2e57607f821691505b602082108103611c4c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068657610686611c52565b5f60208284031215611c89575f80fd5b81516115dd81611aa7565b5f60208284031215611ca4575f80fd5b5051919050565b5f60208284031215611cbb575f80fd5b81516115dd81611b05565b808202811582820484141761068657610686611c52565b5f82611cf757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611d605783516001600160a01b0316835260209384019390920191600101611d39565b50506001600160a01b039590951660608401525050608001529392505050565b8181038181111561068657610686611c5256fea2646970667358221220a42a15427b084d8ec0f9ea6c2c4accb2cf056d84e04f07acd7366f60e1273e5864736f6c634300081a0033

Deployed Bytecode Sourcemap

9842:6014:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14269:79;;;;;;;;;;;;;:::i;:::-;;3627:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4605:209;;;;;;;;;;-1:-1:-1;4605:209:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;4605:209:0;945:187:1;14961:262:0;;;;;;;;;;-1:-1:-1;14961:262:0;;;;;:::i;:::-;;:::i;15231:190::-;;;;;;;;;;-1:-1:-1;15231:190:0;;;;;:::i;:::-;;:::i;3966:112::-;;;;;;;;;;-1:-1:-1;4056:12:0;;3966:112;;;2144:25:1;;;2132:2;2117:18;3966:112:0;1998:177:1;10071:32:0;;;;;;;;;;;;;;;;15429:179;;;;;;;;;;;;;:::i;4824:313::-;;;;;;;;;;-1:-1:-1;4824:313:0;;;;;:::i;:::-;;:::i;3859:97::-;;;;;;;;;;-1:-1:-1;3859:97:0;;3944:2;2835:36:1;;2823:2;2808:18;3859:97:0;2693:184:1;9921:22:0;;;;;;;;;;-1:-1:-1;9921:22:0;;;;-1:-1:-1;;;;;9921:22:0;;;;;;-1:-1:-1;;;;;3046:32:1;;;3028:51;;3016:2;3001:18;9921:22:0;2882:203:1;5147:248:0;;;;;;;;;;-1:-1:-1;5147:248:0;;;;;:::i;:::-;;:::i;10147:29::-;;;;;;;;;;;;;;;;4088:131;;;;;;;;;;-1:-1:-1;4088:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;4191:18:0;4162:7;4191:18;;;;;;;;;;;;4088:131;9298:107;;;;;;;;;;;;;:::i;14068:105::-;;;;;;;;;;;;;:::i;10112:28::-;;;;;;;;;;;;;;;;9061:91;;;;;;;;;;-1:-1:-1;9136:6:0;;-1:-1:-1;;;;;9136:6:0;9061:91;;14356:150;;;;;;;;;;;;;:::i;3741:108::-;;;;;;;;;;;;;:::i;5405:454::-;;;;;;;;;;-1:-1:-1;5405:454:0;;;;;:::i;:::-;;:::i;4229:201::-;;;;;;;;;;-1:-1:-1;4229:201:0;;;;;:::i;:::-;;:::i;14514:439::-;;;;;;;;;;-1:-1:-1;14514:439:0;;;;;:::i;:::-;;:::i;10003:28::-;;;;;;;;;;;;;;;;15616:198;;;;;;;;;;-1:-1:-1;15616:198:0;;;;;:::i;:::-;;:::i;10268:44::-;;;;;;;;;;-1:-1:-1;10268:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14181:80;;;;;;;;;;;;;:::i;4440:155::-;;;;;;;;;;-1:-1:-1;4440:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;4558:18:0;;;4529:7;4558:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4440:155;10038:26;;;;;;;;;;;;;;;;9950:44;;;;;;;;;;;;;;;9415:207;;;;;;;;;;-1:-1:-1;9415:207:0;;;;;:::i;:::-;;:::i;14269:79::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;;;;;;;;;14339:1:::1;14323:13;:17:::0;14269:79::o;3627:104::-;3681:13;3716:5;3709:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3627:104;:::o;4605:209::-;4688:4;2101:10;4748:32;2101:10;4764:7;4773:6;4748:8;:32::i;:::-;4800:4;4793:11;;;4605:209;;;;;:::o;14961:262::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;15068:2:::1;15055:9;:15;;:35;;;;;15088:2;15074:10;:16;;15055:35;15047:94;;;::::0;-1:-1:-1;;;15047:94:0;;5180:2:1;15047:94:0::1;::::0;::::1;5162:21:1::0;5219:2;5199:18;;;5192:30;5258:34;5238:18;;;5231:62;-1:-1:-1;;;5309:18:1;;;5302:44;5363:19;;15047:94:0::1;4978:410:1::0;15047:94:0::1;15152:13;:25:::0;;;;15188:14:::1;:27:::0;14961:262::o;15231:190::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;15329:7:::1;::::0;-1:-1:-1;;;;;15329:7:0;;::::1;15319:17:::0;;::::1;::::0;15311:64:::1;;;::::0;-1:-1:-1;;;15311:64:0;;5595:2:1;15311:64:0::1;::::0;::::1;5577:21:1::0;5634:2;5614:18;;;5607:30;5673:34;5653:18;;;5646:62;-1:-1:-1;;;5724:18:1;;;5717:32;5766:19;;15311:64:0::1;5393:398:1::0;15311:64:0::1;-1:-1:-1::0;;;;;15386:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:27;;-1:-1:-1;;15386:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15231:190::o;15429:179::-;15479:10;-1:-1:-1;;;;;15493:19:0;15479:33;;;:58;;-1:-1:-1;9136:6:0;;-1:-1:-1;;;;;9136:6:0;15516:10;:21;15479:58;15471:67;;;;;;15549:51;;15557:10;;15578:21;15549:51;;;;;;;;;15578:21;15557:10;15549:51;;;;;;;;;;;;;;;;;;;;;15429:179::o;4824:313::-;4963:4;2101:10;5025:38;5041:4;2101:10;5056:6;5025:15;:38::i;:::-;5076:27;5086:4;5092:2;5096:6;5076:9;:27::i;:::-;-1:-1:-1;5123:4:0;;4824:313;-1:-1:-1;;;;4824:313:0:o;5147:248::-;2101:10;5235:4;5320:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;5320:27:0;;;;;;;;;;5235:4;;2101:10;5295:66;;2101:10;;5320:27;;:40;;5350:10;;5320:40;:::i;:::-;5295:8;:66::i;9298:107::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;9365:30:::1;9392:1;9365:18;:30::i;:::-;9298:107::o:0;14068:105::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;14136:1:::1;14122:11;:15:::0;;;14148:13:::1;:17:::0;14068:105::o;14356:150::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;10431:42:::1;-1:-1:-1::0;;;;;14441:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14423:44:0::1;;14476:4;10431:42;-1:-1:-1::0;;;;;14483:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14423:75;::::0;-1:-1:-1;;;;;;14423:75:0::1;::::0;;;;;;-1:-1:-1;;;;;6506:32:1;;;14423:75:0::1;::::0;::::1;6488:51:1::0;6575:32;;6555:18;;;6548:60;6461:18;;14423:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14413:7;:85:::0;;-1:-1:-1;;;;;;14413:85:0::1;-1:-1:-1::0;;;;;14413:85:0;;;::::1;::::0;;;::::1;::::0;;14356:150::o;3741:108::-;3797:13;3832:7;3825:14;;;;;:::i;5405:454::-;2101:10;5498:4;5585:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;5585:27:0;;;;;;;;;;5498:4;;2101:10;5633:35;;;;5625:85;;;;-1:-1:-1;;;5625:85:0;;6821:2:1;5625:85:0;;;6803:21:1;6860:2;6840:18;;;6833:30;6899:34;6879:18;;;6872:62;-1:-1:-1;;;6950:18:1;;;6943:35;6995:19;;5625:85:0;6619:401:1;5625:85:0;5750:60;5759:5;5766:7;5794:15;5775:16;:34;5750:8;:60::i;4229:201::-;4308:4;2101:10;4368:28;2101:10;4385:2;4389:6;4368:9;:28::i;14514:439::-;14593:10;-1:-1:-1;;;;;14607:19:0;14593:33;;;:58;;-1:-1:-1;9136:6:0;;-1:-1:-1;;;;;9136:6:0;14630:10;:21;14593:58;14585:67;;;;;;14687:32;14712:6;14687:20;14705:1;14687:13;4056:12;;;3966:112;14687:13;:17;;:20::i;:::-;:24;;:32::i;:::-;14671:12;:48;;14663:117;;;;-1:-1:-1;;;14663:117:0;;7227:2:1;14663:117:0;;;7209:21:1;7266:2;7246:18;;;7239:30;7305:34;7285:18;;;7278:62;7376:26;7356:18;;;7349:54;7420:19;;14663:117:0;7025:420:1;14663:117:0;14815:29;14840:3;14815:20;14833:1;14815:13;4056:12;;;3966:112;14815:29;14799:12;:45;;14791:111;;;;-1:-1:-1;;;14791:111:0;;7652:2:1;14791:111:0;;;7634:21:1;7691:2;7671:18;;;7664:30;7730:34;7710:18;;;7703:62;-1:-1:-1;;;7781:18:1;;;7774:51;7842:19;;14791:111:0;7450:417:1;14791:111:0;14913:17;:32;14514:439::o;15616:198::-;15678:10;-1:-1:-1;;;;;15692:19:0;15678:33;;;:58;;-1:-1:-1;9136:6:0;;-1:-1:-1;;;;;9136:6:0;15715:10;:21;15678:58;15670:67;;;;;;15775:30;;-1:-1:-1;;;15775:30:0;;15799:4;15775:30;;;3028:51:1;-1:-1:-1;;;;;15748:14:0;;;;;15763:10;;15748:14;;15775:15;;3001:18:1;;15775:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15748:58;;-1:-1:-1;;;;;;15748:58:0;;;;;;;-1:-1:-1;;;;;8253:32:1;;;15748:58:0;;;8235:51:1;8302:18;;;8295:34;8208:18;;15748:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15616:198;:::o;14181:80::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;14252:1:::1;14238:11;:15:::0;14181:80::o;9415:207::-;9136:6;;-1:-1:-1;;;;;9136:6:0;2101:10;9204:23;9196:68;;;;-1:-1:-1;;;9196:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9506:22:0;::::1;9498:73;;;::::0;-1:-1:-1;;;9498:73:0;;8792:2:1;9498:73:0::1;::::0;::::1;8774:21:1::0;8831:2;8811:18;;;8804:30;8870:34;8850:18;;;8843:62;-1:-1:-1;;;8921:18:1;;;8914:36;8967:19;;9498:73:0::1;8590:402:1::0;9498:73:0::1;9584:28;9603:8;9584:18;:28::i;7628:398::-:0;-1:-1:-1;;;;;7774:19:0;;7766:68;;;;-1:-1:-1;;;7766:68:0;;9199:2:1;7766:68:0;;;9181:21:1;9238:2;9218:18;;;9211:30;9277:34;9257:18;;;9250:62;-1:-1:-1;;;9328:18:1;;;9321:34;9372:19;;7766:68:0;8997:400:1;7766:68:0;-1:-1:-1;;;;;7855:21:0;;7847:68;;;;-1:-1:-1;;;7847:68:0;;9604:2:1;7847:68:0;;;9586:21:1;9643:2;9623:18;;;9616:30;9682:34;9662:18;;;9655:62;-1:-1:-1;;;9733:18:1;;;9726:32;9775:19;;7847:68:0;9402:398:1;7847:68:0;-1:-1:-1;;;;;7930:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7984:32;;2144:25:1;;;7984:32:0;;2117:18:1;7984:32:0;;;;;;;7628:398;;;:::o;8036:477::-;-1:-1:-1;;;;;4558:18:0;;;8181:24;4558:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;8250:37:0;;8246:258;;8334:6;8314:16;:26;;8306:68;;;;-1:-1:-1;;;8306:68:0;;10007:2:1;8306:68:0;;;9989:21:1;10046:2;10026:18;;;10019:30;10085:31;10065:18;;;10058:59;10134:18;;8306:68:0;9805:353:1;8306:68:0;8422:51;8431:5;8438:7;8466:6;8447:16;:25;8422:8;:51::i;:::-;8168:345;8036:477;;;:::o;11254:1776::-;-1:-1:-1;;;;;11386:18:0;;11378:74;;;;-1:-1:-1;;;11378:74:0;;10365:2:1;11378:74:0;;;10347:21:1;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;-1:-1:-1;;;10494:18:1;;;10487:41;10545:19;;11378:74:0;10163:407:1;11378:74:0;-1:-1:-1;;;;;11471:16:0;;11463:70;;;;-1:-1:-1;;;11463:70:0;;10777:2:1;11463:70:0;;;10759:21:1;10816:2;10796:18;;;10789:30;10855:34;10835:18;;;10828:62;-1:-1:-1;;;10906:18:1;;;10899:39;10955:19;;11463:70:0;10575:405:1;11463:70:0;11561:1;11552:6;:10;11544:65;;;;-1:-1:-1;;;11544:65:0;;11187:2:1;11544:65:0;;;11169:21:1;11226:2;11206:18;;;11199:30;11265:34;11245:18;;;11238:62;-1:-1:-1;;;11316:18:1;;;11309:40;11366:19;;11544:65:0;10985:406:1;11544:65:0;-1:-1:-1;;;;;11629:17:0;;;;;;:11;:17;;;;;;;;11628:18;11620:111;;;;-1:-1:-1;;;11620:111:0;;11598:2:1;11620:111:0;;;11580:21:1;11637:2;11617:18;;;11610:30;11676:34;11656:18;;;11649:62;11747:34;11727:18;;;11720:62;-1:-1:-1;;;11798:19:1;;;11791:47;11855:19;;11620:111:0;11396:484:1;11620:111:0;-1:-1:-1;;;;;11760:21:0;;11744:13;11760:21;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;11785:19:0;;;;;;:15;:19;;;;;;;;11760:44;11823:7;;11744:60;;-1:-1:-1;;;;;;11823:7:0;:21;;;:33;;;11848:8;11823:33;11815:77;;;;-1:-1:-1;;;11815:77:0;;12087:2:1;11815:77:0;;;12069:21:1;12126:2;12106:18;;;12099:30;12165:33;12145:18;;;12138:61;12216:18;;11815:77:0;11885:355:1;11815:77:0;11925:7;;-1:-1:-1;;;;;11925:7:0;;;11919:13;;;;;;11956:15;;;;;11989;;;11998:6;11989:15;11988:38;;;;;12025:1;12009:13;;:17;11988:38;:51;;;;;12031:8;12030:9;11988:51;11984:173;;;12072:13;;12062:6;:23;;12054:103;;;;-1:-1:-1;;;12054:103:0;;12447:2:1;12054:103:0;;;12429:21:1;12486:2;12466:18;;;12459:30;12525:34;12505:18;;;12498:62;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:19:1;;;12640:34;12691:19;;12054:103:0;12245:471:1;12054:103:0;12175:6;12174:7;:26;;;;;12199:1;12185:11;;:15;12174:26;:39;;;;;12205:8;12204:9;12174:39;12170:176;;;12262:11;;12252:6;12236:13;12246:2;-1:-1:-1;;;;;4191:18:0;4162:7;4191:18;;;;;;;;;;;;4088:131;12236:13;:22;;;;:::i;:::-;:37;;12228:118;;;;-1:-1:-1;;;12228:118:0;;12923:2:1;12228:118:0;;;12905:21:1;12962:2;12942:18;;;12935:30;;;13001:34;12981:18;;;12974:62;13072:34;13052:18;;;13045:62;-1:-1:-1;;;13123:19:1;;;13116:35;13168:19;;12228:118:0;12721:472:1;12228:118:0;12403:17;;12393:4;4162:7;4191:18;;;;;;;;;;;12375:45;;:68;;;;-1:-1:-1;12436:7:0;;;;12435:8;12375:68;:78;;;;;12447:6;12375:78;:102;;;;;12469:8;12468:9;12375:102;12359:236;;;12505:7;:14;;-1:-1:-1;;12505:14:0;12515:4;12505:14;;;12534:19;:17;:19::i;:::-;12568:7;:15;;-1:-1:-1;;12568:15:0;;;12359:236;12607:11;12621:5;:38;;12645:14;;12621:38;;;12629:13;;12621:38;12607:52;-1:-1:-1;12676:7:0;;12672:305;;12705:8;12704:9;:21;;;;-1:-1:-1;12718:7:0;;;;12717:8;12704:21;:42;;;;;12730:5;:15;;;;12739:6;12730:15;12700:266;;;12767:12;12782:24;12802:3;12782:15;:6;12793:3;12782:10;:15::i;:24::-;12767:39;-1:-1:-1;12831:8:0;;12827:77;;12862:42;12878:4;12892;12899;12862:15;:42::i;:::-;12934:16;:6;12945:4;12934:10;:16::i;:::-;12925:25;;12748:218;12700:266;12989:33;13005:4;13011:2;13015:6;12989:15;:33::i;:::-;11367:1663;;;;11254:1776;;;:::o;9632:199::-;9727:6;;;-1:-1:-1;;;;;9746:17:0;;;-1:-1:-1;;;;;;9746:17:0;;;;;;;9781:40;;9727:6;;;9746:17;9727:6;;9781:40;;9708:16;;9781:40;9695:136;9632:199;:::o;320:102::-;378:7;407:5;411:1;407;:5;:::i;:::-;400:12;320:102;-1:-1:-1;;;320:102:0:o;432:::-;490:7;519:5;523:1;519;:5;:::i;13038:1022::-;13130:4;13086:23;4191:18;;;;;;;;;;;;13151:20;;;13147:33;;13173:7;13038:1022::o;13147:33::-;13212:17;;13194:15;:35;13190:76;;;-1:-1:-1;13249:17:0;;13190:76;13358:16;;;13372:1;13358:16;;;;;;;;13300:21;;13279:18;;13358:16;13372:1;13358:16;;;;;;;;;;-1:-1:-1;13358:16:0;13334:40;;13403:4;13385;13390:1;13385:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13385:23:0;;;-1:-1:-1;;;;;13385:23:0;;;;;10431:42;-1:-1:-1;;;;;13429:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13419:4;13424:1;13419:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;13419:24:0;;;-1:-1:-1;;;;;13419:24:0;;;;;13456:58;13473:4;10431:42;13498:15;13456:8;:58::i;:::-;13527:192;;-1:-1:-1;;;13527:192:0;;10431:42;;13527:58;;:192;;13600:15;;13630:1;;13646:4;;13673;;13693:15;;13527:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13732:14;13749:37;13775:10;13749:21;:25;;:37;;;;:::i;:::-;13732:54;-1:-1:-1;13797:16:0;13816:22;13834:3;13816:13;13732:54;13827:1;13816:10;:13::i;:22::-;13797:41;-1:-1:-1;13860:20:0;:6;13797:41;13860:10;:20::i;:::-;13891:45;;13851:29;;-1:-1:-1;;;;;;13899:19:0;13891:37;;:45;;;;;13851:29;;13891:45;;;;13851:29;13891:37;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13947:70:0;;13955:42;;13947:70;;;;;14008:8;;13947:70;;;;14008:8;13955:42;13947:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14035:17:0;;14043:8;;14035:17;;;;;13075:985;;;;;13038:1022::o;5869:703::-;-1:-1:-1;;;;;6010:18:0;;6002:68;;;;-1:-1:-1;;;6002:68:0;;15023:2:1;6002:68:0;;;15005:21:1;15062:2;15042:18;;;15035:30;15101:34;15081:18;;;15074:62;-1:-1:-1;;;15152:18:1;;;15145:35;15197:19;;6002:68:0;14821:401:1;6002:68:0;-1:-1:-1;;;;;6091:16:0;;6083:64;;;;-1:-1:-1;;;6083:64:0;;15429:2:1;6083:64:0;;;15411:21:1;15468:2;15448:18;;;15441:30;15507:34;15487:18;;;15480:62;-1:-1:-1;;;15558:18:1;;;15551:33;15601:19;;6083:64:0;15227:399:1;6083:64:0;-1:-1:-1;;;;;6237:15:0;;6215:19;6237:15;;;;;;;;;;;6273:21;;;;6265:72;;;;-1:-1:-1;;;6265:72:0;;15833:2:1;6265:72:0;;;15815:21:1;15872:2;15852:18;;;15845:30;15911:34;15891:18;;;15884:62;-1:-1:-1;;;15962:18:1;;;15955:36;16008:19;;6265:72:0;15631:402:1;6265:72:0;-1:-1:-1;;;;;6377:15:0;;;:9;:15;;;;;;;;;;;6395:20;;;6377:38;;6441:13;;;;;;;;:23;;6409:6;;6377:9;6441:23;;6409:6;;6441:23;:::i;:::-;;;;;;;;6499:2;-1:-1:-1;;;;;6484:26:0;6493:4;-1:-1:-1;;;;;6484:26:0;;6503:6;6484:26;;;;2144:25:1;;2132:2;2117:18;;1998:177;6484:26:0;;;;;;;;6525:37;8523:133;208:102;266:7;295:5;299:1;295;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:346::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;-1:-1:-1;;1327:23:1;;;1447:2;1432:18;;;1419:32;;-1:-1:-1;1137:346:1:o;1488:118::-;1574:5;1567:13;1560:21;1553:5;1550:32;1540:60;;1596:1;1593;1586:12;1611:382;1676:6;1684;1737:2;1725:9;1716:7;1712:23;1708:32;1705:52;;;1753:1;1750;1743:12;1705:52;1792:9;1779:23;1811:31;1836:5;1811:31;:::i;:::-;1861:5;-1:-1:-1;1918:2:1;1903:18;;1890:32;1931:30;1890:32;1931:30;:::i;:::-;1980:7;1970:17;;;1611:382;;;;;:::o;2180:508::-;2257:6;2265;2273;2326:2;2314:9;2305:7;2301:23;2297:32;2294:52;;;2342:1;2339;2332:12;2294:52;2381:9;2368:23;2400:31;2425:5;2400:31;:::i;:::-;2450:5;-1:-1:-1;2507:2:1;2492:18;;2479:32;2520:33;2479:32;2520:33;:::i;:::-;2180:508;;2572:7;;-1:-1:-1;;;2652:2:1;2637:18;;;;2624:32;;2180:508::o;3090:247::-;3149:6;3202:2;3190:9;3181:7;3177:23;3173:32;3170:52;;;3218:1;3215;3208:12;3170:52;3257:9;3244:23;3276:31;3301:5;3276:31;:::i;3342:226::-;3401:6;3454:2;3442:9;3433:7;3429:23;3425:32;3422:52;;;3470:1;3467;3460:12;3422:52;-1:-1:-1;3515:23:1;;3342:226;-1:-1:-1;3342:226:1:o;3839:388::-;3907:6;3915;3968:2;3956:9;3947:7;3943:23;3939:32;3936:52;;;3984:1;3981;3974:12;3936:52;4023:9;4010:23;4042:31;4067:5;4042:31;:::i;:::-;4092:5;-1:-1:-1;4149:2:1;4134:18;;4121:32;4162:33;4121:32;4162:33;:::i;4232:356::-;4434:2;4416:21;;;4453:18;;;4446:30;4512:34;4507:2;4492:18;;4485:62;4579:2;4564:18;;4232:356::o;4593:380::-;4672:1;4668:12;;;;4715;;;4736:61;;4790:4;4782:6;4778:17;4768:27;;4736:61;4843:2;4835:6;4832:14;4812:18;4809:38;4806:161;;4889:10;4884:3;4880:20;4877:1;4870:31;4924:4;4921:1;4914:15;4952:4;4949:1;4942:15;4806:161;;4593:380;;;:::o;5796:127::-;5857:10;5852:3;5848:20;5845:1;5838:31;5888:4;5885:1;5878:15;5912:4;5909:1;5902:15;5928:125;5993:9;;;6014:10;;;6011:36;;;6027:18;;:::i;6058:251::-;6128:6;6181:2;6169:9;6160:7;6156:23;6152:32;6149:52;;;6197:1;6194;6187:12;6149:52;6229:9;6223:16;6248:31;6273:5;6248:31;:::i;7872:184::-;7942:6;7995:2;7983:9;7974:7;7970:23;7966:32;7963:52;;;8011:1;8008;8001:12;7963:52;-1:-1:-1;8034:16:1;;7872:184;-1:-1:-1;7872:184:1:o;8340:245::-;8407:6;8460:2;8448:9;8439:7;8435:23;8431:32;8428:52;;;8476:1;8473;8466:12;8428:52;8508:9;8502:16;8527:28;8549:5;8527:28;:::i;13198:168::-;13271:9;;;13302;;13319:15;;;13313:22;;13299:37;13289:71;;13340:18;;:::i;13371:217::-;13411:1;13437;13427:132;;13481:10;13476:3;13472:20;13469:1;13462:31;13516:4;13513:1;13506:15;13544:4;13541:1;13534:15;13427:132;-1:-1:-1;13573:9:1;;13371:217::o;13725:127::-;13786:10;13781:3;13777:20;13774:1;13767:31;13817:4;13814:1;13807:15;13841:4;13838:1;13831:15;13857:959;14119:4;14167:3;14156:9;14152:19;14198:6;14187:9;14180:25;14241:6;14236:2;14225:9;14221:18;14214:34;14284:3;14279:2;14268:9;14264:18;14257:31;14308:6;14343;14337:13;14374:6;14366;14359:22;14412:3;14401:9;14397:19;14390:26;;14451:2;14443:6;14439:15;14425:29;;14472:1;14482:195;14496:6;14493:1;14490:13;14482:195;;;14561:13;;-1:-1:-1;;;;;14557:39:1;14545:52;;14626:2;14652:15;;;;14617:12;;;;14593:1;14511:9;14482:195;;;-1:-1:-1;;;;;;;14733:32:1;;;;14728:2;14713:18;;14706:60;-1:-1:-1;;14797:3:1;14782:19;14775:35;14694:3;13857:959;-1:-1:-1;;;13857:959:1:o;16038:128::-;16105:9;;;16126:11;;;16123:37;;;16140:18;;:::i

Swarm Source

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