ETH Price: $3,102.11 (+1.02%)
Gas: 6 Gwei

Token

CHIBIZILLA (CHIBZ)
 

Overview

Max Total Supply

100,000,000,000 CHIBZ

Holders

107

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,583,604,977 CHIBZ

Value
$0.00
0x0ddb96a86c6d7aac935eb05e2d8d23aab6d09057
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:
Chibz

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.4;

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

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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context
{
    address private _owner;
    address internal _creator;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        _creator = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract Chibz is Context, IERC20, Ownable
{
  using SafeMath for uint256;

  string private _name = 'CHIBIZILLA';
  string private _symbol = 'CHIBZ';

  mapping (address => uint256) private _presaleLog;
  mapping (address => uint256) private _rOwned;
  mapping (address => uint256) private _tOwned;
  mapping (address => mapping (address => uint256)) private _allowances;

  mapping (address => bool) private _isExcluded;
  address[] private _excluded;
  uint256 private constant MAX = ~uint256(0);
  uint256 private constant _tTotal = 100 * 10**9 * 10**9;
  uint256 private _rTotal = (MAX - (MAX % _tTotal));
  uint256 private _tFeeTotal;
  uint8 private _decimals = 9;
  uint8 private _inPresale;
  uint256 private _tPresold;
  uint256 public weiPrice;

  event Presale(address _buyer, uint256 _amount, uint256 _cost);

  constructor ()
  {
      _inPresale = 1;
      weiPrice = 0;
      _rOwned[_msgSender()] = _rTotal;
      emit Transfer(address(0), _msgSender(), _tTotal);
  }

  function StartPresale() public onlyOwner
  {
      require(_inPresale == 0, "presale already started");
      _inPresale = 1;
  }

  function EndPresale() public onlyOwner
  {
      require(_inPresale != 0, "presale already ended");
      _inPresale = 0;
  }

  function SetPresalePrice(uint256 price) public onlyOwner
  {
      weiPrice = price;
  }

  function GetPresaleQuote(uint256 amount) public view returns (uint256)
  {
      return amount.mul(10**_decimals).div(weiPrice);
  }
  receive() external payable
  {
      // contract state checks
      require(_inPresale != 0, "presale ended");
      require(weiPrice > 0, "presale price not yet set");

      // transfer eth value checks
      uint256 _msgValue = msg.value;
      require(_msgValue <= (1 * 10**18), "Maximum buy limit of 1 ETH");
      require(_msgValue >= (5 * 10**16), "Minimum buy limit of 0.05 ETH");

      // token limit checks
      uint256 _tokensToBuy = GetPresaleQuote(_msgValue);
      require(_tPresold + _tokensToBuy <= _tTotal.mul(40).div(100), "Insufficient Presale pool, try to buy less");
      require(_tokensToBuy <= balanceOf(owner()), "Insufficient tokens remain, try to buy less");

      // address limit checks
      address _msgSender = msg.sender;
      uint256 _prebought = _presaleLog[_msgSender];
      require(_prebought.add(_tokensToBuy) <= _tTotal.div(100), "Tx exceed address presale quota of 1% holdings");

      // process the order
      _tPresold = _tPresold.add(_tokensToBuy);
      _transfer(owner(), _msgSender, _tokensToBuy);
      _presaleLog[_msgSender] = _prebought.add(_tokensToBuy);
      emit Presale(_msgSender, _tokensToBuy, _msgValue);
  }
  function CollectFunds() public onlyOwner
  {
      payable(owner()).transfer(address(this).balance);
  }

  function WeiPerToken() public view returns (uint256)
  {
      return weiPrice;
  }

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

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

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

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

  function balanceOf(address account) public view override returns (uint256)
  {
      if (_isExcluded[account]) return _tOwned[account];
      return tokenFromReflection(_rOwned[account]);
  }

  function transfer(address recipient, uint256 amount) public override returns (bool)
  {
      _transfer(_msgSender(), recipient, amount);
      return true;
  }

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

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

  function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool)
  {
      _transfer(sender, recipient, amount);
      _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
      return true;
  }

  function isExcluded(address account) public view returns (bool)
  {
      return _isExcluded[account];
  }

  function totalFees() public view returns (uint256)
  {
      return _tFeeTotal;
  }

  function reflect(uint256 tAmount) public
  {
      address sender = _msgSender();
      require(!_isExcluded[sender], "Excluded addresses cannot call this function");
      (uint256 rAmount,,,,) = _getValues(tAmount);
      _rOwned[sender] = _rOwned[sender].sub(rAmount);
      _rTotal = _rTotal.sub(rAmount);
      _tFeeTotal = _tFeeTotal.add(tAmount);
  }

  function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256)
  {
      require(tAmount <= _tTotal, "Amount must be less than supply");
      if (!deductTransferFee) {
          (uint256 rAmount,,,,) = _getValues(tAmount);
          return rAmount;
      } else {
          (,uint256 rTransferAmount,,,) = _getValues(tAmount);
          return rTransferAmount;
      }
  }

  function tokenFromReflection(uint256 rAmount) public view returns(uint256)
  {
      require(rAmount <= _rTotal, "Amount must be less than total reflections");
      uint256 currentRate =  _getRate();
      return rAmount.div(currentRate);
  }

  function excludeAccount(address account) external onlyOwner()
  {
      require(!_isExcluded[account], "Account is already excluded");
      if(_rOwned[account] > 0) {
          _tOwned[account] = tokenFromReflection(_rOwned[account]);
      }
      _isExcluded[account] = true;
      _excluded.push(account);
  }

  function includeAccount(address account) external onlyOwner()
  {
      require(_isExcluded[account], "Account is already excluded");
      for (uint256 i = 0; i < _excluded.length; i++) {
          if (_excluded[i] == account) {
              _excluded[i] = _excluded[_excluded.length - 1];
              _tOwned[account] = 0;
              _isExcluded[account] = false;
              _excluded.pop();
              break;
          }
      }
  }

  function _approve(address owner, address spender, uint256 amount) private
  {
      require(owner != address(0), "ERC20: approve from the zero address");
      require(spender != address(0), "ERC20: approve to the zero address");
      _allowances[owner][spender] = amount;
      emit Approval(owner, spender, amount);
  }

  function _transfer(address sender, address recipient, uint256 amount) private
  {
      require(sender != address(0), "ERC20: transfer from the zero address");
      require(recipient != address(0), "ERC20: transfer to the zero address");
      require(amount > 0, "Transfer amount must be greater than zero");

      if (_isExcluded[sender] && !_isExcluded[recipient]) {
          _transferFromExcluded(sender, recipient, amount);
      } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
          _transferToExcluded(sender, recipient, amount);
      } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
          _transferStandard(sender, recipient, amount);
      } else if (_isExcluded[sender] && _isExcluded[recipient]) {
          _transferBothExcluded(sender, recipient, amount);
      } else {
          _transferStandard(sender, recipient, amount);
      }
  }

  function _transferStandard(address sender, address recipient, uint256 tAmount) private
  {
      (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
      _rOwned[sender] = _rOwned[sender].sub(rAmount);
      _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
      _reflectFee(rFee, tFee);
      emit Transfer(sender, recipient, tTransferAmount);
  }

  function _transferToExcluded(address sender, address recipient, uint256 tAmount) private
  {
      (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
      _rOwned[sender] = _rOwned[sender].sub(rAmount);
      _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
      _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
      _reflectFee(rFee, tFee);
      emit Transfer(sender, recipient, tTransferAmount);
  }

  function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private
  {
      (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
      _tOwned[sender] = _tOwned[sender].sub(tAmount);
      _rOwned[sender] = _rOwned[sender].sub(rAmount);
      _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
      _reflectFee(rFee, tFee);
      emit Transfer(sender, recipient, tTransferAmount);
  }

  function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private
  {
      (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
      _tOwned[sender] = _tOwned[sender].sub(tAmount);
      _rOwned[sender] = _rOwned[sender].sub(rAmount);
      _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
      _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
      _reflectFee(rFee, tFee);
      emit Transfer(sender, recipient, tTransferAmount);
  }

  function _reflectFee(uint256 rFee, uint256 tFee) private
  {
      _rTotal = _rTotal.sub(rFee);
      _tFeeTotal = _tFeeTotal.add(tFee);
  }

  function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256)
  {
      (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
      uint256 currentRate =  _getRate();
      (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
      return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
  }

  function _getTValues(uint256 tAmount) private view returns (uint256, uint256)
  {
      uint256 tFee = tAmount.div(100).mul(5);
      if (_inPresale != 0)
        tFee = 0;
      uint256 tTransferAmount = tAmount.sub(tFee);
      return (tTransferAmount, tFee);
  }

  function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256)
  {
      uint256 rAmount = tAmount.mul(currentRate);
      uint256 rFee = tFee.mul(currentRate);
      uint256 rTransferAmount = rAmount.sub(rFee);
      return (rAmount, rTransferAmount, rFee);
  }

  function _getRate() private view returns(uint256)
  {
      (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
      return rSupply.div(tSupply);
  }

  function _getCurrentSupply() private view returns(uint256, uint256)
  {
      uint256 rSupply = _rTotal;
      uint256 tSupply = _tTotal;
      for (uint256 i = 0; i < _excluded.length; i++) {
          if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
          rSupply = rSupply.sub(_rOwned[_excluded[i]]);
          tSupply = tSupply.sub(_tOwned[_excluded[i]]);
      }
      if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
      return (rSupply, tSupply);
  }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"Presale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CollectFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EndPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"GetPresaleQuote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"SetPresalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StartPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WeiPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"weiPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a60808190526943484942495a494c4c4160b01b60a09081526200002d91600291906200018b565b506040805180820190915260058082526421a424a12d60d91b60209092019182526200005c916003916200018b565b506200007468056bc75e2d6310000060001962000292565b620000829060001962000231565b600a55600c805460ff191660091790553480156200009f57600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c805461ff0019166101001790556000600e819055600a5490600590620001133390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040516200017d91815260200190565b60405180910390a3620002b3565b828054620001999062000255565b90600052602060002090601f016020900481019282620001bd576000855562000208565b82601f10620001d857805160ff191683800117855562000208565b8280016001018555821562000208579182015b8281111562000208578251825591602001919060010190620001eb565b50620002169291506200021a565b5090565b5b808211156200021657600081556001016200021b565b6000828210156200025057634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200026a57607f821691505b602082108114156200028c57634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002ae57634e487b7160e01b81526012600452602481fd5b500690565b611fdc80620002c36000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063cba0e9961161008a578063e29b9e9711610064578063e29b9e97146107cc578063f0a196aa146107e2578063f2cc0c18146107f7578063f84354f11461081757600080fd5b8063cba0e99614610738578063d1cca6fe14610771578063dd62ed3e1461078657600080fd5b8063715018a6146106865780638a459f1c1461069b5780638cb4643f146106bb5780638da5cb5b146106db57806395d89b4114610703578063a9059cbb1461071857600080fd5b80632adfcd05116101235780632adfcd05146105df5780632d838119146105f4578063313ce567146106145780634549b039146106365780635bb2e8d81461065657806370a082311461066b57600080fd5b8063053ab1821461050757806306fdde0314610529578063095ea7b31461055457806313114a9d1461058457806318160ddd146105a357806323b872dd146105bf57600080fd5b3661050257600c54610100900460ff166101bb5760405162461bcd60e51b815260206004820152600d60248201526c1c1c995cd85b1948195b991959609a1b60448201526064015b60405180910390fd5b6000600e541161020d5760405162461bcd60e51b815260206004820152601960248201527f70726573616c65207072696365206e6f7420796574207365740000000000000060448201526064016101b2565b34670de0b6b3a76400008111156102665760405162461bcd60e51b815260206004820152601a60248201527f4d6178696d756d20627579206c696d6974206f6620312045544800000000000060448201526064016101b2565b66b1a2bc2ec500008110156102bd5760405162461bcd60e51b815260206004820152601d60248201527f4d696e696d756d20627579206c696d6974206f6620302e30352045544800000060448201526064016101b2565b60006102c882610837565b90506102e960646102e368056bc75e2d631000006028610863565b906108e9565b81600d546102f79190611db6565b11156103585760405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e742050726573616c6520706f6f6c2c2074727920746044820152696f20627579206c65737360b01b60648201526084016101b2565b61037261036d6000546001600160a01b031690565b61092b565b8111156103d55760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e7420746f6b656e732072656d61696e2c207472792060448201526a746f20627579206c65737360a81b60648201526084016101b2565b336000818152600460205260409020546103f968056bc75e2d6310000060646108e9565b610403828561098a565b11156104685760405162461bcd60e51b815260206004820152602e60248201527f54782065786365656420616464726573732070726573616c652071756f74612060448201526d6f6620312520686f6c64696e677360901b60648201526084016101b2565b600d54610475908461098a565b600d5561049461048d6000546001600160a01b031690565b83856109e9565b61049e818461098a565b6001600160a01b0383166000818152600460209081526040918290209390935580519182529181018590529081018590527f75bf477778356b18a5aff63fb742a8efe0471d5f72f538fbc3fb6a77e17b5e259060600160405180910390a150505050005b600080fd5b34801561051357600080fd5b50610527610522366004611ce3565b610c65565b005b34801561053557600080fd5b5061053e610d4d565b60405161054b9190611d2e565b60405180910390f35b34801561056057600080fd5b5061057461056f366004611cba565b610ddf565b604051901515815260200161054b565b34801561059057600080fd5b50600b545b60405190815260200161054b565b3480156105af57600080fd5b5068056bc75e2d63100000610595565b3480156105cb57600080fd5b506105746105da366004611c7f565b610df5565b3480156105eb57600080fd5b50610527610e5e565b34801561060057600080fd5b5061059561060f366004611ce3565b610ee4565b34801561062057600080fd5b50600c5460405160ff909116815260200161054b565b34801561064257600080fd5b50610595610651366004611cfb565b610f61565b34801561066257600080fd5b50600e54610595565b34801561067757600080fd5b5061059561036d366004611c33565b34801561069257600080fd5b50610527610ff3565b3480156106a757600080fd5b506105956106b6366004611ce3565b610837565b3480156106c757600080fd5b506105276106d6366004611ce3565b611067565b3480156106e757600080fd5b506000546040516001600160a01b03909116815260200161054b565b34801561070f57600080fd5b5061053e611096565b34801561072457600080fd5b50610574610733366004611cba565b6110a5565b34801561074457600080fd5b50610574610753366004611c33565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561077d57600080fd5b506105276110b2565b34801561079257600080fd5b506105956107a1366004611c4d565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107d857600080fd5b50610595600e5481565b3480156107ee57600080fd5b50610527611145565b34801561080357600080fd5b50610527610812366004611c33565b6111ac565b34801561082357600080fd5b50610527610832366004611c33565b6112ff565b600e54600c5460009161085d916102e3906108569060ff16600a611e31565b8590610863565b92915050565b6000826108725750600061085d565b600061087e8385611edc565b90508261088b8583611dce565b146108e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016101b2565b9392505050565b60006108e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ee565b6001600160a01b03811660009081526008602052604081205460ff161561096857506001600160a01b031660009081526006602052604090205490565b6001600160a01b03821660009081526005602052604090205461085d90610ee4565b6000806109978385611db6565b9050838110156108e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016101b2565b6001600160a01b038316610a4d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016101b2565b6001600160a01b038216610aaf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101b2565b60008111610b115760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016101b2565b6001600160a01b03831660009081526008602052604090205460ff168015610b5257506001600160a01b03821660009081526008602052604090205460ff16155b15610b6757610b62838383611525565b505050565b6001600160a01b03831660009081526008602052604090205460ff16158015610ba857506001600160a01b03821660009081526008602052604090205460ff165b15610bb857610b6283838361163e565b6001600160a01b03831660009081526008602052604090205460ff16158015610bfa57506001600160a01b03821660009081526008602052604090205460ff16155b15610c0a57610b628383836116e4565b6001600160a01b03831660009081526008602052604090205460ff168015610c4a57506001600160a01b03821660009081526008602052604090205460ff165b15610c5a57610b62838383611725565b610b628383836116e4565b3360008181526008602052604090205460ff1615610cda5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016101b2565b6000610ce583611795565b505050506001600160a01b038316600090815260056020526040902054909150610d0f90826117e1565b6001600160a01b038316600090815260056020526040902055600a54610d3590826117e1565b600a55600b54610d45908461098a565b600b55505050565b606060028054610d5c90611f12565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611f12565b8015610dd55780601f10610daa57610100808354040283529160200191610dd5565b820191906000526020600020905b815481529060010190602001808311610db857829003601f168201915b5050505050905090565b6000610dec338484611823565b50600192915050565b6000610e028484846109e9565b610e548433610e4f85604051806060016040528060288152602001611f7f602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611947565b611823565b5060019392505050565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016101b290611d81565b600c54610100900460ff16610ed75760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b60448201526064016101b2565b600c805461ff0019169055565b6000600a54821115610f4b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016101b2565b6000610f55611978565b90506108e283826108e9565b600068056bc75e2d63100000831115610fbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016101b2565b81610fda576000610fcc84611795565b5092945061085d9350505050565b6000610fe584611795565b5091945061085d9350505050565b6000546001600160a01b0316331461101d5760405162461bcd60e51b81526004016101b290611d81565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110915760405162461bcd60e51b81526004016101b290611d81565b600e55565b606060038054610d5c90611f12565b6000610dec3384846109e9565b6000546001600160a01b031633146110dc5760405162461bcd60e51b81526004016101b290611d81565b600c54610100900460ff16156111345760405162461bcd60e51b815260206004820152601760248201527f70726573616c6520616c7265616479207374617274656400000000000000000060448201526064016101b2565b600c805461ff001916610100179055565b6000546001600160a01b0316331461116f5760405162461bcd60e51b81526004016101b290611d81565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156111a9573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111d65760405162461bcd60e51b81526004016101b290611d81565b6001600160a01b03811660009081526008602052604090205460ff161561123f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016101b2565b6001600160a01b03811660009081526005602052604090205415611299576001600160a01b03811660009081526005602052604090205461127f90610ee4565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146113295760405162461bcd60e51b81526004016101b290611d81565b6001600160a01b03811660009081526008602052604090205460ff166113915760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016101b2565b60005b6009548110156114ea57816001600160a01b0316600982815481106113c957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156114d857600980546113f490600190611efb565b8154811061141257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b03909216918390811061144c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600890925220805460ff1916905560098054806114b257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806114e281611f4d565b915050611394565b5050565b6000818361150f5760405162461bcd60e51b81526004016101b29190611d2e565b50600061151c8486611dce565b95945050505050565b600080600080600061153686611795565b6001600160a01b038d166000908152600660205260409020549499509297509095509350915061156690876117e1565b6001600160a01b03891660009081526006602090815260408083209390935560059052205461159590866117e1565b6001600160a01b03808a1660009081526005602052604080822093909355908916815220546115c4908561098a565b6001600160a01b0388166000908152600560205260409020556115e7838261199b565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161162c91815260200190565b60405180910390a35050505050505050565b600080600080600061164f86611795565b6001600160a01b038d166000908152600560205260409020549499509297509095509350915061167f90866117e1565b6001600160a01b03808a16600090815260056020908152604080832094909455918a168152600690915220546116b5908361098a565b6001600160a01b0388166000908152600660209081526040808320939093556005905220546115c4908561098a565b60008060008060006116f586611795565b6001600160a01b038d166000908152600560205260409020549499509297509095509350915061159590866117e1565b600080600080600061173686611795565b6001600160a01b038d166000908152600660205260409020549499509297509095509350915061176690876117e1565b6001600160a01b03891660009081526006602090815260408083209390935560059052205461167f90866117e1565b60008060008060008060006117a9886119bf565b9150915060006117b7611978565b905060008060006117c98c8686611a07565b919e909d50909b509599509397509395505050505050565b60006108e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611947565b6001600160a01b0383166118855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016101b2565b6001600160a01b0382166118e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016101b2565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818484111561196b5760405162461bcd60e51b81526004016101b29190611d2e565b50600061151c8486611efb565b6000806000611985611a43565b909250905061199482826108e9565b9250505090565b600a546119a890836117e1565b600a55600b546119b8908261098a565b600b555050565b600080806119d960056119d38660646108e9565b90610863565b600c54909150610100900460ff16156119f0575060005b60006119fc85836117e1565b959194509092505050565b6000808080611a168786610863565b90506000611a248787610863565b90506000611a3283836117e1565b929992985090965090945050505050565b600a54600090819068056bc75e2d63100000825b600954811015611bda57826005600060098481548110611a8757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b005750816006600060098481548110611ad957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b1c575050600a549368056bc75e2d631000009350915050565b611b706005600060098481548110611b4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906117e1565b9250611bc66006600060098481548110611b9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906117e1565b915080611bd281611f4d565b915050611a57565b50600a54611bf19068056bc75e2d631000006108e9565b821015611c0e575050600a549268056bc75e2d6310000092509050565b90939092509050565b80356001600160a01b0381168114611c2e57600080fd5b919050565b600060208284031215611c44578081fd5b6108e282611c17565b60008060408385031215611c5f578081fd5b611c6883611c17565b9150611c7660208401611c17565b90509250929050565b600080600060608486031215611c93578081fd5b611c9c84611c17565b9250611caa60208501611c17565b9150604084013590509250925092565b60008060408385031215611ccc578182fd5b611cd583611c17565b946020939093013593505050565b600060208284031215611cf4578081fd5b5035919050565b60008060408385031215611d0d578182fd5b8235915060208301358015158114611d23578182fd5b809150509250929050565b6000602080835283518082850152825b81811015611d5a57858101830151858201604001528201611d3e565b81811115611d6b5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611dc957611dc9611f68565b500190565b600082611de957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611e29578160001904821115611e0f57611e0f611f68565b80851615611e1c57918102915b93841c9390800290611df3565b509250929050565b60006108e260ff841683600082611e4a5750600161085d565b81611e575750600061085d565b8160018114611e6d5760028114611e7757611e93565b600191505061085d565b60ff841115611e8857611e88611f68565b50506001821b61085d565b5060208310610133831016604e8410600b8410161715611eb6575081810a61085d565b611ec08383611dee565b8060001904821115611ed457611ed4611f68565b029392505050565b6000816000190483118215151615611ef657611ef6611f68565b500290565b600082821015611f0d57611f0d611f68565b500390565b600181811c90821680611f2657607f821691505b60208210811415611f4757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f6157611f61611f68565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220019d0b22f207032fe13a7a0b8afa6514ccc6c44cfaa74615f34525632198aed064736f6c63430008040033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063cba0e9961161008a578063e29b9e9711610064578063e29b9e97146107cc578063f0a196aa146107e2578063f2cc0c18146107f7578063f84354f11461081757600080fd5b8063cba0e99614610738578063d1cca6fe14610771578063dd62ed3e1461078657600080fd5b8063715018a6146106865780638a459f1c1461069b5780638cb4643f146106bb5780638da5cb5b146106db57806395d89b4114610703578063a9059cbb1461071857600080fd5b80632adfcd05116101235780632adfcd05146105df5780632d838119146105f4578063313ce567146106145780634549b039146106365780635bb2e8d81461065657806370a082311461066b57600080fd5b8063053ab1821461050757806306fdde0314610529578063095ea7b31461055457806313114a9d1461058457806318160ddd146105a357806323b872dd146105bf57600080fd5b3661050257600c54610100900460ff166101bb5760405162461bcd60e51b815260206004820152600d60248201526c1c1c995cd85b1948195b991959609a1b60448201526064015b60405180910390fd5b6000600e541161020d5760405162461bcd60e51b815260206004820152601960248201527f70726573616c65207072696365206e6f7420796574207365740000000000000060448201526064016101b2565b34670de0b6b3a76400008111156102665760405162461bcd60e51b815260206004820152601a60248201527f4d6178696d756d20627579206c696d6974206f6620312045544800000000000060448201526064016101b2565b66b1a2bc2ec500008110156102bd5760405162461bcd60e51b815260206004820152601d60248201527f4d696e696d756d20627579206c696d6974206f6620302e30352045544800000060448201526064016101b2565b60006102c882610837565b90506102e960646102e368056bc75e2d631000006028610863565b906108e9565b81600d546102f79190611db6565b11156103585760405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e742050726573616c6520706f6f6c2c2074727920746044820152696f20627579206c65737360b01b60648201526084016101b2565b61037261036d6000546001600160a01b031690565b61092b565b8111156103d55760405162461bcd60e51b815260206004820152602b60248201527f496e73756666696369656e7420746f6b656e732072656d61696e2c207472792060448201526a746f20627579206c65737360a81b60648201526084016101b2565b336000818152600460205260409020546103f968056bc75e2d6310000060646108e9565b610403828561098a565b11156104685760405162461bcd60e51b815260206004820152602e60248201527f54782065786365656420616464726573732070726573616c652071756f74612060448201526d6f6620312520686f6c64696e677360901b60648201526084016101b2565b600d54610475908461098a565b600d5561049461048d6000546001600160a01b031690565b83856109e9565b61049e818461098a565b6001600160a01b0383166000818152600460209081526040918290209390935580519182529181018590529081018590527f75bf477778356b18a5aff63fb742a8efe0471d5f72f538fbc3fb6a77e17b5e259060600160405180910390a150505050005b600080fd5b34801561051357600080fd5b50610527610522366004611ce3565b610c65565b005b34801561053557600080fd5b5061053e610d4d565b60405161054b9190611d2e565b60405180910390f35b34801561056057600080fd5b5061057461056f366004611cba565b610ddf565b604051901515815260200161054b565b34801561059057600080fd5b50600b545b60405190815260200161054b565b3480156105af57600080fd5b5068056bc75e2d63100000610595565b3480156105cb57600080fd5b506105746105da366004611c7f565b610df5565b3480156105eb57600080fd5b50610527610e5e565b34801561060057600080fd5b5061059561060f366004611ce3565b610ee4565b34801561062057600080fd5b50600c5460405160ff909116815260200161054b565b34801561064257600080fd5b50610595610651366004611cfb565b610f61565b34801561066257600080fd5b50600e54610595565b34801561067757600080fd5b5061059561036d366004611c33565b34801561069257600080fd5b50610527610ff3565b3480156106a757600080fd5b506105956106b6366004611ce3565b610837565b3480156106c757600080fd5b506105276106d6366004611ce3565b611067565b3480156106e757600080fd5b506000546040516001600160a01b03909116815260200161054b565b34801561070f57600080fd5b5061053e611096565b34801561072457600080fd5b50610574610733366004611cba565b6110a5565b34801561074457600080fd5b50610574610753366004611c33565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561077d57600080fd5b506105276110b2565b34801561079257600080fd5b506105956107a1366004611c4d565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156107d857600080fd5b50610595600e5481565b3480156107ee57600080fd5b50610527611145565b34801561080357600080fd5b50610527610812366004611c33565b6111ac565b34801561082357600080fd5b50610527610832366004611c33565b6112ff565b600e54600c5460009161085d916102e3906108569060ff16600a611e31565b8590610863565b92915050565b6000826108725750600061085d565b600061087e8385611edc565b90508261088b8583611dce565b146108e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016101b2565b9392505050565b60006108e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114ee565b6001600160a01b03811660009081526008602052604081205460ff161561096857506001600160a01b031660009081526006602052604090205490565b6001600160a01b03821660009081526005602052604090205461085d90610ee4565b6000806109978385611db6565b9050838110156108e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016101b2565b6001600160a01b038316610a4d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016101b2565b6001600160a01b038216610aaf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101b2565b60008111610b115760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016101b2565b6001600160a01b03831660009081526008602052604090205460ff168015610b5257506001600160a01b03821660009081526008602052604090205460ff16155b15610b6757610b62838383611525565b505050565b6001600160a01b03831660009081526008602052604090205460ff16158015610ba857506001600160a01b03821660009081526008602052604090205460ff165b15610bb857610b6283838361163e565b6001600160a01b03831660009081526008602052604090205460ff16158015610bfa57506001600160a01b03821660009081526008602052604090205460ff16155b15610c0a57610b628383836116e4565b6001600160a01b03831660009081526008602052604090205460ff168015610c4a57506001600160a01b03821660009081526008602052604090205460ff165b15610c5a57610b62838383611725565b610b628383836116e4565b3360008181526008602052604090205460ff1615610cda5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016101b2565b6000610ce583611795565b505050506001600160a01b038316600090815260056020526040902054909150610d0f90826117e1565b6001600160a01b038316600090815260056020526040902055600a54610d3590826117e1565b600a55600b54610d45908461098a565b600b55505050565b606060028054610d5c90611f12565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611f12565b8015610dd55780601f10610daa57610100808354040283529160200191610dd5565b820191906000526020600020905b815481529060010190602001808311610db857829003601f168201915b5050505050905090565b6000610dec338484611823565b50600192915050565b6000610e028484846109e9565b610e548433610e4f85604051806060016040528060288152602001611f7f602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611947565b611823565b5060019392505050565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016101b290611d81565b600c54610100900460ff16610ed75760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b60448201526064016101b2565b600c805461ff0019169055565b6000600a54821115610f4b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016101b2565b6000610f55611978565b90506108e283826108e9565b600068056bc75e2d63100000831115610fbc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016101b2565b81610fda576000610fcc84611795565b5092945061085d9350505050565b6000610fe584611795565b5091945061085d9350505050565b6000546001600160a01b0316331461101d5760405162461bcd60e51b81526004016101b290611d81565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110915760405162461bcd60e51b81526004016101b290611d81565b600e55565b606060038054610d5c90611f12565b6000610dec3384846109e9565b6000546001600160a01b031633146110dc5760405162461bcd60e51b81526004016101b290611d81565b600c54610100900460ff16156111345760405162461bcd60e51b815260206004820152601760248201527f70726573616c6520616c7265616479207374617274656400000000000000000060448201526064016101b2565b600c805461ff001916610100179055565b6000546001600160a01b0316331461116f5760405162461bcd60e51b81526004016101b290611d81565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156111a9573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111d65760405162461bcd60e51b81526004016101b290611d81565b6001600160a01b03811660009081526008602052604090205460ff161561123f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016101b2565b6001600160a01b03811660009081526005602052604090205415611299576001600160a01b03811660009081526005602052604090205461127f90610ee4565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146113295760405162461bcd60e51b81526004016101b290611d81565b6001600160a01b03811660009081526008602052604090205460ff166113915760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016101b2565b60005b6009548110156114ea57816001600160a01b0316600982815481106113c957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156114d857600980546113f490600190611efb565b8154811061141257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b03909216918390811061144c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600890925220805460ff1916905560098054806114b257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806114e281611f4d565b915050611394565b5050565b6000818361150f5760405162461bcd60e51b81526004016101b29190611d2e565b50600061151c8486611dce565b95945050505050565b600080600080600061153686611795565b6001600160a01b038d166000908152600660205260409020549499509297509095509350915061156690876117e1565b6001600160a01b03891660009081526006602090815260408083209390935560059052205461159590866117e1565b6001600160a01b03808a1660009081526005602052604080822093909355908916815220546115c4908561098a565b6001600160a01b0388166000908152600560205260409020556115e7838261199b565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161162c91815260200190565b60405180910390a35050505050505050565b600080600080600061164f86611795565b6001600160a01b038d166000908152600560205260409020549499509297509095509350915061167f90866117e1565b6001600160a01b03808a16600090815260056020908152604080832094909455918a168152600690915220546116b5908361098a565b6001600160a01b0388166000908152600660209081526040808320939093556005905220546115c4908561098a565b60008060008060006116f586611795565b6001600160a01b038d166000908152600560205260409020549499509297509095509350915061159590866117e1565b600080600080600061173686611795565b6001600160a01b038d166000908152600660205260409020549499509297509095509350915061176690876117e1565b6001600160a01b03891660009081526006602090815260408083209390935560059052205461167f90866117e1565b60008060008060008060006117a9886119bf565b9150915060006117b7611978565b905060008060006117c98c8686611a07565b919e909d50909b509599509397509395505050505050565b60006108e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611947565b6001600160a01b0383166118855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016101b2565b6001600160a01b0382166118e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016101b2565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818484111561196b5760405162461bcd60e51b81526004016101b29190611d2e565b50600061151c8486611efb565b6000806000611985611a43565b909250905061199482826108e9565b9250505090565b600a546119a890836117e1565b600a55600b546119b8908261098a565b600b555050565b600080806119d960056119d38660646108e9565b90610863565b600c54909150610100900460ff16156119f0575060005b60006119fc85836117e1565b959194509092505050565b6000808080611a168786610863565b90506000611a248787610863565b90506000611a3283836117e1565b929992985090965090945050505050565b600a54600090819068056bc75e2d63100000825b600954811015611bda57826005600060098481548110611a8757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b005750816006600060098481548110611ad957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b1c575050600a549368056bc75e2d631000009350915050565b611b706005600060098481548110611b4457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906117e1565b9250611bc66006600060098481548110611b9a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906117e1565b915080611bd281611f4d565b915050611a57565b50600a54611bf19068056bc75e2d631000006108e9565b821015611c0e575050600a549268056bc75e2d6310000092509050565b90939092509050565b80356001600160a01b0381168114611c2e57600080fd5b919050565b600060208284031215611c44578081fd5b6108e282611c17565b60008060408385031215611c5f578081fd5b611c6883611c17565b9150611c7660208401611c17565b90509250929050565b600080600060608486031215611c93578081fd5b611c9c84611c17565b9250611caa60208501611c17565b9150604084013590509250925092565b60008060408385031215611ccc578182fd5b611cd583611c17565b946020939093013593505050565b600060208284031215611cf4578081fd5b5035919050565b60008060408385031215611d0d578182fd5b8235915060208301358015158114611d23578182fd5b809150509250929050565b6000602080835283518082850152825b81811015611d5a57858101830151858201604001528201611d3e565b81811115611d6b5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611dc957611dc9611f68565b500190565b600082611de957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611e29578160001904821115611e0f57611e0f611f68565b80851615611e1c57918102915b93841c9390800290611df3565b509250929050565b60006108e260ff841683600082611e4a5750600161085d565b81611e575750600061085d565b8160018114611e6d5760028114611e7757611e93565b600191505061085d565b60ff841115611e8857611e88611f68565b50506001821b61085d565b5060208310610133831016604e8410600b8410161715611eb6575081810a61085d565b611ec08383611dee565b8060001904821115611ed457611ed4611f68565b029392505050565b6000816000190483118215151615611ef657611ef6611f68565b500290565b600082821015611f0d57611f0d611f68565b500390565b600181811c90821680611f2657607f821691505b60208210811415611f4757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f6157611f61611f68565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220019d0b22f207032fe13a7a0b8afa6514ccc6c44cfaa74615f34525632198aed064736f6c63430008040033

Deployed Bytecode Sourcemap

2735:11502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4345:10;;;;;;;4337:41;;;;-1:-1:-1;;;4337:41:0;;6453:2:1;4337:41:0;;;6435:21:1;6492:2;6472:18;;;6465:30;-1:-1:-1;;;6511:18:1;;;6504:43;6564:18;;4337:41:0;;;;;;;;;4406:1;4395:8;;:12;4387:50;;;;-1:-1:-1;;;4387:50:0;;10668:2:1;4387:50:0;;;10650:21:1;10707:2;10687:18;;;10680:30;10746:27;10726:18;;;10719:55;10791:18;;4387:50:0;10640:175:1;4387:50:0;4504:9;4544:10;4530:25;;;4522:64;;;;-1:-1:-1;;;4522:64:0;;9900:2:1;4522:64:0;;;9882:21:1;9939:2;9919:18;;;9912:30;9978:28;9958:18;;;9951:56;10024:18;;4522:64:0;9872:176:1;4522:64:0;4617:10;4603:9;:25;;4595:67;;;;-1:-1:-1;;;4595:67:0;;7147:2:1;4595:67:0;;;7129:21:1;7186:2;7166:18;;;7159:30;7225:31;7205:18;;;7198:59;7274:18;;4595:67:0;7119:179:1;4595:67:0;4702:20;4725:26;4741:9;4725:15;:26::i;:::-;4702:49;-1:-1:-1;4796:24:0;4816:3;4796:15;3287:19;4808:2;4796:11;:15::i;:::-;:19;;:24::i;:::-;4780:12;4768:9;;:24;;;;:::i;:::-;:52;;4760:107;;;;-1:-1:-1;;;4760:107:0;;8678:2:1;4760:107:0;;;8660:21:1;8717:2;8697:18;;;8690:30;8756:34;8736:18;;;8729:62;-1:-1:-1;;;8807:18:1;;;8800:40;8857:19;;4760:107:0;8650:232:1;4760:107:0;4900:18;4910:7;2404;2431:6;-1:-1:-1;;;;;2431:6:0;;2366:79;4910:7;4900:9;:18::i;:::-;4884:12;:34;;4876:90;;;;-1:-1:-1;;;4876:90:0;;3401:2:1;4876:90:0;;;3383:21:1;3440:2;3420:18;;;3413:30;3479:34;3459:18;;;3452:62;-1:-1:-1;;;3530:18:1;;;3523:41;3581:19;;4876:90:0;3373:233:1;4876:90:0;5029:10;5008:18;5069:23;;;:11;:23;;;;;;5141:16;3287:19;5153:3;5141:11;:16::i;:::-;5109:28;:10;5124:12;5109:14;:28::i;:::-;:48;;5101:107;;;;-1:-1:-1;;;5101:107:0;;11022:2:1;5101:107:0;;;11004:21:1;11061:2;11041:18;;;11034:30;11100:34;11080:18;;;11073:62;-1:-1:-1;;;11151:18:1;;;11144:44;11205:19;;5101:107:0;10994:236:1;5101:107:0;5259:9;;:27;;5273:12;5259:13;:27::i;:::-;5247:9;:39;5295:44;5305:7;2404;2431:6;-1:-1:-1;;;;;2431:6:0;;2366:79;5305:7;5314:10;5326:12;5295:9;:44::i;:::-;5374:28;:10;5389:12;5374:14;:28::i;:::-;-1:-1:-1;;;;;5348:23:0;;;;;;:11;:23;;;;;;;;;:54;;;;5416:44;;2251:51:1;;;2318:18;;;2311:34;;;2361:18;;;2354:34;;;5416:44:0;;2239:2:1;2224:18;5416:44:0;;;;;;;4266:1200;;;;2735:11502;;;;;7245:365;;;;;;;;;;-1:-1:-1;7245:365:0;;;;;:::i;:::-;;:::i;:::-;;5675:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6560:158;;;;;;;;;;-1:-1:-1;6560:158:0;;;;;:::i;:::-;;:::i;:::-;;;2564:14:1;;2557:22;2539:41;;2527:2;2512:18;6560:158:0;2494:92:1;7153:86:0;;;;;;;;;;-1:-1:-1;7223:10:0;;7153:86;;;11381:25:1;;;11369:2;11354:18;7153:86:0;11336:76:1;5943:94:0;;;;;;;;;;-1:-1:-1;3287:19:0;5943:94;;6724:308;;;;;;;;;;-1:-1:-1;6724:308:0;;;;;:::i;:::-;;:::i;3895:129::-;;;;;;;;;;;;;:::i;8041:248::-;;;;;;;;;;-1:-1:-1;8041:248:0;;;;;:::i;:::-;;:::i;5855:82::-;;;;;;;;;;-1:-1:-1;5922:9:0;;5855:82;;5922:9;;;;11559:36:1;;11547:2;11532:18;5855:82:0;11514:87:1;7616:419:0;;;;;;;;;;-1:-1:-1;7616:419:0;;;;;:::i;:::-;;:::i;5583:86::-;;;;;;;;;;-1:-1:-1;5655:8:0;;5583:86;;6043:195;;;;;;;;;;-1:-1:-1;6043:195:0;;;;;:::i;2580:148::-;;;;;;;;;;;;;:::i;4127:135::-;;;;;;;;;;-1:-1:-1;4127:135:0;;;;;:::i;:::-;;:::i;4030:91::-;;;;;;;;;;-1:-1:-1;4030:91:0;;;;;:::i;:::-;;:::i;2366:79::-;;;;;;;;;;-1:-1:-1;2404:7:0;2431:6;2366:79;;-1:-1:-1;;;;;2431:6:0;;;1987:51:1;;1975:2;1960:18;2366:79:0;1942:102:1;5763:86:0;;;;;;;;;;;;;:::i;6244:164::-;;;;;;;;;;-1:-1:-1;6244:164:0;;;;;:::i;:::-;;:::i;7038:109::-;;;;;;;;;;-1:-1:-1;7038:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;7121:20:0;7096:4;7121:20;;;:11;:20;;;;;;;;;7038:109;3756:133;;;;;;;;;;;;;:::i;6414:140::-;;;;;;;;;;-1:-1:-1;6414:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;6521:18:0;;;6495:7;6521:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6414:140;3487:23;;;;;;;;;;;;;;;;5470:107;;;;;;;;;;;;;:::i;8295:321::-;;;;;;;;;;-1:-1:-1;8295:321:0;;;;;:::i;:::-;;:::i;8622:459::-;;;;;;;;;;-1:-1:-1;8622:459:0;;;;;:::i;:::-;;:::i;4127:135::-;4247:8;;4232:9;;4189:7;;4217:39;;:25;;4228:13;;4232:9;;4228:2;:13;:::i;:::-;4217:6;;:10;:25::i;:39::-;4210:46;4127:135;-1:-1:-1;;4127:135:0:o;1395:246::-;1453:7;1477:6;1473:47;;-1:-1:-1;1507:1:0;1500:8;;1473:47;1530:9;1542:5;1546:1;1542;:5;:::i;:::-;1530:17;-1:-1:-1;1575:1:0;1566:5;1570:1;1530:17;1566:5;:::i;:::-;:10;1558:56;;;;-1:-1:-1;;;1558:56:0;;7505:2:1;1558:56:0;;;7487:21:1;7544:2;7524:18;;;7517:30;7583:34;7563:18;;;7556:62;-1:-1:-1;;;7634:18:1;;;7627:31;7675:19;;1558:56:0;7477:223:1;1558:56:0;1632:1;1395:246;-1:-1:-1;;;1395:246:0:o;1649:132::-;1707:7;1734:39;1738:1;1741;1734:39;;;;;;;;;;;;;;;;;:3;:39::i;6043:195::-;-1:-1:-1;;;;;6134:20:0;;6109:7;6134:20;;;:11;:20;;;;;;;;6130:49;;;-1:-1:-1;;;;;;6163:16:0;;;;;:7;:16;;;;;;;6043:195::o;6130:49::-;-1:-1:-1;;;;;6215:16:0;;;;;;:7;:16;;;;;;6195:37;;:19;:37::i;866:179::-;924:7;;956:5;960:1;956;:5;:::i;:::-;944:17;;985:1;980;:6;;972:46;;;;-1:-1:-1;;;972:46:0;;5031:2:1;972:46:0;;;5013:21:1;5070:2;5050:18;;;5043:30;5109:29;5089:18;;;5082:57;5156:18;;972:46:0;5003:177:1;9421:906:0;-1:-1:-1;;;;;9519:20:0;;9511:70;;;;-1:-1:-1;;;9511:70:0;;9089:2:1;9511:70:0;;;9071:21:1;9128:2;9108:18;;;9101:30;9167:34;9147:18;;;9140:62;-1:-1:-1;;;9218:18:1;;;9211:35;9263:19;;9511:70:0;9061:227:1;9511:70:0;-1:-1:-1;;;;;9598:23:0;;9590:71;;;;-1:-1:-1;;;9590:71:0;;3813:2:1;9590:71:0;;;3795:21:1;3852:2;3832:18;;;3825:30;3891:34;3871:18;;;3864:62;-1:-1:-1;;;3942:18:1;;;3935:33;3985:19;;9590:71:0;3785:225:1;9590:71:0;9687:1;9678:6;:10;9670:64;;;;-1:-1:-1;;;9670:64:0;;8268:2:1;9670:64:0;;;8250:21:1;8307:2;8287:18;;;8280:30;8346:34;8326:18;;;8319:62;-1:-1:-1;;;8397:18:1;;;8390:39;8446:19;;9670:64:0;8240:231:1;9670:64:0;-1:-1:-1;;;;;9749:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;9773:22:0;;;;;;:11;:22;;;;;;;;9772:23;9749:46;9745:577;;;9810:48;9832:6;9840:9;9851:6;9810:21;:48::i;:::-;9421:906;;;:::o;9745:577::-;-1:-1:-1;;;;;9879:19:0;;;;;;:11;:19;;;;;;;;9878:20;:46;;;;-1:-1:-1;;;;;;9902:22:0;;;;;;:11;:22;;;;;;;;9878:46;9874:448;;;9939:46;9959:6;9967:9;9978:6;9939:19;:46::i;9874:448::-;-1:-1:-1;;;;;10006:19:0;;;;;;:11;:19;;;;;;;;10005:20;:47;;;;-1:-1:-1;;;;;;10030:22:0;;;;;;:11;:22;;;;;;;;10029:23;10005:47;10001:321;;;10067:44;10085:6;10093:9;10104:6;10067:17;:44::i;10001:321::-;-1:-1:-1;;;;;10131:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;10154:22:0;;;;;;:11;:22;;;;;;;;10131:45;10127:195;;;10191:48;10213:6;10221:9;10232:6;10191:21;:48::i;10127:195::-;10268:44;10286:6;10294:9;10305:6;10268:17;:44::i;7245:365::-;140:10;7298:14;7345:19;;;:11;:19;;;;;;;;7344:20;7336:77;;;;-1:-1:-1;;;7336:77:0;;10255:2:1;7336:77:0;;;10237:21:1;10294:2;10274:18;;;10267:30;10333:34;10313:18;;;10306:62;-1:-1:-1;;;10384:18:1;;;10377:42;10436:19;;7336:77:0;10227:234:1;7336:77:0;7423:15;7446:19;7457:7;7446:10;:19::i;:::-;-1:-1:-1;;;;;;;;;7492:15:0;;;;;;:7;:15;;;;;;7422:43;;-1:-1:-1;7492:28:0;;7422:43;7492:19;:28::i;:::-;-1:-1:-1;;;;;7474:15:0;;;;;;:7;:15;;;;;:46;7539:7;;:20;;7551:7;7539:11;:20::i;:::-;7529:7;:30;7581:10;;:23;;7596:7;7581:14;:23::i;:::-;7568:10;:36;-1:-1:-1;;;7245:365:0:o;5675:82::-;5712:13;5746:5;5739:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:82;:::o;6560:158::-;6635:4;6653:39;140:10;6676:7;6685:6;6653:8;:39::i;:::-;-1:-1:-1;6708:4:0;6560:158;;;;:::o;6724:308::-;6822:4;6840:36;6850:6;6858:9;6869:6;6840:9;:36::i;:::-;6885:121;6894:6;140:10;6916:89;6954:6;6916:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6916:19:0;;;;;;:11;:19;;;;;;;;140:10;6916:33;;;;;;;;;;:37;:89::i;:::-;6885:8;:121::i;:::-;-1:-1:-1;7022:4:0;6724:308;;;;;:::o;3895:129::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;3954:10:::1;::::0;::::1;::::0;::::1;;;3946:49;;;::::0;-1:-1:-1;;;3946:49:0;;5743:2:1;3946:49:0::1;::::0;::::1;5725:21:1::0;5782:2;5762:18;;;5755:30;-1:-1:-1;;;5801:18:1;;;5794:51;5862:18;;3946:49:0::1;5715:171:1::0;3946:49:0::1;4004:10;:14:::0;;-1:-1:-1;;4004:14:0::1;::::0;;3895:129::o;8041:248::-;8107:7;8147;;8136;:18;;8128:73;;;;-1:-1:-1;;;8128:73:0;;4217:2:1;8128:73:0;;;4199:21:1;4256:2;4236:18;;;4229:30;4295:34;4275:18;;;4268:62;-1:-1:-1;;;4346:18:1;;;4339:40;4396:19;;8128:73:0;4189:232:1;8128:73:0;8210:19;8233:10;:8;:10::i;:::-;8210:33;-1:-1:-1;8259:24:0;:7;8210:33;8259:11;:24::i;7616:419::-;7706:7;3287:19;7735:7;:18;;7727:62;;;;-1:-1:-1;;;7727:62:0;;6093:2:1;7727:62:0;;;6075:21:1;6132:2;6112:18;;;6105:30;6171:33;6151:18;;;6144:61;6222:18;;7727:62:0;6065:181:1;7727:62:0;7803:17;7798:232;;7836:15;7859:19;7870:7;7859:10;:19::i;:::-;-1:-1:-1;7835:43:0;;-1:-1:-1;7891:14:0;;-1:-1:-1;;;;7891:14:0;7798:232;7936:23;7966:19;7977:7;7966:10;:19::i;:::-;-1:-1:-1;7934:51:0;;-1:-1:-1;7998:22:0;;-1:-1:-1;;;;7998:22:0;2580:148;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;2687:1:::1;2671:6:::0;;2650:40:::1;::::0;-1:-1:-1;;;;;2671:6:0;;::::1;::::0;2650:40:::1;::::0;2687:1;;2650:40:::1;2718:1;2701:19:::0;;-1:-1:-1;;;;;;2701:19:0::1;::::0;;2580:148::o;4030:91::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;4099:8:::1;:16:::0;4030:91::o;5763:86::-;5802:13;5836:7;5829:14;;;;;:::i;6244:164::-;6322:4;6340:42;140:10;6364:9;6375:6;6340:9;:42::i;3756:133::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;3817:10:::1;::::0;::::1;::::0;::::1;;;:15:::0;3809:51:::1;;;::::0;-1:-1:-1;;;3809:51:0;;6795:2:1;3809:51:0::1;::::0;::::1;6777:21:1::0;6834:2;6814:18;;;6807:30;6873:25;6853:18;;;6846:53;6916:18;;3809:51:0::1;6767:173:1::0;3809:51:0::1;3869:10;:14:::0;;-1:-1:-1;;3869:14:0::1;;;::::0;;3756:133::o;5470:107::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;2404:7;2431:6;;5523:48:::1;::::0;-1:-1:-1;;;;;2431:6:0;;;;5549:21:::1;5523:48:::0;::::1;;;::::0;5549:21;;5523:48;2404:7;5523:48;5549:21;2431:6;5523:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5470:107::o:0;8295:321::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8378:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;8377:21;8369:61;;;::::0;-1:-1:-1;;;8369:61:0;;5387:2:1;8369:61:0::1;::::0;::::1;5369:21:1::0;5426:2;5406:18;;;5399:30;5465:29;5445:18;;;5438:57;5512:18;;8369:61:0::1;5359:177:1::0;8369:61:0::1;-1:-1:-1::0;;;;;8442:16:0;::::1;8461:1;8442:16:::0;;;:7:::1;:16;::::0;;;;;:20;8439:104:::1;;-1:-1:-1::0;;;;;8516:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;8496:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;8477:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;8439:104:::1;-1:-1:-1::0;;;;;8551:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;8551:27:0::1;8574:4;8551:27:::0;;::::1;::::0;;;8587:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8587:23:0::1;::::0;;::::1;::::0;;8295:321::o;8622:459::-;2493:6;;-1:-1:-1;;;;;2493:6:0;140:10;2493:22;2485:67;;;;-1:-1:-1;;;2485:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8704:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;8696:60;;;::::0;-1:-1:-1;;;8696:60:0;;5387:2:1;8696:60:0::1;::::0;::::1;5369:21:1::0;5426:2;5406:18;;;5399:30;5465:29;5445:18;;;5438:57;5512:18;;8696:60:0::1;5359:177:1::0;8696:60:0::1;8770:9;8765:311;8789:9;:16:::0;8785:20;::::1;8765:311;;;8845:7;-1:-1:-1::0;;;;;8829:23:0::1;:9;8839:1;8829:12;;;;;;-1:-1:-1::0;;;8829:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;8829:12:0::1;:23;8825:242;;;8886:9;8896:16:::0;;:20:::1;::::0;8915:1:::1;::::0;8896:20:::1;:::i;:::-;8886:31;;;;;;-1:-1:-1::0;;;8886:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;8871:9:::1;:12:::0;;-1:-1:-1;;;;;8886:31:0;;::::1;::::0;8881:1;;8871:12;::::1;;;-1:-1:-1::0;;;8871:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;8871:46:0::1;-1:-1:-1::0;;;;;8871:46:0;;::::1;;::::0;;8934:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;8971:11:::1;:20:::0;;;;:28;;-1:-1:-1;;8971:28:0::1;::::0;;9016:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;9016:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9016:15:0;;;;;-1:-1:-1;;;;;;9016:15:0::1;::::0;;;;;8765:311:::1;8622:459:::0;:::o;8825:242::-:1;8807:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8765:311;;;;8622:459:::0;:::o;1789:189::-;1875:7;1910:12;1903:5;1895:28;;;;-1:-1:-1;;;1895:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1934:9:0;1946:5;1950:1;1946;:5;:::i;:::-;1934:17;1789:189;-1:-1:-1;;;;;1789:189:0:o;11288:495::-;11392:15;11409:23;11434:12;11448:23;11473:12;11489:19;11500:7;11489:10;:19::i;:::-;-1:-1:-1;;;;;11535:15:0;;;;;;:7;:15;;;;;;11391:117;;-1:-1:-1;11391:117:0;;-1:-1:-1;11391:117:0;;-1:-1:-1;11391:117:0;-1:-1:-1;11391:117:0;-1:-1:-1;11535:28:0;;11555:7;11535:19;:28::i;:::-;-1:-1:-1;;;;;11517:15:0;;;;;;:7;:15;;;;;;;;:46;;;;11590:7;:15;;;;:28;;11610:7;11590:19;:28::i;:::-;-1:-1:-1;;;;;11572:15:0;;;;;;;:7;:15;;;;;;:46;;;;11648:18;;;;;;;:39;;11671:15;11648:22;:39::i;:::-;-1:-1:-1;;;;;11627:18:0;;;;;;:7;:18;;;;;:60;11696:23;11708:4;11714;11696:11;:23::i;:::-;11750:9;-1:-1:-1;;;;;11733:44:0;11742:6;-1:-1:-1;;;;;11733:44:0;;11761:15;11733:44;;;;11381:25:1;;11369:2;11354:18;;11336:76;11733:44:0;;;;;;;;11288:495;;;;;;;;:::o;10775:507::-;10877:15;10894:23;10919:12;10933:23;10958:12;10974:19;10985:7;10974:10;:19::i;:::-;-1:-1:-1;;;;;11020:15:0;;;;;;:7;:15;;;;;;10876:117;;-1:-1:-1;10876:117:0;;-1:-1:-1;10876:117:0;;-1:-1:-1;10876:117:0;-1:-1:-1;10876:117:0;-1:-1:-1;11020:28:0;;10876:117;11020:19;:28::i;:::-;-1:-1:-1;;;;;11002:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;11078:18;;;;;:7;:18;;;;;:39;;11101:15;11078:22;:39::i;:::-;-1:-1:-1;;;;;11057:18:0;;;;;;:7;:18;;;;;;;;:60;;;;11147:7;:18;;;;:39;;11170:15;11147:22;:39::i;10333:436::-;10433:15;10450:23;10475:12;10489:23;10514:12;10530:19;10541:7;10530:10;:19::i;:::-;-1:-1:-1;;;;;10576:15:0;;;;;;:7;:15;;;;;;10432:117;;-1:-1:-1;10432:117:0;;-1:-1:-1;10432:117:0;;-1:-1:-1;10432:117:0;-1:-1:-1;10432:117:0;-1:-1:-1;10576:28:0;;10432:117;10576:19;:28::i;11789:564::-;11893:15;11910:23;11935:12;11949:23;11974:12;11990:19;12001:7;11990:10;:19::i;:::-;-1:-1:-1;;;;;12036:15:0;;;;;;:7;:15;;;;;;11892:117;;-1:-1:-1;11892:117:0;;-1:-1:-1;11892:117:0;;-1:-1:-1;11892:117:0;-1:-1:-1;11892:117:0;-1:-1:-1;12036:28:0;;12056:7;12036:19;:28::i;:::-;-1:-1:-1;;;;;12018:15:0;;;;;;:7;:15;;;;;;;;:46;;;;12091:7;:15;;;;:28;;12111:7;12091:19;:28::i;12509:404::-;12568:7;12577;12586;12595;12604;12626:23;12651:12;12667:20;12679:7;12667:11;:20::i;:::-;12625:62;;;;12696:19;12719:10;:8;:10::i;:::-;12696:33;;12739:15;12756:23;12781:12;12797:39;12809:7;12818:4;12824:11;12797;:39::i;:::-;12738:98;;;;-1:-1:-1;12738:98:0;;-1:-1:-1;12885:15:0;;-1:-1:-1;12902:4:0;;-1:-1:-1;12509:404:0;;-1:-1:-1;;;;;;12509:404:0:o;1053:136::-;1111:7;1138:43;1142:1;1145;1138:43;;;;;;;;;;;;;;;;;:3;:43::i;9087:328::-;-1:-1:-1;;;;;9181:19:0;;9173:68;;;;-1:-1:-1;;;9173:68:0;;9495:2:1;9173:68:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:34;9668:19;;9173:68:0;9467:226:1;9173:68:0;-1:-1:-1;;;;;9258:21:0;;9250:68;;;;-1:-1:-1;;;9250:68:0;;4628:2:1;9250:68:0;;;4610:21:1;4667:2;4647:18;;;4640:30;4706:34;4686:18;;;4679:62;-1:-1:-1;;;4757:18:1;;;4750:32;4799:19;;9250:68:0;4600:224:1;9250:68:0;-1:-1:-1;;;;;9327:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9377:32;;11381:25:1;;;9377:32:0;;11354:18:1;9377:32:0;;;;;;;9087:328;;;:::o;1197:190::-;1283:7;1319:12;1311:6;;;;1303:29;;;;-1:-1:-1;;;1303:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1343:9:0;1355:5;1359:1;1355;:5;:::i;13530:160::-;13571:7;13593:15;13610;13629:19;:17;:19::i;:::-;13592:56;;-1:-1:-1;13592:56:0;-1:-1:-1;13664:20:0;13592:56;;13664:11;:20::i;:::-;13657:27;;;;13530:160;:::o;12359:144::-;12438:7;;:17;;12450:4;12438:11;:17::i;:::-;12428:7;:27;12477:10;;:20;;12492:4;12477:14;:20::i;:::-;12464:10;:33;-1:-1:-1;;12359:144:0:o;12919:272::-;12979:7;;;13024:23;13045:1;13024:16;:7;13036:3;13024:11;:16::i;:::-;:20;;:23::i;:::-;13060:10;;13009:38;;-1:-1:-1;13060:10:0;;;;;:15;13056:38;;-1:-1:-1;13093:1:0;13056:38;13103:23;13129:17;:7;13141:4;13129:11;:17::i;:::-;13103:43;13180:4;;-1:-1:-1;12919:272:0;;-1:-1:-1;;;12919:272:0:o;13197:327::-;13292:7;;;;13349:24;:7;13361:11;13349;:24::i;:::-;13331:42;-1:-1:-1;13382:12:0;13397:21;:4;13406:11;13397:8;:21::i;:::-;13382:36;-1:-1:-1;13427:23:0;13453:17;:7;13382:36;13453:11;:17::i;:::-;13487:7;;;;-1:-1:-1;13513:4:0;;-1:-1:-1;13197:327:0;;-1:-1:-1;;;;;13197:327:0:o;13696:538::-;13794:7;;13746;;;;3287:19;13746:7;13844:281;13868:9;:16;13864:20;;13844:281;;;13932:7;13908;:21;13916:9;13926:1;13916:12;;;;;;-1:-1:-1;;;13916:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13916:12:0;13908:21;;;;;;;;;;;;;:31;;:66;;;13967:7;13943;:21;13951:9;13961:1;13951:12;;;;;;-1:-1:-1;;;13951:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13951:12:0;13943:21;;;;;;;;;;;;;:31;13908:66;13904:97;;;-1:-1:-1;;13984:7:0;;;3287:19;;-1:-1:-1;13696:538:0;-1:-1:-1;;13696:538:0:o;13904:97::-;14024:34;14036:7;:21;14044:9;14054:1;14044:12;;;;;;-1:-1:-1;;;14044:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14044:12:0;14036:21;;;;;;;;;;;;;14024:7;;:11;:34::i;:::-;14014:44;;14081:34;14093:7;:21;14101:9;14111:1;14101:12;;;;;;-1:-1:-1;;;14101:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14101:12:0;14093:21;;;;;;;;;;;;;14081:7;;:11;:34::i;:::-;14071:44;-1:-1:-1;13886:3:0;;;;:::i;:::-;;;;13844:281;;;-1:-1:-1;14147:7:0;;:20;;3287:19;14147:11;:20::i;:::-;14137:7;:30;14133:61;;;-1:-1:-1;;14177:7:0;;;3287:19;;-1:-1:-1;13696:538:0;-1:-1:-1;13696:538:0:o;14133:61::-;14211:7;;14220;;-1:-1:-1;13696:538:0;-1:-1:-1;13696:538:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;1079:6;1087;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:190::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1413:6;1405;1398:22;1360:2;-1:-1:-1;1441:23:1;;1350:120;-1:-1:-1;1350:120:1:o;1475:361::-;1540:6;1548;1601:2;1589:9;1580:7;1576:23;1572:32;1569:2;;;1622:6;1614;1607:22;1569:2;1663:9;1650:23;1640:33;;1723:2;1712:9;1708:18;1695:32;1770:5;1763:13;1756:21;1749:5;1746:32;1736:2;;1797:6;1789;1782:22;1736:2;1825:5;1815:15;;;1559:277;;;;;:::o;2591:603::-;2703:4;2732:2;2761;2750:9;2743:21;2793:6;2787:13;2836:6;2831:2;2820:9;2816:18;2809:34;2861:4;2874:140;2888:6;2885:1;2882:13;2874:140;;;2983:14;;;2979:23;;2973:30;2949:17;;;2968:2;2945:26;2938:66;2903:10;;2874:140;;;3032:6;3029:1;3026:13;3023:2;;;3102:4;3097:2;3088:6;3077:9;3073:22;3069:31;3062:45;3023:2;-1:-1:-1;3178:2:1;3157:15;-1:-1:-1;;3153:29:1;3138:45;;;;3185:2;3134:54;;2712:482;-1:-1:-1;;;2712:482:1:o;7705:356::-;7907:2;7889:21;;;7926:18;;;7919:30;7985:34;7980:2;7965:18;;7958:62;8052:2;8037:18;;7879:182::o;11606:128::-;11646:3;11677:1;11673:6;11670:1;11667:13;11664:2;;;11683:18;;:::i;:::-;-1:-1:-1;11719:9:1;;11654:80::o;11739:217::-;11779:1;11805;11795:2;;-1:-1:-1;;;11830:31:1;;11884:4;11881:1;11874:15;11912:4;11837:1;11902:15;11795:2;-1:-1:-1;11941:9:1;;11785:171::o;11961:422::-;12050:1;12093:5;12050:1;12107:270;12128:7;12118:8;12115:21;12107:270;;;12187:4;12183:1;12179:6;12175:17;12169:4;12166:27;12163:2;;;12196:18;;:::i;:::-;12246:7;12236:8;12232:22;12229:2;;;12266:16;;;;12229:2;12345:22;;;;12305:15;;;;12107:270;;;12111:3;12025:358;;;;;:::o;12388:140::-;12446:5;12475:47;12516:4;12506:8;12502:19;12496:4;12582:5;12612:8;12602:2;;-1:-1:-1;12653:1:1;12667:5;;12602:2;12701:4;12691:2;;-1:-1:-1;12738:1:1;12752:5;;12691:2;12783:4;12801:1;12796:59;;;;12869:1;12864:130;;;;12776:218;;12796:59;12826:1;12817:10;;12840:5;;;12864:130;12901:3;12891:8;12888:17;12885:2;;;12908:18;;:::i;:::-;-1:-1:-1;;12964:1:1;12950:16;;12979:5;;12776:218;;13078:2;13068:8;13065:16;13059:3;13053:4;13050:13;13046:36;13040:2;13030:8;13027:16;13022:2;13016:4;13013:12;13009:35;13006:77;13003:2;;;-1:-1:-1;13115:19:1;;;13147:5;;13003:2;13194:34;13219:8;13213:4;13194:34;:::i;:::-;13264:6;13260:1;13256:6;13252:19;13243:7;13240:32;13237:2;;;13275:18;;:::i;:::-;13313:20;;12592:747;-1:-1:-1;;;12592:747:1:o;13344:168::-;13384:7;13450:1;13446;13442:6;13438:14;13435:1;13432:21;13427:1;13420:9;13413:17;13409:45;13406:2;;;13457:18;;:::i;:::-;-1:-1:-1;13497:9:1;;13396:116::o;13517:125::-;13557:4;13585:1;13582;13579:8;13576:2;;;13590:18;;:::i;:::-;-1:-1:-1;13627:9:1;;13566:76::o;13647:380::-;13726:1;13722:12;;;;13769;;;13790:2;;13844:4;13836:6;13832:17;13822:27;;13790:2;13897;13889:6;13886:14;13866:18;13863:38;13860:2;;;13943:10;13938:3;13934:20;13931:1;13924:31;13978:4;13975:1;13968:15;14006:4;14003:1;13996:15;13860:2;;13702:325;;;:::o;14032:135::-;14071:3;-1:-1:-1;;14092:17:1;;14089:2;;;14112:18;;:::i;:::-;-1:-1:-1;14159:1:1;14148:13;;14079:88::o;14172:127::-;14233:10;14228:3;14224:20;14221:1;14214:31;14264:4;14261:1;14254:15;14288:4;14285:1;14278:15

Swarm Source

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