ETH Price: $2,595.92 (+0.79%)

Token

Salamander ($SALLY)
 

Overview

Max Total Supply

100,000,000 $SALLY

Holders

101

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
340,241.432819056577500242 $SALLY

Value
$0.00
0x1cb585477871631d991632a9dd41594db4434c7e
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:
Salamander

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

/*

 ██████╗ █████╗ ██╗      █████╗ ███╗   ███╗ █████╗ ███╗  ██╗██████╗ ███████╗██████╗ 
██╔════╝██╔══██╗██║     ██╔══██╗████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝██╔══██╗
╚█████╗ ███████║██║     ███████║██╔████╔██║███████║██╔██╗██║██║  ██║█████╗  ██████╔╝
 ╚═══██╗██╔══██║██║     ██╔══██║██║╚██╔╝██║██╔══██║██║╚████║██║  ██║██╔══╝  ██╔══██╗
██████╔╝██║  ██║███████╗██║  ██║██║ ╚═╝ ██║██║  ██║██║ ╚███║██████╔╝███████╗██║  ██║
╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═╝╚═╝  ╚══╝╚═════╝ ╚══════╝╚═╝  ╚═╝
    WEBSITE:
https://salamandertoken.com/

    MAIN TELEGRAM (English):
https://t.me/SalamanderERCPortal

    TWITTER:
https://twitter.com/SalamanderERC

    TOKEN FEE STRUCTURE:
ABSOLUTELY NO FEE OR TAX ON REGULAR SEND / RECEIVE TRANSACTIONS! 
Salamander only charges taxes on Buy and Sell Transactions!
        ON BUY 5%
—4% Marketing | —1% Auto Liquidity

        ON SELL 5%
—4% Marketing | —1% Auto Liquidity

Salamander will charge taxes on send / receive transactions during the early sell period.

    TOKEN DEFAULT THRESHOLDS:
Max Buy & Sell Limit: 3%
Max Wallet Size: 3%

    DISTRIBUTION:
—97% Tradable Liquidity | —3% Saved for the Salamander Farm

We do it for the Salamanders and don't let anyone tell you different.

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

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

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

interface IdexRouter {
    function 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;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
contract Salamander is IERC20, Ownable
{
    //@TresFlames
    //mapping
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isPair;
    mapping (address => bool) public isBlacklisted;
    //strings
    string private constant _name = 'Salamander';
    string private constant _symbol = '$SALLY';
    //uints
    uint private constant DefaultLiquidityLockTime=7 days;
    uint public constant InitialSupply= 10**8 * 10**_decimals;
    uint public _circulatingSupply =InitialSupply;
    uint public buyTax = 5;
    uint public sellTax = 5;
    uint public transferTax = 1;
    uint public liquidityTax=100;
    uint public projectTax=900;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;
    uint public swapTreshold=6;
    uint public overLiquifyTreshold=40;
    uint private LaunchTimestamp;
    uint _liquidityUnlockTime;
    uint8 private constant _decimals = 18;
    uint256 public maxTransactionAmount;
    uint256 public maxWalletBalance;

    IdexRouter private  _dexRouter;
    
    //addresses
    address private dexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _dexPairAddress;
    address constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable public projectWallet;
    //modifiers

    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //bools
    bool private _isSwappingContractModifier;
    bool public blacklistMode = true;
    bool public manualSwap;
    bool public LPReleaseLimitedTo20Percent;
    
    //events
    event BlacklistStatusChange(bool status);
    event UpdateProjectWallet(address _address);
    event SwapThresholdChange(uint threshold);
    event OverLiquifiedThresholdChange(uint threshold);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity);
    event ManualSwapChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event MaxTransactionAmountUpdated(uint256 percent);
    event ExcludeAccount(address account, bool exclude);
    event ExcludeFromLimits(address account, bool exclude);
    event OwnerSwap();
    event OnEnableTrading();
    event OnProlongLPLock(uint UnlockTimestamp);
    event OnReleaseLP();
    event RecoverETH();
    event BlacklistUpdated();
    event NewPairSet(address Pair, bool Add);
    event Release20PercentLP();
    event NewRouterSet(address _newdex);
    event RecoverTokens(uint256 amount);
    
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        _dexRouter = IdexRouter(dexRouter);
        _dexPairAddress = IdexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        isPair[_dexPairAddress]=true;
        
        projectWallet = payable(0x1028A642595410EDA53420a83C3197af8F64dF31);

        excludedFromFees[msg.sender]=true;
        excludedFromFees[dexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromFees[projectWallet]=true;
        excludedFromLimits[projectWallet] = true;
        excludedFromLimits[msg.sender] = true;
        excludedFromLimits[deadWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
        emit BlacklistStatusChange (_status);
    }
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
        emit BlacklistUpdated();
    }
    function ChangeProjectWallet(address newAddress) public onlyOwner{
        projectWallet=payable(newAddress);
        excludedFromFees[newAddress] = true;
        excludedFromLimits[newAddress] = true;
        emit UpdateProjectWallet(newAddress);
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (
            isPair[sender] &&
            !excludedAccount
        ) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isPair[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
        }

        bool isBuy=isPair[sender];
        bool isSell=isPair[recipient];
        uint tax;
        if(isSell){  
            uint SellTaxDuration=30 seconds;          
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=750;
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=30 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=999;
            }else tax=buyTax;
        } else tax=transferTax;

        if((sender!=_dexPairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);
        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-contractToken;

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity) public onlyOwner{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, project,liquidity);
    }
    
    function isOverLiquified() public view returns(bool){
        return _balances[_dexPairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_dexPairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;
        uint tokenForLiquidity=isOverLiquified()?0:(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);
        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        (bool sent,)=projectWallet.call{value:address(this).balance}("");
        sent=true;
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_dexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        try _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ETHamount) private {
        _approve(address(this), address(_dexRouter), tokenamount);
        _dexRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    function SetPair(address Pair, bool Add) public onlyOwner{
        require(Pair!=_dexPairAddress,"can't change pancake");
        isPair[Pair]=Add;
        emit NewPairSet(Pair,Add);
    }
    function SwitchManualSwap(bool manual) public onlyOwner{
        manualSwap=manual;
        emit ManualSwapChange(manual);
    }
    function SwapContractToken() public onlyOwner{
        _swapContractToken(true);
        emit OwnerSwap();
    }

    function SetNewRouter(address _newdex) public onlyOwner{
        dexRouter = _newdex;
        emit NewRouterSet(_newdex);
    }

    function setMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    
    function setMaxTransactionAmount(uint256 percent) public onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    
    function ExcludeAccountFromFees(address account, bool exclude) public onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    
    function setExcludedAccountFromLimits(address account, bool exclude) public onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) public view returns(bool) {
        return excludedFromLimits[account];
    }
    
    function SetupEnableTrading() public onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 20 / 1000;
        maxTransactionAmount = InitialSupply * 100 / 10000;
        emit OnEnableTrading();
    }
    
    function limitLiquidityReleaseTo20Percent() public onlyOwner{
        LPReleaseLimitedTo20Percent=true;
        emit Release20PercentLP();
    }
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyOwner{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
    }
    function _prolongLiquidityLock(uint newUnlockTime) private{
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    
    function LiquidityRelease() public onlyOwner {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");

        IERC20 liquidityToken = IERC20(_dexPairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }

    receive() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }
    function name() external pure override returns (string memory) {
        return _name;
    }
    function symbol() external pure override returns (string memory) {
        return _symbol;
    }
    function decimals() external pure override returns (uint8) {
        return _decimals;
    }
    function totalSupply() external view override returns (uint) {
        return _circulatingSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    function emergencyETHrecovery(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
        emit RecoverETH();
    }
    function withdrawContractToken(uint256 _amount) external onlyOwner {
        IERC20 tokenContract = IERC20(address(this));
        tokenContract.transfer(msg.sender, _amount);
        emit RecoverTokens(_amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistStatusChange","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManualSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Pair","type":"address"},{"indexed":false,"internalType":"bool","name":"Add","type":"bool"}],"name":"NewPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newdex","type":"address"}],"name":"NewRouterSet","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"OverLiquifiedThresholdChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnerSwap","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":[],"name":"RecoverETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Release20PercentLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"UpdateProjectWallet","type":"event"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"ChangeProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdex","type":"address"}],"name":"SetNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_circulatingSupply","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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyETHrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","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":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReleaseTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004b6565b62000022906305f5e100620004ce565b600755600560088190556009556001600a556064600b55610384600c556006600d556028600e55601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556016805460ff60a81b1916600160a81b1790553480156200008f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601454601380546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019b9190620004f0565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002249190620004f0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620004f0565b601580546001600160a01b039283166001600160a01b031991821681179092556000918252600560209081526040808420805460ff19908116600190811790925560168054909516731028a642595410eda53420a83c3197af8f64df31178555338087526004855283872080548316841790556014548816875283872080548316841790553080885284882080548416851790558654891688528488208054841685179055955490971686526003909352818520805484168217905594845280842080548316861790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054831686179055918352912080549091169091179055506200051b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f8578160001904821115620003dc57620003dc620003a1565b80851615620003ea57918102915b93841c9390800290620003bc565b509250929050565b6000826200041157506001620004b0565b816200042057506000620004b0565b8160018114620004395760028114620004445762000464565b6001915050620004b0565b60ff841115620004585762000458620003a1565b50506001821b620004b0565b5060208310610133831016604e8410600b841016171562000489575081810a620004b0565b620004958383620003b7565b8060001904821115620004ac57620004ac620003a1565b0290505b92915050565b6000620004c760ff84168362000400565b9392505050565b6000816000190483118215151615620004eb57620004eb620003a1565b500290565b6000602082840312156200050357600080fd5b81516001600160a01b0381168114620004c757600080fd5b613022806200052b6000396000f3fe60806040526004361061037a5760003560e01c806395d89b41116101d1578063c3f4f54f11610102578063e0d2f9eb116100a0578063f40a563a1161006f578063f40a563a14610a2c578063f7942b6314610a4c578063fcd4d50514610a6c578063fe575a8714610a8c57600080fd5b8063e0d2f9eb146109a6578063e52fb9ec146109c6578063e5e31b13146109dc578063f2fde38b14610a0c57600080fd5b8063cfd1940e116100dc578063cfd1940e146108fa578063d24cd3ec1461091a578063dbe66ca014610930578063dd62ed3e1461096057600080fd5b8063c3f4f54f146108b9578063c8c8ebe4146108ce578063cc1776d3146108e457600080fd5b8063a9059cbb1161016f578063bc43d84911610149578063bc43d8491461084e578063be617fa01461086e578063beb08ab914610884578063c3a3c032146108a457600080fd5b8063a9059cbb146107f8578063baa88ea914610818578063bbde77c11461083857600080fd5b80639ef7e723116101ab5780639ef7e7231461078d578063a253c06e146107ad578063a457c2d7146107c3578063a68bdac7146107e357600080fd5b806395d89b411461071d57806397e78f351461074c5780639b39b65f1461076c57600080fd5b806346e35f03116102ab5780637b9e987a11610249578063893d20e811610223578063893d20e81461068c578063896648c1146106be5780638da5cb5b146106df5780638e2eee84146106fd57600080fd5b80637b9e987a146106415780638124f7ac14610656578063868b01411461066c57600080fd5b80635cce86cd116102855780635cce86cd1461059d5780635e562f3b146105d657806370a08231146105f6578063715018a61461062c57600080fd5b806346e35f03146105515780634f7041a51461056657806351bc3c851461057c57600080fd5b80631eb25d1311610318578063313ce567116102f2578063313ce567146104e05780633227925f146104fc578063395093511461051c57806341aec3571461053c57600080fd5b80631eb25d131461048b57806323b872dd146104a05780632c92293c146104c057600080fd5b8063095ea7b311610354578063095ea7b3146104025780630eff4c641461043257806318160ddd146104565780631e293c101461046b57600080fd5b80630612f39d14610386578063065f4b411461039d57806306fdde03146103bd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039b610abc565b005b3480156103a957600080fd5b5061039b6103b8366004612ab4565b610c92565b3480156103c957600080fd5b5060408051808201909152600a81526929b0b630b6b0b73232b960b11b60208201525b6040516103f99190612acd565b60405180910390f35b34801561040e57600080fd5b5061042261041d366004612b37565b610d3c565b60405190151581526020016103f9565b34801561043e57600080fd5b50610448600e5481565b6040519081526020016103f9565b34801561046257600080fd5b50600754610448565b34801561047757600080fd5b5061039b610486366004612ab4565b610d53565b34801561049757600080fd5b50610448610e72565b3480156104ac57600080fd5b506104226104bb366004612b63565b610e8f565b3480156104cc57600080fd5b5061039b6104db366004612ab4565b610f26565b3480156104ec57600080fd5b50604051601281526020016103f9565b34801561050857600080fd5b5061039b610517366004612ab4565b61103b565b34801561052857600080fd5b50610422610537366004612b37565b611089565b34801561054857600080fd5b5061039b6110c0565b34801561055d57600080fd5b5061042261112e565b34801561057257600080fd5b5061044860085481565b34801561058857600080fd5b5060165461042290600160b01b900460ff1681565b3480156105a957600080fd5b506104226105b8366004612ba4565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e257600080fd5b5061039b6105f1366004612bd6565b61116e565b34801561060257600080fd5b50610448610611366004612ba4565b6001600160a01b031660009081526001602052604090205490565b34801561063857600080fd5b5061039b6111f4565b34801561064d57600080fd5b5061039b611277565b34801561066257600080fd5b50610448600a5481565b34801561067857600080fd5b5061039b610687366004612bd6565b61138d565b34801561069857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103f9565b3480156106ca57600080fd5b5060165461042290600160a81b900460ff1681565b3480156106eb57600080fd5b506000546001600160a01b03166106a6565b34801561070957600080fd5b5061039b610718366004612bf3565b611418565b34801561072957600080fd5b506040805180820190915260068152652453414c4c5960d01b60208201526103ec565b34801561075857600080fd5b5061039b610767366004612ba4565b6114ef565b34801561077857600080fd5b5060165461042290600160b81b900460ff1681565b34801561079957600080fd5b5061039b6107a8366004612ab4565b611576565b3480156107b957600080fd5b5061044860075481565b3480156107cf57600080fd5b506104226107de366004612b37565b611652565b3480156107ef57600080fd5b5061039b6116ce565b34801561080457600080fd5b50610422610813366004612b37565b611745565b34801561082457600080fd5b5061039b610833366004612c79565b611752565b34801561084457600080fd5b5061044860125481565b34801561085a57600080fd5b5061039b610869366004612ab4565b6118cd565b34801561087a57600080fd5b50610448600b5481565b34801561089057600080fd5b506016546106a6906001600160a01b031681565b3480156108b057600080fd5b5061044861194a565b3480156108c557600080fd5b5061044861196a565b3480156108da57600080fd5b5061044860115481565b3480156108f057600080fd5b5061044860095481565b34801561090657600080fd5b5061039b610915366004612ab4565b6119ca565b34801561092657600080fd5b50610448600c5481565b34801561093c57600080fd5b5061042261094b366004612ba4565b60046020526000908152604090205460ff1681565b34801561096c57600080fd5b5061044861097b366004612cb4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109b257600080fd5b5061039b6109c1366004612ced565b611a46565b3480156109d257600080fd5b50610448600d5481565b3480156109e857600080fd5b506104226109f7366004612ba4565b60056020526000908152604090205460ff1681565b348015610a1857600080fd5b5061039b610a27366004612ba4565b611b34565b348015610a3857600080fd5b5061039b610a47366004612ced565b611c2d565b348015610a5857600080fd5b5061039b610a67366004612ced565b611d17565b348015610a7857600080fd5b5061039b610a87366004612ba4565b611dac565b348015610a9857600080fd5b50610422610aa7366004612ba4565b60066020526000908152604090205460ff1681565b33610acf6000546001600160a01b031690565b6001600160a01b031614610afe5760405162461bcd60e51b8152600401610af590612d1b565b60405180910390fd5b601054421015610b435760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610af5565b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190612d50565b601654909150600160b81b900460ff1615610bf357610bd662093a8042612d7f565b601055600a610be6826002612d97565b610bf09190612db6565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190612dd8565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610ca56000546001600160a01b031690565b6001600160a01b031614610ccb5760405162461bcd60e51b8152600401610af590612d1b565b47336108fc6064610cdc8585612d97565b610ce69190612db6565b6040518115909202916000818181858888f19350505050158015610d0e573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610d49338484611e62565b5060015b92915050565b33610d666000546001600160a01b031690565b6001600160a01b031614610d8c5760405162461bcd60e51b8152600401610af590612d1b565b6019811015610dc95760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610af5565b612710811115610e065760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af5565b61271081610e166012600a612ed9565b610e24906305f5e100612d97565b610e2e9190612d97565b610e389190612db6565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610e7e6012600a612ed9565b610e8c906305f5e100612d97565b81565b6000610e9c848484611f55565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610f075760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610af5565b610f1b8533610f168685612ee8565b611e62565b506001949350505050565b33610f396000546001600160a01b031690565b6001600160a01b031614610f5f5760405162461bcd60e51b8152600401610af590612d1b565b600a811015610f995760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610af5565b6103e8811115610fd65760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af5565b6103e881610fe66012600a612ed9565b610ff4906305f5e100612d97565b610ffe9190612d97565b6110089190612db6565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e67565b3361104e6000546001600160a01b031690565b6001600160a01b0316146110745760405162461bcd60e51b8152600401610af590612d1b565b6110866110814283612d7f565b612128565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d49918590610f16908690612d7f565b336110d36000546001600160a01b031690565b6001600160a01b0316146110f95760405162461bcd60e51b8152600401610af590612d1b565b611103600161216b565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111439190612d97565b61114d9190612db6565b6015546001600160a01b031660009081526001602052604090205411919050565b336111816000546001600160a01b031690565b6001600160a01b0316146111a75760405162461bcd60e51b8152600401610af590612d1b565b60168054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610e6790831515815260200190565b336112076000546001600160a01b031690565b6001600160a01b03161461122d5760405162461bcd60e51b8152600401610af590612d1b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361128a6000546001600160a01b031690565b6001600160a01b0316146112b05760405162461bcd60e51b8152600401610af590612d1b565b600f54156112f25760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610af5565b42600f556103e86113056012600a612ed9565b611313906305f5e100612d97565b61131e906014612d97565b6113289190612db6565b60129081556127109061133c90600a612ed9565b61134a906305f5e100612d97565b611355906064612d97565b61135f9190612db6565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336113a06000546001600160a01b031690565b6001600160a01b0316146113c65760405162461bcd60e51b8152600401610af590612d1b565b60168054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610e6790831515815260200190565b905090565b3361142b6000546001600160a01b031690565b6001600160a01b0316146114515760405162461bcd60e51b8152600401610af590612d1b565b60005b828110156114c057816006600086868581811061147357611473612eff565b90506020020160208101906114889190612ba4565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114b981612f15565b9050611454565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b336115026000546001600160a01b031690565b6001600160a01b0316146115285760405162461bcd60e51b8152600401610af590612d1b565b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610e67565b336115896000546001600160a01b031690565b6001600160a01b0316146115af5760405162461bcd60e51b8152600401610af590612d1b565b60405163a9059cbb60e01b8152336004820152602481018290523090819063a9059cbb906044016020604051808303816000875af11580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190612dd8565b506040518281527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c22906020015b60405180910390a15050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116b55760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610af5565b6116c43385610f168685612ee8565b5060019392505050565b336116e16000546001600160a01b031690565b6001600160a01b0316146117075760405162461bcd60e51b8152600401610af590612d1b565b6016805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610d49338484611f55565b336117656000546001600160a01b031690565b6001600160a01b03161461178b5760405162461bcd60e51b8152600401610af590612d1b565b600061179a600a6103e8612db6565b90508086111580156117ac5750808511155b80156117b85750808411155b6117f95760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610af5565b6103e86118068385612d7f565b1461185d5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610af5565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b336118e06000546001600160a01b031690565b6001600160a01b0316146119065760405162461bcd60e51b8152600401610af590612d1b565b6103e881111561191557600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e67565b600060105442101561196457426010546114139190612ee8565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546119a86012600a612ed9565b6119b6906305f5e100612d97565b6119c09190612ee8565b6114139190612d7f565b336119dd6000546001600160a01b031690565b6001600160a01b031614611a035760405162461bcd60e51b8152600401610af590612d1b565b600a811115611a1157600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e67565b33611a596000546001600160a01b031690565b6001600160a01b031614611a7f5760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038216301415611ad85760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610af5565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611646565b33611b476000546001600160a01b031690565b6001600160a01b031614611b6d5760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038116611bd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611c406000546001600160a01b031690565b6001600160a01b031614611c665760405162461bcd60e51b8152600401610af590612d1b565b6015546001600160a01b0383811691161415611cbb5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610af5565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611646565b33611d2a6000546001600160a01b031690565b6001600160a01b031614611d505760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101611646565b33611dbf6000546001600160a01b031690565b6001600160a01b031614611de55760405162461bcd60e51b8152600401610af590612d1b565b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fff20ffd61c4c2d0ef6c92012ece4838b24c79b10136ae047c42f9311e8be86a29101610e67565b6001600160a01b038316611eac5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610af5565b6001600160a01b038216611ef45760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610af5565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fa05760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610af5565b6001600160a01b038216611fe95760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610af5565b601654600160a81b900460ff1615612077576001600160a01b03831660009081526006602052604090205460ff1615801561203d57506001600160a01b03821660009081526006602052604090205460ff16155b6120775760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610af5565b6001600160a01b03831660009081526004602052604090205460ff16806120b657506001600160a01b03821660009081526004602052604090205460ff165b156120cb576120c6838383612324565b505050565b6000600f541161211d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610af5565b6120c6838383612437565b601054811161213657600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e67565b6016805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916121a19190612d7f565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e8916121d091612d97565b6121da9190612db6565b9050816121e957505050612314565b8315612205575030600090815260016020526040902054612215565b8083101561221557505050612314565b600061221f61112e565b6122415782600b54836122329190612d97565b61223c9190612db6565b612244565b60005b905060006122528284612ee8565b90506000612261600284612db6565b9050600061226f8383612d7f565b90504761227b8261287f565b60006122878247612ee8565b905085156122b45760008361229c8684612d97565b6122a69190612db6565b90506122b285826129ce565b505b6016546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612301576040519150601f19603f3d011682016040523d82523d6000602084013e612306565b606091505b505050505050505050505050505b506016805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156123885760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af5565b6001600160a01b038416600090815260016020526040812080548492906123b0908490612ee8565b90915550506001600160a01b038316600090815260016020526040812080548492906123dd908490612d7f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242991815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561249b5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af5565b6001600160a01b03841660009081526003602052604081205460ff16806124da57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612503575080155b156125f15760115483111561256b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af5565b6001600160a01b0384166000908152600160205260409020546012546125918583612d7f565b11156125eb5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610af5565b50612694565b6001600160a01b03841660009081526005602052604090205460ff168015612617575080155b15612694576011548311156126945760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610af5565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156126f357600f54601e906126d6908290612d7f565b4210156126e7576102ee91506126ed565b60095491505b5061272a565b821561272557600f54601e9061270a908290612d7f565b42101561271b576103e791506126ed565b505060085461272a565b50600a545b6015546001600160a01b038981169116148015906127525750601654600160b01b900460ff16155b80156127685750601654600160a01b900460ff16155b1561277757612777600061216b565b60006127938783600b54600c5461278e9190612d7f565b612a7f565b905060006127a18289612ee8565b6001600160a01b038b16600090815260016020526040812080549293508a929091906127ce908490612ee8565b909155505030600090815260016020526040812080548492906127f2908490612d7f565b90915550506001600160a01b0389166000908152600160205260408120805483929061281f908490612d7f565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161286b91815260200190565b60405180910390a350505050505050505050565b6013546128979030906001600160a01b031683611e62565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128cc576128cc612eff565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129499190612f30565b8160018151811061295c5761295c612eff565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906129a2908590600090869030904290600401612f4d565b600060405180830381600087803b1580156129bc57600080fd5b505af19250505080156120c657505050565b6013546129e69030906001600160a01b031684611e62565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a789190612fbe565b5050505050565b6000612a8d6103e880612d97565b82612a988587612d97565b612aa29190612d97565b612aac9190612db6565b949350505050565b600060208284031215612ac657600080fd5b5035919050565b600060208083528351808285015260005b81811015612afa57858101830151858201604001528201612ade565b81811115612b0c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108657600080fd5b60008060408385031215612b4a57600080fd5b8235612b5581612b22565b946020939093013593505050565b600080600060608486031215612b7857600080fd5b8335612b8381612b22565b92506020840135612b9381612b22565b929592945050506040919091013590565b600060208284031215612bb657600080fd5b8135612bc181612b22565b9392505050565b801515811461108657600080fd5b600060208284031215612be857600080fd5b8135612bc181612bc8565b600080600060408486031215612c0857600080fd5b833567ffffffffffffffff80821115612c2057600080fd5b818601915086601f830112612c3457600080fd5b813581811115612c4357600080fd5b8760208260051b8501011115612c5857600080fd5b60209283019550935050840135612c6e81612bc8565b809150509250925092565b600080600080600060a08688031215612c9157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cc757600080fd5b8235612cd281612b22565b91506020830135612ce281612b22565b809150509250929050565b60008060408385031215612d0057600080fd5b8235612d0b81612b22565b91506020830135612ce281612bc8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612d6257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612d9257612d92612d69565b500190565b6000816000190483118215151615612db157612db1612d69565b500290565b600082612dd357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612dea57600080fd5b8151612bc181612bc8565b600181815b80851115612e30578160001904821115612e1657612e16612d69565b80851615612e2357918102915b93841c9390800290612dfa565b509250929050565b600082612e4757506001610d4d565b81612e5457506000610d4d565b8160018114612e6a5760028114612e7457612e90565b6001915050610d4d565b60ff841115612e8557612e85612d69565b50506001821b610d4d565b5060208310610133831016604e8410600b8410161715612eb3575081810a610d4d565b612ebd8383612df5565b8060001904821115612ed157612ed1612d69565b029392505050565b6000612bc160ff841683612e38565b600082821015612efa57612efa612d69565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612f2957612f29612d69565b5060010190565b600060208284031215612f4257600080fd5b8151612bc181612b22565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f9d5784516001600160a01b031683529383019391830191600101612f78565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612fd357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220632ebf11b98b620154f892c3707ca993db6dcc18045525a173c5b2ea5dca21d964736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806395d89b41116101d1578063c3f4f54f11610102578063e0d2f9eb116100a0578063f40a563a1161006f578063f40a563a14610a2c578063f7942b6314610a4c578063fcd4d50514610a6c578063fe575a8714610a8c57600080fd5b8063e0d2f9eb146109a6578063e52fb9ec146109c6578063e5e31b13146109dc578063f2fde38b14610a0c57600080fd5b8063cfd1940e116100dc578063cfd1940e146108fa578063d24cd3ec1461091a578063dbe66ca014610930578063dd62ed3e1461096057600080fd5b8063c3f4f54f146108b9578063c8c8ebe4146108ce578063cc1776d3146108e457600080fd5b8063a9059cbb1161016f578063bc43d84911610149578063bc43d8491461084e578063be617fa01461086e578063beb08ab914610884578063c3a3c032146108a457600080fd5b8063a9059cbb146107f8578063baa88ea914610818578063bbde77c11461083857600080fd5b80639ef7e723116101ab5780639ef7e7231461078d578063a253c06e146107ad578063a457c2d7146107c3578063a68bdac7146107e357600080fd5b806395d89b411461071d57806397e78f351461074c5780639b39b65f1461076c57600080fd5b806346e35f03116102ab5780637b9e987a11610249578063893d20e811610223578063893d20e81461068c578063896648c1146106be5780638da5cb5b146106df5780638e2eee84146106fd57600080fd5b80637b9e987a146106415780638124f7ac14610656578063868b01411461066c57600080fd5b80635cce86cd116102855780635cce86cd1461059d5780635e562f3b146105d657806370a08231146105f6578063715018a61461062c57600080fd5b806346e35f03146105515780634f7041a51461056657806351bc3c851461057c57600080fd5b80631eb25d1311610318578063313ce567116102f2578063313ce567146104e05780633227925f146104fc578063395093511461051c57806341aec3571461053c57600080fd5b80631eb25d131461048b57806323b872dd146104a05780632c92293c146104c057600080fd5b8063095ea7b311610354578063095ea7b3146104025780630eff4c641461043257806318160ddd146104565780631e293c101461046b57600080fd5b80630612f39d14610386578063065f4b411461039d57806306fdde03146103bd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039b610abc565b005b3480156103a957600080fd5b5061039b6103b8366004612ab4565b610c92565b3480156103c957600080fd5b5060408051808201909152600a81526929b0b630b6b0b73232b960b11b60208201525b6040516103f99190612acd565b60405180910390f35b34801561040e57600080fd5b5061042261041d366004612b37565b610d3c565b60405190151581526020016103f9565b34801561043e57600080fd5b50610448600e5481565b6040519081526020016103f9565b34801561046257600080fd5b50600754610448565b34801561047757600080fd5b5061039b610486366004612ab4565b610d53565b34801561049757600080fd5b50610448610e72565b3480156104ac57600080fd5b506104226104bb366004612b63565b610e8f565b3480156104cc57600080fd5b5061039b6104db366004612ab4565b610f26565b3480156104ec57600080fd5b50604051601281526020016103f9565b34801561050857600080fd5b5061039b610517366004612ab4565b61103b565b34801561052857600080fd5b50610422610537366004612b37565b611089565b34801561054857600080fd5b5061039b6110c0565b34801561055d57600080fd5b5061042261112e565b34801561057257600080fd5b5061044860085481565b34801561058857600080fd5b5060165461042290600160b01b900460ff1681565b3480156105a957600080fd5b506104226105b8366004612ba4565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e257600080fd5b5061039b6105f1366004612bd6565b61116e565b34801561060257600080fd5b50610448610611366004612ba4565b6001600160a01b031660009081526001602052604090205490565b34801561063857600080fd5b5061039b6111f4565b34801561064d57600080fd5b5061039b611277565b34801561066257600080fd5b50610448600a5481565b34801561067857600080fd5b5061039b610687366004612bd6565b61138d565b34801561069857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103f9565b3480156106ca57600080fd5b5060165461042290600160a81b900460ff1681565b3480156106eb57600080fd5b506000546001600160a01b03166106a6565b34801561070957600080fd5b5061039b610718366004612bf3565b611418565b34801561072957600080fd5b506040805180820190915260068152652453414c4c5960d01b60208201526103ec565b34801561075857600080fd5b5061039b610767366004612ba4565b6114ef565b34801561077857600080fd5b5060165461042290600160b81b900460ff1681565b34801561079957600080fd5b5061039b6107a8366004612ab4565b611576565b3480156107b957600080fd5b5061044860075481565b3480156107cf57600080fd5b506104226107de366004612b37565b611652565b3480156107ef57600080fd5b5061039b6116ce565b34801561080457600080fd5b50610422610813366004612b37565b611745565b34801561082457600080fd5b5061039b610833366004612c79565b611752565b34801561084457600080fd5b5061044860125481565b34801561085a57600080fd5b5061039b610869366004612ab4565b6118cd565b34801561087a57600080fd5b50610448600b5481565b34801561089057600080fd5b506016546106a6906001600160a01b031681565b3480156108b057600080fd5b5061044861194a565b3480156108c557600080fd5b5061044861196a565b3480156108da57600080fd5b5061044860115481565b3480156108f057600080fd5b5061044860095481565b34801561090657600080fd5b5061039b610915366004612ab4565b6119ca565b34801561092657600080fd5b50610448600c5481565b34801561093c57600080fd5b5061042261094b366004612ba4565b60046020526000908152604090205460ff1681565b34801561096c57600080fd5b5061044861097b366004612cb4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109b257600080fd5b5061039b6109c1366004612ced565b611a46565b3480156109d257600080fd5b50610448600d5481565b3480156109e857600080fd5b506104226109f7366004612ba4565b60056020526000908152604090205460ff1681565b348015610a1857600080fd5b5061039b610a27366004612ba4565b611b34565b348015610a3857600080fd5b5061039b610a47366004612ced565b611c2d565b348015610a5857600080fd5b5061039b610a67366004612ced565b611d17565b348015610a7857600080fd5b5061039b610a87366004612ba4565b611dac565b348015610a9857600080fd5b50610422610aa7366004612ba4565b60066020526000908152604090205460ff1681565b33610acf6000546001600160a01b031690565b6001600160a01b031614610afe5760405162461bcd60e51b8152600401610af590612d1b565b60405180910390fd5b601054421015610b435760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610af5565b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb49190612d50565b601654909150600160b81b900460ff1615610bf357610bd662093a8042612d7f565b601055600a610be6826002612d97565b610bf09190612db6565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190612dd8565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610ca56000546001600160a01b031690565b6001600160a01b031614610ccb5760405162461bcd60e51b8152600401610af590612d1b565b47336108fc6064610cdc8585612d97565b610ce69190612db6565b6040518115909202916000818181858888f19350505050158015610d0e573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610d49338484611e62565b5060015b92915050565b33610d666000546001600160a01b031690565b6001600160a01b031614610d8c5760405162461bcd60e51b8152600401610af590612d1b565b6019811015610dc95760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610af5565b612710811115610e065760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af5565b61271081610e166012600a612ed9565b610e24906305f5e100612d97565b610e2e9190612d97565b610e389190612db6565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610e7e6012600a612ed9565b610e8c906305f5e100612d97565b81565b6000610e9c848484611f55565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610f075760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610af5565b610f1b8533610f168685612ee8565b611e62565b506001949350505050565b33610f396000546001600160a01b031690565b6001600160a01b031614610f5f5760405162461bcd60e51b8152600401610af590612d1b565b600a811015610f995760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610af5565b6103e8811115610fd65760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af5565b6103e881610fe66012600a612ed9565b610ff4906305f5e100612d97565b610ffe9190612d97565b6110089190612db6565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e67565b3361104e6000546001600160a01b031690565b6001600160a01b0316146110745760405162461bcd60e51b8152600401610af590612d1b565b6110866110814283612d7f565b612128565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d49918590610f16908690612d7f565b336110d36000546001600160a01b031690565b6001600160a01b0316146110f95760405162461bcd60e51b8152600401610af590612d1b565b611103600161216b565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111439190612d97565b61114d9190612db6565b6015546001600160a01b031660009081526001602052604090205411919050565b336111816000546001600160a01b031690565b6001600160a01b0316146111a75760405162461bcd60e51b8152600401610af590612d1b565b60168054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610e6790831515815260200190565b336112076000546001600160a01b031690565b6001600160a01b03161461122d5760405162461bcd60e51b8152600401610af590612d1b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361128a6000546001600160a01b031690565b6001600160a01b0316146112b05760405162461bcd60e51b8152600401610af590612d1b565b600f54156112f25760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610af5565b42600f556103e86113056012600a612ed9565b611313906305f5e100612d97565b61131e906014612d97565b6113289190612db6565b60129081556127109061133c90600a612ed9565b61134a906305f5e100612d97565b611355906064612d97565b61135f9190612db6565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336113a06000546001600160a01b031690565b6001600160a01b0316146113c65760405162461bcd60e51b8152600401610af590612d1b565b60168054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610e6790831515815260200190565b905090565b3361142b6000546001600160a01b031690565b6001600160a01b0316146114515760405162461bcd60e51b8152600401610af590612d1b565b60005b828110156114c057816006600086868581811061147357611473612eff565b90506020020160208101906114889190612ba4565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114b981612f15565b9050611454565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b336115026000546001600160a01b031690565b6001600160a01b0316146115285760405162461bcd60e51b8152600401610af590612d1b565b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610e67565b336115896000546001600160a01b031690565b6001600160a01b0316146115af5760405162461bcd60e51b8152600401610af590612d1b565b60405163a9059cbb60e01b8152336004820152602481018290523090819063a9059cbb906044016020604051808303816000875af11580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190612dd8565b506040518281527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c22906020015b60405180910390a15050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116b55760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610af5565b6116c43385610f168685612ee8565b5060019392505050565b336116e16000546001600160a01b031690565b6001600160a01b0316146117075760405162461bcd60e51b8152600401610af590612d1b565b6016805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610d49338484611f55565b336117656000546001600160a01b031690565b6001600160a01b03161461178b5760405162461bcd60e51b8152600401610af590612d1b565b600061179a600a6103e8612db6565b90508086111580156117ac5750808511155b80156117b85750808411155b6117f95760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610af5565b6103e86118068385612d7f565b1461185d5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610af5565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b336118e06000546001600160a01b031690565b6001600160a01b0316146119065760405162461bcd60e51b8152600401610af590612d1b565b6103e881111561191557600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e67565b600060105442101561196457426010546114139190612ee8565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546119a86012600a612ed9565b6119b6906305f5e100612d97565b6119c09190612ee8565b6114139190612d7f565b336119dd6000546001600160a01b031690565b6001600160a01b031614611a035760405162461bcd60e51b8152600401610af590612d1b565b600a811115611a1157600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e67565b33611a596000546001600160a01b031690565b6001600160a01b031614611a7f5760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038216301415611ad85760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610af5565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611646565b33611b476000546001600160a01b031690565b6001600160a01b031614611b6d5760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038116611bd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611c406000546001600160a01b031690565b6001600160a01b031614611c665760405162461bcd60e51b8152600401610af590612d1b565b6015546001600160a01b0383811691161415611cbb5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610af5565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611646565b33611d2a6000546001600160a01b031690565b6001600160a01b031614611d505760405162461bcd60e51b8152600401610af590612d1b565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101611646565b33611dbf6000546001600160a01b031690565b6001600160a01b031614611de55760405162461bcd60e51b8152600401610af590612d1b565b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fff20ffd61c4c2d0ef6c92012ece4838b24c79b10136ae047c42f9311e8be86a29101610e67565b6001600160a01b038316611eac5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610af5565b6001600160a01b038216611ef45760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610af5565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fa05760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610af5565b6001600160a01b038216611fe95760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610af5565b601654600160a81b900460ff1615612077576001600160a01b03831660009081526006602052604090205460ff1615801561203d57506001600160a01b03821660009081526006602052604090205460ff16155b6120775760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610af5565b6001600160a01b03831660009081526004602052604090205460ff16806120b657506001600160a01b03821660009081526004602052604090205460ff165b156120cb576120c6838383612324565b505050565b6000600f541161211d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610af5565b6120c6838383612437565b601054811161213657600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e67565b6016805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916121a19190612d7f565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e8916121d091612d97565b6121da9190612db6565b9050816121e957505050612314565b8315612205575030600090815260016020526040902054612215565b8083101561221557505050612314565b600061221f61112e565b6122415782600b54836122329190612d97565b61223c9190612db6565b612244565b60005b905060006122528284612ee8565b90506000612261600284612db6565b9050600061226f8383612d7f565b90504761227b8261287f565b60006122878247612ee8565b905085156122b45760008361229c8684612d97565b6122a69190612db6565b90506122b285826129ce565b505b6016546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612301576040519150601f19603f3d011682016040523d82523d6000602084013e612306565b606091505b505050505050505050505050505b506016805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156123885760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af5565b6001600160a01b038416600090815260016020526040812080548492906123b0908490612ee8565b90915550506001600160a01b038316600090815260016020526040812080548492906123dd908490612d7f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242991815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561249b5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af5565b6001600160a01b03841660009081526003602052604081205460ff16806124da57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612503575080155b156125f15760115483111561256b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af5565b6001600160a01b0384166000908152600160205260409020546012546125918583612d7f565b11156125eb5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610af5565b50612694565b6001600160a01b03841660009081526005602052604090205460ff168015612617575080155b15612694576011548311156126945760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610af5565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156126f357600f54601e906126d6908290612d7f565b4210156126e7576102ee91506126ed565b60095491505b5061272a565b821561272557600f54601e9061270a908290612d7f565b42101561271b576103e791506126ed565b505060085461272a565b50600a545b6015546001600160a01b038981169116148015906127525750601654600160b01b900460ff16155b80156127685750601654600160a01b900460ff16155b1561277757612777600061216b565b60006127938783600b54600c5461278e9190612d7f565b612a7f565b905060006127a18289612ee8565b6001600160a01b038b16600090815260016020526040812080549293508a929091906127ce908490612ee8565b909155505030600090815260016020526040812080548492906127f2908490612d7f565b90915550506001600160a01b0389166000908152600160205260408120805483929061281f908490612d7f565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161286b91815260200190565b60405180910390a350505050505050505050565b6013546128979030906001600160a01b031683611e62565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128cc576128cc612eff565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129499190612f30565b8160018151811061295c5761295c612eff565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906129a2908590600090869030904290600401612f4d565b600060405180830381600087803b1580156129bc57600080fd5b505af19250505080156120c657505050565b6013546129e69030906001600160a01b031684611e62565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a53573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a789190612fbe565b5050505050565b6000612a8d6103e880612d97565b82612a988587612d97565b612aa29190612d97565b612aac9190612db6565b949350505050565b600060208284031215612ac657600080fd5b5035919050565b600060208083528351808285015260005b81811015612afa57858101830151858201604001528201612ade565b81811115612b0c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108657600080fd5b60008060408385031215612b4a57600080fd5b8235612b5581612b22565b946020939093013593505050565b600080600060608486031215612b7857600080fd5b8335612b8381612b22565b92506020840135612b9381612b22565b929592945050506040919091013590565b600060208284031215612bb657600080fd5b8135612bc181612b22565b9392505050565b801515811461108657600080fd5b600060208284031215612be857600080fd5b8135612bc181612bc8565b600080600060408486031215612c0857600080fd5b833567ffffffffffffffff80821115612c2057600080fd5b818601915086601f830112612c3457600080fd5b813581811115612c4357600080fd5b8760208260051b8501011115612c5857600080fd5b60209283019550935050840135612c6e81612bc8565b809150509250925092565b600080600080600060a08688031215612c9157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cc757600080fd5b8235612cd281612b22565b91506020830135612ce281612b22565b809150509250929050565b60008060408385031215612d0057600080fd5b8235612d0b81612b22565b91506020830135612ce281612bc8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612d6257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612d9257612d92612d69565b500190565b6000816000190483118215151615612db157612db1612d69565b500290565b600082612dd357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612dea57600080fd5b8151612bc181612bc8565b600181815b80851115612e30578160001904821115612e1657612e16612d69565b80851615612e2357918102915b93841c9390800290612dfa565b509250929050565b600082612e4757506001610d4d565b81612e5457506000610d4d565b8160018114612e6a5760028114612e7457612e90565b6001915050610d4d565b60ff841115612e8557612e85612d69565b50506001821b610d4d565b5060208310610133831016604e8410600b8410161715612eb3575081810a610d4d565b612ebd8383612df5565b8060001904821115612ed157612ed1612d69565b029392505050565b6000612bc160ff841683612e38565b600082821015612efa57612efa612d69565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612f2957612f29612d69565b5060010190565b600060208284031215612f4257600080fd5b8151612bc181612b22565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f9d5784516001600160a01b031683529383019391830191600101612f78565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612fd357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220632ebf11b98b620154f892c3707ca993db6dcc18045525a173c5b2ea5dca21d964736f6c634300080a0033

Deployed Bytecode Sourcemap

4768:17041:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18425:511;;;;;;;;;;;;;:::i;:::-;;21338:238;;;;;;;;;;-1:-1:-1;21338:238:0;;;;;:::i;:::-;;:::i;19081:94::-;;;;;;;;;;-1:-1:-1;19162:5:0;;;;;;;;;;;;-1:-1:-1;;;19162:5:0;;;;19081:94;;;;;;;:::i;:::-;;;;;;;;19938:158;;;;;;;;;;-1:-1:-1;19938:158:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;19938:158:0;1257:187:1;5761:34:0;;;;;;;;;;;;;;;;;;;1595:25:1;;;1583:2;1568:18;5761:34:0;1449:177:1;19385:105:0;;;;;;;;;;-1:-1:-1;19464:18:0;;19385:105;;16681:286;;;;;;;;;;-1:-1:-1;16681:286:0;;;;;:::i;:::-;;:::i;5369:57::-;;;;;;;;;;;;;:::i;20402:382::-;;;;;;;;;;-1:-1:-1;20402:382:0;;;;;:::i;:::-;;:::i;16391:278::-;;;;;;;;;;-1:-1:-1;16391:278:0;;;;;:::i;:::-;;:::i;19285:94::-;;;;;;;;;;-1:-1:-1;19285:94:0;;5904:2;2234:36:1;;2222:2;2207:18;19285:94:0;2092:184:1;18039:150:0;;;;;;;;;;-1:-1:-1;18039:150:0;;;;;:::i;:::-;;:::i;20790:202::-;;;;;;;;;;-1:-1:-1;20790:202:0;;;;;:::i;:::-;;:::i;16130:115::-;;;;;;;;;;;;;:::i;13380:148::-;;;;;;;;;;;;;:::i;5485:22::-;;;;;;;;;;;;;;;;6548;;;;;;;;;;-1:-1:-1;6548:22:0;;;;-1:-1:-1;;;6548:22:0;;;;;;17435:126;;;;;;;;;;-1:-1:-1;17435:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;17526:27:0;17502:4;17526:27;;;:18;:27;;;;;;;;;17435:126;8421:146;;;;;;;;;;-1:-1:-1;8421:146:0;;;;;:::i;:::-;;:::i;19496:116::-;;;;;;;;;;-1:-1:-1;19496:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;19586:18:0;19562:4;19586:18;;;:9;:18;;;;;;;19496:116;4381:140;;;;;;;;;;;;;:::i;17573:301::-;;;;;;;;;;;;;:::i;5544:27::-;;;;;;;;;;;;;;;;15993:131;;;;;;;;;;-1:-1:-1;15993:131:0;;;;;:::i;:::-;;:::i;18981:94::-;;;;;;;;;;-1:-1:-1;19033:7:0;4237:6;-1:-1:-1;;;;;4237:6:0;18981:94;;;-1:-1:-1;;;;;3066:32:1;;;3048:51;;3036:2;3021:18;18981:94:0;2902:203:1;6509:32:0;;;;;;;;;;-1:-1:-1;6509:32:0;;;;-1:-1:-1;;;6509:32:0;;;;;;4172:79;;;;;;;;;;-1:-1:-1;4210:7:0;4237:6;-1:-1:-1;;;;;4237:6:0;4172:79;;8573:244;;;;;;;;;;-1:-1:-1;8573:244:0;;;;;:::i;:::-;;:::i;19181:98::-;;;;;;;;;;-1:-1:-1;19264:7:0;;;;;;;;;;;;-1:-1:-1;;;19264:7:0;;;;19181:98;;16253:130;;;;;;;;;;-1:-1:-1;16253:130:0;;;;;:::i;:::-;;:::i;6577:39::-;;;;;;;;;;-1:-1:-1;6577:39:0;;;;-1:-1:-1;;;6577:39:0;;;;;;21582:222;;;;;;;;;;-1:-1:-1;21582:222:0;;;;;:::i;:::-;;:::i;5433:45::-;;;;;;;;;;;;;;;;20998:334;;;;;;;;;;-1:-1:-1;20998:334:0;;;;;:::i;:::-;;:::i;17886:147::-;;;;;;;;;;;;;:::i;19618:164::-;;;;;;;;;;-1:-1:-1;19618:164:0;;;;;:::i;:::-;;:::i;12814:554::-;;;;;;;;;;-1:-1:-1;12814:554:0;;;;;:::i;:::-;;:::i;5955:31::-;;;;;;;;;;;;;;;;12520:288;;;;;;;;;;-1:-1:-1;12520:288:0;;;;;:::i;:::-;;:::i;5578:28::-;;;;;;;;;;;;;;;;6247:36;;;;;;;;;;-1:-1:-1;6247:36:0;;;;-1:-1:-1;;;;;6247:36:0;;;15439:205;;;;;;;;;;;;;:::i;15650:139::-;;;;;;;;;;;;;:::i;5913:35::-;;;;;;;;;;;;;;;;5514:23;;;;;;;;;;;;;;;;12264:250;;;;;;;;;;-1:-1:-1;12264:250:0;;;;;:::i;:::-;;:::i;5613:26::-;;;;;;;;;;;;;;;;5030:48;;;;;;;;;;-1:-1:-1;5030:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19788:144;;;;;;;;;;-1:-1:-1;19788:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;19896:19:0;;;19872:4;19896:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19788:144;16979:249;;;;;;;;;;-1:-1:-1;16979:249:0;;;;;:::i;:::-;;:::i;5728:26::-;;;;;;;;;;;;;;;;5085:36;;;;;;;;;;-1:-1:-1;5085:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4527:236;;;;;;;;;;-1:-1:-1;4527:236:0;;;;;:::i;:::-;;:::i;15795:192::-;;;;;;;;;;-1:-1:-1;15795:192:0;;;;;:::i;:::-;;:::i;17240:189::-;;;;;;;;;;-1:-1:-1;17240:189:0;;;;;:::i;:::-;;:::i;8823:258::-;;;;;;;;;;-1:-1:-1;8823:258:0;;;;;:::i;:::-;;:::i;5128:46::-;;;;;;;;;;-1:-1:-1;5128:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18425:511;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;;;;;;;;;18508:20:::1;;18489:15;:39;;18481:68;;;::::0;-1:-1:-1;;;18481:68:0;;5891:2:1;18481:68:0::1;::::0;::::1;5873:21:1::0;5930:2;5910:18;;;5903:30;-1:-1:-1;;;5949:18:1;;;5942:46;6005:18;;18481:68:0::1;5689:340:1::0;18481:68:0::1;18593:15;::::0;18634:39:::1;::::0;-1:-1:-1;;;18634:39:0;;18667:4:::1;18634:39;::::0;::::1;3048:51:1::0;-1:-1:-1;;;;;18593:15:0;;::::1;::::0;18562:21:::1;::::0;18593:15;;18634:24:::1;::::0;3021:18:1;;18634:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18687:27;::::0;18620:53;;-1:-1:-1;;;;18687:27:0;::::1;;;18684:162;;;18761:40;5356:6;18761:15;:40;:::i;:::-;18740:20;:61:::0;18832:2:::1;18823:8;:6:::0;18830:1:::1;18823:8;:::i;:::-;:11;;;;:::i;:::-;18816:18;;18684:162;18856:43;::::0;-1:-1:-1;;;18856:43:0;;18880:10:::1;18856:43;::::0;::::1;7057:51:1::0;7124:18;;;7117:34;;;-1:-1:-1;;;;;18856:23:0;::::1;::::0;::::1;::::0;7030:18:1;;18856:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18915:13:0::1;::::0;::::1;::::0;;;::::1;18470:466;;18425:511::o:0;21338:238::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;21444:21:::1;21484:10;21476:64;21536:3;21505:28;21517:16:::0;21444:21;21505:28:::1;:::i;:::-;:34;;;;:::i;:::-;21476:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21556:12:0::1;::::0;::::1;::::0;;;::::1;21413:163;21338:238:::0;:::o;19938:158::-;20012:4;20029:37;20038:10;20050:7;20059:6;20029:8;:37::i;:::-;-1:-1:-1;20084:4:0;19938:158;;;;;:::o;16681:286::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;16778:2:::1;16767:7;:13;;16759:35;;;::::0;-1:-1:-1;;;16759:35:0;;7614:2:1;16759:35:0::1;::::0;::::1;7596:21:1::0;7653:1;7633:18;;;7626:29;-1:-1:-1;;;7671:18:1;;;7664:39;7720:18;;16759:35:0::1;7412:332:1::0;16759:35:0::1;16824:5;16813:7;:16;;16805:37;;;::::0;-1:-1:-1;;;16805:37:0;;7951:2:1;16805:37:0::1;::::0;::::1;7933:21:1::0;7990:1;7970:18;;;7963:29;-1:-1:-1;;;8008:18:1;;;8001:38;8056:18;;16805:37:0::1;7749:331:1::0;16805:37:0::1;16902:5;16892:7:::0;5413:13:::1;5904:2;5413;:13;:::i;:::-;5405:21;::::0;:5:::1;:21;:::i;:::-;16876:23;;;;:::i;:::-;:31;;;;:::i;:::-;16853:20;:54:::0;16923:36:::1;::::0;1595:25:1;;;16923:36:0::1;::::0;1583:2:1;1568:18;16923:36:0::1;;;;;;;;16681:286:::0;:::o;5369:57::-;5413:13;5904:2;5413;:13;:::i;:::-;5405:21;;:5;:21;:::i;:::-;5369:57;:::o;20402:382::-;20499:4;20516:36;20526:6;20534:9;20545:6;20516:9;:36::i;:::-;-1:-1:-1;;;;;20587:19:0;;20563:21;20587:19;;;:11;:19;;;;;;;;20607:10;20587:31;;;;;;;;20637:26;;;;20629:59;;;;-1:-1:-1;;;20629:59:0;;9670:2:1;20629:59:0;;;9652:21:1;9709:2;9689:18;;;9682:30;-1:-1:-1;;;9728:18:1;;;9721:50;9788:18;;20629:59:0;9468:344:1;20629:59:0;20699:55;20708:6;20716:10;20728:25;20747:6;20728:16;:25;:::i;:::-;20699:8;:55::i;:::-;-1:-1:-1;20772:4:0;;20402:382;-1:-1:-1;;;;20402:382:0:o;16391:278::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;16493:2:::1;16482:7;:13;;16474:32;;;::::0;-1:-1:-1;;;16474:32:0;;10149:2:1;16474:32:0::1;::::0;::::1;10131:21:1::0;10188:1;10168:18;;;10161:29;-1:-1:-1;;;10206:18:1;;;10199:36;10252:18;;16474:32:0::1;9947:329:1::0;16474:32:0::1;16536:4;16525:7;:15;;16517:36;;;::::0;-1:-1:-1;;;16517:36:0;;7951:2:1;16517:36:0::1;::::0;::::1;7933:21:1::0;7990:1;7970:18;;;7963:29;-1:-1:-1;;;8008:18:1;;;8001:38;8056:18;;16517:36:0::1;7749:331:1::0;16517:36:0::1;16609:4;16599:7:::0;5413:13:::1;5904:2;5413;:13;:::i;:::-;5405:21;::::0;:5:::1;:21;:::i;:::-;16583:23;;;;:::i;:::-;:30;;;;:::i;:::-;16564:16;:49:::0;16629:32:::1;::::0;1595:25:1;;;16629:32:0::1;::::0;1583:2:1;1568:18;16629:32:0::1;1449:177:1::0;18039:150:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;18124:57:::1;18146:34;18165:15;18146:18:::0;:34:::1;:::i;:::-;18124:21;:57::i;:::-;18039:150:::0;:::o;20790:202::-;20895:10;20869:4;20916:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20916:32:0;;;;;;;;;;20869:4;;20886:76;;20907:7;;20916:45;;20951:10;;20916:45;:::i;16130:115::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;16186:24:::1;16205:4;16186:18;:24::i;:::-;16226:11;::::0;::::1;::::0;;;::::1;16130:115::o:0;13380:148::-;13427:4;13516;13496:19;;13477:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;13460:15;;-1:-1:-1;;;;;13460:15:0;13450:26;;;;:9;:26;;;;;;:70;;13380:148;-1:-1:-1;13380:148:0:o;8421:146::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;8489:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;8489:23:0::1;-1:-1:-1::0;;;;8489:23:0;;::::1;;::::0;;8528:31:::1;::::0;::::1;::::0;::::1;::::0;8505:7;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;4381:140:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;4480:1:::1;4464:6:::0;;4443:40:::1;::::0;-1:-1:-1;;;;;4464:6:0;;::::1;::::0;4443:40:::1;::::0;4480:1;;4443:40:::1;4511:1;4494:19:::0;;-1:-1:-1;;;;;;4494:19:0::1;::::0;;4381:140::o;17573:301::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;17638:15:::1;::::0;:18;17630:45:::1;;;::::0;-1:-1:-1;;;17630:45:0;;10483:2:1;17630:45:0::1;::::0;::::1;10465:21:1::0;10522:2;10502:18;;;10495:30;-1:-1:-1;;;10541:18:1;;;10534:45;10596:18;;17630:45:0::1;10281:339:1::0;17630:45:0::1;17702:15;17686;:31:::0;17768:4:::1;5413:13;5904:2;5413;:13;:::i;:::-;5405:21;::::0;:5:::1;:21;:::i;:::-;17747:18;::::0;17763:2:::1;17747:18;:::i;:::-;:25;;;;:::i;:::-;17728:16;:44:::0;;;17828:5:::1;::::0;5413:13:::1;::::0;:2:::1;:13;:::i;:::-;5405:21;::::0;:5:::1;:21;:::i;:::-;17806:19;::::0;17822:3:::1;17806:19;:::i;:::-;:27;;;;:::i;:::-;17783:20;:50:::0;17849:17:::1;::::0;::::1;::::0;;;::::1;17573:301::o:0;15993:131::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;16059:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;16059:17:0::1;-1:-1:-1::0;;;;16059:17:0;;::::1;;::::0;;16092:24:::1;::::0;::::1;::::0;::::1;::::0;16070:6;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;19060:7:0;19053:14;;18981:94;:::o;8573:244::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;8675:9:::1;8670:106;8686:20:::0;;::::1;8670:106;;;8758:6;8728:13;:27;8742:9;;8752:1;8742:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8728:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8728:27:0;:36;;-1:-1:-1;;8728:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8708:3:::1;::::0;::::1;:::i;:::-;;;8670:106;;;-1:-1:-1::0;8791:18:0::1;::::0;::::1;::::0;;;::::1;8573:244:::0;;;:::o;16253:130::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;16319:9:::1;:19:::0;;-1:-1:-1;;;;;;16319:19:0::1;-1:-1:-1::0;;;;;16319:19:0;::::1;::::0;;::::1;::::0;;;16354:21:::1;::::0;3048:51:1;;;16354:21:0::1;::::0;3036:2:1;3021:18;16354:21:0::1;2902:203:1::0;21582:222:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;21715:43:::1;::::0;-1:-1:-1;;;21715:43:0;;21738:10:::1;21715:43;::::0;::::1;7057:51:1::0;7124:18;;;7117:34;;;21698:4:0::1;::::0;;;21715:22:::1;::::0;7030:18:1;;21715:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21774:22:0::1;::::0;1595:25:1;;;21774:22:0::1;::::0;1583:2:1;1568:18;21774:22:0::1;;;;;;;;21649:155;21582:222:::0;:::o;20998:334::-;21135:10;21082:4;21123:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21123:32:0;;;;;;;;;;21174:35;;;;21166:60;;;;-1:-1:-1;;;21166:60:0;;11099:2:1;21166:60:0;;;11081:21:1;11138:2;11118:18;;;11111:30;-1:-1:-1;;;11157:18:1;;;11150:42;11209:18;;21166:60:0;10897:336:1;21166:60:0;21237:65;21246:10;21258:7;21267:34;21286:15;21267:16;:34;:::i;21237:65::-;-1:-1:-1;21320:4:0;;20998:334;-1:-1:-1;;;20998:334:0:o;17886:147::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;17957:27:::1;:32:::0;;-1:-1:-1;;;;17957:32:0::1;-1:-1:-1::0;;;17957:32:0::1;::::0;;18005:20:::1;::::0;::::1;::::0;17957:32;;18005:20:::1;17886:147::o:0;19618:164::-;19695:4;19712:40;19722:10;19734:9;19745:6;19712:9;:40::i;12814:554::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;12925:11:::1;12937:33;5719:2;5676:4;12937:33;:::i;:::-;12925:45;;12994:6;12989:3;:11;;:25;;;;;13008:6;13002:4;:12;;12989:25;:44;;;;;13027:6;13016:9;:17;;12989:44;12981:74;;;::::0;-1:-1:-1;;;12981:74:0;;11440:2:1;12981:74:0::1;::::0;::::1;11422:21:1::0;11479:2;11459:18;;;11452:30;-1:-1:-1;;;11498:18:1;;;11491:48;11556:18;;12981:74:0::1;11238:342:1::0;12981:74:0::1;5676:4;13074:17;13082:9:::0;13074:7;:17:::1;:::i;:::-;:34;13066:79;;;::::0;-1:-1:-1;;;13066:79:0;;11787:2:1;13066:79:0::1;::::0;::::1;11769:21:1::0;11826:2;11806:18;;;11799:30;11865:34;11845:18;;;11838:62;-1:-1:-1;;;11916:18:1;;;11909:31;11957:19;;13066:79:0::1;11585:397:1::0;13066:79:0::1;13166:6;:10:::0;;;13187:7:::1;:12:::0;;;13210:11:::1;:21:::0;;;13242:10:::1;:18:::0;;;13271:12:::1;:22:::0;;;13309:51:::1;::::0;;12246:25:1;;;12302:2;12287:18;;12280:34;;;12330:18;;;12323:34;;;12388:2;12373:18;;12366:34;;;12431:3;12416:19;;12409:35;;;13309:51:0::1;::::0;12233:3:1;12218:19;13309:51:0::1;;;;;;;12914:454;12814:554:::0;;;;;:::o;12520:288::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;12658:4:::1;12626:30;:36;;12618:45;;;::::0;::::1;;12674:19;:50:::0;;;12740:60:::1;::::0;1595:25:1;;;12740:60:0::1;::::0;1583:2:1;1568:18;12740:60:0::1;1449:177:1::0;15439:205:0;15504:4;15539:20;;15523:15;:36;15520:97;;;15602:15;15581:20;;:36;;;;:::i;15520:97::-;-1:-1:-1;15635:1:0;;15439:205::o;15650:139::-;15773:6;15697:4;15755:26;;;:9;:26;;;;15735:18;;5413:13;5904:2;5413;:13;:::i;:::-;5405:21;;:5;:21;:::i;:::-;15721:32;;;;:::i;:::-;15720:61;;;;:::i;12264:250::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;12379:2:::1;12354:23;:27;;12346:36;;;::::0;::::1;;12410:12;:36:::0;;;12462:44:::1;::::0;1595:25:1;;;12462:44:0::1;::::0;1583:2:1;1568:18;12462:44:0::1;1449:177:1::0;16979:249:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17077:22:0;::::1;17094:4;17077:22;;17069:60;;;::::0;-1:-1:-1;;;17069:60:0;;12657:2:1;17069:60:0::1;::::0;::::1;12639:21:1::0;12696:2;12676:18;;;12669:30;12735:28;12715:18;;;12708:56;12781:18;;17069:60:0::1;12455:350:1::0;17069:60:0::1;-1:-1:-1::0;;;;;17140:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;17140:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17189:31;;12978:51:1;;;13045:18;;;13038:50;17189:31:0::1;::::0;12951:18:1;17189:31:0::1;12810:284:1::0;4527:236:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4608:22:0;::::1;4600:73;;;::::0;-1:-1:-1;;;4600:73:0;;13301:2:1;4600:73:0::1;::::0;::::1;13283:21:1::0;13340:2;13320:18;;;13313:30;13379:34;13359:18;;;13352:62;-1:-1:-1;;;13430:18:1;;;13423:36;13476:19;;4600:73:0::1;13099:402:1::0;4600:73:0::1;4710:6;::::0;;4689:38:::1;::::0;-1:-1:-1;;;;;4689:38:0;;::::1;::::0;4710:6;::::1;::::0;4689:38:::1;::::0;::::1;4738:6;:17:::0;;-1:-1:-1;;;;;;4738:17:0::1;-1:-1:-1::0;;;;;4738:17:0;;;::::1;::::0;;;::::1;::::0;;4527:236::o;15795:192::-;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;15877:15:::1;::::0;-1:-1:-1;;;;;15871:21:0;;::::1;15877:15:::0;::::1;15871:21;;15863:53;;;::::0;-1:-1:-1;;;15863:53:0;;13708:2:1;15863:53:0::1;::::0;::::1;13690:21:1::0;13747:2;13727:18;;;13720:30;-1:-1:-1;;;13766:18:1;;;13759:50;13826:18;;15863:53:0::1;13506:344:1::0;15863:53:0::1;-1:-1:-1::0;;;;;15927:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;;;;:16;;-1:-1:-1;;15927:16:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15959:20;;12978:51:1;;;13045:18;;;13038:50;15959:20:0::1;::::0;12951:18:1;15959:20:0::1;12810:284:1::0;17240:189:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17336:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;17336:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17387:34;;12978:51:1;;;13045:18;;;13038:50;17387:34:0::1;::::0;12951:18:1;17387:34:0::1;12810:284:1::0;8823:258:0;4308:10;4297:7;4210;4237:6;-1:-1:-1;;;;;4237:6:0;;4172:79;4297:7;-1:-1:-1;;;;;4297:21:0;;4289:66;;;;-1:-1:-1;;;4289:66:0;;;;;;;:::i;:::-;8899:13:::1;:33:::0;;-1:-1:-1;;;;;;8899:33:0::1;-1:-1:-1::0;;;;;8899:33:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8943:28:0;;;:16:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;8943:35:0;;::::1;-1:-1:-1::0;8943:35:0;;::::1;::::0;;;8989:18:::1;:30:::0;;;;;;:37;;;;::::1;;::::0;;;9042:31;;3048:51:1;;;9042:31:0::1;::::0;3021:18:1;9042:31:0::1;2902:203:1::0;20102:294:0;-1:-1:-1;;;;;20192:19:0;;20184:49;;;;-1:-1:-1;;;20184:49:0;;14057:2:1;20184:49:0;;;14039:21:1;14096:2;14076:18;;;14069:30;-1:-1:-1;;;14115:18:1;;;14108:47;14172:18;;20184:49:0;13855:341:1;20184:49:0;-1:-1:-1;;;;;20252:21:0;;20244:49;;;;-1:-1:-1;;;20244:49:0;;14403:2:1;20244:49:0;;;14385:21:1;14442:2;14422:18;;;14415:30;-1:-1:-1;;;14461:18:1;;;14454:45;14516:18;;20244:49:0;14201:339:1;20244:49:0;-1:-1:-1;;;;;20304:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20356:32;;1595:25:1;;;20356:32:0;;1568:18:1;20356:32:0;;;;;;;20102:294;;;:::o;9087:643::-;-1:-1:-1;;;;;9180:20:0;;9172:51;;;;-1:-1:-1;;;9172:51:0;;14747:2:1;9172:51:0;;;14729:21:1;14786:2;14766:18;;;14759:30;-1:-1:-1;;;14805:18:1;;;14798:48;14863:18;;9172:51:0;14545:342:1;9172:51:0;-1:-1:-1;;;;;9242:23:0;;9234:52;;;;-1:-1:-1;;;9234:52:0;;15094:2:1;9234:52:0;;;15076:21:1;15133:2;15113:18;;;15106:30;-1:-1:-1;;;15152:18:1;;;15145:46;15208:18;;9234:52:0;14892:340:1;9234:52:0;9300:13;;-1:-1:-1;;;9300:13:0;;;;9297:122;;;-1:-1:-1;;;;;9338:21:0;;;;;;:13;:21;;;;;;;;9337:22;:51;;;;-1:-1:-1;;;;;;9364:24:0;;;;;;:13;:24;;;;;;;;9363:25;9337:51;9329:74;;;;-1:-1:-1;;;9329:74:0;;15439:2:1;9329:74:0;;;15421:21:1;15478:2;15458:18;;;15451:30;-1:-1:-1;;;15497:18:1;;;15490:41;15548:18;;9329:74:0;15237:335:1;9329:74:0;-1:-1:-1;;;;;9432:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;9460:27:0;;;;;;:16;:27;;;;;;;;9432:55;9429:294;;;9502:43;9519:6;9527:9;9538:6;9502:16;:43::i;:::-;9087:643;;;:::o;9429:294::-;9611:1;9595:15;;:17;9587:52;;;;-1:-1:-1;;;9587:52:0;;15779:2:1;9587:52:0;;;15761:21:1;15818:2;15798:18;;;15791:30;15857:25;15837:18;;;15830:53;15900:18;;9587:52:0;15577:347:1;9587:52:0;9654:39;9669:6;9676:9;9686:6;9654:14;:39::i;18195:218::-;18286:20;;18272:13;:34;18264:43;;;;;;18318:20;:34;;;18368:37;;1595:25:1;;;18368:37:0;;1583:2:1;1568:18;18368:37:0;1449:177:1;13534:1074:0;6341:27;:34;;-1:-1:-1;;;;6341:34:0;-1:-1:-1;;;6341:34:0;;;13650:4:::1;6341:34:::0;13632:24;;;6371:4;13632:24:::1;::::0;;;;;13694:10:::1;::::0;13681:12:::1;::::0;13632:24;;6341:34;13681:23:::1;::::0;13694:10;13681:23:::1;:::i;:::-;13759:12;::::0;13742:15:::1;::::0;-1:-1:-1;;;;;13742:15:0::1;13715:16;13732:26:::0;;;:9:::1;:26;::::0;;;;;13667:37;;-1:-1:-1;13715:16:0;13772:4:::1;::::0;13732:39:::1;::::0;::::1;:::i;:::-;:44;;;;:::i;:::-;13715:61:::0;-1:-1:-1;13790:11:0;13787:22:::1;;13802:7;;;;;13787:22;13822:12;13819:134;;;-1:-1:-1::0;13879:4:0::1;13861:24;::::0;;;:9:::1;:24;::::0;;;;;13819:134:::1;;;13920:11;13904:15;:27;13901:52;;;13946:7;;;;;13901:52;13963:22;13986:17;:15;:17::i;:::-;:55;;14033:8;14019:12;;14007:11;:24;;;;:::i;:::-;14006:35;;;;:::i;:::-;13986:55;;;14004:1;13986:55;13963:78:::0;-1:-1:-1;14054:20:0::1;14076:29;13963:78:::0;14076:11;:29:::1;:::i;:::-;14054:51:::0;-1:-1:-1;14118:12:0::1;14131:19;14149:1;14131:17:::0;:19:::1;:::i;:::-;14118:32:::0;-1:-1:-1;14161:14:0::1;14176:23;14184:15:::0;14118:32;14176:23:::1;:::i;:::-;14161:38:::0;-1:-1:-1;14235:21:0::1;14267:27;14161:38:::0;14267:16:::1;:27::i;:::-;14305:11;14318:41;14342:17:::0;14318:21:::1;:41;:::i;:::-;14305:55:::0;-1:-1:-1;14374:19:0;;14371:135:::1;;14409:11;14440:9:::0;14424:14:::1;14431:7:::0;14424:6;:14:::1;:::i;:::-;14423:26;;;;:::i;:::-;14409:40;;14464:30;14478:7;14487:6;14464:13;:30::i;:::-;14394:112;14371:135;14529:13;::::0;:51:::1;::::0;14517:9:::1;::::0;-1:-1:-1;;;;;14529:13:0::1;::::0;14554:21:::1;::::0;14517:9;14529:51;14517:9;14529:51;14554:21;14529:13;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;6386:1:0::1;-1:-1:-1::0;6398:27:0;:35;;-1:-1:-1;;;;6398:35:0;;;13534:1074::o;11919:339::-;-1:-1:-1;;;;;12032:17:0;;12011:18;12032:17;;;:9;:17;;;;;;12068:23;;;;12060:60;;;;-1:-1:-1;;;12060:60:0;;16341:2:1;12060:60:0;;;16323:21:1;16380:2;16360:18;;;16353:30;-1:-1:-1;;;16399:18:1;;;16392:54;16463:18;;12060:60:0;16139:348:1;12060:60:0;-1:-1:-1;;;;;12131:17:0;;;;;;:9;:17;;;;;:25;;12150:6;;12131:17;:25;;12150:6;;12131:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12167:20:0;;;;;;:9;:20;;;;;:28;;12189:6;;12167:20;:28;;12189:6;;12167:28;:::i;:::-;;;;;;;;12233:9;-1:-1:-1;;;;;12217:33:0;12226:6;-1:-1:-1;;;;;12217:33:0;;12243:6;12217:33;;;;1595:25:1;;1583:2;1568:18;;1449:177;12217:33:0;;;;;;;;12000:258;11919:339;;;:::o;9736:1995::-;-1:-1:-1;;;;;9847:17:0;;9826:18;9847:17;;;:9;:17;;;;;;9883:23;;;;9875:60;;;;-1:-1:-1;;;9875:60:0;;16341:2:1;9875:60:0;;;16323:21:1;16380:2;16360:18;;;16353:30;-1:-1:-1;;;16399:18:1;;;16392:54;16463:18;;9875:60:0;16139:348:1;9875:60:0;-1:-1:-1;;;;;9969:26:0;;9946:20;9969:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9999:29:0;;;;;;:18;:29;;;;;;;;9969:59;-1:-1:-1;;;;;10057:14:0;;;;;;:6;:14;;;;;;9946:82;;-1:-1:-1;10057:14:0;;:47;;;;;10089:15;10088:16;10057:47;10039:686;;;10167:20;;10157:6;:30;;10131:132;;;;-1:-1:-1;;;10131:132:0;;16694:2:1;10131:132:0;;;16676:21:1;16733:2;16713:18;;;16706:30;16772:34;16752:18;;;16745:62;-1:-1:-1;;;16823:18:1;;;16816:38;16871:19;;10131:132:0;16492:404:1;10131:132:0;-1:-1:-1;;;;;19586:18:0;;10278:32;19586:18;;;:9;:18;;;;;;10411:16;;10374:33;10401:6;19586:18;10374:33;:::i;:::-;:53;;10348:151;;;;-1:-1:-1;;;10348:151:0;;17103:2:1;10348:151:0;;;17085:21:1;17142:2;17122:18;;;17115:30;17181:34;17161:18;;;17154:62;-1:-1:-1;;;17232:18:1;;;17225:34;17276:19;;10348:151:0;16901:400:1;10348:151:0;10116:395;10039:686;;;-1:-1:-1;;;;;10535:17:0;;;;;;:6;:17;;;;;;;;:50;;;;;10570:15;10569:16;10535:50;10517:208;;;10630:20;;10620:6;:30;;10612:101;;;;-1:-1:-1;;;10612:101:0;;17508:2:1;10612:101:0;;;17490:21:1;17547:2;17527:18;;;17520:30;17586:34;17566:18;;;17559:62;17657:28;17637:18;;;17630:56;17703:19;;10612:101:0;17306:422:1;10612:101:0;-1:-1:-1;;;;;10748:14:0;;;10737:10;10748:14;;;:6;:14;;;;;;;10785:17;;;;;;;;10748:14;;;;;10785:17;;10832:436;;;;10934:15;;10880:10;;10934:31;;10880:10;;10934:31;:::i;:::-;10918:15;:47;10915:113;;;10989:3;10985:7;;10915:113;;;11021:7;;11017:11;;10915:113;10842:202;10832:436;;;11062:5;11059:209;;;11147:15;;11103:10;;11147:30;;11103:10;;11147:30;:::i;:::-;11131:15;:46;11128:107;;;11201:3;11197:7;;11128:107;;;-1:-1:-1;;11229:6:0;;11059:209;;;-1:-1:-1;11257:11:0;;11059:209;11293:15;;-1:-1:-1;;;;;11285:23:0;;;11293:15;;11285:23;;;;11284:40;;-1:-1:-1;11313:10:0;;-1:-1:-1;;;11313:10:0;;;;11312:11;11284:40;:72;;;;-1:-1:-1;11328:27:0;;-1:-1:-1;;;11328:27:0;;;;11327:28;11284:72;11281:115;;;11371:25;11390:5;11371:18;:25::i;:::-;11407:18;11426:51;11440:6;11448:3;11464:12;;11453:10;;:23;;;;:::i;:::-;11426:13;:51::i;:::-;11407:70;-1:-1:-1;11488:16:0;11505:20;11407:70;11505:6;:20;:::i;:::-;-1:-1:-1;;;;;11538:17:0;;;;;;:9;:17;;;;;:25;;11488:37;;-1:-1:-1;11557:6:0;;11538:17;;;:25;;11557:6;;11538:25;:::i;:::-;;;;-1:-1:-1;;11592:4:0;11574:24;;;;:9;:24;;;;;:41;;11602:13;;11574:24;:41;;11602:13;;11574:41;:::i;:::-;;;;-1:-1:-1;;;;;;;11626:20:0;;;;;;:9;:20;;;;;:33;;11648:11;;11626:20;:33;;11648:11;;11626:33;:::i;:::-;;;;;;;;11701:9;-1:-1:-1;;;;;11685:38:0;11694:6;-1:-1:-1;;;;;11685:38:0;;11711:11;11685:38;;;;1595:25:1;;1583:2;1568:18;;1449:177;11685:38:0;;;;;;;;9815:1916;;;;;;;9736:1995;;;:::o;14614:462::-;14704:10;;14672:52;;14689:4;;-1:-1:-1;;;;;14704:10:0;14717:6;14672:8;:52::i;:::-;14759:16;;;14773:1;14759:16;;;;;;;;14735:21;;14759:16;;;;;;;;;;-1:-1:-1;14759:16:0;14735:40;;14804:4;14786;14791:1;14786:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14786:23:0;;;:7;;;;;;;;;;:23;;;;14830:10;;:17;;;-1:-1:-1;;;14830:17:0;;;;:10;;;;;:15;;:17;;;;;14786:7;;14830:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14820:4;14825:1;14820:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14820:27:0;;;:7;;;;;;;;;:27;14864:10;;:186;;-1:-1:-1;;;14864:186:0;;:10;;;:61;;:186;;14940:6;;14864:10;;14977:4;;15004;;15024:15;;14864:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:415;14614:462;:::o;15082:351::-;15190:10;;15158:57;;15175:4;;-1:-1:-1;;;;;15190:10:0;15203:11;15158:8;:57::i;:::-;15226:10;;:199;;-1:-1:-1;;;15226:199:0;;15293:4;15226:199;;;19447:34:1;;;19497:18;;;19490:34;;;15226:10:0;19540:18:1;;;19533:34;;;19583:18;;;19576:34;19626:19;;;19619:44;15399:15:0;19679:19:1;;;19672:35;-1:-1:-1;;;;;15226:10:0;;;;:26;;15260:9;;19381:19:1;;15226:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15082:351;;:::o;11737:176::-;11822:4;11873:31;5676:4;;11873:31;:::i;:::-;11858:10;11847;11854:3;11847:6;:10;:::i;:::-;:21;;;;:::i;:::-;11846:59;;;;:::i;:::-;11839:66;11737:176;-1:-1:-1;;;;11737:176:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:597::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;637:6;634:1;631:13;628:91;;;707:1;702:2;693:6;682:9;678:22;674:31;667:42;628:91;-1:-1:-1;780:2:1;759:15;-1:-1:-1;;755:29:1;740:45;;;;787:2;736:54;;199:597;-1:-1:-1;;;199:597:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:247::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2448:9;2435:23;2467:31;2492:5;2467:31;:::i;:::-;2517:5;2281:247;-1:-1:-1;;;2281:247:1:o;2533:118::-;2619:5;2612:13;2605:21;2598:5;2595:32;2585:60;;2641:1;2638;2631:12;2656:241;2712:6;2765:2;2753:9;2744:7;2740:23;2736:32;2733:52;;;2781:1;2778;2771:12;2733:52;2820:9;2807:23;2839:28;2861:5;2839:28;:::i;3110:750::-;3202:6;3210;3218;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3327:9;3314:23;3356:18;3397:2;3389:6;3386:14;3383:34;;;3413:1;3410;3403:12;3383:34;3451:6;3440:9;3436:22;3426:32;;3496:7;3489:4;3485:2;3481:13;3477:27;3467:55;;3518:1;3515;3508:12;3467:55;3558:2;3545:16;3584:2;3576:6;3573:14;3570:34;;;3600:1;3597;3590:12;3570:34;3655:7;3648:4;3638:6;3635:1;3631:14;3627:2;3623:23;3619:34;3616:47;3613:67;;;3676:1;3673;3666:12;3613:67;3707:4;3699:13;;;;-1:-1:-1;3731:6:1;-1:-1:-1;;3772:20:1;;3759:34;3802:28;3759:34;3802:28;:::i;:::-;3849:5;3839:15;;;3110:750;;;;;:::o;3865:454::-;3960:6;3968;3976;3984;3992;4045:3;4033:9;4024:7;4020:23;4016:33;4013:53;;;4062:1;4059;4052:12;4013:53;-1:-1:-1;;4085:23:1;;;4155:2;4140:18;;4127:32;;-1:-1:-1;4206:2:1;4191:18;;4178:32;;4257:2;4242:18;;4229:32;;-1:-1:-1;4308:3:1;4293:19;4280:33;;-1:-1:-1;3865:454:1;-1:-1:-1;3865:454:1:o;4548:388::-;4616:6;4624;4677:2;4665:9;4656:7;4652:23;4648:32;4645:52;;;4693:1;4690;4683:12;4645:52;4732:9;4719:23;4751:31;4776:5;4751:31;:::i;:::-;4801:5;-1:-1:-1;4858:2:1;4843:18;;4830:32;4871:33;4830:32;4871:33;:::i;:::-;4923:7;4913:17;;;4548:388;;;;;:::o;4941:382::-;5006:6;5014;5067:2;5055:9;5046:7;5042:23;5038:32;5035:52;;;5083:1;5080;5073:12;5035:52;5122:9;5109:23;5141:31;5166:5;5141:31;:::i;:::-;5191:5;-1:-1:-1;5248:2:1;5233:18;;5220:32;5261:30;5220:32;5261:30;:::i;5328:356::-;5530:2;5512:21;;;5549:18;;;5542:30;5608:34;5603:2;5588:18;;5581:62;5675:2;5660:18;;5328:356::o;6034:184::-;6104:6;6157:2;6145:9;6136:7;6132:23;6128:32;6125:52;;;6173:1;6170;6163:12;6125:52;-1:-1:-1;6196:16:1;;6034:184;-1:-1:-1;6034:184:1:o;6223:127::-;6284:10;6279:3;6275:20;6272:1;6265:31;6315:4;6312:1;6305:15;6339:4;6336:1;6329:15;6355:128;6395:3;6426:1;6422:6;6419:1;6416:13;6413:39;;;6432:18;;:::i;:::-;-1:-1:-1;6468:9:1;;6355:128::o;6488:168::-;6528:7;6594:1;6590;6586:6;6582:14;6579:1;6576:21;6571:1;6564:9;6557:17;6553:45;6550:71;;;6601:18;;:::i;:::-;-1:-1:-1;6641:9:1;;6488:168::o;6661:217::-;6701:1;6727;6717:132;;6771:10;6766:3;6762:20;6759:1;6752:31;6806:4;6803:1;6796:15;6834:4;6831:1;6824:15;6717:132;-1:-1:-1;6863:9:1;;6661:217::o;7162:245::-;7229:6;7282:2;7270:9;7261:7;7257:23;7253:32;7250:52;;;7298:1;7295;7288:12;7250:52;7330:9;7324:16;7349:28;7371:5;7349:28;:::i;8085:422::-;8174:1;8217:5;8174:1;8231:270;8252:7;8242:8;8239:21;8231:270;;;8311:4;8307:1;8303:6;8299:17;8293:4;8290:27;8287:53;;;8320:18;;:::i;:::-;8370:7;8360:8;8356:22;8353:55;;;8390:16;;;;8353:55;8469:22;;;;8429:15;;;;8231:270;;;8235:3;8085:422;;;;;:::o;8512:806::-;8561:5;8591:8;8581:80;;-1:-1:-1;8632:1:1;8646:5;;8581:80;8680:4;8670:76;;-1:-1:-1;8717:1:1;8731:5;;8670:76;8762:4;8780:1;8775:59;;;;8848:1;8843:130;;;;8755:218;;8775:59;8805:1;8796:10;;8819:5;;;8843:130;8880:3;8870:8;8867:17;8864:43;;;8887:18;;:::i;:::-;-1:-1:-1;;8943:1:1;8929:16;;8958:5;;8755:218;;9057:2;9047:8;9044:16;9038:3;9032:4;9029:13;9025:36;9019:2;9009:8;9006:16;9001:2;8995:4;8992:12;8988:35;8985:77;8982:159;;;-1:-1:-1;9094:19:1;;;9126:5;;8982:159;9173:34;9198:8;9192:4;9173:34;:::i;:::-;9243:6;9239:1;9235:6;9231:19;9222:7;9219:32;9216:58;;;9254:18;;:::i;:::-;9292:20;;8512:806;-1:-1:-1;;;8512:806:1:o;9323:140::-;9381:5;9410:47;9451:4;9441:8;9437:19;9431:4;9410:47;:::i;9817:125::-;9857:4;9885:1;9882;9879:8;9876:34;;;9890:18;;:::i;:::-;-1:-1:-1;9927:9:1;;9817:125::o;10625:127::-;10686:10;10681:3;10677:20;10674:1;10667:31;10717:4;10714:1;10707:15;10741:4;10738:1;10731:15;10757:135;10796:3;-1:-1:-1;;10817:17:1;;10814:43;;;10837:18;;:::i;:::-;-1:-1:-1;10884:1:1;10873:13;;10757:135::o;17865:251::-;17935:6;17988:2;17976:9;17967:7;17963:23;17959:32;17956:52;;;18004:1;18001;17994:12;17956:52;18036:9;18030:16;18055:31;18080:5;18055:31;:::i;18121:980::-;18383:4;18431:3;18420:9;18416:19;18462:6;18451:9;18444:25;18488:2;18526:6;18521:2;18510:9;18506:18;18499:34;18569:3;18564:2;18553:9;18549:18;18542:31;18593:6;18628;18622:13;18659:6;18651;18644:22;18697:3;18686:9;18682:19;18675:26;;18736:2;18728:6;18724:15;18710:29;;18757:1;18767:195;18781:6;18778:1;18775:13;18767:195;;;18846:13;;-1:-1:-1;;;;;18842:39:1;18830:52;;18937:15;;;;18902:12;;;;18878:1;18796:9;18767:195;;;-1:-1:-1;;;;;;;19018:32:1;;;;19013:2;18998:18;;18991:60;-1:-1:-1;;;19082:3:1;19067:19;19060:35;18979:3;18121:980;-1:-1:-1;;;18121:980:1:o;19718:306::-;19806:6;19814;19822;19875:2;19863:9;19854:7;19850:23;19846:32;19843:52;;;19891:1;19888;19881:12;19843:52;19920:9;19914:16;19904:26;;19970:2;19959:9;19955:18;19949:25;19939:35;;20014:2;20003:9;19999:18;19993:25;19983:35;;19718:306;;;;;:::o

Swarm Source

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