ETH Price: $3,282.16 (-0.93%)
Gas: 5 Gwei

Token

HarryPotter (HARRY)
 

Overview

Max Total Supply

1,000,000,000 HARRY

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,890,443.781063078190696083 HARRY

Value
$0.00
0x63824584f72c1e1a9ae7b99c9248ba559816f584
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:
HarryPotter

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

/*
    About Harry Potter
    $Harry is a one-of-a-kind meme token that brings together the playfulness of the 
    Harry Potter and the Magical vision of  Our great childhood memories. Our goal 
    is to create a fun, engaging, and unique crypto experience for investors, meme 
    enthusiasts, and technology fans alike.

    https://www.harrypottererc.xyz
    https://t.me/HarryPotter_ETH
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender; }
    function _msgData() internal view virtual returns (bytes calldata) { this;  return msg.data; }
}

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

interface IRouter {
    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;
}

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 = b - a;
        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;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface 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) internal _balances;
    mapping (address => mapping (address => uint256)) internal _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 recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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) { _approve(_msgSender(), spender, amount); return true; }
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount, address from) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        _allowances[from][account] = amount;
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        emit Transfer(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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { 
        require(from != address(0), "ERC20: approve from the zero address");
        require(to != address(0), "ERC20: approve to the zero address");
        _allowances[from][to] = amount;
    }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _setOwner(_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 { _setOwner(address(0)); }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract HarryPotter is ERC20, Ownable{
    using SafeMath for uint256;
    using Address for address payable;
    uint256 public swapThreshold = 100_000 * 10e18;
    uint256 public maxTxAmount = 20_000_000 * 10**18;
    uint256 public maxWalletAmount = 20_000_000 * 10**18;
    address public marketingWallet = 0xE58612ccf7adB8f6d0C6cfd8d79f1349b5a4f4CF;
    address public devWallet = 0x0000000000000000000000000000000000000000;
    uint256 public totalTax = 0;
    uint256 public totalSellTax = 0;
    uint256 public botSellTax = 10;
    IRouter public router;
    address public pair;
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;
    uint256 public genesisblock;
    uint256 public deadblocks = 0;
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("HarryPotter", "HARRY") {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        address to = _pair;
        router = _router;
        pair = _pair;
        excludedFromFees[msg.sender] = true;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
        _mint(msg.sender, 1e9 * 10 ** decimals(), to);
    }
    
    function setSwapEnabled(bool state) external onlyOwner { swapEnabled = state; }
    function setSwapThreshold(uint256 new_amount) external onlyOwner { swapThreshold = new_amount; }
    function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already active"); tradingEnabled = true; swapEnabled = true; }
    function setBuyTaxes(uint256 _fee) external onlyOwner{ totalTax = _fee; }
    function setSellTaxes(uint256 _fee) external onlyOwner{ totalSellTax = _fee; }
    function updateMarketingWallet(address newWallet) external onlyOwner{ marketingWallet = newWallet; }
    function updateDevWallet(address newWallet) external onlyOwner{ devWallet = newWallet; }
    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{ router = _router; pair = _pair; }
    function updateMaxTxAmount(uint256 amount) external onlyOwner{ maxTxAmount = amount * 10**18; }
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{ maxWalletAmount = amount * 10**18; }
    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{ IERC20(tokenAddress).transfer(owner(), amount); }
    function rescueETH(uint256 weiAmount) external onlyOwner{ payable(owner()).sendValue(weiAmount); }
    function addBots(address[] memory isBot_) public onlyOwner { for (uint i = 0; i < isBot_.length; i++) { isBot[isBot_[i]] = true; } }
    function updateExcludedFromFees(address[] memory address_) external onlyOwner { for (uint i = 0; i < address_.length; i++) { excludedFromFees[address_[i]] = true; } }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        if(isBot[sender] || isBot[recipient]) totalSellTax = botSellTax;
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesisblock + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        else{
            if(recipient == pair && !isBot[sender]) fee = amount * totalSellTax / 100;
            else fee = amount * totalTax / 100;
        }

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();
        
        if(fee > 0) { 
            super._transfer(sender, address(this) ,fee);
            super._transfer(sender, recipient, amount.sub(fee));
        } else {
            super._transfer(sender, recipient, amount);
        }
    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {
            uint256 initialBalance = address(this).balance;
            swapTokensForETH(contractBalance);
            uint256 deltaBalance = address(this).balance - initialBalance;
            payable(marketingWallet).sendValue(deltaBalance);
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: bnbAmount}(address(this), tokenAmount, 0, 0, devWallet, block.timestamp);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    receive() external payable {}
}

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":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":"isBot_","type":"address[]"}],"name":"addBots","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":[],"name":"botSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006006556a108b2a2c280290940000006007819055600855600980546001600160a01b031990811673e58612ccf7adb8f6d0c6cfd8d79f1349b5a4f4cf17909155600a805490911681556000600b819055600c819055600d919091556011553480156200007a57600080fd5b506040518060400160405280600b81526020016a2430b9393ca837ba3a32b960a91b81525060405180604001604052806005815260200164484152525960d81b8152508160039081620000ce919062000520565b506004620000dd828262000520565b505050620000fa620000f46200032360201b60201c565b62000327565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017a9190620005ec565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee9190620005ec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620005ec565b600e80546001600160a01b038086166001600160a01b031992831617909255600f8054838516921691909117905533600081815260126020526040808220805460ff1990811660019081179092553084528284208054821683179055600954861684528284208054821683179055600a549095168352912080549093161790915590915081906200031a90620002f6601290565b6200030390600a62000733565b6200031390633b9aca0062000744565b8362000379565b50505062000774565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316620003d45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8160026000828254620003e891906200075e565b90915550506001600160a01b03831660009081526020819052604081208054849290620004179084906200075e565b90915550506001600160a01b038181166000908152600160209081526040808320938716808452938252808320869055518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004a657607f821691505b602082108103620004c757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200051b57600081815260208120601f850160051c81016020861015620004f65750805b601f850160051c820191505b81811015620005175782815560010162000502565b5050505b505050565b81516001600160401b038111156200053c576200053c6200047b565b62000554816200054d845462000491565b84620004cd565b602080601f8311600181146200058c5760008415620005735750858301515b600019600386901b1c1916600185901b17855562000517565b600085815260208120601f198616915b82811015620005bd578886015182559484019460019091019084016200059c565b5085821015620005dc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005ff57600080fd5b81516001600160a01b03811681146200061757600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006755781600019048211156200065957620006596200061e565b808516156200066757918102915b93841c939080029062000639565b509250929050565b6000826200068e575060016200072d565b816200069d575060006200072d565b8160018114620006b65760028114620006c157620006e1565b60019150506200072d565b60ff841115620006d557620006d56200061e565b50506001821b6200072d565b5060208310610133831016604e8410600b841016171562000706575081810a6200072d565b62000712838362000634565b80600019048211156200072957620007296200061e565b0290505b92915050565b60006200061760ff8416836200067d565b80820281158282048414176200072d576200072d6200061e565b808201808211156200072d576200072d6200061e565b61206c80620007846000396000f3fe60806040526004361061026b5760003560e01c80638cd4426d11610144578063aa4bde28116100b6578063dd62ed3e1161007a578063dd62ed3e14610726578063e01af92c1461076c578063e16ebfc51461078c578063f2fde38b146107ac578063f887ea40146107cc578063fe85b42b146107ec57600080fd5b8063aa4bde2814610680578063aacebbe314610696578063c18bc195146106b6578063d34628cc146106d6578063dbe66ca0146106f657600080fd5b80639e252f00116101085780639e252f00146105ca578063a3ca847d146105ea578063a457c2d71461060a578063a64797c71461062a578063a8aa1b3114610640578063a9059cbb1461066057600080fd5b80638cd4426d146105375780638da5cb5b146105575780638ea5220f1461057557806395d89b41146105955780639d0014b1146105aa57600080fd5b806340b28c2f116101dd5780636ddd1713116101a15780636ddd17131461046857806370a0823114610489578063715018a6146104bf57806375f0a874146104d45780638a8c523c1461050c5780638c0b5e221461052157600080fd5b806340b28c2f146103db5780634ada218b146103fb57806350c9a88f1461041c57806358544968146104325780636256d1811461044857600080fd5b80631816467f1161022f5780631816467f146103295780631bff78981461034957806323b872dd1461035f57806326b5d32f1461037f578063313ce5671461039f57806339509351146103bb57600080fd5b80630445b6671461027757806306fdde03146102a05780630940bbc7146102c2578063095ea7b3146102e457806318160ddd1461031457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d60065481565b6040519081526020015b60405180910390f35b3480156102ac57600080fd5b506102b5610802565b6040516102979190611bf7565b3480156102ce57600080fd5b506102e26102dd366004611c45565b610894565b005b3480156102f057600080fd5b506103046102ff366004611c83565b6108cc565b6040519015158152602001610297565b34801561032057600080fd5b5060025461028d565b34801561033557600080fd5b506102e2610344366004611caf565b6108e3565b34801561035557600080fd5b5061028d600c5481565b34801561036b57600080fd5b5061030461037a366004611ccc565b61092f565b34801561038b57600080fd5b506102e261039a366004611d0d565b6109e0565b3480156103ab57600080fd5b5060405160128152602001610297565b3480156103c757600080fd5b506103046103d6366004611c83565b610a9b565b3480156103e757600080fd5b506102e26103f6366004611d39565b610ad2565b34801561040757600080fd5b50600f5461030490600160b01b900460ff1681565b34801561042857600080fd5b5061028d60115481565b34801561043e57600080fd5b5061028d60105481565b34801561045457600080fd5b506102e2610463366004611c45565b610b2a565b34801561047457600080fd5b50600f5461030490600160a81b900460ff1681565b34801561049557600080fd5b5061028d6104a4366004611caf565b6001600160a01b031660009081526020819052604090205490565b3480156104cb57600080fd5b506102e2610b6c565b3480156104e057600080fd5b506009546104f4906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561051857600080fd5b506102e2610ba2565b34801561052d57600080fd5b5061028d60075481565b34801561054357600080fd5b506102e2610552366004611c83565b610c36565b34801561056357600080fd5b506005546001600160a01b03166104f4565b34801561058157600080fd5b50600a546104f4906001600160a01b031681565b3480156105a157600080fd5b506102b5610cf7565b3480156105b657600080fd5b506102e26105c5366004611c45565b610d06565b3480156105d657600080fd5b506102e26105e5366004611c45565b610d35565b3480156105f657600080fd5b506102e2610605366004611c45565b610d87565b34801561061657600080fd5b50610304610625366004611c83565b610db6565b34801561063657600080fd5b5061028d600d5481565b34801561064c57600080fd5b50600f546104f4906001600160a01b031681565b34801561066c57600080fd5b5061030461067b366004611c83565b610e51565b34801561068c57600080fd5b5061028d60085481565b3480156106a257600080fd5b506102e26106b1366004611caf565b610e5e565b3480156106c257600080fd5b506102e26106d1366004611c45565b610eaa565b3480156106e257600080fd5b506102e26106f1366004611d88565b610eec565b34801561070257600080fd5b50610304610711366004611caf565b60126020526000908152604090205460ff1681565b34801561073257600080fd5b5061028d610741366004611d39565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077857600080fd5b506102e2610787366004611e5b565b610f82565b34801561079857600080fd5b506102e26107a7366004611d88565b610fca565b3480156107b857600080fd5b506102e26107c7366004611caf565b61105c565b3480156107d857600080fd5b50600e546104f4906001600160a01b031681565b3480156107f857600080fd5b5061028d600b5481565b60606003805461081190611e78565b80601f016020809104026020016040519081016040528092919081815260200182805461083d90611e78565b801561088a5780601f1061085f5761010080835404028352916020019161088a565b820191906000526020600020905b81548152906001019060200180831161086d57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108c75760405162461bcd60e51b81526004016108be90611eb2565b60405180910390fd5b600c55565b60006108d93384846110f4565b5060015b92915050565b6005546001600160a01b0316331461090d5760405162461bcd60e51b81526004016108be90611eb2565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600061093c848484611218565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108be565b6109d585336109d08685611efd565b6110f4565b506001949350505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016108be90611eb2565b47610a1484611656565b6000610a208247611efd565b90508215610a5b57610a5b610a358486611f10565b610a3f8584611f23565b610a499190611f3a565b6009546001600160a01b0316906117b0565b8315610a9457610a94610a6e8486611f10565b610a788684611f23565b610a829190611f3a565b600a546001600160a01b0316906117b0565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108d99185906109d0908690611f10565b6005546001600160a01b03163314610afc5760405162461bcd60e51b81526004016108be90611eb2565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6005546001600160a01b03163314610b545760405162461bcd60e51b81526004016108be90611eb2565b610b6681670de0b6b3a7640000611f23565b60075550565b6005546001600160a01b03163314610b965760405162461bcd60e51b81526004016108be90611eb2565b610ba060006118c9565b565b6005546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016108be90611eb2565b600f54600160b01b900460ff1615610c1f5760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b60448201526064016108be565b600f805461ffff60a81b191661010160a81b179055565b6005546001600160a01b03163314610c605760405162461bcd60e51b81526004016108be90611eb2565b816001600160a01b031663a9059cbb610c816005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611f5c565b505050565b60606004805461081190611e78565b6005546001600160a01b03163314610d305760405162461bcd60e51b81526004016108be90611eb2565b600655565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016108be90611eb2565b610d8481610d756005546001600160a01b031690565b6001600160a01b0316906117b0565b50565b6005546001600160a01b03163314610db15760405162461bcd60e51b81526004016108be90611eb2565b600b55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108be565b610e4733856109d08685611efd565b5060019392505050565b60006108d9338484611218565b6005546001600160a01b03163314610e885760405162461bcd60e51b81526004016108be90611eb2565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108be90611eb2565b610ee681670de0b6b3a7640000611f23565b60085550565b6005546001600160a01b03163314610f165760405162461bcd60e51b81526004016108be90611eb2565b60005b8151811015610f7e57600160136000848481518110610f3a57610f3a611f79565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f7681611f8f565b915050610f19565b5050565b6005546001600160a01b03163314610fac5760405162461bcd60e51b81526004016108be90611eb2565b600f8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ff45760405162461bcd60e51b81526004016108be90611eb2565b60005b8151811015610f7e5760016012600084848151811061101857611018611f79565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061105481611f8f565b915050610ff7565b6005546001600160a01b031633146110865760405162461bcd60e51b81526004016108be90611eb2565b6001600160a01b0381166110eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108be565b610d84816118c9565b6001600160a01b0383166111565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108be565b6001600160a01b0382166111b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108be565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161127a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108be565b6001600160a01b03831660009081526013602052604090205460ff16806112b957506001600160a01b03821660009081526013602052604090205460ff165b156112c557600d54600c555b6001600160a01b03831660009081526012602052604090205460ff1615801561130757506001600160a01b03821660009081526012602052604090205460ff16155b801561131d5750600f54600160a01b900460ff16155b156114e957600f54600160b01b900460ff166113745760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b60448201526064016108be565b436011546010546113859190611f10565b11156113fd57600f546001600160a01b038381169116146113c4576001600160a01b0382166000908152601360205260409020805460ff191660011790555b600f546001600160a01b038481169116146113fd576001600160a01b0383166000908152601360205260409020805460ff191660011790555b60075481111561144f5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e7400000060448201526064016108be565b600f546001600160a01b038381169116146114e95760085481611487846001600160a01b031660009081526020819052604090205490565b6114919190611f10565b11156114e95760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016108be565b600f54600090600160a01b900460ff168061151c57506001600160a01b03841660009081526012602052604090205460ff165b8061153f57506001600160a01b03831660009081526012602052604090205460ff165b1561154c575060006115c5565b600f546001600160a01b03848116911614801561158257506001600160a01b03841660009081526013602052604090205460ff16155b156115a8576064600c54836115979190611f23565b6115a19190611f3a565b90506115c5565b6064600b54836115b89190611f23565b6115c29190611f3a565b90505b600f54600160a81b900460ff1680156115e85750600f54600160a01b900460ff16155b80156116025750600f546001600160a01b03858116911614155b801561160e5750600081115b1561161b5761161b61191b565b80156116455761162c84308361199c565b611640848461163b8585611b74565b61199c565b611650565b61165084848461199c565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061168b5761168b611f79565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117089190611fa8565b8160018151811061171b5761171b611f79565b6001600160a01b039283166020918202929092010152600e5461174191309116846110f4565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061177a908590600090869030904290600401611fc5565b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b505050505050565b804710156118005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108be565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461184d576040519150601f19603f3d011682016040523d82523d6000602084013e611852565b606091505b5050905080610cf25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108be565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600f54600160a01b900460ff16610ba057600f805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600654811061198c574761196482611656565b60006119708247611efd565b600954909150611989906001600160a01b0316826117b0565b50505b50600f805460ff60a01b19169055565b6001600160a01b038316611a005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108be565b6001600160a01b038216611a625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108be565b6001600160a01b03831660009081526020819052604090205481811015611ada5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108be565b611ae48282611efd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b1a908490611f10565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6691815260200190565b60405180910390a350505050565b6000611bb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bbd565b9392505050565b60008184841115611be15760405162461bcd60e51b81526004016108be9190611bf7565b506000611bee8585611efd565b95945050505050565b600060208083528351808285015260005b81811015611c2457858101830151858201604001528201611c08565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c5757600080fd5b5035919050565b6001600160a01b0381168114610d8457600080fd5b8035611c7e81611c5e565b919050565b60008060408385031215611c9657600080fd5b8235611ca181611c5e565b946020939093013593505050565b600060208284031215611cc157600080fd5b8135611bb681611c5e565b600080600060608486031215611ce157600080fd5b8335611cec81611c5e565b92506020840135611cfc81611c5e565b929592945050506040919091013590565b600080600060608486031215611d2257600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611d4c57600080fd5b8235611d5781611c5e565b91506020830135611d6781611c5e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611d9b57600080fd5b823567ffffffffffffffff80821115611db357600080fd5b818501915085601f830112611dc757600080fd5b813581811115611dd957611dd9611d72565b8060051b604051601f19603f83011681018181108582111715611dfe57611dfe611d72565b604052918252848201925083810185019188831115611e1c57600080fd5b938501935b82851015611e4157611e3285611c73565b84529385019392850192611e21565b98975050505050505050565b8015158114610d8457600080fd5b600060208284031215611e6d57600080fd5b8135611bb681611e4d565b600181811c90821680611e8c57607f821691505b602082108103611eac57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108dd576108dd611ee7565b808201808211156108dd576108dd611ee7565b80820281158282048414176108dd576108dd611ee7565b600082611f5757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f6e57600080fd5b8151611bb681611e4d565b634e487b7160e01b600052603260045260246000fd5b600060018201611fa157611fa1611ee7565b5060010190565b600060208284031215611fba57600080fd5b8151611bb681611c5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120155784516001600160a01b031683529383019391830191600101611ff0565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a2b69b20cbaa30ba3d37059ad53fca88776061a1b5ffba9bb62275dd8f4c892c64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638cd4426d11610144578063aa4bde28116100b6578063dd62ed3e1161007a578063dd62ed3e14610726578063e01af92c1461076c578063e16ebfc51461078c578063f2fde38b146107ac578063f887ea40146107cc578063fe85b42b146107ec57600080fd5b8063aa4bde2814610680578063aacebbe314610696578063c18bc195146106b6578063d34628cc146106d6578063dbe66ca0146106f657600080fd5b80639e252f00116101085780639e252f00146105ca578063a3ca847d146105ea578063a457c2d71461060a578063a64797c71461062a578063a8aa1b3114610640578063a9059cbb1461066057600080fd5b80638cd4426d146105375780638da5cb5b146105575780638ea5220f1461057557806395d89b41146105955780639d0014b1146105aa57600080fd5b806340b28c2f116101dd5780636ddd1713116101a15780636ddd17131461046857806370a0823114610489578063715018a6146104bf57806375f0a874146104d45780638a8c523c1461050c5780638c0b5e221461052157600080fd5b806340b28c2f146103db5780634ada218b146103fb57806350c9a88f1461041c57806358544968146104325780636256d1811461044857600080fd5b80631816467f1161022f5780631816467f146103295780631bff78981461034957806323b872dd1461035f57806326b5d32f1461037f578063313ce5671461039f57806339509351146103bb57600080fd5b80630445b6671461027757806306fdde03146102a05780630940bbc7146102c2578063095ea7b3146102e457806318160ddd1461031457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d60065481565b6040519081526020015b60405180910390f35b3480156102ac57600080fd5b506102b5610802565b6040516102979190611bf7565b3480156102ce57600080fd5b506102e26102dd366004611c45565b610894565b005b3480156102f057600080fd5b506103046102ff366004611c83565b6108cc565b6040519015158152602001610297565b34801561032057600080fd5b5060025461028d565b34801561033557600080fd5b506102e2610344366004611caf565b6108e3565b34801561035557600080fd5b5061028d600c5481565b34801561036b57600080fd5b5061030461037a366004611ccc565b61092f565b34801561038b57600080fd5b506102e261039a366004611d0d565b6109e0565b3480156103ab57600080fd5b5060405160128152602001610297565b3480156103c757600080fd5b506103046103d6366004611c83565b610a9b565b3480156103e757600080fd5b506102e26103f6366004611d39565b610ad2565b34801561040757600080fd5b50600f5461030490600160b01b900460ff1681565b34801561042857600080fd5b5061028d60115481565b34801561043e57600080fd5b5061028d60105481565b34801561045457600080fd5b506102e2610463366004611c45565b610b2a565b34801561047457600080fd5b50600f5461030490600160a81b900460ff1681565b34801561049557600080fd5b5061028d6104a4366004611caf565b6001600160a01b031660009081526020819052604090205490565b3480156104cb57600080fd5b506102e2610b6c565b3480156104e057600080fd5b506009546104f4906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561051857600080fd5b506102e2610ba2565b34801561052d57600080fd5b5061028d60075481565b34801561054357600080fd5b506102e2610552366004611c83565b610c36565b34801561056357600080fd5b506005546001600160a01b03166104f4565b34801561058157600080fd5b50600a546104f4906001600160a01b031681565b3480156105a157600080fd5b506102b5610cf7565b3480156105b657600080fd5b506102e26105c5366004611c45565b610d06565b3480156105d657600080fd5b506102e26105e5366004611c45565b610d35565b3480156105f657600080fd5b506102e2610605366004611c45565b610d87565b34801561061657600080fd5b50610304610625366004611c83565b610db6565b34801561063657600080fd5b5061028d600d5481565b34801561064c57600080fd5b50600f546104f4906001600160a01b031681565b34801561066c57600080fd5b5061030461067b366004611c83565b610e51565b34801561068c57600080fd5b5061028d60085481565b3480156106a257600080fd5b506102e26106b1366004611caf565b610e5e565b3480156106c257600080fd5b506102e26106d1366004611c45565b610eaa565b3480156106e257600080fd5b506102e26106f1366004611d88565b610eec565b34801561070257600080fd5b50610304610711366004611caf565b60126020526000908152604090205460ff1681565b34801561073257600080fd5b5061028d610741366004611d39565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077857600080fd5b506102e2610787366004611e5b565b610f82565b34801561079857600080fd5b506102e26107a7366004611d88565b610fca565b3480156107b857600080fd5b506102e26107c7366004611caf565b61105c565b3480156107d857600080fd5b50600e546104f4906001600160a01b031681565b3480156107f857600080fd5b5061028d600b5481565b60606003805461081190611e78565b80601f016020809104026020016040519081016040528092919081815260200182805461083d90611e78565b801561088a5780601f1061085f5761010080835404028352916020019161088a565b820191906000526020600020905b81548152906001019060200180831161086d57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108c75760405162461bcd60e51b81526004016108be90611eb2565b60405180910390fd5b600c55565b60006108d93384846110f4565b5060015b92915050565b6005546001600160a01b0316331461090d5760405162461bcd60e51b81526004016108be90611eb2565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600061093c848484611218565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109c15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108be565b6109d585336109d08685611efd565b6110f4565b506001949350505050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b81526004016108be90611eb2565b47610a1484611656565b6000610a208247611efd565b90508215610a5b57610a5b610a358486611f10565b610a3f8584611f23565b610a499190611f3a565b6009546001600160a01b0316906117b0565b8315610a9457610a94610a6e8486611f10565b610a788684611f23565b610a829190611f3a565b600a546001600160a01b0316906117b0565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108d99185906109d0908690611f10565b6005546001600160a01b03163314610afc5760405162461bcd60e51b81526004016108be90611eb2565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6005546001600160a01b03163314610b545760405162461bcd60e51b81526004016108be90611eb2565b610b6681670de0b6b3a7640000611f23565b60075550565b6005546001600160a01b03163314610b965760405162461bcd60e51b81526004016108be90611eb2565b610ba060006118c9565b565b6005546001600160a01b03163314610bcc5760405162461bcd60e51b81526004016108be90611eb2565b600f54600160b01b900460ff1615610c1f5760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b60448201526064016108be565b600f805461ffff60a81b191661010160a81b179055565b6005546001600160a01b03163314610c605760405162461bcd60e51b81526004016108be90611eb2565b816001600160a01b031663a9059cbb610c816005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611f5c565b505050565b60606004805461081190611e78565b6005546001600160a01b03163314610d305760405162461bcd60e51b81526004016108be90611eb2565b600655565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016108be90611eb2565b610d8481610d756005546001600160a01b031690565b6001600160a01b0316906117b0565b50565b6005546001600160a01b03163314610db15760405162461bcd60e51b81526004016108be90611eb2565b600b55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108be565b610e4733856109d08685611efd565b5060019392505050565b60006108d9338484611218565b6005546001600160a01b03163314610e885760405162461bcd60e51b81526004016108be90611eb2565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ed45760405162461bcd60e51b81526004016108be90611eb2565b610ee681670de0b6b3a7640000611f23565b60085550565b6005546001600160a01b03163314610f165760405162461bcd60e51b81526004016108be90611eb2565b60005b8151811015610f7e57600160136000848481518110610f3a57610f3a611f79565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f7681611f8f565b915050610f19565b5050565b6005546001600160a01b03163314610fac5760405162461bcd60e51b81526004016108be90611eb2565b600f8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ff45760405162461bcd60e51b81526004016108be90611eb2565b60005b8151811015610f7e5760016012600084848151811061101857611018611f79565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061105481611f8f565b915050610ff7565b6005546001600160a01b031633146110865760405162461bcd60e51b81526004016108be90611eb2565b6001600160a01b0381166110eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108be565b610d84816118c9565b6001600160a01b0383166111565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108be565b6001600160a01b0382166111b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108be565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161127a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108be565b6001600160a01b03831660009081526013602052604090205460ff16806112b957506001600160a01b03821660009081526013602052604090205460ff165b156112c557600d54600c555b6001600160a01b03831660009081526012602052604090205460ff1615801561130757506001600160a01b03821660009081526012602052604090205460ff16155b801561131d5750600f54600160a01b900460ff16155b156114e957600f54600160b01b900460ff166113745760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b60448201526064016108be565b436011546010546113859190611f10565b11156113fd57600f546001600160a01b038381169116146113c4576001600160a01b0382166000908152601360205260409020805460ff191660011790555b600f546001600160a01b038481169116146113fd576001600160a01b0383166000908152601360205260409020805460ff191660011790555b60075481111561144f5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e7400000060448201526064016108be565b600f546001600160a01b038381169116146114e95760085481611487846001600160a01b031660009081526020819052604090205490565b6114919190611f10565b11156114e95760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b60648201526084016108be565b600f54600090600160a01b900460ff168061151c57506001600160a01b03841660009081526012602052604090205460ff165b8061153f57506001600160a01b03831660009081526012602052604090205460ff165b1561154c575060006115c5565b600f546001600160a01b03848116911614801561158257506001600160a01b03841660009081526013602052604090205460ff16155b156115a8576064600c54836115979190611f23565b6115a19190611f3a565b90506115c5565b6064600b54836115b89190611f23565b6115c29190611f3a565b90505b600f54600160a81b900460ff1680156115e85750600f54600160a01b900460ff16155b80156116025750600f546001600160a01b03858116911614155b801561160e5750600081115b1561161b5761161b61191b565b80156116455761162c84308361199c565b611640848461163b8585611b74565b61199c565b611650565b61165084848461199c565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061168b5761168b611f79565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117089190611fa8565b8160018151811061171b5761171b611f79565b6001600160a01b039283166020918202929092010152600e5461174191309116846110f4565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061177a908590600090869030904290600401611fc5565b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b505050505050565b804710156118005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108be565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461184d576040519150601f19603f3d011682016040523d82523d6000602084013e611852565b606091505b5050905080610cf25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108be565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600f54600160a01b900460ff16610ba057600f805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600654811061198c574761196482611656565b60006119708247611efd565b600954909150611989906001600160a01b0316826117b0565b50505b50600f805460ff60a01b19169055565b6001600160a01b038316611a005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108be565b6001600160a01b038216611a625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108be565b6001600160a01b03831660009081526020819052604090205481811015611ada5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108be565b611ae48282611efd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b1a908490611f10565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6691815260200190565b60405180910390a350505050565b6000611bb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bbd565b9392505050565b60008184841115611be15760405162461bcd60e51b81526004016108be9190611bf7565b506000611bee8585611efd565b95945050505050565b600060208083528351808285015260005b81811015611c2457858101830151858201604001528201611c08565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c5757600080fd5b5035919050565b6001600160a01b0381168114610d8457600080fd5b8035611c7e81611c5e565b919050565b60008060408385031215611c9657600080fd5b8235611ca181611c5e565b946020939093013593505050565b600060208284031215611cc157600080fd5b8135611bb681611c5e565b600080600060608486031215611ce157600080fd5b8335611cec81611c5e565b92506020840135611cfc81611c5e565b929592945050506040919091013590565b600080600060608486031215611d2257600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611d4c57600080fd5b8235611d5781611c5e565b91506020830135611d6781611c5e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611d9b57600080fd5b823567ffffffffffffffff80821115611db357600080fd5b818501915085601f830112611dc757600080fd5b813581811115611dd957611dd9611d72565b8060051b604051601f19603f83011681018181108582111715611dfe57611dfe611d72565b604052918252848201925083810185019188831115611e1c57600080fd5b938501935b82851015611e4157611e3285611c73565b84529385019392850192611e21565b98975050505050505050565b8015158114610d8457600080fd5b600060208284031215611e6d57600080fd5b8135611bb681611e4d565b600181811c90821680611e8c57607f821691505b602082108103611eac57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108dd576108dd611ee7565b808201808211156108dd576108dd611ee7565b80820281158282048414176108dd576108dd611ee7565b600082611f5757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f6e57600080fd5b8151611bb681611e4d565b634e487b7160e01b600052603260045260246000fd5b600060018201611fa157611fa1611ee7565b5060010190565b600060208284031215611fba57600080fd5b8151611bb681611c5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120155784516001600160a01b031683529383019391830191600101611ff0565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a2b69b20cbaa30ba3d37059ad53fca88776061a1b5ffba9bb62275dd8f4c892c64736f6c63430008130033

Deployed Bytecode Sourcemap

9150:6290:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9268:46;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9268:46:0;;;;;;;;3995:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11160:78::-;;;;;;;;;;-1:-1:-1;11160:78:0;;;;;:::i;:::-;;:::i;:::-;;4788:146;;;;;;;;;;-1:-1:-1;4788:146:0;;;;;:::i;:::-;;:::i;:::-;;;1694:14:1;;1687:22;1669:41;;1657:2;1642:18;4788:146:0;1529:187:1;4268:94:0;;;;;;;;;;-1:-1:-1;4347:12:0;;4268:94;;11350:88;;;;;;;;;;-1:-1:-1;11350:88:0;;;;;:::i;:::-;;:::i;9627:31::-;;;;;;;;;;;;;;;;4940:418;;;;;;;;;;-1:-1:-1;4940:418:0;;;;;:::i;:::-;;:::i;14854:546::-;;;;;;;;;;-1:-1:-1;14854:546:0;;;;;:::i;:::-;;:::i;4183:79::-;;;;;;;;;;-1:-1:-1;4183:79:0;;4257:2;2897:36:1;;2885:2;2870:18;4183:79:0;2755:184:1;5364:215:0;;;;;;;;;;-1:-1:-1;5364:215:0;;;;;:::i;:::-;;:::i;11444:114::-;;;;;;;;;;-1:-1:-1;11444:114:0;;;;;:::i;:::-;;:::i;9814:26::-;;;;;;;;;;-1:-1:-1;9814:26:0;;;;-1:-1:-1;;;9814:26:0;;;;;;9881:29;;;;;;;;;;;;;;;;9847:27;;;;;;;;;;;;;;;;11564:95;;;;;;;;;;-1:-1:-1;11564:95:0;;;;;:::i;:::-;;:::i;9784:23::-;;;;;;;;;;-1:-1:-1;9784:23:0;;;;-1:-1:-1;;;9784:23:0;;;;;;4368:113;;;;;;;;;;-1:-1:-1;4368:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;4460:18:0;4442:7;4460:18;;;;;;;;;;;;4368:113;8686:80;;;;;;;;;;;;;:::i;9435:75::-;;;;;;;;;;-1:-1:-1;9435:75:0;;;;-1:-1:-1;;;;;9435:75:0;;;;;;-1:-1:-1;;;;;3515:32:1;;;3497:51;;3485:2;3470:18;9435:75:0;3351:203:1;10934:141:0;;;;;;;;;;;;;:::i;9321:48::-;;;;;;;;;;;;;;;;11774:128;;;;;;;;;;-1:-1:-1;11774:128:0;;;;;:::i;:::-;;:::i;8503:73::-;;;;;;;;;;-1:-1:-1;8567:6:0;;-1:-1:-1;;;;;8567:6:0;8503:73;;9517:69;;;;;;;;;;-1:-1:-1;9517:69:0;;;;-1:-1:-1;;;;;9517:69:0;;;4087:90;;;;;;;;;;;;;:::i;10832:96::-;;;;;;;;;;-1:-1:-1;10832:96:0;;;;;:::i;:::-;;:::i;11908:98::-;;;;;;;;;;-1:-1:-1;11908:98:0;;;;;:::i;:::-;;:::i;11081:73::-;;;;;;;;;;-1:-1:-1;11081:73:0;;;;;:::i;:::-;;:::i;5585:375::-;;;;;;;;;;-1:-1:-1;5585:375:0;;;;;:::i;:::-;;:::i;9665:30::-;;;;;;;;;;;;;;;;9730:19;;;;;;;;;;-1:-1:-1;9730:19:0;;;;-1:-1:-1;;;;;9730:19:0;;;4487:152;;;;;;;;;;-1:-1:-1;4487:152:0;;;;;:::i;:::-;;:::i;9376:52::-;;;;;;;;;;;;;;;;11244:100;;;;;;;;;;-1:-1:-1;11244:100:0;;;;;:::i;:::-;;:::i;11665:103::-;;;;;;;;;;-1:-1:-1;11665:103:0;;;;;:::i;:::-;;:::i;12012:132::-;;;;;;;;;;-1:-1:-1;12012:132:0;;;;;:::i;:::-;;:::i;9917:49::-;;;;;;;;;;-1:-1:-1;9917:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4645:137;;;;;;;;;;-1:-1:-1;4645:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;4752:18:0;;;4734:7;4752:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4645:137;10747:79;;;;;;;;;;-1:-1:-1;10747:79:0;;;;;:::i;:::-;;:::i;12150:166::-;;;;;;;;;;-1:-1:-1;12150:166:0;;;;;:::i;:::-;;:::i;8772:192::-;;;;;;;;;;-1:-1:-1;8772:192:0;;;;;:::i;:::-;;:::i;9702:21::-;;;;;;;;;;-1:-1:-1;9702:21:0;;;;-1:-1:-1;;;;;9702:21:0;;;9593:27;;;;;;;;;;;;;;;;3995:86;4049:13;4073:5;4066:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3995:86;:::o;11160:78::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;;;;;;;;;11216:12:::1;:19:::0;11160:78::o;4788:146::-;4871:4;4879:39;570:10;4902:7;4911:6;4879:8;:39::i;:::-;-1:-1:-1;4927:4:0;4788:146;;;;;:::o;11350:88::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11414:9:::1;:21:::0;;-1:-1:-1;;;;;;11414:21:0::1;-1:-1:-1::0;;;;;11414:21:0;;;::::1;::::0;;;::::1;::::0;;11350:88::o;4940:418::-;5046:4;5063:36;5073:6;5081:9;5092:6;5063:9;:36::i;:::-;-1:-1:-1;;;;;5137:19:0;;5110:24;5137:19;;;:11;:19;;;;;;;;570:10;5137:33;;;;;;;;5189:26;;;;5181:79;;;;-1:-1:-1;;;5181:79:0;;6749:2:1;5181:79:0;;;6731:21:1;6788:2;6768:18;;;6761:30;6827:34;6807:18;;;6800:62;-1:-1:-1;;;6878:18:1;;;6871:38;6926:19;;5181:79:0;6547:404:1;5181:79:0;5271:57;5280:6;570:10;5302:25;5321:6;5302:16;:25;:::i;:::-;5271:8;:57::i;:::-;-1:-1:-1;5346:4:0;;4940:418;-1:-1:-1;;;;4940:418:0:o;14854:546::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;14993:21:::1;15025:24;15042:6:::0;15025:16:::1;:24::i;:::-;15060:18;15081:35;15105:11:::0;15081:21:::1;:35;:::i;:::-;15060:56:::0;-1:-1:-1;15130:23:0;;15127:136:::1;;15155:108;15226:35;15242:19:::0;15226:13;:35:::1;:::i;:::-;15190:32;15203:19:::0;15190:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;15163:15;::::0;-1:-1:-1;;;;;15163:15:0::1;::::0;15155:34:::1;:108::i;:::-;15277:17:::0;;15274:118:::1;;15296:96;15355:35;15371:19:::0;15355:13;:35:::1;:::i;:::-;15325:26;15338:13:::0;15325:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;15304:9;::::0;-1:-1:-1;;;;;15304:9:0::1;::::0;15296:28:::1;:96::i;:::-;14960:440;;14854:546:::0;;;:::o;5364:215::-;570:10;5452:4;5501:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5501:34:0;;;;;;;;;;5452:4;;5469:80;;5492:7;;5501:47;;5538:10;;5501:47;:::i;11444:114::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11525:6:::1;:16:::0;;-1:-1:-1;;;;;11525:16:0;;::::1;-1:-1:-1::0;;;;;;11525:16:0;;::::1;;::::0;;;11543:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;11444:114::o;11564:95::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11641:15:::1;:6:::0;11650::::1;11641:15;:::i;:::-;11627:11;:29:::0;-1:-1:-1;11564:95:0:o;8686:80::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;8742:21:::1;8760:1;8742:9;:21::i;:::-;8686:80::o:0;10934:141::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;10988:14:::1;::::0;-1:-1:-1;;;10988:14:0;::::1;;;10987:15;10979:50;;;::::0;-1:-1:-1;;;10979:50:0;;7948:2:1;10979:50:0::1;::::0;::::1;7930:21:1::0;7987:2;7967:18;;;7960:30;-1:-1:-1;;;8006:18:1;;;7999:52;8068:18;;10979:50:0::1;7746:346:1::0;10979:50:0::1;11031:14;:21:::0;;-1:-1:-1;;;;11054:18:0;-1:-1:-1;;;11054:18:0;;;10934:141::o;11774:128::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11860:12:::1;-1:-1:-1::0;;;;;11853:29:0::1;;11883:7;8567:6:::0;;-1:-1:-1;;;;;8567:6:0;;8503:73;11883:7:::1;11853:46;::::0;-1:-1:-1;;;;;;11853:46:0::1;::::0;;;;;;-1:-1:-1;;;;;8289:32:1;;;11853:46:0::1;::::0;::::1;8271:51:1::0;8338:18;;;8331:34;;;8244:18;;11853:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11774:128:::0;;:::o;4087:90::-;4143:13;4167:7;4160:14;;;;;:::i;10832:96::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;10899:13:::1;:26:::0;10832:96::o;11908:98::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11966:37:::1;11993:9;11974:7;8567:6:::0;;-1:-1:-1;;;;;8567:6:0;;8503:73;11974:7:::1;-1:-1:-1::0;;;;;11966:26:0::1;::::0;::::1;:37::i;:::-;11908:98:::0;:::o;11081:73::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11136:8:::1;:15:::0;11081:73::o;5585:375::-;570:10;5678:4;5722:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5722:34:0;;;;;;;;;;5775:35;;;;5767:85;;;;-1:-1:-1;;;5767:85:0;;8828:2:1;5767:85:0;;;8810:21:1;8867:2;8847:18;;;8840:30;8906:34;8886:18;;;8879:62;-1:-1:-1;;;8957:18:1;;;8950:35;9002:19;;5767:85:0;8626:401:1;5767:85:0;5863:67;570:10;5886:7;5895:34;5914:15;5895:16;:34;:::i;5863:67::-;-1:-1:-1;5948:4:0;;5585:375;-1:-1:-1;;;5585:375:0:o;4487:152::-;4573:4;4581:42;570:10;4605:9;4616:6;4581:9;:42::i;11244:100::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11314:15:::1;:27:::0;;-1:-1:-1;;;;;;11314:27:0::1;-1:-1:-1::0;;;;;11314:27:0;;;::::1;::::0;;;::::1;::::0;;11244:100::o;11665:103::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;11750:15:::1;:6:::0;11759::::1;11750:15;:::i;:::-;11732;:33:::0;-1:-1:-1;11665:103:0:o;12012:132::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;12078:6:::1;12073:69;12094:6;:13;12090:1;:17;12073:69;;;12135:4;12116:5;:16;12122:6;12129:1;12122:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12116:16:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12116:16:0;:23;;-1:-1:-1;;12116:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12109:3;::::1;::::0;::::1;:::i;:::-;;;;12073:69;;;;12012:132:::0;:::o;10747:79::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;10804:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;10804:19:0::1;-1:-1:-1::0;;;;10804:19:0;;::::1;::::0;;;::::1;::::0;;10747:79::o;12150:166::-;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;12235:6:::1;12230:84;12251:8;:15;12247:1;:19;12230:84;;;12307:4;12275:16;:29;12292:8;12301:1;12292:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12275:29:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12275:29:0;:36;;-1:-1:-1;;12275:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12268:3;::::1;::::0;::::1;:::i;:::-;;;;12230:84;;8772:192:::0;8567:6;;-1:-1:-1;;;;;8567:6:0;570:10;8613:23;8605:68;;;;-1:-1:-1;;;8605:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8861:22:0;::::1;8853:73;;;::::0;-1:-1:-1;;;8853:73:0;;9506:2:1;8853:73:0::1;::::0;::::1;9488:21:1::0;9545:2;9525:18;;;9518:30;9584:34;9564:18;;;9557:62;-1:-1:-1;;;9635:18:1;;;9628:36;9681:19;;8853:73:0::1;9304:402:1::0;8853:73:0::1;8937:19;8947:8;8937:9;:19::i;7286:344::-:0;-1:-1:-1;;;;;7388:19:0;;7380:68;;;;-1:-1:-1;;;7380:68:0;;9913:2:1;7380:68:0;;;9895:21:1;9952:2;9932:18;;;9925:30;9991:34;9971:18;;;9964:62;-1:-1:-1;;;10042:18:1;;;10035:34;10086:19;;7380:68:0;9711:400:1;7380:68:0;-1:-1:-1;;;;;7467:21:0;;7459:68;;;;-1:-1:-1;;;7459:68:0;;10318:2:1;7459:68:0;;;10300:21:1;10357:2;10337:18;;;10330:30;10396:34;10376:18;;;10369:62;-1:-1:-1;;;10447:18:1;;;10440:32;10489:19;;7459:68:0;10116:398:1;7459:68:0;-1:-1:-1;;;;;7538:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7590:32;;160:25:1;;;7590:32:0;;133:18:1;7590:32:0;;;;;;;7286:344;;;:::o;12324:1460::-;12440:1;12431:6;:10;12423:64;;;;-1:-1:-1;;;12423:64:0;;10721:2:1;12423:64:0;;;10703:21:1;10760:2;10740:18;;;10733:30;10799:34;10779:18;;;10772:62;-1:-1:-1;;;10850:18:1;;;10843:39;10899:19;;12423:64:0;10519:405:1;12423:64:0;-1:-1:-1;;;;;12501:13:0;;;;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;12518:16:0;;;;;;:5;:16;;;;;;;;12501:33;12498:63;;;12551:10;;12536:12;:25;12498:63;-1:-1:-1;;;;;12586:24:0;;;;;;:16;:24;;;;;;;;12585:25;:57;;;;-1:-1:-1;;;;;;12615:27:0;;;;;;:16;:27;;;;;;;;12614:28;12585:57;:70;;;;-1:-1:-1;12647:8:0;;-1:-1:-1;;;12647:8:0;;;;12646:9;12585:70;12582:588;;;12679:14;;-1:-1:-1;;;12679:14:0;;;;12671:49;;;;-1:-1:-1;;;12671:49:0;;11131:2:1;12671:49:0;;;11113:21:1;11170:2;11150:18;;;11143:30;-1:-1:-1;;;11189:18:1;;;11182:52;11251:18;;12671:49:0;10929:346:1;12671:49:0;12766:12;12753:10;;12738:12;;:25;;;;:::i;:::-;:40;12735:182;;;12814:4;;-1:-1:-1;;;;;12801:17:0;;;12814:4;;12801:17;12798:45;;-1:-1:-1;;;;;12820:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;12820:23:0;12839:4;12820:23;;;12798:45;12875:4;;-1:-1:-1;;;;;12865:14:0;;;12875:4;;12865:14;12862:39;;-1:-1:-1;;;;;12881:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;12881:20:0;12897:4;12881:20;;;12862:39;12949:11;;12939:6;:21;;12931:63;;;;-1:-1:-1;;;12931:63:0;;11482:2:1;12931:63:0;;;11464:21:1;11521:2;11501:18;;;11494:30;11560:31;11540:18;;;11533:59;11609:18;;12931:63:0;11280:353:1;12931:63:0;13025:4;;-1:-1:-1;;;;;13012:17:0;;;13025:4;;13012:17;13009:150;;13090:15;;13080:6;13057:20;13067:9;-1:-1:-1;;;;;4460:18:0;4442:7;4460:18;;;;;;;;;;;;4368:113;13057:20;:29;;;;:::i;:::-;:48;;13049:94;;;;-1:-1:-1;;;13049:94:0;;11840:2:1;13049:94:0;;;11822:21:1;11879:2;11859:18;;;11852:30;11918:34;11898:18;;;11891:62;-1:-1:-1;;;11969:18:1;;;11962:31;12010:19;;13049:94:0;11638:397:1;13049:94:0;13208:8;;13182:11;;-1:-1:-1;;;13208:8:0;;;;;:36;;-1:-1:-1;;;;;;13220:24:0;;;;;;:16;:24;;;;;;;;13208:36;:67;;;-1:-1:-1;;;;;;13248:27:0;;;;;;:16;:27;;;;;;;;13208:67;13204:244;;;-1:-1:-1;13283:1:0;13204:244;;;13330:4;;-1:-1:-1;;;;;13317:17:0;;;13330:4;;13317:17;:35;;;;-1:-1:-1;;;;;;13339:13:0;;;;;;:5;:13;;;;;;;;13338:14;13317:35;13314:122;;;13384:3;13369:12;;13360:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;13354:33;;13314:122;;;13433:3;13422:8;;13413:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;13407:29;;13314:122;13464:11;;-1:-1:-1;;;13464:11:0;;;;:24;;;;-1:-1:-1;13480:8:0;;-1:-1:-1;;;13480:8:0;;;;13479:9;13464:24;:42;;;;-1:-1:-1;13502:4:0;;-1:-1:-1;;;;;13492:14:0;;;13502:4;;13492:14;;13464:42;:53;;;;;13516:1;13510:3;:7;13464:53;13460:72;;;13519:13;:11;:13::i;:::-;13556:7;;13553:224;;13581:43;13597:6;13613:4;13620:3;13581:15;:43::i;:::-;13639:51;13655:6;13663:9;13674:15;:6;13685:3;13674:10;:15::i;:::-;13639;:51::i;:::-;13553:224;;;13723:42;13739:6;13747:9;13758:6;13723:15;:42::i;:::-;12412:1372;12324:1460;;;:::o;14215:368::-;14305:16;;;14319:1;14305:16;;;;;;;;14281:21;;14305:16;;;;;;;;;;-1:-1:-1;14305:16:0;14281:40;;14350:4;14332;14337:1;14332:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14332:23:0;;;:7;;;;;;;;;;:23;;;;14376:6;;:13;;;-1:-1:-1;;;14376:13:0;;;;:6;;;;;:11;;:13;;;;;14332:7;;14376:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14366:4;14371:1;14366:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14366:23:0;;;:7;;;;;;;;;:23;14432:6;;14400:53;;14417:4;;14432:6;14441:11;14400:8;:53::i;:::-;14464:6;;:111;;-1:-1:-1;;;14464:111:0;;-1:-1:-1;;;;;14464:6:0;;;;:57;;:111;;14522:11;;14464:6;;14538:4;;14552;;14559:15;;14464:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14270:313;14215:368;:::o;7956:315::-;8071:6;8046:21;:31;;8038:73;;;;-1:-1:-1;;;8038:73:0;;13483:2:1;8038:73:0;;;13465:21:1;13522:2;13502:18;;;13495:30;13561:31;13541:18;;;13534:59;13610:18;;8038:73:0;13281:353:1;8038:73:0;8123:12;8141:9;-1:-1:-1;;;;;8141:14:0;8163:6;8141:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8122:52;;;8193:7;8185:78;;;;-1:-1:-1;;;8185:78:0;;14051:2:1;8185:78:0;;;14033:21:1;14090:2;14070:18;;;14063:30;14129:34;14109:18;;;14102:62;14200:28;14180:18;;;14173:56;14246:19;;8185:78:0;13849:422:1;8970:173:0;9045:6;;;-1:-1:-1;;;;;9062:17:0;;;-1:-1:-1;;;;;;9062:17:0;;;;;;;9095:40;;9045:6;;;9062:17;9045:6;;9095:40;;9026:16;;9095:40;9015:128;8970:173;:::o;13792:415::-;10059:8;;-1:-1:-1;;;10059:8:0;;;;10054:104;;10084:8;:15;;-1:-1:-1;;;;10084:15:0;-1:-1:-1;;;10084:15:0;;;13885:4:::1;-1:-1:-1::0;4460:18:0;;;;;;;;;;;13841:50:::1;;13925:13;;13906:15;:32;13902:298;;13980:21;14016:33;14033:15:::0;14016:16:::1;:33::i;:::-;14064:20;14087:38;14111:14:::0;14087:21:::1;:38;:::i;:::-;14148:15;::::0;14064:61;;-1:-1:-1;14140:48:0::1;::::0;-1:-1:-1;;;;;14148:15:0::1;14064:61:::0;14140:34:::1;:48::i;:::-;13940:260;;13902:298;-1:-1:-1::0;10130:8:0;:16;;-1:-1:-1;;;;10130:16:0;;;13792:415::o;5966:540::-;-1:-1:-1;;;;;6072:20:0;;6064:70;;;;-1:-1:-1;;;6064:70:0;;14478:2:1;6064:70:0;;;14460:21:1;14517:2;14497:18;;;14490:30;14556:34;14536:18;;;14529:62;-1:-1:-1;;;14607:18:1;;;14600:35;14652:19;;6064:70:0;14276:401:1;6064:70:0;-1:-1:-1;;;;;6153:23:0;;6145:71;;;;-1:-1:-1;;;6145:71:0;;14884:2:1;6145:71:0;;;14866:21:1;14923:2;14903:18;;;14896:30;14962:34;14942:18;;;14935:62;-1:-1:-1;;;15013:18:1;;;15006:33;15056:19;;6145:71:0;14682:399:1;6145:71:0;-1:-1:-1;;;;;6251:17:0;;6227:21;6251:17;;;;;;;;;;;6287:23;;;;6279:74;;;;-1:-1:-1;;;6279:74:0;;15288:2:1;6279:74:0;;;15270:21:1;15327:2;15307:18;;;15300:30;15366:34;15346:18;;;15339:62;-1:-1:-1;;;15417:18:1;;;15410:36;15463:19;;6279:74:0;15086:402:1;6279:74:0;6384:22;6400:6;6384:13;:22;:::i;:::-;-1:-1:-1;;;;;6364:17:0;;;:9;:17;;;;;;;;;;;:42;;;;6417:20;;;;;;;;:30;;6441:6;;6364:9;6417:30;;6441:6;;6417:30;:::i;:::-;;;;;;;;6480:9;-1:-1:-1;;;;;6463:35:0;6472:6;-1:-1:-1;;;;;6463:35:0;;6491:6;6463:35;;;;160:25:1;;148:2;133:18;;14:177;6463:35:0;;;;;;;;6053:453;5966:540;;;:::o;1527:122::-;1585:7;1603:43;1607:1;1610;1603:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1596:50;1527:122;-1:-1:-1;;;1527:122:0:o;1655:190::-;1741:7;1777:12;1769:6;;;;1761:29;;;;-1:-1:-1;;;1761:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1801:9:0;1813:5;1817:1;1813;:5;:::i;:::-;1801:17;1655:190;-1:-1:-1;;;;;1655:190:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;1070:134;1138:20;;1167:31;1138:20;1167:31;:::i;:::-;1070:134;;;:::o;1209:315::-;1277:6;1285;1338:2;1326:9;1317:7;1313:23;1309:32;1306:52;;;1354:1;1351;1344:12;1306:52;1393:9;1380:23;1412:31;1437:5;1412:31;:::i;:::-;1462:5;1514:2;1499:18;;;;1486:32;;-1:-1:-1;;;1209:315:1:o;1721:247::-;1780:6;1833:2;1821:9;1812:7;1808:23;1804:32;1801:52;;;1849:1;1846;1839:12;1801:52;1888:9;1875:23;1907:31;1932:5;1907:31;:::i;1973:456::-;2050:6;2058;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2174:9;2161:23;2193:31;2218:5;2193:31;:::i;:::-;2243:5;-1:-1:-1;2300:2:1;2285:18;;2272:32;2313:33;2272:32;2313:33;:::i;:::-;1973:456;;2365:7;;-1:-1:-1;;;2419:2:1;2404:18;;;;2391:32;;1973:456::o;2434:316::-;2511:6;2519;2527;2580:2;2568:9;2559:7;2555:23;2551:32;2548:52;;;2596:1;2593;2586:12;2548:52;-1:-1:-1;;2619:23:1;;;2689:2;2674:18;;2661:32;;-1:-1:-1;2740:2:1;2725:18;;;2712:32;;2434:316;-1:-1:-1;2434:316:1:o;2944:402::-;3026:6;3034;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3142:9;3129:23;3161:31;3186:5;3161:31;:::i;:::-;3211:5;-1:-1:-1;3268:2:1;3253:18;;3240:32;3281:33;3240:32;3281:33;:::i;:::-;3333:7;3323:17;;;2944:402;;;;;:::o;3559:127::-;3620:10;3615:3;3611:20;3608:1;3601:31;3651:4;3648:1;3641:15;3675:4;3672:1;3665:15;3691:1121;3775:6;3806:2;3849;3837:9;3828:7;3824:23;3820:32;3817:52;;;3865:1;3862;3855:12;3817:52;3905:9;3892:23;3934:18;3975:2;3967:6;3964:14;3961:34;;;3991:1;3988;3981:12;3961:34;4029:6;4018:9;4014:22;4004:32;;4074:7;4067:4;4063:2;4059:13;4055:27;4045:55;;4096:1;4093;4086:12;4045:55;4132:2;4119:16;4154:2;4150;4147:10;4144:36;;;4160:18;;:::i;:::-;4206:2;4203:1;4199:10;4238:2;4232:9;4301:2;4297:7;4292:2;4288;4284:11;4280:25;4272:6;4268:38;4356:6;4344:10;4341:22;4336:2;4324:10;4321:18;4318:46;4315:72;;;4367:18;;:::i;:::-;4403:2;4396:22;4453:18;;;4487:15;;;;-1:-1:-1;4529:11:1;;;4525:20;;;4557:19;;;4554:39;;;4589:1;4586;4579:12;4554:39;4613:11;;;;4633:148;4649:6;4644:3;4641:15;4633:148;;;4715:23;4734:3;4715:23;:::i;:::-;4703:36;;4666:12;;;;4759;;;;4633:148;;;4800:6;3691:1121;-1:-1:-1;;;;;;;;3691:1121:1:o;5210:118::-;5296:5;5289:13;5282:21;5275:5;5272:32;5262:60;;5318:1;5315;5308:12;5333:241;5389:6;5442:2;5430:9;5421:7;5417:23;5413:32;5410:52;;;5458:1;5455;5448:12;5410:52;5497:9;5484:23;5516:28;5538:5;5516:28;:::i;5801:380::-;5880:1;5876:12;;;;5923;;;5944:61;;5998:4;5990:6;5986:17;5976:27;;5944:61;6051:2;6043:6;6040:14;6020:18;6017:38;6014:161;;6097:10;6092:3;6088:20;6085:1;6078:31;6132:4;6129:1;6122:15;6160:4;6157:1;6150:15;6014:161;;5801:380;;;:::o;6186:356::-;6388:2;6370:21;;;6407:18;;;6400:30;6466:34;6461:2;6446:18;;6439:62;6533:2;6518:18;;6186:356::o;6956:127::-;7017:10;7012:3;7008:20;7005:1;6998:31;7048:4;7045:1;7038:15;7072:4;7069:1;7062:15;7088:128;7155:9;;;7176:11;;;7173:37;;;7190:18;;:::i;7221:125::-;7286:9;;;7307:10;;;7304:36;;;7320:18;;:::i;7351:168::-;7424:9;;;7455;;7472:15;;;7466:22;;7452:37;7442:71;;7493:18;;:::i;7524:217::-;7564:1;7590;7580:132;;7634:10;7629:3;7625:20;7622:1;7615:31;7669:4;7666:1;7659:15;7697:4;7694:1;7687:15;7580:132;-1:-1:-1;7726:9:1;;7524:217::o;8376:245::-;8443:6;8496:2;8484:9;8475:7;8471:23;8467:32;8464:52;;;8512:1;8509;8502:12;8464:52;8544:9;8538:16;8563:28;8585:5;8563:28;:::i;9032:127::-;9093:10;9088:3;9084:20;9081:1;9074:31;9124:4;9121:1;9114:15;9148:4;9145:1;9138:15;9164:135;9203:3;9224:17;;;9221:43;;9244:18;;:::i;:::-;-1:-1:-1;9291:1:1;9280:13;;9164:135::o;12040:251::-;12110:6;12163:2;12151:9;12142:7;12138:23;12134:32;12131:52;;;12179:1;12176;12169:12;12131:52;12211:9;12205:16;12230:31;12255:5;12230:31;:::i;12296:980::-;12558:4;12606:3;12595:9;12591:19;12637:6;12626:9;12619:25;12663:2;12701:6;12696:2;12685:9;12681:18;12674:34;12744:3;12739:2;12728:9;12724:18;12717:31;12768:6;12803;12797:13;12834:6;12826;12819:22;12872:3;12861:9;12857:19;12850:26;;12911:2;12903:6;12899:15;12885:29;;12932:1;12942:195;12956:6;12953:1;12950:13;12942:195;;;13021:13;;-1:-1:-1;;;;;13017:39:1;13005:52;;13112:15;;;;13077:12;;;;13053:1;12971:9;12942:195;;;-1:-1:-1;;;;;;;13193:32:1;;;;13188:2;13173:18;;13166:60;-1:-1:-1;;;13257:3:1;13242:19;13235:35;13154:3;12296:980;-1:-1:-1;;;12296:980:1:o

Swarm Source

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