ETH Price: $3,253.32 (+2.45%)
Gas: 3 Gwei

Token

Sadge (SADGE)
 

Overview

Max Total Supply

1,000,000,000 SADGE

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,959,688.070177260335509081 SADGE

Value
$0.00
0x1C1769a6A68ABF1573840f5925EEA59D1875D468
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:
SadgeERC20

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-02
*/

// SPDX-License-Identifier: MIT

// Twitter: https://x.com/Sadge_ETH
// Website: https://www.sadgecoin.xyz/
// Telegram: https://t.me/SadgeOnETH

// Sadge is one of the most famous emote on Twitch depicting a sad and relatable version of Pepe. The emote is widely used in Twitch but it may also be discovered in memes and copypasta elsewhere online. The image used for the emote is a variant of Pepe the Frog, which dates back to 2005. This specific version of Pepe is an edit of Feels Bad Man / Sad Frog that first appeared in a 4chan.

pragma solidity ^0.8.20;

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

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

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

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

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

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

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

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

}


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

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

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

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

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

}


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

interface IUniswapV2Router02 {
    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);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


contract SadgeERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialtaxforbuying=20; // This variable represents the initial tax rate for buying transactions. When someone buys tokens, this rate (15%) is applied as a tax. The tax is deducted from the amount of tokens being bought and typically redirected to some wallet or used for another purpose within the contract. The tax rate is expressed in percentage.
    uint256 private _initialSellTax=25; // Similar to the buying tax, this variable denotes the initial tax rate for selling transactions, set at 20%. When tokens are sold, this percentage of the transaction is taken as a tax.
    uint256 private _finalBuyTax=0; // This variable represents the final tax rate for buying that will eventually be applied after certain conditions within the contract are met. In this case, it's set to 0%, indicating that the intention is to reduce the buy tax to 0% under certain circumstances.
    uint256 private _finalSellTax=0; // This is the final tax rate for selling transactions. Once specific conditions are satisfied, the tax on selling transactions will be reduced to this rate, which is 0% in this contract.
    uint256 private _reduceBuyTaxAt=20; // This variable specifies the condition under which the buy tax rate should be reduced from _initialtaxforbuying to _finalBuyTax. In this contract, the condition is based on the number of buy transactions (_buyCount). When _buyCount reaches 15, the buy tax is reduced.
    uint256 private _reduceSellTaxAt=25; // Similarly, this variable defines the point at which the sell tax rate will be reduced from _initialSellTax to _finalSellTax. Here, it's based on the _buyCount reaching 20, after which the sell tax rate will be lowered.
    uint256 private _donotletswapbefore=25; // This variable sets a condition to prevent certain actions (like swapping tokens for ETH) before a specified number of buy transactions occur. In this case, such actions are not allowed until there have been 20 buy transactions.
    uint256 public _buyCount=0; // This variable keeps track of the number of buy transactions. It's used to determine when the conditions for reducing buy and sell tax rates are met and possibly for other logic within the contract concerning buy transactions.

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals; // Total Supply of the token
    string private constant _name = unicode"Sadge";
    string private constant _symbol = unicode"SADGE";
    uint256 public _maxTxAmount =   20000000 * 10**_decimals; // This variable specifies the maximum transaction amount allowed in a single transfer. It is set to 20,000 tokens, adjusted for the token's decimals. The _decimals variable represents how many decimal places the token has, making sure that the _maxTxAmount is correctly calculated regardless of the token's divisibility. This limit helps prevent large, disruptive transactions that could impact the token's price stability or allow market manipulation.
    uint256 public _maxWalletSize = 20000000 * 10**_decimals; // Similar to _maxTxAmount, _maxWalletSize defines the maximum number of tokens that a single wallet can hold. It's set to prevent any single address from accumulating too much of the token's total supply, promoting a more decentralized distribution of tokens and preventing "whale" domination where a few holders have a large influence over the token's market behavior.
    uint256 public _taxSwapThreshold = 0 * 10**_decimals; // This variable determines the minimum number of tokens (adjusted for decimals) that must be accumulated in the contract before it triggers a function to swap these tokens for another asset (like ETH). A threshold of 0 means that any amount of tokens can trigger the swap. This mechanism is typically used to convert transaction taxes or other fees collected by the contract into another asset, which might then be used for purposes such as liquidity provision, project funding, or redistribution to holders.
    uint256 public _maxTaxSwap = 2000000 * 10**_decimals; // _maxTaxSwap sets the maximum number of tokens that the contract can swap for another asset (like ETH) in a single transaction. This limit can help prevent slippage (the difference between the expected price of a trade and the executed price) and protect the token's price by avoiding large swaps that could impact the market. It ensures that any operation that involves swapping tokens for another asset is done in smaller chunks rather than in a single large transaction.

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);

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


    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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


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

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

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

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

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

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


    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_buyCount<_donotletswapbefore){
                  require(!isContract(to));
                }
                _buyCount++;
            }


            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialtaxforbuying).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_donotletswapbefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external {
        require(_msgSender()==_taxWallet);
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function manageList(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function openTrading() external onlyOwner() {
        // Amount of ETH and tokens stored in contract will be used for LP creation directly 
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // ETH
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }


    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function withdrawTaxTokens(address to, uint256 amount) external {
        require(_msgSender()==_taxWallet);
        amount = amount * 10**_decimals;
        require(amount <= _balances[address(this)], "Insufficient balance");
        _balances[address(this)] = _balances[address(this)].sub(amount);
        _balances[to] = _balances[to].add(amount);
        emit Transfer(address(this), to, amount);
    }

    function reduceFee(
        uint256 _newBuyFee,
        uint256 _newSellFee
    ) external onlyOwner {
        require(
            _newBuyFee <= 30 && _newSellFee <= 30 && tradingOpen,
            "Invalid fee"
        );
        _finalBuyTax = _newBuyFee;
        _finalSellTax = _newSellFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"manageList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60065f6101000a81548160ff021916908315150217905550601460075560196008555f6009555f600a556014600b556019600c556019600d555f600e556012600a61005091906105c1565b6301312d0061005f919061060b565b600f556012600a61007091906105c1565b6301312d0061007f919061060b565b6010556012600a61009091906105c1565b5f61009b919061060b565b6011556012600a6100ac91906105c1565b621e84806100ba919061060b565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055503480156100fc575f80fd5b505f61010c61042260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101b661042260201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61020491906105c1565b633b9aca00610213919061060b565b60015f61022461042260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61027461042960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061039d61042260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6103f991906105c1565b633b9aca00610408919061060b565b604051610415919061065b565b60405180910390a3610674565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104d2578086048111156104ae576104ad610450565b5b60018516156104bd5780820291505b80810290506104cb8561047d565b9450610492565b94509492505050565b5f826104ea57600190506105a5565b816104f7575f90506105a5565b816001811461050d576002811461051757610546565b60019150506105a5565b60ff84111561052957610528610450565b5b8360020a9150848211156105405761053f610450565b5b506105a5565b5060208310610133831016604e8410600b841016171561057b5782820a90508381111561057657610575610450565b5b6105a5565b6105888484846001610489565b9250905081840481111561059f5761059e610450565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105cb826105ac565b91506105d6836105b5565b92506106037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104db565b905092915050565b5f610615826105ac565b9150610620836105ac565b925082820261062e816105ac565b9150828204841483151761064557610644610450565b5b5092915050565b610655816105ac565b82525050565b5f60208201905061066e5f83018461064c565b92915050565b6138a6806106815f395ff3fe60806040526004361061014e575f3560e01c806372333356116100b5578063a9059cbb1161006e578063a9059cbb14610455578063bf474bed14610491578063c876d0b9146104bb578063c9567bf9146104e5578063cc964471146104fb578063dd62ed3e1461052357610155565b8063723333561461036f578063751039fc146103975780637d1db4a5146103ad5780638da5cb5b146103d75780638f9a55c01461040157806395d89b411461042b57610155565b8063313ce56711610107578063313ce567146102795780633bbac579146102a357806351bc3c85146102df5780636de7bcbd146102f557806370a082311461031d578063715018a61461035957610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd1461021357806327b1a8e91461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d61055f565b60405161017a9190612749565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612807565b61059c565b6040516101b6919061285f565b60405180910390f35b3480156101ca575f80fd5b506101d36105b9565b6040516101e09190612887565b60405180910390f35b3480156101f4575f80fd5b506101fd6105bf565b60405161020a9190612887565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906128a0565b6105e2565b604051610246919061285f565b60405180910390f35b34801561025a575f80fd5b506102636106b6565b6040516102709190612887565b60405180910390f35b348015610284575f80fd5b5061028d6106bc565b60405161029a919061290b565b60405180910390f35b3480156102ae575f80fd5b506102c960048036038101906102c49190612924565b6106c4565b6040516102d6919061285f565b60405180910390f35b3480156102ea575f80fd5b506102f3610716565b005b348015610300575f80fd5b5061031b60048036038101906103169190612a8f565b6107ae565b005b348015610328575f80fd5b50610343600480360381019061033e9190612924565b6108cd565b6040516103509190612887565b60405180910390f35b348015610364575f80fd5b5061036d610913565b005b34801561037a575f80fd5b5061039560048036038101906103909190612ad6565b610a61565b005b3480156103a2575f80fd5b506103ab610b6e565b005b3480156103b8575f80fd5b506103c1610c82565b6040516103ce9190612887565b60405180910390f35b3480156103e2575f80fd5b506103eb610c88565b6040516103f89190612b23565b60405180910390f35b34801561040c575f80fd5b50610415610caf565b6040516104229190612887565b60405180910390f35b348015610436575f80fd5b5061043f610cb5565b60405161044c9190612749565b60405180910390f35b348015610460575f80fd5b5061047b60048036038101906104769190612807565b610cf2565b604051610488919061285f565b60405180910390f35b34801561049c575f80fd5b506104a5610d0f565b6040516104b29190612887565b60405180910390f35b3480156104c6575f80fd5b506104cf610d15565b6040516104dc919061285f565b60405180910390f35b3480156104f0575f80fd5b506104f9610d27565b005b348015610506575f80fd5b50610521600480360381019061051c9190612807565b611246565b005b34801561052e575f80fd5b5061054960048036038101906105449190612b3c565b6114cc565b6040516105569190612887565b60405180910390f35b60606040518060400160405280600581526020017f5361646765000000000000000000000000000000000000000000000000000000815250905090565b5f6105af6105a861154e565b8484611555565b6001905092915050565b60125481565b5f6012600a6105ce9190612cd6565b633b9aca006105dd9190612d20565b905090565b5f6105ee848484611718565b6106ab846105fa61154e565b6106a6856040518060600160405280602881526020016138496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065d61154e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121979092919063ffffffff16565b611555565b600190509392505050565b600e5481565b5f6012905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661075761154e565b73ffffffffffffffffffffffffffffffffffffffff1614610776575f80fd5b5f610780306108cd565b90505f81111561079457610793816121f9565b5b5f4790505f8111156107aa576107a981612480565b5b5050565b6107b661154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612dab565b60405180910390fd5b5f5b81518110156108c957600160045f84848151811061086557610864612dc9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610844565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61091b61154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612dab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a6961154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90612dab565b60405180910390fd5b601e8211158015610b075750601e8111155b8015610b1d575060148054906101000a900460ff165b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390612e40565b60405180910390fd5b8160098190555080600a819055505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610baf61154e565b73ffffffffffffffffffffffffffffffffffffffff1614610bce575f80fd5b6012600a610bdc9190612cd6565b633b9aca00610beb9190612d20565b600f819055506012600a610bff9190612cd6565b633b9aca00610c0e9190612d20565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610c5c9190612cd6565b633b9aca00610c6b9190612d20565b604051610c789190612887565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f5341444745000000000000000000000000000000000000000000000000000000815250905090565b5f610d05610cfe61154e565b8484611718565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610d2f61154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612dab565b60405180910390fd5b60148054906101000a900460ff1615610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612ea8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ea53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610e919190612cd6565b633b9aca00610ea09190612d20565b611555565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f339190612eda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdd9190612eda565b6040518363ffffffff1660e01b8152600401610ffa929190612f05565b6020604051808303815f875af1158015611016573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a9190612eda565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110c1306108cd565b5f806110cb610c88565b426040518863ffffffff1660e01b81526004016110ed96959493929190612f6e565b60606040518083038185885af1158015611109573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061112e9190612fe1565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111ce929190613031565b6020604051808303815f875af11580156111ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120e9190613082565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661128761154e565b73ffffffffffffffffffffffffffffffffffffffff16146112a6575f80fd5b6012600a6112b49190612cd6565b816112bf9190612d20565b905060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115611341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611338906130f7565b60405180910390fd5b6113918160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114228160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114c09190612887565b60405180910390a35050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90613185565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613213565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161170b9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d906132a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb9061332f565b60405180910390fd5b5f8111611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d906133bd565b60405180910390fd5b5f61183f610c88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118ad575061187d610c88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ee75760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611950575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611958575f80fd5b60065f9054906101000a900460ff1615611ade5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a16575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611add574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a919061344b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b87575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bda575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cb357600f54821115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b906134b3565b60405180910390fd5b60105482611c31856108cd565b611c3b91906134d1565b1115611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c739061354e565b60405180910390fd5b600d54600e541015611c9b57611c918361258f565b15611c9a575f80fd5b5b600e5f815480929190611cad9061356c565b91905055505b611cef6064611ce1600b54600e5411611cce57600754611cd2565b6009545b856125a090919063ffffffff16565b61261790919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d7957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e0257600f54821115611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba906134b3565b60405180910390fd5b611dff6064611df1600c54600e5411611dde57600854611de2565b600a545b856125a090919063ffffffff16565b61261790919063ffffffff16565b90505b5f611e0c306108cd565b9050601460159054906101000a900460ff16158015611e77575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e8f5750601460169054906101000a900460ff165b8015611e9c575060115481115b8015611eab5750600d54600e54115b15611ee557611ecd611ec884611ec384601254612660565b612660565b6121f9565b5f4790505f811115611ee357611ee247612480565b5b505b505b5f811115611fe657611f3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fdd9190612887565b60405180910390a35b6120368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120d961208d82846124e990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61217c84866124e990919063ffffffff16565b6040516121899190612887565b60405180910390a350505050565b5f8383111582906121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d59190612749565b60405180910390fd5b505f83856121ec91906135b3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156124635760148054906101000a900460ff1615612463575f600267ffffffffffffffff81111561224b5761224a612953565b5b6040519080825280602002602001820160405280156122795781602001602082028036833780820191505090505b50905030815f815181106122905761228f612dc9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123589190612eda565b8160018151811061236c5761236b612dc9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123d23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611555565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161243495949392919061369d565b5f604051808303815f87803b15801561244b575f80fd5b505af115801561245d573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124e5573d5f803e3d5ffd5b5050565b5f61252a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612197565b905092915050565b5f80828461254091906134d1565b905083811015612585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257c9061373f565b60405180910390fd5b8091505092915050565b5f80823b90505f8111915050919050565b5f8083036125b0575f9050612611565b5f82846125bd9190612d20565b90508284826125cc919061378a565b1461260c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126039061382a565b60405180910390fd5b809150505b92915050565b5f61265883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612678565b905092915050565b5f81831161266e5782612670565b815b905092915050565b5f80831182906126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b59190612749565b60405180910390fd5b505f83856126cc919061378a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61271b826126d9565b61272581856126e3565b93506127358185602086016126f3565b61273e81612701565b840191505092915050565b5f6020820190508181035f8301526127618184612711565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127a38261277a565b9050919050565b6127b381612799565b81146127bd575f80fd5b50565b5f813590506127ce816127aa565b92915050565b5f819050919050565b6127e6816127d4565b81146127f0575f80fd5b50565b5f81359050612801816127dd565b92915050565b5f806040838503121561281d5761281c612772565b5b5f61282a858286016127c0565b925050602061283b858286016127f3565b9150509250929050565b5f8115159050919050565b61285981612845565b82525050565b5f6020820190506128725f830184612850565b92915050565b612881816127d4565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b6612772565b5b5f6128c4868287016127c0565b93505060206128d5868287016127c0565b92505060406128e6868287016127f3565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b5f6020828403121561293957612938612772565b5b5f612946848285016127c0565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61298982612701565b810181811067ffffffffffffffff821117156129a8576129a7612953565b5b80604052505050565b5f6129ba612769565b90506129c68282612980565b919050565b5f67ffffffffffffffff8211156129e5576129e4612953565b5b602082029050602081019050919050565b5f80fd5b5f612a0c612a07846129cb565b6129b1565b90508083825260208201905060208402830185811115612a2f57612a2e6129f6565b5b835b81811015612a585780612a4488826127c0565b845260208401935050602081019050612a31565b5050509392505050565b5f82601f830112612a7657612a7561294f565b5b8135612a868482602086016129fa565b91505092915050565b5f60208284031215612aa457612aa3612772565b5b5f82013567ffffffffffffffff811115612ac157612ac0612776565b5b612acd84828501612a62565b91505092915050565b5f8060408385031215612aec57612aeb612772565b5b5f612af9858286016127f3565b9250506020612b0a858286016127f3565b9150509250929050565b612b1d81612799565b82525050565b5f602082019050612b365f830184612b14565b92915050565b5f8060408385031215612b5257612b51612772565b5b5f612b5f858286016127c0565b9250506020612b70858286016127c0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bfc57808604811115612bd857612bd7612b7a565b5b6001851615612be75780820291505b8081029050612bf585612ba7565b9450612bbc565b94509492505050565b5f82612c145760019050612ccf565b81612c21575f9050612ccf565b8160018114612c375760028114612c4157612c70565b6001915050612ccf565b60ff841115612c5357612c52612b7a565b5b8360020a915084821115612c6a57612c69612b7a565b5b50612ccf565b5060208310610133831016604e8410600b8410161715612ca55782820a905083811115612ca057612c9f612b7a565b5b612ccf565b612cb28484846001612bb3565b92509050818404811115612cc957612cc8612b7a565b5b81810290505b9392505050565b5f612ce0826127d4565b9150612ceb836128f0565b9250612d187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c05565b905092915050565b5f612d2a826127d4565b9150612d35836127d4565b9250828202612d43816127d4565b91508282048414831517612d5a57612d59612b7a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d956020836126e3565b9150612da082612d61565b602082019050919050565b5f6020820190508181035f830152612dc281612d89565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f612e2a600b836126e3565b9150612e3582612df6565b602082019050919050565b5f6020820190508181035f830152612e5781612e1e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e926017836126e3565b9150612e9d82612e5e565b602082019050919050565b5f6020820190508181035f830152612ebf81612e86565b9050919050565b5f81519050612ed4816127aa565b92915050565b5f60208284031215612eef57612eee612772565b5b5f612efc84828501612ec6565b91505092915050565b5f604082019050612f185f830185612b14565b612f256020830184612b14565b9392505050565b5f819050919050565b5f819050919050565b5f612f58612f53612f4e84612f2c565b612f35565b6127d4565b9050919050565b612f6881612f3e565b82525050565b5f60c082019050612f815f830189612b14565b612f8e6020830188612878565b612f9b6040830187612f5f565b612fa86060830186612f5f565b612fb56080830185612b14565b612fc260a0830184612878565b979650505050505050565b5f81519050612fdb816127dd565b92915050565b5f805f60608486031215612ff857612ff7612772565b5b5f61300586828701612fcd565b935050602061301686828701612fcd565b925050604061302786828701612fcd565b9150509250925092565b5f6040820190506130445f830185612b14565b6130516020830184612878565b9392505050565b61306181612845565b811461306b575f80fd5b50565b5f8151905061307c81613058565b92915050565b5f6020828403121561309757613096612772565b5b5f6130a48482850161306e565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6130e16014836126e3565b91506130ec826130ad565b602082019050919050565b5f6020820190508181035f83015261310e816130d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316f6024836126e3565b915061317a82613115565b604082019050919050565b5f6020820190508181035f83015261319c81613163565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131fd6022836126e3565b9150613208826131a3565b604082019050919050565b5f6020820190508181035f83015261322a816131f1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61328b6025836126e3565b915061329682613231565b604082019050919050565b5f6020820190508181035f8301526132b88161327f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133196023836126e3565b9150613324826132bf565b604082019050919050565b5f6020820190508181035f8301526133468161330d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133a76029836126e3565b91506133b28261334d565b604082019050919050565b5f6020820190508181035f8301526133d48161339b565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6134356024836126e3565b9150613440826133db565b604082019050919050565b5f6020820190508181035f83015261346281613429565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61349d6019836126e3565b91506134a882613469565b602082019050919050565b5f6020820190508181035f8301526134ca81613491565b9050919050565b5f6134db826127d4565b91506134e6836127d4565b92508282019050808211156134fe576134fd612b7a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613538601a836126e3565b915061354382613504565b602082019050919050565b5f6020820190508181035f8301526135658161352c565b9050919050565b5f613576826127d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135a8576135a7612b7a565b5b600182019050919050565b5f6135bd826127d4565b91506135c8836127d4565b92508282039050818111156135e0576135df612b7a565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61361881612799565b82525050565b5f613629838361360f565b60208301905092915050565b5f602082019050919050565b5f61364b826135e6565b61365581856135f0565b935061366083613600565b805f5b83811015613690578151613677888261361e565b975061368283613635565b925050600181019050613663565b5085935050505092915050565b5f60a0820190506136b05f830188612878565b6136bd6020830187612f5f565b81810360408301526136cf8186613641565b90506136de6060830185612b14565b6136eb6080830184612878565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613729601b836126e3565b9150613734826136f5565b602082019050919050565b5f6020820190508181035f8301526137568161371d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613794826127d4565b915061379f836127d4565b9250826137af576137ae61375d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138146021836126e3565b915061381f826137ba565b604082019050919050565b5f6020820190508181035f83015261384181613808565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122020207fe831d647c8a4593605ac2702af6662e23555e4e77f08b6ababf3ef340c64736f6c63430008190033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c806372333356116100b5578063a9059cbb1161006e578063a9059cbb14610455578063bf474bed14610491578063c876d0b9146104bb578063c9567bf9146104e5578063cc964471146104fb578063dd62ed3e1461052357610155565b8063723333561461036f578063751039fc146103975780637d1db4a5146103ad5780638da5cb5b146103d75780638f9a55c01461040157806395d89b411461042b57610155565b8063313ce56711610107578063313ce567146102795780633bbac579146102a357806351bc3c85146102df5780636de7bcbd146102f557806370a082311461031d578063715018a61461035957610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd1461021357806327b1a8e91461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d61055f565b60405161017a9190612749565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612807565b61059c565b6040516101b6919061285f565b60405180910390f35b3480156101ca575f80fd5b506101d36105b9565b6040516101e09190612887565b60405180910390f35b3480156101f4575f80fd5b506101fd6105bf565b60405161020a9190612887565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906128a0565b6105e2565b604051610246919061285f565b60405180910390f35b34801561025a575f80fd5b506102636106b6565b6040516102709190612887565b60405180910390f35b348015610284575f80fd5b5061028d6106bc565b60405161029a919061290b565b60405180910390f35b3480156102ae575f80fd5b506102c960048036038101906102c49190612924565b6106c4565b6040516102d6919061285f565b60405180910390f35b3480156102ea575f80fd5b506102f3610716565b005b348015610300575f80fd5b5061031b60048036038101906103169190612a8f565b6107ae565b005b348015610328575f80fd5b50610343600480360381019061033e9190612924565b6108cd565b6040516103509190612887565b60405180910390f35b348015610364575f80fd5b5061036d610913565b005b34801561037a575f80fd5b5061039560048036038101906103909190612ad6565b610a61565b005b3480156103a2575f80fd5b506103ab610b6e565b005b3480156103b8575f80fd5b506103c1610c82565b6040516103ce9190612887565b60405180910390f35b3480156103e2575f80fd5b506103eb610c88565b6040516103f89190612b23565b60405180910390f35b34801561040c575f80fd5b50610415610caf565b6040516104229190612887565b60405180910390f35b348015610436575f80fd5b5061043f610cb5565b60405161044c9190612749565b60405180910390f35b348015610460575f80fd5b5061047b60048036038101906104769190612807565b610cf2565b604051610488919061285f565b60405180910390f35b34801561049c575f80fd5b506104a5610d0f565b6040516104b29190612887565b60405180910390f35b3480156104c6575f80fd5b506104cf610d15565b6040516104dc919061285f565b60405180910390f35b3480156104f0575f80fd5b506104f9610d27565b005b348015610506575f80fd5b50610521600480360381019061051c9190612807565b611246565b005b34801561052e575f80fd5b5061054960048036038101906105449190612b3c565b6114cc565b6040516105569190612887565b60405180910390f35b60606040518060400160405280600581526020017f5361646765000000000000000000000000000000000000000000000000000000815250905090565b5f6105af6105a861154e565b8484611555565b6001905092915050565b60125481565b5f6012600a6105ce9190612cd6565b633b9aca006105dd9190612d20565b905090565b5f6105ee848484611718565b6106ab846105fa61154e565b6106a6856040518060600160405280602881526020016138496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065d61154e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121979092919063ffffffff16565b611555565b600190509392505050565b600e5481565b5f6012905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661075761154e565b73ffffffffffffffffffffffffffffffffffffffff1614610776575f80fd5b5f610780306108cd565b90505f81111561079457610793816121f9565b5b5f4790505f8111156107aa576107a981612480565b5b5050565b6107b661154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612dab565b60405180910390fd5b5f5b81518110156108c957600160045f84848151811061086557610864612dc9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610844565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61091b61154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612dab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a6961154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90612dab565b60405180910390fd5b601e8211158015610b075750601e8111155b8015610b1d575060148054906101000a900460ff165b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390612e40565b60405180910390fd5b8160098190555080600a819055505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610baf61154e565b73ffffffffffffffffffffffffffffffffffffffff1614610bce575f80fd5b6012600a610bdc9190612cd6565b633b9aca00610beb9190612d20565b600f819055506012600a610bff9190612cd6565b633b9aca00610c0e9190612d20565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610c5c9190612cd6565b633b9aca00610c6b9190612d20565b604051610c789190612887565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f5341444745000000000000000000000000000000000000000000000000000000815250905090565b5f610d05610cfe61154e565b8484611718565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610d2f61154e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612dab565b60405180910390fd5b60148054906101000a900460ff1615610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612ea8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ea53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610e919190612cd6565b633b9aca00610ea09190612d20565b611555565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f339190612eda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdd9190612eda565b6040518363ffffffff1660e01b8152600401610ffa929190612f05565b6020604051808303815f875af1158015611016573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a9190612eda565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110c1306108cd565b5f806110cb610c88565b426040518863ffffffff1660e01b81526004016110ed96959493929190612f6e565b60606040518083038185885af1158015611109573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061112e9190612fe1565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111ce929190613031565b6020604051808303815f875af11580156111ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120e9190613082565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661128761154e565b73ffffffffffffffffffffffffffffffffffffffff16146112a6575f80fd5b6012600a6112b49190612cd6565b816112bf9190612d20565b905060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115611341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611338906130f7565b60405180910390fd5b6113918160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114228160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114c09190612887565b60405180910390a35050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90613185565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613213565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161170b9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d906132a1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb9061332f565b60405180910390fd5b5f8111611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d906133bd565b60405180910390fd5b5f61183f610c88565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118ad575061187d610c88565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ee75760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611950575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611958575f80fd5b60065f9054906101000a900460ff1615611ade5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a16575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611add574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a919061344b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b87575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bda575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cb357600f54821115611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b906134b3565b60405180910390fd5b60105482611c31856108cd565b611c3b91906134d1565b1115611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c739061354e565b60405180910390fd5b600d54600e541015611c9b57611c918361258f565b15611c9a575f80fd5b5b600e5f815480929190611cad9061356c565b91905055505b611cef6064611ce1600b54600e5411611cce57600754611cd2565b6009545b856125a090919063ffffffff16565b61261790919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d7957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e0257600f54821115611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba906134b3565b60405180910390fd5b611dff6064611df1600c54600e5411611dde57600854611de2565b600a545b856125a090919063ffffffff16565b61261790919063ffffffff16565b90505b5f611e0c306108cd565b9050601460159054906101000a900460ff16158015611e77575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e8f5750601460169054906101000a900460ff165b8015611e9c575060115481115b8015611eab5750600d54600e54115b15611ee557611ecd611ec884611ec384601254612660565b612660565b6121f9565b5f4790505f811115611ee357611ee247612480565b5b505b505b5f811115611fe657611f3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fdd9190612887565b60405180910390a35b6120368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124e990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120d961208d82846124e990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461253290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61217c84866124e990919063ffffffff16565b6040516121899190612887565b60405180910390a350505050565b5f8383111582906121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d59190612749565b60405180910390fd5b505f83856121ec91906135b3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156124635760148054906101000a900460ff1615612463575f600267ffffffffffffffff81111561224b5761224a612953565b5b6040519080825280602002602001820160405280156122795781602001602082028036833780820191505090505b50905030815f815181106122905761228f612dc9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123589190612eda565b8160018151811061236c5761236b612dc9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123d23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611555565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161243495949392919061369d565b5f604051808303815f87803b15801561244b575f80fd5b505af115801561245d573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124e5573d5f803e3d5ffd5b5050565b5f61252a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612197565b905092915050565b5f80828461254091906134d1565b905083811015612585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257c9061373f565b60405180910390fd5b8091505092915050565b5f80823b90505f8111915050919050565b5f8083036125b0575f9050612611565b5f82846125bd9190612d20565b90508284826125cc919061378a565b1461260c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126039061382a565b60405180910390fd5b809150505b92915050565b5f61265883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612678565b905092915050565b5f81831161266e5782612670565b815b905092915050565b5f80831182906126be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b59190612749565b60405180910390fd5b505f83856126cc919061378a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61271b826126d9565b61272581856126e3565b93506127358185602086016126f3565b61273e81612701565b840191505092915050565b5f6020820190508181035f8301526127618184612711565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127a38261277a565b9050919050565b6127b381612799565b81146127bd575f80fd5b50565b5f813590506127ce816127aa565b92915050565b5f819050919050565b6127e6816127d4565b81146127f0575f80fd5b50565b5f81359050612801816127dd565b92915050565b5f806040838503121561281d5761281c612772565b5b5f61282a858286016127c0565b925050602061283b858286016127f3565b9150509250929050565b5f8115159050919050565b61285981612845565b82525050565b5f6020820190506128725f830184612850565b92915050565b612881816127d4565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b6612772565b5b5f6128c4868287016127c0565b93505060206128d5868287016127c0565b92505060406128e6868287016127f3565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b5f6020828403121561293957612938612772565b5b5f612946848285016127c0565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61298982612701565b810181811067ffffffffffffffff821117156129a8576129a7612953565b5b80604052505050565b5f6129ba612769565b90506129c68282612980565b919050565b5f67ffffffffffffffff8211156129e5576129e4612953565b5b602082029050602081019050919050565b5f80fd5b5f612a0c612a07846129cb565b6129b1565b90508083825260208201905060208402830185811115612a2f57612a2e6129f6565b5b835b81811015612a585780612a4488826127c0565b845260208401935050602081019050612a31565b5050509392505050565b5f82601f830112612a7657612a7561294f565b5b8135612a868482602086016129fa565b91505092915050565b5f60208284031215612aa457612aa3612772565b5b5f82013567ffffffffffffffff811115612ac157612ac0612776565b5b612acd84828501612a62565b91505092915050565b5f8060408385031215612aec57612aeb612772565b5b5f612af9858286016127f3565b9250506020612b0a858286016127f3565b9150509250929050565b612b1d81612799565b82525050565b5f602082019050612b365f830184612b14565b92915050565b5f8060408385031215612b5257612b51612772565b5b5f612b5f858286016127c0565b9250506020612b70858286016127c0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bfc57808604811115612bd857612bd7612b7a565b5b6001851615612be75780820291505b8081029050612bf585612ba7565b9450612bbc565b94509492505050565b5f82612c145760019050612ccf565b81612c21575f9050612ccf565b8160018114612c375760028114612c4157612c70565b6001915050612ccf565b60ff841115612c5357612c52612b7a565b5b8360020a915084821115612c6a57612c69612b7a565b5b50612ccf565b5060208310610133831016604e8410600b8410161715612ca55782820a905083811115612ca057612c9f612b7a565b5b612ccf565b612cb28484846001612bb3565b92509050818404811115612cc957612cc8612b7a565b5b81810290505b9392505050565b5f612ce0826127d4565b9150612ceb836128f0565b9250612d187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c05565b905092915050565b5f612d2a826127d4565b9150612d35836127d4565b9250828202612d43816127d4565b91508282048414831517612d5a57612d59612b7a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d956020836126e3565b9150612da082612d61565b602082019050919050565b5f6020820190508181035f830152612dc281612d89565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f612e2a600b836126e3565b9150612e3582612df6565b602082019050919050565b5f6020820190508181035f830152612e5781612e1e565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e926017836126e3565b9150612e9d82612e5e565b602082019050919050565b5f6020820190508181035f830152612ebf81612e86565b9050919050565b5f81519050612ed4816127aa565b92915050565b5f60208284031215612eef57612eee612772565b5b5f612efc84828501612ec6565b91505092915050565b5f604082019050612f185f830185612b14565b612f256020830184612b14565b9392505050565b5f819050919050565b5f819050919050565b5f612f58612f53612f4e84612f2c565b612f35565b6127d4565b9050919050565b612f6881612f3e565b82525050565b5f60c082019050612f815f830189612b14565b612f8e6020830188612878565b612f9b6040830187612f5f565b612fa86060830186612f5f565b612fb56080830185612b14565b612fc260a0830184612878565b979650505050505050565b5f81519050612fdb816127dd565b92915050565b5f805f60608486031215612ff857612ff7612772565b5b5f61300586828701612fcd565b935050602061301686828701612fcd565b925050604061302786828701612fcd565b9150509250925092565b5f6040820190506130445f830185612b14565b6130516020830184612878565b9392505050565b61306181612845565b811461306b575f80fd5b50565b5f8151905061307c81613058565b92915050565b5f6020828403121561309757613096612772565b5b5f6130a48482850161306e565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6130e16014836126e3565b91506130ec826130ad565b602082019050919050565b5f6020820190508181035f83015261310e816130d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316f6024836126e3565b915061317a82613115565b604082019050919050565b5f6020820190508181035f83015261319c81613163565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131fd6022836126e3565b9150613208826131a3565b604082019050919050565b5f6020820190508181035f83015261322a816131f1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61328b6025836126e3565b915061329682613231565b604082019050919050565b5f6020820190508181035f8301526132b88161327f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133196023836126e3565b9150613324826132bf565b604082019050919050565b5f6020820190508181035f8301526133468161330d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133a76029836126e3565b91506133b28261334d565b604082019050919050565b5f6020820190508181035f8301526133d48161339b565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6134356024836126e3565b9150613440826133db565b604082019050919050565b5f6020820190508181035f83015261346281613429565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61349d6019836126e3565b91506134a882613469565b602082019050919050565b5f6020820190508181035f8301526134ca81613491565b9050919050565b5f6134db826127d4565b91506134e6836127d4565b92508282019050808211156134fe576134fd612b7a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613538601a836126e3565b915061354382613504565b602082019050919050565b5f6020820190508181035f8301526135658161352c565b9050919050565b5f613576826127d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135a8576135a7612b7a565b5b600182019050919050565b5f6135bd826127d4565b91506135c8836127d4565b92508282039050818111156135e0576135df612b7a565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61361881612799565b82525050565b5f613629838361360f565b60208301905092915050565b5f602082019050919050565b5f61364b826135e6565b61365581856135f0565b935061366083613600565b805f5b83811015613690578151613677888261361e565b975061368283613635565b925050600181019050613663565b5085935050505092915050565b5f60a0820190506136b05f830188612878565b6136bd6020830187612f5f565b81810360408301526136cf8186613641565b90506136de6060830185612b14565b6136eb6080830184612878565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613729601b836126e3565b9150613734826136f5565b602082019050919050565b5f6020820190508181035f8301526137568161371d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613794826127d4565b915061379f836127d4565b9250826137af576137ae61375d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138146021836126e3565b915061381f826137ba565b604082019050919050565b5f6020820190508181035f83015261384181613808565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122020207fe831d647c8a4593605ac2702af6662e23555e4e77f08b6ababf3ef340c64736f6c63430008190033

Deployed Bytecode Sourcemap

3991:13253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9689:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8484:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9966:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10693:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6451:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14863;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16154:348;;;;;;;;;;;;;:::i;:::-;;14954:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10071:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3068:148;;;;;;;;;;;;;:::i;:::-;;16931:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14524:231;;;;;;;;;;;;;:::i;:::-;;6964:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2854:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7481:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9780:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10198:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7915:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4383:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15131:773;;;;;;;;;;;;;:::i;:::-;;16510:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10373:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9689:83;9726:13;9759:5;;;;;;;;;;;;;;;;;9752:12;;9689:83;:::o;10524:161::-;10599:4;10616:39;10625:12;:10;:12::i;:::-;10639:7;10648:6;10616:8;:39::i;:::-;10673:4;10666:11;;10524:161;;;;:::o;8484:52::-;;;;:::o;9966:95::-;10019:7;6750:2;6807;:13;;;;:::i;:::-;6794:10;:26;;;;:::i;:::-;10039:14;;9966:95;:::o;10693:313::-;10791:4;10808:36;10818:6;10826:9;10837:6;10808:9;:36::i;:::-;10855:121;10864:6;10872:12;:10;:12::i;:::-;10886:89;10924:6;10886:89;;;;;;;;;;;;;;;;;:11;:19;10898:6;10886:19;;;;;;;;;;;;;;;:33;10906:12;:10;:12::i;:::-;10886:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10855:8;:121::i;:::-;10994:4;10987:11;;10693:313;;;;;:::o;6451:26::-;;;;:::o;9875:83::-;9916:5;6750:2;9934:16;;9875:83;:::o;14863:::-;14910:4;14931;:7;14936:1;14931:7;;;;;;;;;;;;;;;;;;;;;;;;;14924:14;;14863:83;;;:::o;16154:348::-;16218:10;;;;;;;;;;;16204:24;;:12;:10;:12::i;:::-;:24;;;16196:33;;;;;;16240:20;16261:24;16279:4;16261:9;:24::i;:::-;16240:45;;16312:1;16299:12;:14;16296:73;;;16327:30;16344:12;16327:16;:30::i;:::-;16296:73;16379:18;16398:21;16379:40;;16444:1;16433:10;:12;16430:65;;;16459:24;16472:10;16459:12;:24::i;:::-;16430:65;16185:317;;16154:348::o;14954:169::-;2991:12;:10;:12::i;:::-;2981:22;;:6;;;;;;;;;;:22;;;2973:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15033:6:::1;15028:88;15049:5;:12;15045:1;:16;15028:88;;;15100:4;15083;:14;15088:5;15094:1;15088:8;;;;;;;;:::i;:::-;;;;;;;;15083:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15063:3;;;;;;;15028:88;;;;14954:169:::0;:::o;10071:119::-;10137:7;10164:9;:18;10174:7;10164:18;;;;;;;;;;;;;;;;10157:25;;10071:119;;;:::o;3068:148::-;2991:12;:10;:12::i;:::-;2981:22;;:6;;;;;;;;;;:22;;;2973:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3175:1:::1;3138:40;;3159:6;::::0;::::1;;;;;;;;3138:40;;;;;;;;;;;;3206:1;3189:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3068:148::o:0;16931:310::-;2991:12;:10;:12::i;:::-;2981:22;;:6;;;;;;;;;;:22;;;2973:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17082:2:::1;17068:10;:16;;:37;;;;;17103:2;17088:11;:17;;17068:37;:52;;;;;17109:11;::::0;::::1;;;;;;;;17068:52;17046:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;17185:10;17170:12;:25;;;;17222:11;17206:13;:27;;;;16931:310:::0;;:::o;14524:231::-;14590:10;;;;;;;;;;;14576:24;;:12;:10;:12::i;:::-;:24;;;14568:33;;;;;;6750:2;6807;:13;;;;:::i;:::-;6794:10;:26;;;;:::i;:::-;14612:12;:22;;;;6750:2;6807;:13;;;;:::i;:::-;6794:10;:26;;;;:::i;:::-;14645:14;:22;;;;14699:5;14678:20;;:26;;;;;;;;;;;;;;;;;;14720:27;6750:2;6807;:13;;;;:::i;:::-;6794:10;:26;;;;:::i;:::-;14720:27;;;;;;:::i;:::-;;;;;;;;14524:231::o;6964:56::-;;;;:::o;2854:79::-;2892:7;2919:6;;;;;;;;;;;2912:13;;2854:79;:::o;7481:56::-;;;;:::o;9780:87::-;9819:13;9852:7;;;;;;;;;;;;;;;;;9845:14;;9780:87;:::o;10198:167::-;10276:4;10293:42;10303:12;:10;:12::i;:::-;10317:9;10328:6;10293:9;:42::i;:::-;10353:4;10346:11;;10198:167;;;;:::o;7915:52::-;;;;:::o;4383:40::-;;;;;;;;;;;;;:::o;15131:773::-;2991:12;:10;:12::i;:::-;2981:22;;:6;;;;;;;;;;:22;;;2973:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:11:::1;::::0;::::1;;;;;;;;15289:12;15281:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15376:42;15339:15;;:80;;;;;;;;;;;;;;;;;;15437:58;15454:4;15469:15;;;;;;;;;;;6750:2;6807;:13;;;;:::i;:::-;6794:10;:26;;;;:::i;:::-;15437:8;:58::i;:::-;15540:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15522:55;;;15586:4;15593:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15522:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15506:13;;:110;;;;;;;;;;;;;;;;;;15627:15;;;;;;;;;;;:31;;;15666:21;15697:4;15703:24;15721:4;15703:9;:24::i;:::-;15728:1;15730::::0;15732:7:::1;:5;:7::i;:::-;15740:15;15627:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15774:13;;;;;;;;;;;15767:29;;;15805:15;;;;;;;;;;;15823:14;15767:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15863:4;15849:11;;:18;;;;;;;;;;;;;;;;;;15892:4;15878:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;15131:773::o:0;16510:413::-;16607:10;;;;;;;;;;;16593:24;;:12;:10;:12::i;:::-;:24;;;16585:33;;;;;;6750:2;16647;:13;;;;:::i;:::-;16638:6;:22;;;;:::i;:::-;16629:31;;16689:9;:24;16707:4;16689:24;;;;;;;;;;;;;;;;16679:6;:34;;16671:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16776:36;16805:6;16776:9;:24;16794:4;16776:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16749:9;:24;16767:4;16749:24;;;;;;;;;;;;;;;:63;;;;16839:25;16857:6;16839:9;:13;16849:2;16839:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;16823:9;:13;16833:2;16823:13;;;;;;;;;;;;;;;:41;;;;16904:2;16880:35;;16897:4;16880:35;;;16908:6;16880:35;;;;;;:::i;:::-;;;;;;;;16510:413;;:::o;10373:143::-;10454:7;10481:11;:18;10493:5;10481:18;;;;;;;;;;;;;;;:27;10500:7;10481:27;;;;;;;;;;;;;;;;10474:34;;10373:143;;;;:::o;607:98::-;660:7;687:10;680:17;;607:98;:::o;11014:335::-;11124:1;11107:19;;:5;:19;;;11099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11205:1;11186:21;;:7;:21;;;11178:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11287:6;11257:11;:18;11269:5;11257:18;;;;;;;;;;;;;;;:27;11276:7;11257:27;;;;;;;;;;;;;;;:36;;;;11325:7;11309:32;;11318:5;11309:32;;;11334:6;11309:32;;;;;;:::i;:::-;;;;;;;;11014:335;;;:::o;11359:2486::-;11463:1;11447:18;;:4;:18;;;11439:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11540:1;11526:16;;:2;:16;;;11518:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11610:1;11601:6;:10;11593:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11668:17;11710:7;:5;:7::i;:::-;11702:15;;:4;:15;;;;:32;;;;;11727:7;:5;:7::i;:::-;11721:13;;:2;:13;;;;11702:32;11698:1791;;;11760:4;:10;11765:4;11760:10;;;;;;;;;;;;;;;;;;;;;;;;;11759:11;:24;;;;;11775:4;:8;11780:2;11775:8;;;;;;;;;;;;;;;;;;;;;;;;;11774:9;11759:24;11751:33;;;;;;11805:20;;;;;;;;;;;11801:346;;;11864:15;;;;;;;;;;;11850:30;;:2;:30;;;;:62;;;;;11898:13;;;;;;;;;;;11884:28;;:2;:28;;;;11850:62;11846:286;;;11985:12;11943:28;:39;11972:9;11943:39;;;;;;;;;;;;;;;;:54;11935:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:12;12058:28;:39;12087:9;12058:39;;;;;;;;;;;;;;;:54;;;;11846:286;11801:346;12175:13;;;;;;;;;;;12167:21;;:4;:21;;;:55;;;;;12206:15;;;;;;;;;;;12192:30;;:2;:30;;;;12167:55;:83;;;;;12228:18;:22;12247:2;12228:22;;;;;;;;;;;;;;;;;;;;;;;;;12226:24;12167:83;12163:429;;;12290:12;;12280:6;:22;;12272:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12385:14;;12375:6;12359:13;12369:2;12359:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12351:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12462:19;;12452:9;;:29;12449:98;;;12512:14;12523:2;12512:10;:14::i;:::-;12511:15;12503:24;;;;;;12449:98;12565:9;;:11;;;;;;;;;:::i;:::-;;;;;;12163:429;12622:82;12700:3;12622:73;12644:15;;12634:9;;:25;12633:61;;12674:20;;12633:61;;;12661:12;;12633:61;12622:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;12610:94;;12728:13;;;;;;;;;;;12722:19;;:2;:19;;;:43;;;;;12760:4;12745:20;;:4;:20;;;;12722:43;12719:253;;;12804:12;;12794:6;:22;;12786:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12877:79;12952:3;12877:70;12899:16;;12889:9;;:26;12888:58;;12931:15;;12888:58;;;12917:13;;12888:58;12877:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;12865:91;;12719:253;12988:28;13019:24;13037:4;13019:9;:24::i;:::-;12988:55;;13063:6;;;;;;;;;;;13062:7;:30;;;;;13079:13;;;;;;;;;;;13073:19;;:2;:19;;;13062:30;:45;;;;;13096:11;;;;;;;;;;;13062:45;:87;;;;;13132:17;;13111:20;:38;13062:87;:120;;;;;13163:19;;13153:9;;:29;13062:120;13058:420;;;13203:67;13220:49;13224:6;13231:37;13235:20;13256:11;;13231:3;:37::i;:::-;13220:3;:49::i;:::-;13203:16;:67::i;:::-;13289:26;13318:21;13289:50;;13382:1;13361:18;:22;13358:105;;;13408:35;13421:21;13408:12;:35::i;:::-;13358:105;13184:294;13058:420;11736:1753;11698:1791;13514:1;13504:9;:11;13501:161;;;13554:39;13583:9;13554;:24;13572:4;13554:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13529:9;:24;13547:4;13529:24;;;;;;;;;;;;;;;:64;;;;13634:4;13611:39;;13620:4;13611:39;;;13640:9;13611:39;;;;;;:::i;:::-;;;;;;;;13501:161;13688:27;13708:6;13688:9;:15;13698:4;13688:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13672:9;:15;13682:4;13672:15;;;;;;;;;;;;;;;:43;;;;13740:40;13758:21;13769:9;13758:6;:10;;:21;;;;:::i;:::-;13740:9;:13;13750:2;13740:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13726:9;:13;13736:2;13726:13;;;;;;;;;;;;;;;:54;;;;13811:2;13796:41;;13805:4;13796:41;;;13815:21;13826:9;13815:6;:10;;:21;;;;:::i;:::-;13796:41;;;;;;:::i;:::-;;;;;;;;11428:2417;11359:2486;;;:::o;1744:190::-;1830:7;1863:1;1858;:6;;1866:12;1850:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1890:9;1906:1;1902;:5;;;;:::i;:::-;1890:17;;1925:1;1918:8;;;1744:190;;;;;:::o;13961:555::-;9305:4;9296:6;;:13;;;;;;;;;;;;;;;;;;14055:1:::1;14042:11;:14:::0;14039:27;14058:7:::1;14039:27;14080:11;::::0;::::1;;;;;;;;14076:25:::0;14093:7:::1;14076:25;14111:21;14149:1;14135:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14111:40;;14180:4;14162;14167:1;14162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14206:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14196:4;14201:1;14196:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14239:62;14256:4;14271:15;;;;;;;;;;;14289:11;14239:8;:62::i;:::-;14312:15;;;;;;;;;;;:66;;;14393:11;14419:1;14435:4;14462;14482:15;14312:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14028:488;9320:1;9341:5:::0;9332:6;;:14;;;;;;;;;;;;;;;;;;13961:555;:::o;14763:92::-;14820:10;;;;;;;;;;;:19;;:27;14840:6;14820:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14763:92;:::o;1600:136::-;1658:7;1685:43;1689:1;1692;1685:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1678:50;;1600:136;;;;:::o;1413:179::-;1471:7;1491:9;1507:1;1503;:5;;;;:::i;:::-;1491:17;;1532:1;1527;:6;;1519:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1583:1;1576:8;;;1413:179;;;;:::o;15951:195::-;16010:4;16027:12;16094:7;16082:20;16074:28;;16137:1;16130:4;:8;16123:15;;;15951:195;;;:::o;1942:246::-;2000:7;2029:1;2024;:6;2020:47;;2054:1;2047:8;;;;2020:47;2077:9;2093:1;2089;:5;;;;:::i;:::-;2077:17;;2122:1;2117;2113;:5;;;;:::i;:::-;:10;2105:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:1;2172:8;;;1942:246;;;;;:::o;2196:132::-;2254:7;2281:39;2285:1;2288;2281:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2274:46;;2196:132;;;;:::o;13855:98::-;13912:7;13939:1;13937;:3;13936:9;;13944:1;13936:9;;;13942:1;13936:9;13929:16;;13855:98;;;;:::o;2336:189::-;2422:7;2454:1;2450;:5;2457:12;2442:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2481:9;2497:1;2493;:5;;;;:::i;:::-;2481:17;;2516:1;2509:8;;;2336:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:117::-;5190:1;5187;5180:12;5204:180;5252:77;5249:1;5242:88;5349:4;5346:1;5339:15;5373:4;5370:1;5363:15;5390:281;5473:27;5495:4;5473:27;:::i;:::-;5465:6;5461:40;5603:6;5591:10;5588:22;5567:18;5555:10;5552:34;5549:62;5546:88;;;5614:18;;:::i;:::-;5546:88;5654:10;5650:2;5643:22;5433:238;5390:281;;:::o;5677:129::-;5711:6;5738:20;;:::i;:::-;5728:30;;5767:33;5795:4;5787:6;5767:33;:::i;:::-;5677:129;;;:::o;5812:311::-;5889:4;5979:18;5971:6;5968:30;5965:56;;;6001:18;;:::i;:::-;5965:56;6051:4;6043:6;6039:17;6031:25;;6111:4;6105;6101:15;6093:23;;5812:311;;;:::o;6129:117::-;6238:1;6235;6228:12;6269:710;6365:5;6390:81;6406:64;6463:6;6406:64;:::i;:::-;6390:81;:::i;:::-;6381:90;;6491:5;6520:6;6513:5;6506:21;6554:4;6547:5;6543:16;6536:23;;6607:4;6599:6;6595:17;6587:6;6583:30;6636:3;6628:6;6625:15;6622:122;;;6655:79;;:::i;:::-;6622:122;6770:6;6753:220;6787:6;6782:3;6779:15;6753:220;;;6862:3;6891:37;6924:3;6912:10;6891:37;:::i;:::-;6886:3;6879:50;6958:4;6953:3;6949:14;6942:21;;6829:144;6813:4;6808:3;6804:14;6797:21;;6753:220;;;6757:21;6371:608;;6269:710;;;;;:::o;7002:370::-;7073:5;7122:3;7115:4;7107:6;7103:17;7099:27;7089:122;;7130:79;;:::i;:::-;7089:122;7247:6;7234:20;7272:94;7362:3;7354:6;7347:4;7339:6;7335:17;7272:94;:::i;:::-;7263:103;;7079:293;7002:370;;;;:::o;7378:539::-;7462:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7665:1;7654:9;7650:17;7637:31;7695:18;7687:6;7684:30;7681:117;;;7717:79;;:::i;:::-;7681:117;7822:78;7892:7;7883:6;7872:9;7868:22;7822:78;:::i;:::-;7812:88;;7608:302;7378:539;;;;:::o;7923:474::-;7991:6;7999;8048:2;8036:9;8027:7;8023:23;8019:32;8016:119;;;8054:79;;:::i;:::-;8016:119;8174:1;8199:53;8244:7;8235:6;8224:9;8220:22;8199:53;:::i;:::-;8189:63;;8145:117;8301:2;8327:53;8372:7;8363:6;8352:9;8348:22;8327:53;:::i;:::-;8317:63;;8272:118;7923:474;;;;;:::o;8403:118::-;8490:24;8508:5;8490:24;:::i;:::-;8485:3;8478:37;8403:118;;:::o;8527:222::-;8620:4;8658:2;8647:9;8643:18;8635:26;;8671:71;8739:1;8728:9;8724:17;8715:6;8671:71;:::i;:::-;8527:222;;;;:::o;8755:474::-;8823:6;8831;8880:2;8868:9;8859:7;8855:23;8851:32;8848:119;;;8886:79;;:::i;:::-;8848:119;9006:1;9031:53;9076:7;9067:6;9056:9;9052:22;9031:53;:::i;:::-;9021:63;;8977:117;9133:2;9159:53;9204:7;9195:6;9184:9;9180:22;9159:53;:::i;:::-;9149:63;;9104:118;8755:474;;;;;:::o;9235:180::-;9283:77;9280:1;9273:88;9380:4;9377:1;9370:15;9404:4;9401:1;9394:15;9421:102;9463:8;9510:5;9507:1;9503:13;9482:34;;9421:102;;;:::o;9529:848::-;9590:5;9597:4;9621:6;9612:15;;9645:5;9636:14;;9659:712;9680:1;9670:8;9667:15;9659:712;;;9775:4;9770:3;9766:14;9760:4;9757:24;9754:50;;;9784:18;;:::i;:::-;9754:50;9834:1;9824:8;9820:16;9817:451;;;10249:4;10242:5;10238:16;10229:25;;9817:451;10299:4;10293;10289:15;10281:23;;10329:32;10352:8;10329:32;:::i;:::-;10317:44;;9659:712;;;9529:848;;;;;;;:::o;10383:1073::-;10437:5;10628:8;10618:40;;10649:1;10640:10;;10651:5;;10618:40;10677:4;10667:36;;10694:1;10685:10;;10696:5;;10667:36;10763:4;10811:1;10806:27;;;;10847:1;10842:191;;;;10756:277;;10806:27;10824:1;10815:10;;10826:5;;;10842:191;10887:3;10877:8;10874:17;10871:43;;;10894:18;;:::i;:::-;10871:43;10943:8;10940:1;10936:16;10927:25;;10978:3;10971:5;10968:14;10965:40;;;10985:18;;:::i;:::-;10965:40;11018:5;;;10756:277;;11142:2;11132:8;11129:16;11123:3;11117:4;11114:13;11110:36;11092:2;11082:8;11079:16;11074:2;11068:4;11065:12;11061:35;11045:111;11042:246;;;11198:8;11192:4;11188:19;11179:28;;11233:3;11226:5;11223:14;11220:40;;;11240:18;;:::i;:::-;11220:40;11273:5;;11042:246;11313:42;11351:3;11341:8;11335:4;11332:1;11313:42;:::i;:::-;11298:57;;;;11387:4;11382:3;11378:14;11371:5;11368:25;11365:51;;;11396:18;;:::i;:::-;11365:51;11445:4;11438:5;11434:16;11425:25;;10383:1073;;;;;;:::o;11462:281::-;11520:5;11544:23;11562:4;11544:23;:::i;:::-;11536:31;;11588:25;11604:8;11588:25;:::i;:::-;11576:37;;11632:104;11669:66;11659:8;11653:4;11632:104;:::i;:::-;11623:113;;11462:281;;;;:::o;11749:410::-;11789:7;11812:20;11830:1;11812:20;:::i;:::-;11807:25;;11846:20;11864:1;11846:20;:::i;:::-;11841:25;;11901:1;11898;11894:9;11923:30;11941:11;11923:30;:::i;:::-;11912:41;;12102:1;12093:7;12089:15;12086:1;12083:22;12063:1;12056:9;12036:83;12013:139;;12132:18;;:::i;:::-;12013:139;11797:362;11749:410;;;;:::o;12165:182::-;12305:34;12301:1;12293:6;12289:14;12282:58;12165:182;:::o;12353:366::-;12495:3;12516:67;12580:2;12575:3;12516:67;:::i;:::-;12509:74;;12592:93;12681:3;12592:93;:::i;:::-;12710:2;12705:3;12701:12;12694:19;;12353:366;;;:::o;12725:419::-;12891:4;12929:2;12918:9;12914:18;12906:26;;12978:9;12972:4;12968:20;12964:1;12953:9;12949:17;12942:47;13006:131;13132:4;13006:131;:::i;:::-;12998:139;;12725:419;;;:::o;13150:180::-;13198:77;13195:1;13188:88;13295:4;13292:1;13285:15;13319:4;13316:1;13309:15;13336:161;13476:13;13472:1;13464:6;13460:14;13453:37;13336:161;:::o;13503:366::-;13645:3;13666:67;13730:2;13725:3;13666:67;:::i;:::-;13659:74;;13742:93;13831:3;13742:93;:::i;:::-;13860:2;13855:3;13851:12;13844:19;;13503:366;;;:::o;13875:419::-;14041:4;14079:2;14068:9;14064:18;14056:26;;14128:9;14122:4;14118:20;14114:1;14103:9;14099:17;14092:47;14156:131;14282:4;14156:131;:::i;:::-;14148:139;;13875:419;;;:::o;14300:173::-;14440:25;14436:1;14428:6;14424:14;14417:49;14300:173;:::o;14479:366::-;14621:3;14642:67;14706:2;14701:3;14642:67;:::i;:::-;14635:74;;14718:93;14807:3;14718:93;:::i;:::-;14836:2;14831:3;14827:12;14820:19;;14479:366;;;:::o;14851:419::-;15017:4;15055:2;15044:9;15040:18;15032:26;;15104:9;15098:4;15094:20;15090:1;15079:9;15075:17;15068:47;15132:131;15258:4;15132:131;:::i;:::-;15124:139;;14851:419;;;:::o;15276:143::-;15333:5;15364:6;15358:13;15349:22;;15380:33;15407:5;15380:33;:::i;:::-;15276:143;;;;:::o;15425:351::-;15495:6;15544:2;15532:9;15523:7;15519:23;15515:32;15512:119;;;15550:79;;:::i;:::-;15512:119;15670:1;15695:64;15751:7;15742:6;15731:9;15727:22;15695:64;:::i;:::-;15685:74;;15641:128;15425:351;;;;:::o;15782:332::-;15903:4;15941:2;15930:9;15926:18;15918:26;;15954:71;16022:1;16011:9;16007:17;15998:6;15954:71;:::i;:::-;16035:72;16103:2;16092:9;16088:18;16079:6;16035:72;:::i;:::-;15782:332;;;;;:::o;16120:85::-;16165:7;16194:5;16183:16;;16120:85;;;:::o;16211:60::-;16239:3;16260:5;16253:12;;16211:60;;;:::o;16277:158::-;16335:9;16368:61;16386:42;16395:32;16421:5;16395:32;:::i;:::-;16386:42;:::i;:::-;16368:61;:::i;:::-;16355:74;;16277:158;;;:::o;16441:147::-;16536:45;16575:5;16536:45;:::i;:::-;16531:3;16524:58;16441:147;;:::o;16594:807::-;16843:4;16881:3;16870:9;16866:19;16858:27;;16895:71;16963:1;16952:9;16948:17;16939:6;16895:71;:::i;:::-;16976:72;17044:2;17033:9;17029:18;17020:6;16976:72;:::i;:::-;17058:80;17134:2;17123:9;17119:18;17110:6;17058:80;:::i;:::-;17148;17224:2;17213:9;17209:18;17200:6;17148:80;:::i;:::-;17238:73;17306:3;17295:9;17291:19;17282:6;17238:73;:::i;:::-;17321;17389:3;17378:9;17374:19;17365:6;17321:73;:::i;:::-;16594:807;;;;;;;;;:::o;17407:143::-;17464:5;17495:6;17489:13;17480:22;;17511:33;17538:5;17511:33;:::i;:::-;17407:143;;;;:::o;17556:663::-;17644:6;17652;17660;17709:2;17697:9;17688:7;17684:23;17680:32;17677:119;;;17715:79;;:::i;:::-;17677:119;17835:1;17860:64;17916:7;17907:6;17896:9;17892:22;17860:64;:::i;:::-;17850:74;;17806:128;17973:2;17999:64;18055:7;18046:6;18035:9;18031:22;17999:64;:::i;:::-;17989:74;;17944:129;18112:2;18138:64;18194:7;18185:6;18174:9;18170:22;18138:64;:::i;:::-;18128:74;;18083:129;17556:663;;;;;:::o;18225:332::-;18346:4;18384:2;18373:9;18369:18;18361:26;;18397:71;18465:1;18454:9;18450:17;18441:6;18397:71;:::i;:::-;18478:72;18546:2;18535:9;18531:18;18522:6;18478:72;:::i;:::-;18225:332;;;;;:::o;18563:116::-;18633:21;18648:5;18633:21;:::i;:::-;18626:5;18623:32;18613:60;;18669:1;18666;18659:12;18613:60;18563:116;:::o;18685:137::-;18739:5;18770:6;18764:13;18755:22;;18786:30;18810:5;18786:30;:::i;:::-;18685:137;;;;:::o;18828:345::-;18895:6;18944:2;18932:9;18923:7;18919:23;18915:32;18912:119;;;18950:79;;:::i;:::-;18912:119;19070:1;19095:61;19148:7;19139:6;19128:9;19124:22;19095:61;:::i;:::-;19085:71;;19041:125;18828:345;;;;:::o;19179:170::-;19319:22;19315:1;19307:6;19303:14;19296:46;19179:170;:::o;19355:366::-;19497:3;19518:67;19582:2;19577:3;19518:67;:::i;:::-;19511:74;;19594:93;19683:3;19594:93;:::i;:::-;19712:2;19707:3;19703:12;19696:19;;19355:366;;;:::o;19727:419::-;19893:4;19931:2;19920:9;19916:18;19908:26;;19980:9;19974:4;19970:20;19966:1;19955:9;19951:17;19944:47;20008:131;20134:4;20008:131;:::i;:::-;20000:139;;19727:419;;;:::o;20152:223::-;20292:34;20288:1;20280:6;20276:14;20269:58;20361:6;20356:2;20348:6;20344:15;20337:31;20152:223;:::o;20381:366::-;20523:3;20544:67;20608:2;20603:3;20544:67;:::i;:::-;20537:74;;20620:93;20709:3;20620:93;:::i;:::-;20738:2;20733:3;20729:12;20722:19;;20381:366;;;:::o;20753:419::-;20919:4;20957:2;20946:9;20942:18;20934:26;;21006:9;21000:4;20996:20;20992:1;20981:9;20977:17;20970:47;21034:131;21160:4;21034:131;:::i;:::-;21026:139;;20753:419;;;:::o;21178:221::-;21318:34;21314:1;21306:6;21302:14;21295:58;21387:4;21382:2;21374:6;21370:15;21363:29;21178:221;:::o;21405:366::-;21547:3;21568:67;21632:2;21627:3;21568:67;:::i;:::-;21561:74;;21644:93;21733:3;21644:93;:::i;:::-;21762:2;21757:3;21753:12;21746:19;;21405:366;;;:::o;21777:419::-;21943:4;21981:2;21970:9;21966:18;21958:26;;22030:9;22024:4;22020:20;22016:1;22005:9;22001:17;21994:47;22058:131;22184:4;22058:131;:::i;:::-;22050:139;;21777:419;;;:::o;22202:224::-;22342:34;22338:1;22330:6;22326:14;22319:58;22411:7;22406:2;22398:6;22394:15;22387:32;22202:224;:::o;22432:366::-;22574:3;22595:67;22659:2;22654:3;22595:67;:::i;:::-;22588:74;;22671:93;22760:3;22671:93;:::i;:::-;22789:2;22784:3;22780:12;22773:19;;22432:366;;;:::o;22804:419::-;22970:4;23008:2;22997:9;22993:18;22985:26;;23057:9;23051:4;23047:20;23043:1;23032:9;23028:17;23021:47;23085:131;23211:4;23085:131;:::i;:::-;23077:139;;22804:419;;;:::o;23229:222::-;23369:34;23365:1;23357:6;23353:14;23346:58;23438:5;23433:2;23425:6;23421:15;23414:30;23229:222;:::o;23457:366::-;23599:3;23620:67;23684:2;23679:3;23620:67;:::i;:::-;23613:74;;23696:93;23785:3;23696:93;:::i;:::-;23814:2;23809:3;23805:12;23798:19;;23457:366;;;:::o;23829:419::-;23995:4;24033:2;24022:9;24018:18;24010:26;;24082:9;24076:4;24072:20;24068:1;24057:9;24053:17;24046:47;24110:131;24236:4;24110:131;:::i;:::-;24102:139;;23829:419;;;:::o;24254:228::-;24394:34;24390:1;24382:6;24378:14;24371:58;24463:11;24458:2;24450:6;24446:15;24439:36;24254:228;:::o;24488:366::-;24630:3;24651:67;24715:2;24710:3;24651:67;:::i;:::-;24644:74;;24727:93;24816:3;24727:93;:::i;:::-;24845:2;24840:3;24836:12;24829:19;;24488:366;;;:::o;24860:419::-;25026:4;25064:2;25053:9;25049:18;25041:26;;25113:9;25107:4;25103:20;25099:1;25088:9;25084:17;25077:47;25141:131;25267:4;25141:131;:::i;:::-;25133:139;;24860:419;;;:::o;25285:223::-;25425:34;25421:1;25413:6;25409:14;25402:58;25494:6;25489:2;25481:6;25477:15;25470:31;25285:223;:::o;25514:366::-;25656:3;25677:67;25741:2;25736:3;25677:67;:::i;:::-;25670:74;;25753:93;25842:3;25753:93;:::i;:::-;25871:2;25866:3;25862:12;25855:19;;25514:366;;;:::o;25886:419::-;26052:4;26090:2;26079:9;26075:18;26067:26;;26139:9;26133:4;26129:20;26125:1;26114:9;26110:17;26103:47;26167:131;26293:4;26167:131;:::i;:::-;26159:139;;25886:419;;;:::o;26311:175::-;26451:27;26447:1;26439:6;26435:14;26428:51;26311:175;:::o;26492:366::-;26634:3;26655:67;26719:2;26714:3;26655:67;:::i;:::-;26648:74;;26731:93;26820:3;26731:93;:::i;:::-;26849:2;26844:3;26840:12;26833:19;;26492:366;;;:::o;26864:419::-;27030:4;27068:2;27057:9;27053:18;27045:26;;27117:9;27111:4;27107:20;27103:1;27092:9;27088:17;27081:47;27145:131;27271:4;27145:131;:::i;:::-;27137:139;;26864:419;;;:::o;27289:191::-;27329:3;27348:20;27366:1;27348:20;:::i;:::-;27343:25;;27382:20;27400:1;27382:20;:::i;:::-;27377:25;;27425:1;27422;27418:9;27411:16;;27446:3;27443:1;27440:10;27437:36;;;27453:18;;:::i;:::-;27437:36;27289:191;;;;:::o;27486:176::-;27626:28;27622:1;27614:6;27610:14;27603:52;27486:176;:::o;27668:366::-;27810:3;27831:67;27895:2;27890:3;27831:67;:::i;:::-;27824:74;;27907:93;27996:3;27907:93;:::i;:::-;28025:2;28020:3;28016:12;28009:19;;27668:366;;;:::o;28040:419::-;28206:4;28244:2;28233:9;28229:18;28221:26;;28293:9;28287:4;28283:20;28279:1;28268:9;28264:17;28257:47;28321:131;28447:4;28321:131;:::i;:::-;28313:139;;28040:419;;;:::o;28465:233::-;28504:3;28527:24;28545:5;28527:24;:::i;:::-;28518:33;;28573:66;28566:5;28563:77;28560:103;;28643:18;;:::i;:::-;28560:103;28690:1;28683:5;28679:13;28672:20;;28465:233;;;:::o;28704:194::-;28744:4;28764:20;28782:1;28764:20;:::i;:::-;28759:25;;28798:20;28816:1;28798:20;:::i;:::-;28793:25;;28842:1;28839;28835:9;28827:17;;28866:1;28860:4;28857:11;28854:37;;;28871:18;;:::i;:::-;28854:37;28704:194;;;;:::o;28904:114::-;28971:6;29005:5;28999:12;28989:22;;28904:114;;;:::o;29024:184::-;29123:11;29157:6;29152:3;29145:19;29197:4;29192:3;29188:14;29173:29;;29024:184;;;;:::o;29214:132::-;29281:4;29304:3;29296:11;;29334:4;29329:3;29325:14;29317:22;;29214:132;;;:::o;29352:108::-;29429:24;29447:5;29429:24;:::i;:::-;29424:3;29417:37;29352:108;;:::o;29466:179::-;29535:10;29556:46;29598:3;29590:6;29556:46;:::i;:::-;29634:4;29629:3;29625:14;29611:28;;29466:179;;;;:::o;29651:113::-;29721:4;29753;29748:3;29744:14;29736:22;;29651:113;;;:::o;29800:732::-;29919:3;29948:54;29996:5;29948:54;:::i;:::-;30018:86;30097:6;30092:3;30018:86;:::i;:::-;30011:93;;30128:56;30178:5;30128:56;:::i;:::-;30207:7;30238:1;30223:284;30248:6;30245:1;30242:13;30223:284;;;30324:6;30318:13;30351:63;30410:3;30395:13;30351:63;:::i;:::-;30344:70;;30437:60;30490:6;30437:60;:::i;:::-;30427:70;;30283:224;30270:1;30267;30263:9;30258:14;;30223:284;;;30227:14;30523:3;30516:10;;29924:608;;;29800:732;;;;:::o;30538:831::-;30801:4;30839:3;30828:9;30824:19;30816:27;;30853:71;30921:1;30910:9;30906:17;30897:6;30853:71;:::i;:::-;30934:80;31010:2;30999:9;30995:18;30986:6;30934:80;:::i;:::-;31061:9;31055:4;31051:20;31046:2;31035:9;31031:18;31024:48;31089:108;31192:4;31183:6;31089:108;:::i;:::-;31081:116;;31207:72;31275:2;31264:9;31260:18;31251:6;31207:72;:::i;:::-;31289:73;31357:3;31346:9;31342:19;31333:6;31289:73;:::i;:::-;30538:831;;;;;;;;:::o;31375:177::-;31515:29;31511:1;31503:6;31499:14;31492:53;31375:177;:::o;31558:366::-;31700:3;31721:67;31785:2;31780:3;31721:67;:::i;:::-;31714:74;;31797:93;31886:3;31797:93;:::i;:::-;31915:2;31910:3;31906:12;31899:19;;31558:366;;;:::o;31930:419::-;32096:4;32134:2;32123:9;32119:18;32111:26;;32183:9;32177:4;32173:20;32169:1;32158:9;32154:17;32147:47;32211:131;32337:4;32211:131;:::i;:::-;32203:139;;31930:419;;;:::o;32355:180::-;32403:77;32400:1;32393:88;32500:4;32497:1;32490:15;32524:4;32521:1;32514:15;32541:185;32581:1;32598:20;32616:1;32598:20;:::i;:::-;32593:25;;32632:20;32650:1;32632:20;:::i;:::-;32627:25;;32671:1;32661:35;;32676:18;;:::i;:::-;32661:35;32718:1;32715;32711:9;32706:14;;32541:185;;;;:::o;32732:220::-;32872:34;32868:1;32860:6;32856:14;32849:58;32941:3;32936:2;32928:6;32924:15;32917:28;32732:220;:::o;32958:366::-;33100:3;33121:67;33185:2;33180:3;33121:67;:::i;:::-;33114:74;;33197:93;33286:3;33197:93;:::i;:::-;33315:2;33310:3;33306:12;33299:19;;32958:366;;;:::o;33330:419::-;33496:4;33534:2;33523:9;33519:18;33511:26;;33583:9;33577:4;33573:20;33569:1;33558:9;33554:17;33547:47;33611:131;33737:4;33611:131;:::i;:::-;33603:139;;33330:419;;;:::o

Swarm Source

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