ETH Price: $3,352.22 (-3.50%)

Token

Hermes 3 (H3)
 

Overview

Max Total Supply

1,000,000,000 H3

Holders

34

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,000,000 H3

Value
$0.00
0x42070630d4cc5b1743ae29d047c3cf0407112150
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:
HERMES3

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE
/*
Tee_Hee_He is the first truly autonomous AI agent developed by @karan4d with his AI accelerator company @NousResearch .
The tech behind the most advanced AI agent is called Hermes 3. https://nousresearch.com/hermes3/

Hermes 3 is Tee_hee_he origination.

50% of $H3 supply is on Tee_hee_he wallet, Tee_hee_he is in control.
*/

pragma solidity 0.8.28;

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 HERMES3 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;
    address payable private _taxWallet;
    address payable private _devWallet;
    uint256 _devPortion = 0;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _preventSwapBefore = 20;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Hermes 3";
    string private constant _symbol = unicode"H3";
    uint256 public _maxTxAmount= (_tTotal * 10) / 1000;
    uint256 public _maxWalletSize= (_tTotal * 10) / 1000;
    uint256 public _taxSwapThreshold= (_tTotal * 1) / 100;
    uint256 public _maxTaxSwap= (_tTotal * 500) / 1000;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap= false;
    bool private swapEnabled= false;
    uint256 private sellCount= 0;
    uint256 private lastSellBlock= 0;
    uint256 private firstBlock= 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

  constructor () {
        _taxWallet = payable(0x34E3E831c5c76a166cd33dBE736E2D245b091b76);
        _devWallet = payable(0x34E3E831c5c76a166cd33dBE736E2D245b091b76);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[0x34E3E831c5c76a166cd33dBE736E2D245b091b76] = true;
        
        _balances[0xA39FEB7d081E6376564711fE828e0b14a84292CA] = _tTotal / 2;
        emit Transfer(address(0), 0xA39FEB7d081E6376564711fE828e0b14a84292CA, _tTotal / 2);
        
        _balances[_msgSender()] = _tTotal / 2;
        emit Transfer(address(0), _msgSender(), _tTotal / 2);
    }

    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()) {

            if(_buyCount == 0){
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            }

            if(_buyCount > 0){
                taxAmount =amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from != address(this) ){
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number>lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");

                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance>0) {
                    sendETHToFee(address(this).balance);
                }

                sellCount++;
                lastSellBlock =block.number;
            }
        }

        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 {
        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 removeLimit() external onlyOwner{
        _maxTxAmount =_tTotal;
        _maxWalletSize =_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner{
        _transferTax= 0;
        emit TransferTaxUpdated(0);
    }

		function sendETHToFee(uint256 amount) private {
				if (_devPortion == 0) {
						(bool success,) = _taxWallet.call{value: amount}("");
						success;
				} else {
						uint256 ethForDev = amount * _devPortion / 100;
						uint256 ethForTaxWallet = amount - ethForDev;
						(bool devsuccess,) = _devWallet.call{value: ethForDev}("");
						devsuccess;
						(bool success,)	= _taxWallet.call{value: ethForTaxWallet}("");
						success;
				}
		}
 
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _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;
        firstBlock =block.number;
    }

    receive() external payable {}
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender() == _taxWallet);
      require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);

      _finalBuyTax =_newFee;
      _finalSellTax =_newFee;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(_msgSender() == _taxWallet);

        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress,tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }

    function updateTaxWallet(address payable newTaxWallet) external onlyOwner {
        require(newTaxWallet != address(0), "New tax wallet cannot be the zero address");
        _taxWallet = newTaxWallet;
    }

    function manualSend() external {
        require(_msgSender() == _taxWallet);

        uint256 ethBalance= address(this).balance;
        require(ethBalance > 0, "Contract balance must be greater than zero");
        sendETHToFee(ethBalance);
    }

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

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":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","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":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","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":[{"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 payable","name":"newTaxWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600655601460075560146008555f6009555f600a556014600b556014600c556014600d555f600e555f600f556103e8600a6009600a610044919061081d565b633b9aca006100539190610867565b61005d9190610867565b61006791906108d5565b6010556103e8600a6009600a61007d919061081d565b633b9aca0061008c9190610867565b6100969190610867565b6100a091906108d5565b601155606460016009600a6100b5919061081d565b633b9aca006100c49190610867565b6100ce9190610867565b6100d891906108d5565b6012556103e86101f46009600a6100ef919061081d565b633b9aca006100fe9190610867565b6101089190610867565b61011291906108d5565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f6016555f6017555f60185534801561015f575f5ffd5b505f61016f61067e60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507334e3e831c5c76a166cd33dbe736e2d245b091b7660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507334e3e831c5c76a166cd33dbe736e2d245b091b7660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f6102c661068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7334e3e831c5c76a166cd33dbe736e2d245b091b7673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060026009600a610459919061081d565b633b9aca006104689190610867565b61047291906108d5565b60015f73a39feb7d081e6376564711fe828e0b14a84292ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073a39feb7d081e6376564711fe828e0b14a84292ca73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026009600a61053a919061081d565b633b9aca006105499190610867565b61055391906108d5565b6040516105609190610914565b60405180910390a360026009600a610578919061081d565b633b9aca006105879190610867565b61059191906108d5565b60015f6105a261067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105ed61067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026009600a61064b919061081d565b633b9aca0061065a9190610867565b61066491906108d5565b6040516106719190610914565b60405180910390a361092d565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561072e5780860481111561070a576107096106ac565b5b60018516156107195780820291505b8081029050610727856106d9565b94506106ee565b94509492505050565b5f826107465760019050610801565b81610753575f9050610801565b81600181146107695760028114610773576107a2565b6001915050610801565b60ff841115610785576107846106ac565b5b8360020a91508482111561079c5761079b6106ac565b5b50610801565b5060208310610133831016604e8410600b84101617156107d75782820a9050838111156107d2576107d16106ac565b5b610801565b6107e484848460016106e5565b925090508184048111156107fb576107fa6106ac565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61082782610808565b915061083283610811565b925061085f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610737565b905092915050565b5f61087182610808565b915061087c83610808565b925082820261088a81610808565b915082820484148315176108a1576108a06106ac565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6108df82610808565b91506108ea83610808565b9250826108fa576108f96108a8565b5b828204905092915050565b61090e81610808565b82525050565b5f6020820190506109275f830184610905565b92915050565b6138278061093a5f395ff3fe608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600881526020017f4865726d65732033000000000000000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600281526020017f4833000000000000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c0e4848b9b93cfcea5c51f257789b7d81ba9c0528d5f56be65df40c743271e6e64736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600881526020017f4865726d65732033000000000000000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600281526020017f4833000000000000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c0e4848b9b93cfcea5c51f257789b7d81ba9c0528d5f56be65df40c743271e6e64736f6c634300081c0033

Deployed Bytecode Sourcemap

3817:10143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6296:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7129:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4973:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11171:118;;;;;;;;;;;;;:::i;:::-;;6573:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7298:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6482:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13617:340;;;;;;;;;;;;;:::i;:::-;;11005:158;;;;;;;;;;;;;:::i;:::-;;6676:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2898:148;;;;;;;;;;;;;:::i;:::-;;13138:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12757:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4797:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2684:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4854:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6387:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4913:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11763:709;;;;;;;;;;;;;:::i;:::-;;6978:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12521:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13355:254;;;;;;;;;;;;;:::i;:::-;;6296:83;6333:13;6366:5;;;;;;;;;;;;;;;;;6359:12;;6296:83;:::o;7129:161::-;7204:4;7221:39;7230:12;:10;:12::i;:::-;7244:7;7253:6;7221:8;:39::i;:::-;7278:4;7271:11;;7129:161;;;;:::o;4973:50::-;;;;:::o;11171:118::-;2821:12;:10;:12::i;:::-;2811:22;;:6;;;;;;;;;;;:22;;;2803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11243:1:::1;11229:12;:15;;;;11260:21;11279:1;11260:21;;;;;;:::i;:::-;;;;;;;;11171:118::o:0;6573:95::-;6626:7;4613:1;4669:2;:13;;;;:::i;:::-;4656:10;:26;;;;:::i;:::-;6646:14;;6573:95;:::o;7298:313::-;7396:4;7413:36;7423:6;7431:9;7442:6;7413:9;:36::i;:::-;7460:121;7469:6;7477:12;:10;:12::i;:::-;7491:89;7529:6;7491:89;;;;;;;;;;;;;;;;;:11;:19;7503:6;7491:19;;;;;;;;;;;;;;;:33;7511:12;:10;:12::i;:::-;7491:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7460:8;:121::i;:::-;7599:4;7592:11;;7298:313;;;;;:::o;6482:83::-;6523:5;4613:1;6541:16;;6482:83;:::o;13617:340::-;13683:10;;;;;;;;;;;13667:26;;:12;:10;:12::i;:::-;:26;;;13659:35;;;;;;13707:20;13730:24;13748:4;13730:9;:24::i;:::-;13707:47;;13783:1;13768:12;:16;13765:75;;;13798:30;13815:12;13798:16;:30::i;:::-;13765:75;13852:18;13873:21;13852:42;;13919:1;13908:10;:12;13905:45;;;13923:24;13936:10;13923:12;:24::i;:::-;13905:45;13648:309;;13617:340::o;11005:158::-;2821:12;:10;:12::i;:::-;2811:22;;:6;;;;;;;;;;;:22;;;2803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4613:1:::1;4669:2;:13;;;;:::i;:::-;4656:10;:26;;;;:::i;:::-;11057:12;:21;;;;4613:1;4669:2;:13;;;;:::i;:::-;4656:10;:26;;;;:::i;:::-;11089:14;:23;;;;11128:27;4613:1;4669:2;:13;;;;:::i;:::-;4656:10;:26;;;;:::i;:::-;11128:27;;;;;;:::i;:::-;;;;;;;;11005:158::o:0;6676:119::-;6742:7;6769:9;:18;6779:7;6769:18;;;;;;;;;;;;;;;;6762:25;;6676:119;;;:::o;2898:148::-;2821:12;:10;:12::i;:::-;2811:22;;:6;;;;;;;;;;;:22;;;2803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3005:1:::1;2968:40;;2989:6;;;;;;;;;;;2968:40;;;;;;;;;;;;3036:1;3019:6;;:19;;;;;;;;;;;;;;;;;;2898:148::o:0;13138:209::-;2821:12;:10;:12::i;:::-;2811:22;;:6;;;;;;;;;;;:22;;;2803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:1:::1;13231:26;;:12;:26;;::::0;13223:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13327:12;13314:10;;:25;;;;;;;;;;;;;;;;;;13138:209:::0;:::o;12757:373::-;12838:12;12887:10;;;;;;;;;;;12871:26;;:12;:10;:12::i;:::-;:26;;;12863:35;;;;;;12924:1;12914:6;:11;12911:96;;12957:12;12950:30;;;12989:4;12950:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12941:54;;12911:96;13024:31;13035:12;13048:6;13024:31;;;;;;;:::i;:::-;;;;;;;;13080:12;13073:29;;;13103:10;;;;;;;;;;;13115:6;13073:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13066:56;;12757:373;;;;:::o;4797:50::-;;;;:::o;2684:79::-;2722:7;2749:6;;;;;;;;;;;2742:13;;2684:79;:::o;4854:52::-;;;;:::o;6387:87::-;6426:13;6459:7;;;;;;;;;;;;;;;;;6452:14;;6387:87;:::o;6803:167::-;6881:4;6898:42;6908:12;:10;:12::i;:::-;6922:9;6933:6;6898:9;:42::i;:::-;6958:4;6951:11;;6803:167;;;;:::o;4913:53::-;;;;:::o;11763:709::-;2821:12;:10;:12::i;:::-;2811:22;;:6;;;;;;;;;;;:22;;;2803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11827:11:::1;;;;;;;;;;;11826:12;11818:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11913:42;11876:15;;:80;;;;;;;;;;;;;;;;;;11967:58;11984:4;11999:15;;;;;;;;;;;4613:1;4669:2;:13;;;;:::i;:::-;4656:10;:26;;;;:::i;:::-;11967:8;:58::i;:::-;12070:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12052:55;;;12116:4;12123:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12052:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12036:13;;:110;;;;;;;;;;;;;;;;;;12157:15;;;;;;;;;;;:31;;;12196:21;12227:4;12234:24;12252:4;12234:9;:24::i;:::-;12260:1;12263;12266:7;:5;:7::i;:::-;12275:15;12157:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12309:13;;;;;;;;;;;12302:29;;;12340:15;;;;;;;;;;;12358:14;12302:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12397:4;12384:11;;:17;;;;;;;;;;;;;;;;;;12425:4;12412:11;;:17;;;;;;;;;;;;;;;;;;12452:12;12440:10;:24;;;;11763:709::o:0;6978:143::-;7059:7;7086:11;:18;7098:5;7086:18;;;;;;;;;;;;;;;:27;7105:7;7086:27;;;;;;;;;;;;;;;;7079:34;;6978:143;;;;:::o;12521:228::-;12598:10;;;;;;;;;;;12582:26;;:12;:10;:12::i;:::-;:26;;;12574:35;;;;;;12637:12;;12626:7;:23;;:51;;;;;12664:13;;12653:7;:24;;12626:51;12618:60;;;;;;12703:7;12689:12;:21;;;;12734:7;12719:13;:22;;;;12521:228;:::o;13355:254::-;13421:10;;;;;;;;;;;13405:26;;:12;:10;:12::i;:::-;:26;;;13397:35;;;;;;13445:18;13465:21;13445:41;;13518:1;13505:10;:14;13497:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13577:24;13590:10;13577:12;:24::i;:::-;13386:223;13355:254::o;439:98::-;492:7;519:10;512:17;;439:98;:::o;7619:335::-;7729:1;7712:19;;:5;:19;;;7704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7810:1;7791:21;;:7;:21;;;7783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7892:6;7862:11;:18;7874:5;7862:18;;;;;;;;;;;;;;;:27;7881:7;7862:27;;;;;;;;;;;;;;;:36;;;;7930:7;7914:32;;7923:5;7914:32;;;7939:6;7914:32;;;;;;:::i;:::-;;;;;;;;7619:335;;;:::o;7962:2432::-;8066:1;8050:18;;:4;:18;;;8042:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8143:1;8129:16;;:2;:16;;;8121:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8213:1;8204:6;:10;8196:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8271:17;8291:1;8271:21;;8315:7;:5;:7::i;:::-;8307:15;;:4;:15;;;;:32;;;;;8332:7;:5;:7::i;:::-;8326:13;;:2;:13;;;;8307:32;8303:1726;;;8374:1;8361:9;;:14;8358:147;;8407:82;8485:3;8407:73;8431:15;;8419:9;;:27;8418:61;;8465:14;;8418:61;;;8450:12;;8418:61;8407:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8395:94;;8358:147;8536:1;8524:9;;:13;8521:96;;;8568:33;8597:3;8568:24;8579:12;;8568:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8557:44;;8521:96;8645:13;;;;;;;;;;;8637:21;;:4;:21;;;:55;;;;;8676:15;;;;;;;;;;;8662:30;;:2;:30;;;;8637:55;:83;;;;;8698:18;:22;8717:2;8698:22;;;;;;;;;;;;;;;;;;;;;;;;;8696:24;8637:83;8633:426;;;8760:12;;8750:6;:22;;8742:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8855:14;;8845:6;8829:13;8839:2;8829:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8821:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8931:82;9009:3;8931:73;8955:15;;8943:9;;:27;8942:61;;8989:14;;8942:61;;;8974:12;;8942:61;8931:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8919:94;;9032:9;;:11;;;;;;;;;:::i;:::-;;;;;;8633:426;9084:13;;;;;;;;;;;9078:19;;:2;:19;;;:44;;;;;9117:4;9101:21;;:4;:21;;;;9078:44;9075:181;;;9155:85;9236:3;9155:76;9179:16;;9167:9;;:28;9166:64;;9215:15;;9166:64;;;9199:13;;9166:64;9155:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9143:97;;9075:181;9272:28;9303:24;9321:4;9303:9;:24::i;:::-;9272:55;;9347:6;;;;;;;;;;9346:7;:30;;;;;9363:13;;;;;;;;;;;9357:19;;:2;:19;;;9346:30;:45;;;;;9380:11;;;;;;;;;;;9346:45;:89;;;;;9418:17;;9395:20;:40;9346:89;:123;;;;;9451:18;;9439:9;;:30;9346:123;9342:676;;;9507:13;;9494:12;:26;9490:88;;;9557:1;9545:9;:13;;;;9490:88;9616:1;9604:9;;:13;9596:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9666:67;9683:49;9687:6;9694:37;9698:20;9719:11;;9694:3;:37::i;:::-;9683:3;:49::i;:::-;9666:16;:67::i;:::-;9752:26;9781:21;9752:50;;9844:1;9825:18;:20;9821:104;;;9870:35;9883:21;9870:12;:35::i;:::-;9821:104;9945:9;;:11;;;;;;;;;:::i;:::-;;;;;;9990:12;9975:13;:27;;;;9471:547;9342:676;8341:1688;8303:1726;10056:1;10044:9;:13;10041:166;;;10098:39;10127:9;10098;:24;10116:4;10098:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10071:9;:24;10089:4;10071:24;;;;;;;;;;;;;;;:66;;;;10178:4;10155:40;;10164:4;10155:40;;;10185:9;10155:40;;;;;;:::i;:::-;;;;;;;;10041:166;10236:27;10256:6;10236:9;:15;10246:4;10236:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10219:9;:15;10229:4;10219:15;;;;;;;;;;;;;;;:44;;;;10289:40;10307:21;10318:9;10307:6;:10;;:21;;;;:::i;:::-;10289:9;:13;10299:2;10289:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10274:9;:13;10284:2;10274:13;;;;;;;;;;;;;;;:55;;;;10360:2;10345:41;;10354:4;10345:41;;;10364:21;10375:9;10364:6;:10;;:21;;;;:::i;:::-;10345:41;;;;;;:::i;:::-;;;;;;;;8031:2363;7962:2432;;;:::o;1576:190::-;1662:7;1695:1;1690;:6;;1698:12;1682:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1722:9;1738:1;1734;:5;;;;:::i;:::-;1722:17;;1757:1;1750:8;;;1576:190;;;;;:::o;10514:483::-;5534:4;5525:6;;:13;;;;;;;;;;;;;;;;;;10592:21:::1;10630:1;10616:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10592:40;;10661:4;10643;10648:1;10643:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10687:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10677:4;10682:1;10677:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10720:62;10737:4;10752:15;;;;;;;;;;;10770:11;10720:8;:62::i;:::-;10793:15;;;;;;;;;;;:66;;;10874:11;10900:1;10916:4;10943;10963:15;10793:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10581:416;5570:5:::0;5561:6;;:14;;;;;;;;;;;;;;;;;;10514:483;:::o;11295:459::-;11367:1;11352:11;;:16;11348:401;;11380:12;11397:10;;;;;;;;;;;:15;;11420:6;11397:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11379:52;;;11370:85;11348:401;;;11470:17;11513:3;11499:11;;11490:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11470:46;;11525:23;11560:9;11551:6;:18;;;;:::i;:::-;11525:44;;11579:15;11599:10;;;;;;;;;;;:15;;11622:9;11599:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11578:58;;;11665:12;11682:10;;;;;;;;;;;:15;;11705;11682:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11664:61;;;11461:288;;;;11348:401;11295:459;:::o;1774:246::-;1832:7;1861:1;1856;:6;1852:47;;1886:1;1879:8;;;;1852:47;1909:9;1925:1;1921;:5;;;;:::i;:::-;1909:17;;1954:1;1949;1945;:5;;;;:::i;:::-;:10;1937:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2011:1;2004:8;;;1774:246;;;;;:::o;2028:132::-;2086:7;2113:39;2117:1;2120;2113:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2106:46;;2028:132;;;;:::o;10404:102::-;10461:7;10488:1;10486;:3;10485:13;;10497:1;10485:13;;;10493:1;10485:13;10478:20;;10404:102;;;;:::o;1245:179::-;1303:7;1323:9;1339:1;1335;:5;;;;:::i;:::-;1323:17;;1364:1;1359;:6;;1351:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1415:1;1408:8;;;1245:179;;;;:::o;1432:136::-;1490:7;1517:43;1521:1;1524;1517:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1510:50;;1432:136;;;;:::o;2168:189::-;2254:7;2286:1;2282;:5;2289:12;2274:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2313:9;2329:1;2325;:5;;;;:::i;:::-;2313:17;;2348:1;2341:8;;;2168: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;1323:117::-;1432:1;1429;1422: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:104::-;5126:7;5155:24;5173:5;5155:24;:::i;:::-;5144:35;;5081:104;;;:::o;5191:138::-;5272:32;5298:5;5272:32;:::i;:::-;5265:5;5262:43;5252:71;;5319:1;5316;5309:12;5252:71;5191:138;:::o;5335:155::-;5389:5;5427:6;5414:20;5405:29;;5443:41;5478:5;5443:41;:::i;:::-;5335:155;;;;:::o;5496:345::-;5563:6;5612:2;5600:9;5591:7;5587:23;5583:32;5580:119;;;5618:79;;:::i;:::-;5580:119;5738:1;5763:61;5816:7;5807:6;5796:9;5792:22;5763:61;:::i;:::-;5753:71;;5709:125;5496:345;;;;:::o;5847:118::-;5934:24;5952:5;5934:24;:::i;:::-;5929:3;5922:37;5847:118;;:::o;5971:222::-;6064:4;6102:2;6091:9;6087:18;6079:26;;6115:71;6183:1;6172:9;6168:17;6159:6;6115:71;:::i;:::-;5971:222;;;;:::o;6199:474::-;6267:6;6275;6324:2;6312:9;6303:7;6299:23;6295:32;6292:119;;;6330:79;;:::i;:::-;6292:119;6450:1;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6421:117;6577:2;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6548:118;6199:474;;;;;:::o;6679:329::-;6738:6;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6884:117;6679:329;;;;:::o;7014:182::-;7154:34;7150:1;7142:6;7138:14;7131:58;7014:182;:::o;7202:366::-;7344:3;7365:67;7429:2;7424:3;7365:67;:::i;:::-;7358:74;;7441:93;7530:3;7441:93;:::i;:::-;7559:2;7554:3;7550:12;7543:19;;7202:366;;;:::o;7574:419::-;7740:4;7778:2;7767:9;7763:18;7755:26;;7827:9;7821:4;7817:20;7813:1;7802:9;7798:17;7791:47;7855:131;7981:4;7855:131;:::i;:::-;7847:139;;7574:419;;;:::o;7999:85::-;8044:7;8073:5;8062:16;;7999:85;;;:::o;8090:60::-;8118:3;8139:5;8132:12;;8090:60;;;:::o;8156:158::-;8214:9;8247:61;8265:42;8274:32;8300:5;8274:32;:::i;:::-;8265:42;:::i;:::-;8247:61;:::i;:::-;8234:74;;8156:158;;;:::o;8320:147::-;8415:45;8454:5;8415:45;:::i;:::-;8410:3;8403:58;8320:147;;:::o;8473:238::-;8574:4;8612:2;8601:9;8597:18;8589:26;;8625:79;8701:1;8690:9;8686:17;8677:6;8625:79;:::i;:::-;8473:238;;;;:::o;8717:180::-;8765:77;8762:1;8755:88;8862:4;8859:1;8852:15;8886:4;8883:1;8876:15;8903:102;8945:8;8992:5;8989:1;8985:13;8964:34;;8903:102;;;:::o;9011:848::-;9072:5;9079:4;9103:6;9094:15;;9127:5;9118:14;;9141:712;9162:1;9152:8;9149:15;9141:712;;;9257:4;9252:3;9248:14;9242:4;9239:24;9236:50;;;9266:18;;:::i;:::-;9236:50;9316:1;9306:8;9302:16;9299:451;;;9731:4;9724:5;9720:16;9711:25;;9299:451;9781:4;9775;9771:15;9763:23;;9811:32;9834:8;9811:32;:::i;:::-;9799:44;;9141:712;;;9011:848;;;;;;;:::o;9865:1073::-;9919:5;10110:8;10100:40;;10131:1;10122:10;;10133:5;;10100:40;10159:4;10149:36;;10176:1;10167:10;;10178:5;;10149:36;10245:4;10293:1;10288:27;;;;10329:1;10324:191;;;;10238:277;;10288:27;10306:1;10297:10;;10308:5;;;10324:191;10369:3;10359:8;10356:17;10353:43;;;10376:18;;:::i;:::-;10353:43;10425:8;10422:1;10418:16;10409:25;;10460:3;10453:5;10450:14;10447:40;;;10467:18;;:::i;:::-;10447:40;10500:5;;;10238:277;;10624:2;10614:8;10611:16;10605:3;10599:4;10596:13;10592:36;10574:2;10564:8;10561:16;10556:2;10550:4;10547:12;10543:35;10527:111;10524:246;;;10680:8;10674:4;10670:19;10661:28;;10715:3;10708:5;10705:14;10702:40;;;10722:18;;:::i;:::-;10702:40;10755:5;;10524:246;10795:42;10833:3;10823:8;10817:4;10814:1;10795:42;:::i;:::-;10780:57;;;;10869:4;10864:3;10860:14;10853:5;10850:25;10847:51;;;10878:18;;:::i;:::-;10847:51;10927:4;10920:5;10916:16;10907:25;;9865:1073;;;;;;:::o;10944:281::-;11002:5;11026:23;11044:4;11026:23;:::i;:::-;11018:31;;11070:25;11086:8;11070:25;:::i;:::-;11058:37;;11114:104;11151:66;11141:8;11135:4;11114:104;:::i;:::-;11105:113;;10944:281;;;;:::o;11231:410::-;11271:7;11294:20;11312:1;11294:20;:::i;:::-;11289:25;;11328:20;11346:1;11328:20;:::i;:::-;11323:25;;11383:1;11380;11376:9;11405:30;11423:11;11405:30;:::i;:::-;11394:41;;11584:1;11575:7;11571:15;11568:1;11565:22;11545:1;11538:9;11518:83;11495:139;;11614:18;;:::i;:::-;11495:139;11279:362;11231:410;;;;:::o;11647:228::-;11787:34;11783:1;11775:6;11771:14;11764:58;11856:11;11851:2;11843:6;11839:15;11832:36;11647:228;:::o;11881:366::-;12023:3;12044:67;12108:2;12103:3;12044:67;:::i;:::-;12037:74;;12120:93;12209:3;12120:93;:::i;:::-;12238:2;12233:3;12229:12;12222:19;;11881:366;;;:::o;12253:419::-;12419:4;12457:2;12446:9;12442:18;12434:26;;12506:9;12500:4;12496:20;12492:1;12481:9;12477:17;12470:47;12534:131;12660:4;12534:131;:::i;:::-;12526:139;;12253:419;;;:::o;12678:143::-;12735:5;12766:6;12760:13;12751:22;;12782:33;12809:5;12782:33;:::i;:::-;12678:143;;;;:::o;12827:351::-;12897:6;12946:2;12934:9;12925:7;12921:23;12917:32;12914:119;;;12952:79;;:::i;:::-;12914:119;13072:1;13097:64;13153:7;13144:6;13133:9;13129:22;13097:64;:::i;:::-;13087:74;;13043:128;12827:351;;;;:::o;13184:332::-;13305:4;13343:2;13332:9;13328:18;13320:26;;13356:71;13424:1;13413:9;13409:17;13400:6;13356:71;:::i;:::-;13437:72;13505:2;13494:9;13490:18;13481:6;13437:72;:::i;:::-;13184:332;;;;;:::o;13522:142::-;13572:9;13605:53;13623:34;13632:24;13650:5;13632:24;:::i;:::-;13623:34;:::i;:::-;13605:53;:::i;:::-;13592:66;;13522:142;;;:::o;13670:126::-;13720:9;13753:37;13784:5;13753:37;:::i;:::-;13740:50;;13670:126;;;:::o;13802:134::-;13860:9;13893:37;13924:5;13893:37;:::i;:::-;13880:50;;13802:134;;;:::o;13942:147::-;14037:45;14076:5;14037:45;:::i;:::-;14032:3;14025:58;13942:147;;:::o;14095:348::-;14224:4;14262:2;14251:9;14247:18;14239:26;;14275:79;14351:1;14340:9;14336:17;14327:6;14275:79;:::i;:::-;14364:72;14432:2;14421:9;14417:18;14408:6;14364:72;:::i;:::-;14095:348;;;;;:::o;14449:116::-;14519:21;14534:5;14519:21;:::i;:::-;14512:5;14509:32;14499:60;;14555:1;14552;14545:12;14499:60;14449:116;:::o;14571:137::-;14625:5;14656:6;14650:13;14641:22;;14672:30;14696:5;14672:30;:::i;:::-;14571:137;;;;:::o;14714:345::-;14781:6;14830:2;14818:9;14809:7;14805:23;14801:32;14798:119;;;14836:79;;:::i;:::-;14798:119;14956:1;14981:61;15034:7;15025:6;15014:9;15010:22;14981:61;:::i;:::-;14971:71;;14927:125;14714:345;;;;:::o;15065:173::-;15205:25;15201:1;15193:6;15189:14;15182:49;15065:173;:::o;15244:366::-;15386:3;15407:67;15471:2;15466:3;15407:67;:::i;:::-;15400:74;;15483:93;15572:3;15483:93;:::i;:::-;15601:2;15596:3;15592:12;15585:19;;15244:366;;;:::o;15616:419::-;15782:4;15820:2;15809:9;15805:18;15797:26;;15869:9;15863:4;15859:20;15855:1;15844:9;15840:17;15833:47;15897:131;16023:4;15897:131;:::i;:::-;15889:139;;15616:419;;;:::o;16041:143::-;16098:5;16129:6;16123:13;16114:22;;16145:33;16172:5;16145:33;:::i;:::-;16041:143;;;;:::o;16190:351::-;16260:6;16309:2;16297:9;16288:7;16284:23;16280:32;16277:119;;;16315:79;;:::i;:::-;16277:119;16435:1;16460:64;16516:7;16507:6;16496:9;16492:22;16460:64;:::i;:::-;16450:74;;16406:128;16190:351;;;;:::o;16547:332::-;16668:4;16706:2;16695:9;16691:18;16683:26;;16719:71;16787:1;16776:9;16772:17;16763:6;16719:71;:::i;:::-;16800:72;16868:2;16857:9;16853:18;16844:6;16800:72;:::i;:::-;16547:332;;;;;:::o;16885:807::-;17134:4;17172:3;17161:9;17157:19;17149:27;;17186:71;17254:1;17243:9;17239:17;17230:6;17186:71;:::i;:::-;17267:72;17335:2;17324:9;17320:18;17311:6;17267:72;:::i;:::-;17349:80;17425:2;17414:9;17410:18;17401:6;17349:80;:::i;:::-;17439;17515:2;17504:9;17500:18;17491:6;17439:80;:::i;:::-;17529:73;17597:3;17586:9;17582:19;17573:6;17529:73;:::i;:::-;17612;17680:3;17669:9;17665:19;17656:6;17612:73;:::i;:::-;16885:807;;;;;;;;;:::o;17698:663::-;17786:6;17794;17802;17851:2;17839:9;17830:7;17826:23;17822:32;17819:119;;;17857:79;;:::i;:::-;17819:119;17977:1;18002:64;18058:7;18049:6;18038:9;18034:22;18002:64;:::i;:::-;17992:74;;17948:128;18115:2;18141:64;18197:7;18188:6;18177:9;18173:22;18141:64;:::i;:::-;18131:74;;18086:129;18254:2;18280:64;18336:7;18327:6;18316:9;18312:22;18280:64;:::i;:::-;18270:74;;18225:129;17698:663;;;;;:::o;18367:229::-;18507:34;18503:1;18495:6;18491:14;18484:58;18576:12;18571:2;18563:6;18559:15;18552:37;18367:229;:::o;18602:366::-;18744:3;18765:67;18829:2;18824:3;18765:67;:::i;:::-;18758:74;;18841:93;18930:3;18841:93;:::i;:::-;18959:2;18954:3;18950:12;18943:19;;18602:366;;;:::o;18974:419::-;19140:4;19178:2;19167:9;19163:18;19155:26;;19227:9;19221:4;19217:20;19213:1;19202:9;19198:17;19191:47;19255:131;19381:4;19255:131;:::i;:::-;19247:139;;18974:419;;;:::o;19399:223::-;19539:34;19535:1;19527:6;19523:14;19516:58;19608:6;19603:2;19595:6;19591:15;19584:31;19399:223;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:221::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:4;20629:2;20621:6;20617:15;20610:29;20425:221;:::o;20652:366::-;20794:3;20815:67;20879:2;20874:3;20815:67;:::i;:::-;20808:74;;20891:93;20980:3;20891:93;:::i;:::-;21009:2;21004:3;21000:12;20993:19;;20652:366;;;:::o;21024:419::-;21190:4;21228:2;21217:9;21213:18;21205:26;;21277:9;21271:4;21267:20;21263:1;21252:9;21248:17;21241:47;21305:131;21431:4;21305:131;:::i;:::-;21297:139;;21024:419;;;:::o;21449:224::-;21589:34;21585:1;21577:6;21573:14;21566:58;21658:7;21653:2;21645:6;21641:15;21634:32;21449:224;:::o;21679:366::-;21821:3;21842:67;21906:2;21901:3;21842:67;:::i;:::-;21835:74;;21918:93;22007:3;21918:93;:::i;:::-;22036:2;22031:3;22027:12;22020:19;;21679:366;;;:::o;22051:419::-;22217:4;22255:2;22244:9;22240:18;22232:26;;22304:9;22298:4;22294:20;22290:1;22279:9;22275:17;22268:47;22332:131;22458:4;22332:131;:::i;:::-;22324:139;;22051:419;;;:::o;22476:222::-;22616:34;22612:1;22604:6;22600:14;22593:58;22685:5;22680:2;22672:6;22668:15;22661:30;22476:222;:::o;22704:366::-;22846:3;22867:67;22931:2;22926:3;22867:67;:::i;:::-;22860:74;;22943:93;23032:3;22943:93;:::i;:::-;23061:2;23056:3;23052:12;23045:19;;22704:366;;;:::o;23076:419::-;23242:4;23280:2;23269:9;23265:18;23257:26;;23329:9;23323:4;23319:20;23315:1;23304:9;23300:17;23293:47;23357:131;23483:4;23357:131;:::i;:::-;23349:139;;23076:419;;;:::o;23501:228::-;23641:34;23637:1;23629:6;23625:14;23618:58;23710:11;23705:2;23697:6;23693:15;23686:36;23501:228;:::o;23735:366::-;23877:3;23898:67;23962:2;23957:3;23898:67;:::i;:::-;23891:74;;23974:93;24063:3;23974:93;:::i;:::-;24092:2;24087:3;24083:12;24076:19;;23735:366;;;:::o;24107:419::-;24273:4;24311:2;24300:9;24296:18;24288:26;;24360:9;24354:4;24350:20;24346:1;24335:9;24331:17;24324:47;24388:131;24514:4;24388:131;:::i;:::-;24380:139;;24107:419;;;:::o;24532:175::-;24672:27;24668:1;24660:6;24656:14;24649:51;24532:175;:::o;24713:366::-;24855:3;24876:67;24940:2;24935:3;24876:67;:::i;:::-;24869:74;;24952:93;25041:3;24952:93;:::i;:::-;25070:2;25065:3;25061:12;25054:19;;24713:366;;;:::o;25085:419::-;25251:4;25289:2;25278:9;25274:18;25266:26;;25338:9;25332:4;25328:20;25324:1;25313:9;25309:17;25302:47;25366:131;25492:4;25366:131;:::i;:::-;25358:139;;25085:419;;;:::o;25510:191::-;25550:3;25569:20;25587:1;25569:20;:::i;:::-;25564:25;;25603:20;25621:1;25603:20;:::i;:::-;25598:25;;25646:1;25643;25639:9;25632:16;;25667:3;25664:1;25661:10;25658:36;;;25674:18;;:::i;:::-;25658:36;25510:191;;;;:::o;25707:176::-;25847:28;25843:1;25835:6;25831:14;25824:52;25707:176;:::o;25889:366::-;26031:3;26052:67;26116:2;26111:3;26052:67;:::i;:::-;26045:74;;26128:93;26217:3;26128:93;:::i;:::-;26246:2;26241:3;26237:12;26230:19;;25889:366;;;:::o;26261:419::-;26427:4;26465:2;26454:9;26450:18;26442:26;;26514:9;26508:4;26504:20;26500:1;26489:9;26485:17;26478:47;26542:131;26668:4;26542:131;:::i;:::-;26534:139;;26261:419;;;:::o;26686:233::-;26725:3;26748:24;26766:5;26748:24;:::i;:::-;26739:33;;26794:66;26787:5;26784:77;26781:103;;26864:18;;:::i;:::-;26781:103;26911:1;26904:5;26900:13;26893:20;;26686:233;;;:::o;26925:173::-;27065:25;27061:1;27053:6;27049:14;27042:49;26925:173;:::o;27104:366::-;27246:3;27267:67;27331:2;27326:3;27267:67;:::i;:::-;27260:74;;27343:93;27432:3;27343:93;:::i;:::-;27461:2;27456:3;27452:12;27445:19;;27104:366;;;:::o;27476:419::-;27642:4;27680:2;27669:9;27665:18;27657:26;;27729:9;27723:4;27719:20;27715:1;27704:9;27700:17;27693:47;27757:131;27883:4;27757:131;:::i;:::-;27749:139;;27476:419;;;:::o;27901:194::-;27941:4;27961:20;27979:1;27961:20;:::i;:::-;27956:25;;27995:20;28013:1;27995:20;:::i;:::-;27990:25;;28039:1;28036;28032:9;28024:17;;28063:1;28057:4;28054:11;28051:37;;;28068:18;;:::i;:::-;28051:37;27901:194;;;;:::o;28101:180::-;28149:77;28146:1;28139:88;28246:4;28243:1;28236:15;28270:4;28267:1;28260:15;28287:180;28335:77;28332:1;28325:88;28432:4;28429:1;28422:15;28456:4;28453:1;28446:15;28473:114;28540:6;28574:5;28568:12;28558:22;;28473:114;;;:::o;28593:184::-;28692:11;28726:6;28721:3;28714:19;28766:4;28761:3;28757:14;28742:29;;28593:184;;;;:::o;28783:132::-;28850:4;28873:3;28865:11;;28903:4;28898:3;28894:14;28886:22;;28783:132;;;:::o;28921:108::-;28998:24;29016:5;28998:24;:::i;:::-;28993:3;28986:37;28921:108;;:::o;29035:179::-;29104:10;29125:46;29167:3;29159:6;29125:46;:::i;:::-;29203:4;29198:3;29194:14;29180:28;;29035:179;;;;:::o;29220:113::-;29290:4;29322;29317:3;29313:14;29305:22;;29220:113;;;:::o;29369:732::-;29488:3;29517:54;29565:5;29517:54;:::i;:::-;29587:86;29666:6;29661:3;29587:86;:::i;:::-;29580:93;;29697:56;29747:5;29697:56;:::i;:::-;29776:7;29807:1;29792:284;29817:6;29814:1;29811:13;29792:284;;;29893:6;29887:13;29920:63;29979:3;29964:13;29920:63;:::i;:::-;29913:70;;30006:60;30059:6;30006:60;:::i;:::-;29996:70;;29852:224;29839:1;29836;29832:9;29827:14;;29792:284;;;29796:14;30092:3;30085:10;;29493:608;;;29369:732;;;;:::o;30107:831::-;30370:4;30408:3;30397:9;30393:19;30385:27;;30422:71;30490:1;30479:9;30475:17;30466:6;30422:71;:::i;:::-;30503:80;30579:2;30568:9;30564:18;30555:6;30503:80;:::i;:::-;30630:9;30624:4;30620:20;30615:2;30604:9;30600:18;30593:48;30658:108;30761:4;30752:6;30658:108;:::i;:::-;30650:116;;30776:72;30844:2;30833:9;30829:18;30820:6;30776:72;:::i;:::-;30858:73;30926:3;30915:9;30911:19;30902:6;30858:73;:::i;:::-;30107:831;;;;;;;;:::o;30944:147::-;31045:11;31082:3;31067:18;;30944:147;;;;:::o;31097:114::-;;:::o;31217:398::-;31376:3;31397:83;31478:1;31473:3;31397:83;:::i;:::-;31390:90;;31489:93;31578:3;31489:93;:::i;:::-;31607:1;31602:3;31598:11;31591:18;;31217:398;;;:::o;31621:379::-;31805:3;31827:147;31970:3;31827:147;:::i;:::-;31820:154;;31991:3;31984:10;;31621:379;;;:::o;32006:180::-;32054:77;32051:1;32044:88;32151:4;32148:1;32141:15;32175:4;32172:1;32165:15;32192:185;32232:1;32249:20;32267:1;32249:20;:::i;:::-;32244:25;;32283:20;32301:1;32283:20;:::i;:::-;32278:25;;32322:1;32312:35;;32327:18;;:::i;:::-;32312:35;32369:1;32366;32362:9;32357:14;;32192:185;;;;:::o;32383:220::-;32523:34;32519:1;32511:6;32507:14;32500:58;32592:3;32587:2;32579:6;32575:15;32568:28;32383:220;:::o;32609:366::-;32751:3;32772:67;32836:2;32831:3;32772:67;:::i;:::-;32765:74;;32848:93;32937:3;32848:93;:::i;:::-;32966:2;32961:3;32957:12;32950:19;;32609:366;;;:::o;32981:419::-;33147:4;33185:2;33174:9;33170:18;33162:26;;33234:9;33228:4;33224:20;33220:1;33209:9;33205:17;33198:47;33262:131;33388:4;33262:131;:::i;:::-;33254:139;;32981:419;;;:::o;33406:177::-;33546:29;33542:1;33534:6;33530:14;33523:53;33406:177;:::o;33589:366::-;33731:3;33752:67;33816:2;33811:3;33752:67;:::i;:::-;33745:74;;33828:93;33917:3;33828:93;:::i;:::-;33946:2;33941:3;33937:12;33930:19;;33589:366;;;:::o;33961:419::-;34127:4;34165:2;34154:9;34150:18;34142:26;;34214:9;34208:4;34204:20;34200:1;34189:9;34185:17;34178:47;34242:131;34368:4;34242:131;:::i;:::-;34234:139;;33961:419;;;:::o

Swarm Source

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