ETH Price: $3,318.64 (+1.65%)
Gas: 5 Gwei

Token

SatoshiElonSteveJobsTeslaEinsteinJan3rd2009 ($SMARTBITCOIN)
 

Overview

Max Total Supply

1,000,000,000 $SMARTBITCOIN

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
26,407,145.664205603 $SMARTBITCOIN

Value
$0.00
0x7b1aeb33ed403ca8fa252be2a78d22ea3aeb3a88
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:
SMARTBITCOIN

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-02
*/

/*
    TG : https://t.me/smartbitcoinETH
    Twitter : https://twitter.com/SESTE2009
    Website : https://smartbitcoin.vip/
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
 
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
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
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;
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
contract SMARTBITCOIN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "SatoshiElonSteveJobsTeslaEinsteinJan3rd2009";
    string private constant _symbol = "$SMARTBITCOIN";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 70;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(0xcB9a04d47886ADE82143E44FA62d605f03bBD41E); 
    address payable private _marketingAddress = payable(0xcB9a04d47886ADE82143E44FA62d605f03bBD41E);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000000 * 10**9; 
    uint256 public _maxWalletSize = 20000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 5000000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
         _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function openTrading() public onlyOwner {
        tradingOpen = true;
    }
 
    function _manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function _manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function _setTax(uint256 _buy, uint256 _sell) public onlyOwner {
        require(_buy >= 0 && _buy <= 99, "Buy tax must be between 0% and 99%");
        require(_sell >= 0 && _sell <= 99, "Sell tax must be between 0% and 99%");
        _taxFeeOnBuy = _buy;
        _taxFeeOnSell = _sell;
    }    
    //Set minimum tokens required to swap.
    function _changeMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
     //Set minimum tokens required to swap.
    function _toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    function _removelimits() public  onlyOwner{
        _maxTxAmount = totalSupply();
        _maxWalletSize = totalSupply();
    }
    //Set maximum transaction
    function _changeMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function _changeMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function _excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_changeMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"_changeMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"_excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_manualswap","outputs":[],"stateMutability":"nonpayable","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":"_removelimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"_setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200070f565b6000196200002b919062000776565b6006556000600855601e6009556000600a556046600b55600a54600c55600b54600d55600c54600e55600d54600f5573cb9a04d47886ade82143e44fa62d605f03bbd41e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cb9a04d47886ade82143e44fa62d605f03bbd41e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556611c37937e080006018553480156200016757600080fd5b5060006200017a620006a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033991906200081b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c791906200081b565b6040518363ffffffff1660e01b8152600401620003e69291906200085e565b6020604051808303816000875af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c91906200081b565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000482620006ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062f620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200069691906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071c82620006d6565b91506200072983620006d6565b9250826200073c576200073b620006e0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078382620006d6565b91506200079083620006d6565b9250828203905081811115620007ab57620007aa62000747565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b600060208284031215620008345762000833620007b1565b5b6000620008448482850162000804565b91505092915050565b6200085881620007d6565b82525050565b60006040820190506200087560008301856200084d565b6200088460208301846200084d565b9392505050565b6200089681620006d6565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b613fe180620008c96000396000f3fe6080604052600436106101db5760003560e01c80636b999053116101025780638f9a55c011610095578063bfd7928411610064578063bfd792841461066a578063c9567bf9146106a7578063dd62ed3e146106be578063f2fde38b146106fb576101e2565b80638f9a55c0146105ae57806395d89b41146105d95780639a2886b414610604578063a9059cbb1461062d576101e2565b80637f2feddc116100d15780637f2feddc14610506578063806a02e41461054357806383b2f14d1461055a5780638da5cb5b14610583576101e2565b80636b9990531461045e57806370a0823114610487578063715018a6146104c45780637d1db4a5146104db576101e2565b80632f10cfb11161017a57806356f5ab871161014957806356f5ab87146103de5780635da770621461040757806363531def1461041e5780636576c5d214610435576101e2565b80632f10cfb1146103345780632fd689e31461035d578063313ce5671461038857806349bd5a5e146103b3576101e2565b806314e88033116101b657806314e88033146102785780631694505e146102a157806318160ddd146102cc57806323b872dd146102f7576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612e89565b610724565b005b34801561021c57600080fd5b5061022561084e565b6040516102329190612f51565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612fa9565b61086e565b60405161026f9190613004565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a919061301f565b61088c565b005b3480156102ad57600080fd5b506102b661092b565b6040516102c391906130ab565b60405180910390f35b3480156102d857600080fd5b506102e1610951565b6040516102ee91906130d5565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906130f0565b610961565b60405161032b9190613004565b60405180910390f35b34801561034057600080fd5b5061035b600480360381019061035691906131ca565b610a3a565b005b34801561036957600080fd5b50610372610b74565b60405161037f91906130d5565b60405180910390f35b34801561039457600080fd5b5061039d610b7a565b6040516103aa9190613246565b60405180910390f35b3480156103bf57600080fd5b506103c8610b83565b6040516103d59190613270565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061301f565b610ba9565b005b34801561041357600080fd5b5061041c610c48565b005b34801561042a57600080fd5b50610433610d21565b005b34801561044157600080fd5b5061045c6004803603810190610457919061328b565b610df2565b005b34801561046a57600080fd5b50610485600480360381019061048091906132b8565b610ea4565b005b34801561049357600080fd5b506104ae60048036038101906104a991906132b8565b610f94565b6040516104bb91906130d5565b60405180910390f35b3480156104d057600080fd5b506104d9610fe5565b005b3480156104e757600080fd5b506104f0611138565b6040516104fd91906130d5565b60405180910390f35b34801561051257600080fd5b5061052d600480360381019061052891906132b8565b61113e565b60405161053a91906130d5565b60405180910390f35b34801561054f57600080fd5b50610558611156565b005b34801561056657600080fd5b50610581600480360381019061057c91906132e5565b611209565b005b34801561058f57600080fd5b50610598611352565b6040516105a59190613270565b60405180910390f35b3480156105ba57600080fd5b506105c361137b565b6040516105d091906130d5565b60405180910390f35b3480156105e557600080fd5b506105ee611381565b6040516105fb9190612f51565b60405180910390f35b34801561061057600080fd5b5061062b6004803603810190610626919061301f565b6113be565b005b34801561063957600080fd5b50610654600480360381019061064f9190612fa9565b61145d565b6040516106619190613004565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906132b8565b61147b565b60405161069e9190613004565b60405180910390f35b3480156106b357600080fd5b506106bc61149b565b005b3480156106ca57600080fd5b506106e560048036038101906106e09190613325565b61154d565b6040516106f291906130d5565b60405180910390f35b34801561070757600080fd5b50610722600480360381019061071d91906132b8565b6115d4565b005b61072c611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b0906133b1565b60405180910390fd5b60005b815181101561084a576001601060008484815181106107de576107dd6133d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108429061342f565b9150506107bc565b5050565b60606040518060600160405280602b8152602001613f81602b9139905090565b600061088261087b611795565b848461179d565b6001905092915050565b610894611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610921576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610918906133b1565b60405180910390fd5b8060188190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061096e848484611966565b610a2f8461097a611795565b610a2a85604051806060016040528060288152602001613f5960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e0611795565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e99092919063ffffffff16565b61179d565b600190509392505050565b610a42611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac6906133b1565b60405180910390fd5b60005b83839050811015610b6e578160056000868685818110610af557610af46133d1565b5b9050602002016020810190610b0a91906132b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b669061342f565b915050610ad2565b50505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bb1611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c35906133b1565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c89611795565b73ffffffffffffffffffffffffffffffffffffffff161480610cff5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce7611795565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0857600080fd5b6000610d1330610f94565b9050610d1e8161224d565b50565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d62611795565b73ffffffffffffffffffffffffffffffffffffffff161480610dd85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc0611795565b73ffffffffffffffffffffffffffffffffffffffff16145b610de157600080fd5b6000479050610def816124c4565b50565b610dfa611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e906133b1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610eac611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906133b1565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610fde600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612530565b9050919050565b610fed611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611071906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b61115e611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906133b1565b60405180910390fd5b6111f3610951565b601681905550611201610951565b601781905550565b611211611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906133b1565b60405180910390fd5b600082101580156112b0575060638211155b6112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906134e9565b60405180910390fd5b60008110158015611301575060638111155b611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061357b565b60405180910390fd5b8160098190555080600b819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600d81526020017f24534d415254424954434f494e00000000000000000000000000000000000000815250905090565b6113c6611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906133b1565b60405180910390fd5b8060168190555050565b600061147161146a611795565b8484611966565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6114a3611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611527906133b1565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115dc611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611660906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf9061360d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118039061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613731565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195991906130d5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906137c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613855565b60405180910390fd5b60008111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906138e7565b60405180910390fd5b611a8f611352565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611afd5750611acd611352565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee857601560149054906101000a900460ff16611b8c57611b1e611352565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290613979565b60405180910390fd5b5b601654811115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906139e5565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c755750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613a77565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d615760175481611d1684610f94565b611d209190613a97565b10611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613b3d565b60405180910390fd5b5b6000611d6c30610f94565b9050600060185482101590506018548210611d875760185491505b808015611d9f575060158054906101000a900460ff16155b8015611df95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e115750601560169054906101000a900460ff165b8015611e675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ebd5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ee557611ecb8261224d565b60004790506000811115611ee357611ee2476124c4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120415750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561205057600090506121d7565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120fb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561211357600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121be5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121d657600a54600c81905550600b54600d819055505b5b6121e38484848461259e565b50505050565b6000838311158290612231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122289190612f51565b60405180910390fd5b50600083856122409190613b5d565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561228457612283612ce8565b5b6040519080825280602002602001820160405280156122b25781602001602082028036833780820191505090505b50905030816000815181106122ca576122c96133d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123959190613ba6565b816001815181106123a9576123a86133d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461179d565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612474959493929190613ccc565b600060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252c573d6000803e3d6000fd5b5050565b6000600654821115612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613d98565b60405180910390fd5b60006125816125cb565b905061259681846125f690919063ffffffff16565b915050919050565b806125ac576125ab612640565b5b6125b784848461267d565b806125c5576125c4612848565b5b50505050565b60008060006125d861285c565b915091506125ef81836125f690919063ffffffff16565b9250505090565b600061263883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bb565b905092915050565b6000600c5414801561265457506000600d54145b61267b57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061268f8761291e565b9550955095509550955095506126ed86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ce81612a2e565b6127d88483612aeb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161283591906130d5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612890670de0b6b3a76400006006546125f690919063ffffffff16565b8210156128ae57600654670de0b6b3a76400009350935050506128b7565b81819350935050505b9091565b60008083118290612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f99190612f51565b60405180910390fd5b50600083856129119190613de7565b9050809150509392505050565b600080600080600080600080600061293b8a600c54600d54612b25565b925092509250600061294b6125cb565b9050600080600061295e8e878787612bbb565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006129c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121e9565b905092915050565b60008082846129df9190613a97565b905083811015612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90613e64565b60405180910390fd5b8091505092915050565b6000612a386125cb565b90506000612a4f8284612c4490919063ffffffff16565b9050612aa381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b008260065461298690919063ffffffff16565b600681905550612b1b816007546129d090919063ffffffff16565b6007819055505050565b600080600080612b516064612b43888a612c4490919063ffffffff16565b6125f690919063ffffffff16565b90506000612b7b6064612b6d888b612c4490919063ffffffff16565b6125f690919063ffffffff16565b90506000612ba482612b96858c61298690919063ffffffff16565b61298690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bd48589612c4490919063ffffffff16565b90506000612beb8689612c4490919063ffffffff16565b90506000612c028789612c4490919063ffffffff16565b90506000612c2b82612c1d858761298690919063ffffffff16565b61298690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612c565760009050612cb8565b60008284612c649190613e84565b9050828482612c739190613de7565b14612cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caa90613f38565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d2082612cd7565b810181811067ffffffffffffffff82111715612d3f57612d3e612ce8565b5b80604052505050565b6000612d52612cbe565b9050612d5e8282612d17565b919050565b600067ffffffffffffffff821115612d7e57612d7d612ce8565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dbf82612d94565b9050919050565b612dcf81612db4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000612e05612e0084612d63565b612d48565b90508083825260208201905060208402830185811115612e2857612e27612d8f565b5b835b81811015612e515780612e3d8882612ddd565b845260208401935050602081019050612e2a565b5050509392505050565b600082601f830112612e7057612e6f612cd2565b5b8135612e80848260208601612df2565b91505092915050565b600060208284031215612e9f57612e9e612cc8565b5b600082013567ffffffffffffffff811115612ebd57612ebc612ccd565b5b612ec984828501612e5b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f0c578082015181840152602081019050612ef1565b60008484015250505050565b6000612f2382612ed2565b612f2d8185612edd565b9350612f3d818560208601612eee565b612f4681612cd7565b840191505092915050565b60006020820190508181036000830152612f6b8184612f18565b905092915050565b6000819050919050565b612f8681612f73565b8114612f9157600080fd5b50565b600081359050612fa381612f7d565b92915050565b60008060408385031215612fc057612fbf612cc8565b5b6000612fce85828601612ddd565b9250506020612fdf85828601612f94565b9150509250929050565b60008115159050919050565b612ffe81612fe9565b82525050565b60006020820190506130196000830184612ff5565b92915050565b60006020828403121561303557613034612cc8565b5b600061304384828501612f94565b91505092915050565b6000819050919050565b600061307161306c61306784612d94565b61304c565b612d94565b9050919050565b600061308382613056565b9050919050565b600061309582613078565b9050919050565b6130a58161308a565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf81612f73565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60008060006060848603121561310957613108612cc8565b5b600061311786828701612ddd565b935050602061312886828701612ddd565b925050604061313986828701612f94565b9150509250925092565b600080fd5b60008083601f84011261315e5761315d612cd2565b5b8235905067ffffffffffffffff81111561317b5761317a613143565b5b60208301915083602082028301111561319757613196612d8f565b5b9250929050565b6131a781612fe9565b81146131b257600080fd5b50565b6000813590506131c48161319e565b92915050565b6000806000604084860312156131e3576131e2612cc8565b5b600084013567ffffffffffffffff81111561320157613200612ccd565b5b61320d86828701613148565b93509350506020613220868287016131b5565b9150509250925092565b600060ff82169050919050565b6132408161322a565b82525050565b600060208201905061325b6000830184613237565b92915050565b61326a81612db4565b82525050565b60006020820190506132856000830184613261565b92915050565b6000602082840312156132a1576132a0612cc8565b5b60006132af848285016131b5565b91505092915050565b6000602082840312156132ce576132cd612cc8565b5b60006132dc84828501612ddd565b91505092915050565b600080604083850312156132fc576132fb612cc8565b5b600061330a85828601612f94565b925050602061331b85828601612f94565b9150509250929050565b6000806040838503121561333c5761333b612cc8565b5b600061334a85828601612ddd565b925050602061335b85828601612ddd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061339b602083612edd565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343a82612f73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361346c5761346b613400565b5b600182019050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d3602283612edd565b91506134de82613477565b604082019050919050565b60006020820190508181036000830152613502816134c6565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613565602383612edd565b915061357082613509565b604082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f7602683612edd565b91506136028261359b565b604082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613689602483612edd565b91506136948261362d565b604082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371b602283612edd565b9150613726826136bf565b604082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137ad602583612edd565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061383f602383612edd565b915061384a826137e3565b604082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006138d1602983612edd565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613963603f83612edd565b915061396e82613907565b604082019050919050565b6000602082019050818103600083015261399281613956565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006139cf601c83612edd565b91506139da82613999565b602082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a61602383612edd565b9150613a6c82613a05565b604082019050919050565b60006020820190508181036000830152613a9081613a54565b9050919050565b6000613aa282612f73565b9150613aad83612f73565b9250828201905080821115613ac557613ac4613400565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b27602383612edd565b9150613b3282613acb565b604082019050919050565b60006020820190508181036000830152613b5681613b1a565b9050919050565b6000613b6882612f73565b9150613b7383612f73565b9250828203905081811115613b8b57613b8a613400565b5b92915050565b600081519050613ba081612dc6565b92915050565b600060208284031215613bbc57613bbb612cc8565b5b6000613bca84828501613b91565b91505092915050565b6000819050919050565b6000613bf8613bf3613bee84613bd3565b61304c565b612f73565b9050919050565b613c0881613bdd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c4381612db4565b82525050565b6000613c558383613c3a565b60208301905092915050565b6000602082019050919050565b6000613c7982613c0e565b613c838185613c19565b9350613c8e83613c2a565b8060005b83811015613cbf578151613ca68882613c49565b9750613cb183613c61565b925050600181019050613c92565b5085935050505092915050565b600060a082019050613ce160008301886130c6565b613cee6020830187613bff565b8181036040830152613d008186613c6e565b9050613d0f6060830185613261565b613d1c60808301846130c6565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d82602a83612edd565b9150613d8d82613d26565b604082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df282612f73565b9150613dfd83612f73565b925082613e0d57613e0c613db8565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4e601b83612edd565b9150613e5982613e18565b602082019050919050565b60006020820190508181036000830152613e7d81613e41565b9050919050565b6000613e8f82612f73565b9150613e9a83612f73565b9250828202613ea881612f73565b91508282048414831517613ebf57613ebe613400565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f22602183612edd565b9150613f2d82613ec6565b604082019050919050565b60006020820190508181036000830152613f5181613f15565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655361746f736869456c6f6e53746576654a6f62735465736c6145696e737465696e4a616e33726432303039a2646970667358221220d28bdaeed7c31a40bf96f25ce259a063fdd3fb2b9c0ba3d84542e57ca4c5d3aa64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101db5760003560e01c80636b999053116101025780638f9a55c011610095578063bfd7928411610064578063bfd792841461066a578063c9567bf9146106a7578063dd62ed3e146106be578063f2fde38b146106fb576101e2565b80638f9a55c0146105ae57806395d89b41146105d95780639a2886b414610604578063a9059cbb1461062d576101e2565b80637f2feddc116100d15780637f2feddc14610506578063806a02e41461054357806383b2f14d1461055a5780638da5cb5b14610583576101e2565b80636b9990531461045e57806370a0823114610487578063715018a6146104c45780637d1db4a5146104db576101e2565b80632f10cfb11161017a57806356f5ab871161014957806356f5ab87146103de5780635da770621461040757806363531def1461041e5780636576c5d214610435576101e2565b80632f10cfb1146103345780632fd689e31461035d578063313ce5671461038857806349bd5a5e146103b3576101e2565b806314e88033116101b657806314e88033146102785780631694505e146102a157806318160ddd146102cc57806323b872dd146102f7576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612e89565b610724565b005b34801561021c57600080fd5b5061022561084e565b6040516102329190612f51565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612fa9565b61086e565b60405161026f9190613004565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a919061301f565b61088c565b005b3480156102ad57600080fd5b506102b661092b565b6040516102c391906130ab565b60405180910390f35b3480156102d857600080fd5b506102e1610951565b6040516102ee91906130d5565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906130f0565b610961565b60405161032b9190613004565b60405180910390f35b34801561034057600080fd5b5061035b600480360381019061035691906131ca565b610a3a565b005b34801561036957600080fd5b50610372610b74565b60405161037f91906130d5565b60405180910390f35b34801561039457600080fd5b5061039d610b7a565b6040516103aa9190613246565b60405180910390f35b3480156103bf57600080fd5b506103c8610b83565b6040516103d59190613270565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061301f565b610ba9565b005b34801561041357600080fd5b5061041c610c48565b005b34801561042a57600080fd5b50610433610d21565b005b34801561044157600080fd5b5061045c6004803603810190610457919061328b565b610df2565b005b34801561046a57600080fd5b50610485600480360381019061048091906132b8565b610ea4565b005b34801561049357600080fd5b506104ae60048036038101906104a991906132b8565b610f94565b6040516104bb91906130d5565b60405180910390f35b3480156104d057600080fd5b506104d9610fe5565b005b3480156104e757600080fd5b506104f0611138565b6040516104fd91906130d5565b60405180910390f35b34801561051257600080fd5b5061052d600480360381019061052891906132b8565b61113e565b60405161053a91906130d5565b60405180910390f35b34801561054f57600080fd5b50610558611156565b005b34801561056657600080fd5b50610581600480360381019061057c91906132e5565b611209565b005b34801561058f57600080fd5b50610598611352565b6040516105a59190613270565b60405180910390f35b3480156105ba57600080fd5b506105c361137b565b6040516105d091906130d5565b60405180910390f35b3480156105e557600080fd5b506105ee611381565b6040516105fb9190612f51565b60405180910390f35b34801561061057600080fd5b5061062b6004803603810190610626919061301f565b6113be565b005b34801561063957600080fd5b50610654600480360381019061064f9190612fa9565b61145d565b6040516106619190613004565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906132b8565b61147b565b60405161069e9190613004565b60405180910390f35b3480156106b357600080fd5b506106bc61149b565b005b3480156106ca57600080fd5b506106e560048036038101906106e09190613325565b61154d565b6040516106f291906130d5565b60405180910390f35b34801561070757600080fd5b50610722600480360381019061071d91906132b8565b6115d4565b005b61072c611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b0906133b1565b60405180910390fd5b60005b815181101561084a576001601060008484815181106107de576107dd6133d1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108429061342f565b9150506107bc565b5050565b60606040518060600160405280602b8152602001613f81602b9139905090565b600061088261087b611795565b848461179d565b6001905092915050565b610894611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610921576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610918906133b1565b60405180910390fd5b8060188190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061096e848484611966565b610a2f8461097a611795565b610a2a85604051806060016040528060288152602001613f5960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e0611795565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e99092919063ffffffff16565b61179d565b600190509392505050565b610a42611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac6906133b1565b60405180910390fd5b60005b83839050811015610b6e578160056000868685818110610af557610af46133d1565b5b9050602002016020810190610b0a91906132b8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b669061342f565b915050610ad2565b50505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bb1611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c35906133b1565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c89611795565b73ffffffffffffffffffffffffffffffffffffffff161480610cff5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce7611795565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0857600080fd5b6000610d1330610f94565b9050610d1e8161224d565b50565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d62611795565b73ffffffffffffffffffffffffffffffffffffffff161480610dd85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dc0611795565b73ffffffffffffffffffffffffffffffffffffffff16145b610de157600080fd5b6000479050610def816124c4565b50565b610dfa611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e906133b1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610eac611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f30906133b1565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610fde600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612530565b9050919050565b610fed611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611071906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b61115e611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906133b1565b60405180910390fd5b6111f3610951565b601681905550611201610951565b601781905550565b611211611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906133b1565b60405180910390fd5b600082101580156112b0575060638211155b6112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e6906134e9565b60405180910390fd5b60008110158015611301575060638111155b611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061357b565b60405180910390fd5b8160098190555080600b819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600d81526020017f24534d415254424954434f494e00000000000000000000000000000000000000815250905090565b6113c6611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906133b1565b60405180910390fd5b8060168190555050565b600061147161146a611795565b8484611966565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6114a3611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611527906133b1565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115dc611795565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611660906133b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf9061360d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118039061369f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613731565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195991906130d5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906137c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613855565b60405180910390fd5b60008111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e906138e7565b60405180910390fd5b611a8f611352565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611afd5750611acd611352565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee857601560149054906101000a900460ff16611b8c57611b1e611352565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290613979565b60405180910390fd5b5b601654811115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc8906139e5565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c755750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab90613a77565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d615760175481611d1684610f94565b611d209190613a97565b10611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613b3d565b60405180910390fd5b5b6000611d6c30610f94565b9050600060185482101590506018548210611d875760185491505b808015611d9f575060158054906101000a900460ff16155b8015611df95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e115750601560169054906101000a900460ff165b8015611e675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ebd5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ee557611ecb8261224d565b60004790506000811115611ee357611ee2476124c4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120415750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561205057600090506121d7565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120fb5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561211357600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121be5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121d657600a54600c81905550600b54600d819055505b5b6121e38484848461259e565b50505050565b6000838311158290612231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122289190612f51565b60405180910390fd5b50600083856122409190613b5d565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561228457612283612ce8565b5b6040519080825280602002602001820160405280156122b25781602001602082028036833780820191505090505b50905030816000815181106122ca576122c96133d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123959190613ba6565b816001815181106123a9576123a86133d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461179d565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612474959493929190613ccc565b600060405180830381600087803b15801561248e57600080fd5b505af11580156124a2573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252c573d6000803e3d6000fd5b5050565b6000600654821115612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e90613d98565b60405180910390fd5b60006125816125cb565b905061259681846125f690919063ffffffff16565b915050919050565b806125ac576125ab612640565b5b6125b784848461267d565b806125c5576125c4612848565b5b50505050565b60008060006125d861285c565b915091506125ef81836125f690919063ffffffff16565b9250505090565b600061263883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bb565b905092915050565b6000600c5414801561265457506000600d54145b61267b57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061268f8761291e565b9550955095509550955095506126ed86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ce81612a2e565b6127d88483612aeb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161283591906130d5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612890670de0b6b3a76400006006546125f690919063ffffffff16565b8210156128ae57600654670de0b6b3a76400009350935050506128b7565b81819350935050505b9091565b60008083118290612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f99190612f51565b60405180910390fd5b50600083856129119190613de7565b9050809150509392505050565b600080600080600080600080600061293b8a600c54600d54612b25565b925092509250600061294b6125cb565b9050600080600061295e8e878787612bbb565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006129c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121e9565b905092915050565b60008082846129df9190613a97565b905083811015612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b90613e64565b60405180910390fd5b8091505092915050565b6000612a386125cb565b90506000612a4f8284612c4490919063ffffffff16565b9050612aa381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b008260065461298690919063ffffffff16565b600681905550612b1b816007546129d090919063ffffffff16565b6007819055505050565b600080600080612b516064612b43888a612c4490919063ffffffff16565b6125f690919063ffffffff16565b90506000612b7b6064612b6d888b612c4490919063ffffffff16565b6125f690919063ffffffff16565b90506000612ba482612b96858c61298690919063ffffffff16565b61298690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bd48589612c4490919063ffffffff16565b90506000612beb8689612c4490919063ffffffff16565b90506000612c028789612c4490919063ffffffff16565b90506000612c2b82612c1d858761298690919063ffffffff16565b61298690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612c565760009050612cb8565b60008284612c649190613e84565b9050828482612c739190613de7565b14612cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612caa90613f38565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d2082612cd7565b810181811067ffffffffffffffff82111715612d3f57612d3e612ce8565b5b80604052505050565b6000612d52612cbe565b9050612d5e8282612d17565b919050565b600067ffffffffffffffff821115612d7e57612d7d612ce8565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dbf82612d94565b9050919050565b612dcf81612db4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000612e05612e0084612d63565b612d48565b90508083825260208201905060208402830185811115612e2857612e27612d8f565b5b835b81811015612e515780612e3d8882612ddd565b845260208401935050602081019050612e2a565b5050509392505050565b600082601f830112612e7057612e6f612cd2565b5b8135612e80848260208601612df2565b91505092915050565b600060208284031215612e9f57612e9e612cc8565b5b600082013567ffffffffffffffff811115612ebd57612ebc612ccd565b5b612ec984828501612e5b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f0c578082015181840152602081019050612ef1565b60008484015250505050565b6000612f2382612ed2565b612f2d8185612edd565b9350612f3d818560208601612eee565b612f4681612cd7565b840191505092915050565b60006020820190508181036000830152612f6b8184612f18565b905092915050565b6000819050919050565b612f8681612f73565b8114612f9157600080fd5b50565b600081359050612fa381612f7d565b92915050565b60008060408385031215612fc057612fbf612cc8565b5b6000612fce85828601612ddd565b9250506020612fdf85828601612f94565b9150509250929050565b60008115159050919050565b612ffe81612fe9565b82525050565b60006020820190506130196000830184612ff5565b92915050565b60006020828403121561303557613034612cc8565b5b600061304384828501612f94565b91505092915050565b6000819050919050565b600061307161306c61306784612d94565b61304c565b612d94565b9050919050565b600061308382613056565b9050919050565b600061309582613078565b9050919050565b6130a58161308a565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf81612f73565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60008060006060848603121561310957613108612cc8565b5b600061311786828701612ddd565b935050602061312886828701612ddd565b925050604061313986828701612f94565b9150509250925092565b600080fd5b60008083601f84011261315e5761315d612cd2565b5b8235905067ffffffffffffffff81111561317b5761317a613143565b5b60208301915083602082028301111561319757613196612d8f565b5b9250929050565b6131a781612fe9565b81146131b257600080fd5b50565b6000813590506131c48161319e565b92915050565b6000806000604084860312156131e3576131e2612cc8565b5b600084013567ffffffffffffffff81111561320157613200612ccd565b5b61320d86828701613148565b93509350506020613220868287016131b5565b9150509250925092565b600060ff82169050919050565b6132408161322a565b82525050565b600060208201905061325b6000830184613237565b92915050565b61326a81612db4565b82525050565b60006020820190506132856000830184613261565b92915050565b6000602082840312156132a1576132a0612cc8565b5b60006132af848285016131b5565b91505092915050565b6000602082840312156132ce576132cd612cc8565b5b60006132dc84828501612ddd565b91505092915050565b600080604083850312156132fc576132fb612cc8565b5b600061330a85828601612f94565b925050602061331b85828601612f94565b9150509250929050565b6000806040838503121561333c5761333b612cc8565b5b600061334a85828601612ddd565b925050602061335b85828601612ddd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061339b602083612edd565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343a82612f73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361346c5761346b613400565b5b600182019050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d3602283612edd565b91506134de82613477565b604082019050919050565b60006020820190508181036000830152613502816134c6565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613565602383612edd565b915061357082613509565b604082019050919050565b6000602082019050818103600083015261359481613558565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f7602683612edd565b91506136028261359b565b604082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613689602483612edd565b91506136948261362d565b604082019050919050565b600060208201905081810360008301526136b88161367c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371b602283612edd565b9150613726826136bf565b604082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137ad602583612edd565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061383f602383612edd565b915061384a826137e3565b604082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006138d1602983612edd565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613963603f83612edd565b915061396e82613907565b604082019050919050565b6000602082019050818103600083015261399281613956565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006139cf601c83612edd565b91506139da82613999565b602082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a61602383612edd565b9150613a6c82613a05565b604082019050919050565b60006020820190508181036000830152613a9081613a54565b9050919050565b6000613aa282612f73565b9150613aad83612f73565b9250828201905080821115613ac557613ac4613400565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b27602383612edd565b9150613b3282613acb565b604082019050919050565b60006020820190508181036000830152613b5681613b1a565b9050919050565b6000613b6882612f73565b9150613b7383612f73565b9250828203905081811115613b8b57613b8a613400565b5b92915050565b600081519050613ba081612dc6565b92915050565b600060208284031215613bbc57613bbb612cc8565b5b6000613bca84828501613b91565b91505092915050565b6000819050919050565b6000613bf8613bf3613bee84613bd3565b61304c565b612f73565b9050919050565b613c0881613bdd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c4381612db4565b82525050565b6000613c558383613c3a565b60208301905092915050565b6000602082019050919050565b6000613c7982613c0e565b613c838185613c19565b9350613c8e83613c2a565b8060005b83811015613cbf578151613ca68882613c49565b9750613cb183613c61565b925050600181019050613c92565b5085935050505092915050565b600060a082019050613ce160008301886130c6565b613cee6020830187613bff565b8181036040830152613d008186613c6e565b9050613d0f6060830185613261565b613d1c60808301846130c6565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d82602a83612edd565b9150613d8d82613d26565b604082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df282612f73565b9150613dfd83612f73565b925082613e0d57613e0c613db8565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4e601b83612edd565b9150613e5982613e18565b602082019050919050565b60006020820190508181036000830152613e7d81613e41565b9050919050565b6000613e8f82612f73565b9150613e9a83612f73565b9250828202613ea881612f73565b91508282048414831517613ebf57613ebe613400565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f22602183612edd565b9150613f2d82613ec6565b604082019050919050565b60006020820190508181036000830152613f5181613f15565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655361746f736869456c6f6e53746576654a6f62735465736c6145696e737465696e4a616e33726432303039a2646970667358221220d28bdaeed7c31a40bf96f25ce259a063fdd3fb2b9c0ba3d84542e57ca4c5d3aa64736f6c63430008120033

Deployed Bytecode Sourcemap

4154:13739:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12885:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6687:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7619:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16924:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5551:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6967:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17655:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5853:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17527:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12394:237;;;;;;;;;;;;;:::i;:::-;;12640:236;;;;;;;;;;;;;:::i;:::-;;17118:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13063:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7071:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1666:148;;;;;;;;;;;;;:::i;:::-;;5743:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5290:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17226:130;;;;;;;;;;;;;:::i;:::-;;16572:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1456:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5797:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6779:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17393:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7218:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5252:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12308:77;;;;;;;;;;;;;:::i;:::-;;7426:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1823:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12885:169;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12961:9:::1;12956:91;12980:5;:12;12976:1;:16;12956:91;;;13031:4;13014;:14;13019:5;13025:1;13019:8;;;;;;;;:::i;:::-;;;;;;;;13014:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12994:3;;;;;:::i;:::-;;;;12956:91;;;;12885:169:::0;:::o;6687:83::-;6724:13;6757:5;;;;;;;;;;;;;;;;;6750:12;;6687:83;:::o;7619:193::-;7721:4;7743:39;7752:12;:10;:12::i;:::-;7766:7;7775:6;7743:8;:39::i;:::-;7800:4;7793:11;;7619:193;;;;:::o;16924:143::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17041:18:::1;17019:19;:40;;;;16924:143:::0;:::o;5551:41::-;;;;;;;;;;;;;:::o;6967:95::-;7020:7;4743:18;7040:14;;6967:95;:::o;7821:446::-;7953:4;7970:36;7980:6;7988:9;7999:6;7970:9;:36::i;:::-;8017:220;8040:6;8061:12;:10;:12::i;:::-;8088:138;8144:6;8088:138;;;;;;;;;;;;;;;;;:11;:19;8100:6;8088:19;;;;;;;;;;;;;;;:33;8108:12;:10;:12::i;:::-;8088:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8017:8;:220::i;:::-;8255:4;8248:11;;7821:446;;;;;:::o;17655:235::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17773:9:::1;17769:114;17792:8;;:15;;17788:1;:19;17769:114;;;17863:8;17829:18;:31;17848:8;;17857:1;17848:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17829:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17809:3;;;;;:::i;:::-;;;;17769:114;;;;17655:235:::0;;;:::o;5853:52::-;;;;:::o;6875:83::-;6916:5;4419:1;6934:16;;6875:83;:::o;5599:28::-;;;;;;;;;;;;;:::o;17527:119::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17625:13:::1;17608:14;:30;;;;17527:119:::0;:::o;12394:237::-;12461:19;;;;;;;;;;;12445:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12500:17;;;;;;;;;;;12484:33;;:12;:10;:12::i;:::-;:33;;;12445:72;12437:81;;;;;;12529:23;12555:24;12573:4;12555:9;:24::i;:::-;12529:50;;12590:33;12607:15;12590:16;:33::i;:::-;12426:205;12394:237::o;12640:236::-;12707:19;;;;;;;;;;;12691:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12746:17;;;;;;;;;;;12730:33;;:12;:10;:12::i;:::-;:33;;;12691:72;12683:81;;;;;;12775:26;12804:21;12775:50;;12836:32;12849:18;12836:12;:32::i;:::-;12672:204;12640:236::o;17118:102::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17200:12:::1;17186:11;;:26;;;;;;;;;;;;;;;;;;17118:102:::0;:::o;13063:92::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13142:5:::1;13127:4;:12;13132:6;13127:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13063:92:::0;:::o;7071:138::-;7137:7;7164:37;7184:7;:16;7192:7;7184:16;;;;;;;;;;;;;;;;7164:19;:37::i;:::-;7157:44;;7071:138;;;:::o;1666:148::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1773:1:::1;1736:40;;1757:6;::::0;::::1;;;;;;;;1736:40;;;;;;;;;;;;1804:1;1787:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1666:148::o:0;5743:46::-;;;;:::o;5290:43::-;;;;;;;;;;;;;;;;;:::o;17226:130::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17294:13:::1;:11;:13::i;:::-;17279:12;:28;;;;17335:13;:11;:13::i;:::-;17318:14;:30;;;;17226:130::o:0;16572:298::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16662:1:::1;16654:4;:9;;:23;;;;;16675:2;16667:4;:10;;16654:23;16646:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16744:1;16735:5;:10;;:25;;;;;16758:2;16749:5;:11;;16735:25;16727:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16826:4;16811:12;:19;;;;16857:5;16841:13;:21;;;;16572:298:::0;;:::o;1456:79::-;1494:7;1521:6;;;;;;;;;;;1514:13;;1456:79;:::o;5797:48::-;;;;:::o;6779:87::-;6818:13;6851:7;;;;;;;;;;;;;;;;;6844:14;;6779:87;:::o;17393:125::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:11:::1;17474:12;:26;;;;17393:125:::0;:::o;7218:199::-;7323:4;7345:42;7355:12;:10;:12::i;:::-;7369:9;7380:6;7345:9;:42::i;:::-;7405:4;7398:11;;7218:199;;;;:::o;5252:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12308:77::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12373:4:::1;12359:11;;:18;;;;;;;;;;;;;;;;;;12308:77::o:0;7426:184::-;7543:7;7575:11;:18;7587:5;7575:18;;;;;;;;;;;;;;;:27;7594:7;7575:27;;;;;;;;;;;;;;;;7568:34;;7426:184;;;;:::o;1823:244::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1932:1:::1;1912:22;;:8;:22;;::::0;1904:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2022:8;1993:38;;2014:6;::::0;::::1;;;;;;;;1993:38;;;;;;;;;;;;2051:8;2042:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1823:244:::0;:::o;235:98::-;288:7;315:10;308:17;;235:98;:::o;8964:369::-;9108:1;9091:19;;:5;:19;;;9083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9189:1;9170:21;;:7;:21;;;9162:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9271:6;9241:11;:18;9253:5;9241:18;;;;;;;;;;;;;;;:27;9260:7;9241:27;;;;;;;;;;;;;;;:36;;;;9309:7;9293:32;;9302:5;9293:32;;;9318:6;9293:32;;;;;;:::i;:::-;;;;;;;;8964:369;;;:::o;9342:2357::-;9480:1;9464:18;;:4;:18;;;9456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9557:1;9543:16;;:2;:16;;;9535:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:1;9618:6;:10;9610:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9700:7;:5;:7::i;:::-;9692:15;;:4;:15;;;;:32;;;;;9717:7;:5;:7::i;:::-;9711:13;;:2;:13;;;;9692:32;9688:1279;;;9782:11;;;;;;;;;;;9777:144;;9830:7;:5;:7::i;:::-;9822:15;;:4;:15;;;9814:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9777:144;9956:12;;9946:6;:22;;9938:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10025:4;:10;10030:4;10025:10;;;;;;;;;;;;;;;;;;;;;;;;;10024:11;:24;;;;;10040:4;:8;10045:2;10040:8;;;;;;;;;;;;;;;;;;;;;;;;;10039:9;10024:24;10016:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10115:13;;;;;;;;;;;10109:19;;:2;:19;;;10106:146;;10182:14;;10173:6;10157:13;10167:2;10157:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10149:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10106:146;10269:28;10300:24;10318:4;10300:9;:24::i;:::-;10269:55;;10339:12;10378:19;;10354:20;:43;;10339:58;;10442:19;;10418:20;:43;10415:138;;10518:19;;10495:42;;10415:138;10574:7;:18;;;;;10586:6;;;;;;;;;;10585:7;10574:18;:43;;;;;10604:13;;;;;;;;;;;10596:21;;:4;:21;;;;10574:43;:58;;;;;10621:11;;;;;;;;;;;10574:58;:87;;;;;10637:18;:24;10656:4;10637:24;;;;;;;;;;;;;;;;;;;;;;;;;10636:25;10574:87;:114;;;;;10666:18;:22;10685:2;10666:22;;;;;;;;;;;;;;;;;;;;;;;;;10665:23;10574:114;10570:386;;;10709:38;10726:20;10709:16;:38::i;:::-;10766:26;10795:21;10766:50;;10860:1;10839:18;:22;10835:106;;;10886:35;10899:21;10886:12;:35::i;:::-;10835:106;10690:266;10570:386;9726:1241;;9688:1279;10980:12;10995:4;10980:19;;11045:18;:24;11064:4;11045:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11073:18;:22;11092:2;11073:22;;;;;;;;;;;;;;;;;;;;;;;;;11045:50;11044:102;;;;11109:13;;;;;;;;;;;11101:21;;:4;:21;;;;:44;;;;;11132:13;;;;;;;;;;;11126:19;;:2;:19;;;;11101:44;11044:102;11040:597;;;11173:5;11163:15;;11040:597;;;11257:13;;;;;;;;;;;11249:21;;:4;:21;;;:55;;;;;11288:15;;;;;;;;;;;11274:30;;:2;:30;;;;11249:55;11246:162;;;11337:14;;11325:9;:26;;;;11380:12;;11370:7;:22;;;;11246:162;11468:13;;;;;;;;;;;11462:19;;:2;:19;;;:55;;;;;11501:15;;;;;;;;;;;11485:32;;:4;:32;;;;11462:55;11458:165;;;11550:15;;11538:9;:27;;;;11594:13;;11584:7;:23;;;;11458:165;11040:597;11650:41;11665:4;11671:2;11675:6;11683:7;11650:14;:41::i;:::-;9445:2254;9342:2357;;;:::o;2423:224::-;2543:7;2576:1;2571;:6;;2579:12;2563:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2603:9;2619:1;2615;:5;;;;:::i;:::-;2603:17;;2638:1;2631:8;;;2423:224;;;;;:::o;11708:483::-;6009:4;6000:6;;:13;;;;;;;;;;;;;;;;;;11786:21:::1;11824:1;11810:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11786:40;;11855:4;11837;11842:1;11837:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11881:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11871:4;11876:1;11871:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11914:62;11931:4;11946:15;;;;;;;;;;;11964:11;11914:8;:62::i;:::-;11987:15;;;;;;;;;;;:66;;;12068:11;12094:1;12110:4;12137;12157:15;11987:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11775:416;6045:5:::0;6036:6;;:14;;;;;;;;;;;;;;;;;;11708:483;:::o;12200:99::-;12257:17;;;;;;;;;;;:26;;:34;12284:6;12257:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12200:99;:::o;8276:323::-;8371:7;8429;;8418;:18;;8396:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8517:19;8539:10;:8;:10::i;:::-;8517:32;;8567:24;8579:11;8567:7;:11;;:24;;;;:::i;:::-;8560:31;;;8276:323;;;:::o;13164:282::-;13320:7;13315:28;;13329:14;:12;:14::i;:::-;13315:28;13354:44;13372:6;13380:9;13391:6;13354:17;:44::i;:::-;13414:7;13409:29;;13423:15;:13;:15::i;:::-;13409:29;13164:282;;;;:::o;16133:164::-;16175:7;16196:15;16213;16232:19;:17;:19::i;:::-;16195:56;;;;16269:20;16281:7;16269;:11;;:20;;;;:::i;:::-;16262:27;;;;16133:164;:::o;2905:132::-;2963:7;2990:39;2994:1;2997;2990:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2983:46;;2905:132;;;;:::o;8608:221::-;8668:1;8655:9;;:14;:30;;;;;8684:1;8673:7;;:12;8655:30;8687:7;8651:43;8727:9;;8707:17;:29;;;;8765:7;;8747:15;:25;;;;8798:1;8786:9;:13;;;;8820:1;8810:7;:11;;;;8608:221;:::o;13455:610::-;13602:15;13632:23;13670:12;13697:23;13735:12;13762:13;13789:19;13800:7;13789:10;:19::i;:::-;13587:221;;;;;;;;;;;;13837:28;13857:7;13837;:15;13845:6;13837:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13819:7;:15;13827:6;13819:15;;;;;;;;;;;;;;;:46;;;;13897:39;13920:15;13897:7;:18;13905:9;13897:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13876:7;:18;13884:9;13876:18;;;;;;;;;;;;;;;:60;;;;13947:16;13957:5;13947:9;:16::i;:::-;13974:23;13986:4;13992;13974:11;:23::i;:::-;14030:9;14013:44;;14022:6;14013:44;;;14041:15;14013:44;;;;;;:::i;:::-;;;;;;;;13576:489;;;;;;13455:610;;;:::o;8838:117::-;8894:17;;8882:9;:29;;;;8932:15;;8922:7;:25;;;;8838:117::o;16306:257::-;16357:7;16366;16386:15;16404:7;;16386:25;;16422:15;4743:18;16422:25;;16472:20;4743:18;16472:7;;:11;;:20;;;;:::i;:::-;16462:7;:30;16458:61;;;16502:7;;4743:18;16494:25;;;;;;;;16458:61;16538:7;16547;16530:25;;;;;;16306:257;;;:::o;3043:223::-;3163:7;3195:1;3191;:5;3198:12;3183:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3222:9;3238:1;3234;:5;;;;:::i;:::-;3222:17;;3257:1;3250:8;;;3043:223;;;;;:::o;14488:615::-;14588:7;14610;14632;14654;14676;14698;14734:23;14759:12;14773:13;14803:40;14815:7;14824:9;;14835:7;;14803:11;:40::i;:::-;14733:110;;;;;;14854:19;14876:10;:8;:10::i;:::-;14854:32;;14898:15;14915:23;14940:12;14969:46;14981:7;14990:4;14996:5;15003:11;14969;:46::i;:::-;14897:118;;;;;;15034:7;15043:15;15060:4;15066:15;15083:4;15089:5;15026:69;;;;;;;;;;;;;;;;;;;14488:615;;;;;;;:::o;2281:136::-;2339:7;2366:43;2370:1;2373;2366:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2359:50;;2281:136;;;;:::o;2096:179::-;2154:7;2174:9;2190:1;2186;:5;;;;:::i;:::-;2174:17;;2215:1;2210;:6;;2202:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2266:1;2259:8;;;2096:179;;;;:::o;14074:211::-;14127:19;14149:10;:8;:10::i;:::-;14127:32;;14170:13;14186:22;14196:11;14186:5;:9;;:22;;;;:::i;:::-;14170:38;;14244:33;14271:5;14244:7;:22;14260:4;14244:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14219:7;:22;14235:4;14219:22;;;;;;;;;;;;;;;:58;;;;14116:169;;14074:211;:::o;14294:147::-;14372:17;14384:4;14372:7;;:11;;:17;;;;:::i;:::-;14362:7;:27;;;;14413:20;14428:4;14413:10;;:14;;:20;;;;:::i;:::-;14400:10;:33;;;;14294:147;;:::o;15112:469::-;15281:7;15303;15325;15360:12;15375:30;15401:3;15375:21;15387:8;15375:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15360:45;;15416:13;15432:28;15456:3;15432:19;15444:6;15432:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15416:44;;15471:23;15497:28;15519:5;15497:17;15509:4;15497:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15471:54;;15544:15;15561:4;15567:5;15536:37;;;;;;;;;15112:469;;;;;;;:::o;15590:534::-;15784:7;15806;15828;15863:15;15881:24;15893:11;15881:7;:11;;:24;;;;:::i;:::-;15863:42;;15916:12;15931:21;15940:11;15931:4;:8;;:21;;;;:::i;:::-;15916:36;;15963:13;15979:22;15989:11;15979:5;:9;;:22;;;;:::i;:::-;15963:38;;16012:23;16038:28;16060:5;16038:17;16050:4;16038:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16012:54;;16085:7;16094:15;16111:4;16077:39;;;;;;;;;;15590:534;;;;;;;;:::o;2653:246::-;2711:7;2740:1;2735;:6;2731:47;;2765:1;2758:8;;;;2731:47;2788:9;2804:1;2800;:5;;;;:::i;:::-;2788:17;;2833:1;2828;2824;:5;;;;:::i;:::-;:10;2816:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2890:1;2883:8;;;2653:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:329::-;6347:6;6396:2;6384:9;6375:7;6371:23;6367:32;6364:119;;;6402:79;;:::i;:::-;6364:119;6522:1;6547:53;6592:7;6583:6;6572:9;6568:22;6547:53;:::i;:::-;6537:63;;6493:117;6288:329;;;;:::o;6623:60::-;6651:3;6672:5;6665:12;;6623:60;;;:::o;6689:142::-;6739:9;6772:53;6790:34;6799:24;6817:5;6799:24;:::i;:::-;6790:34;:::i;:::-;6772:53;:::i;:::-;6759:66;;6689:142;;;:::o;6837:126::-;6887:9;6920:37;6951:5;6920:37;:::i;:::-;6907:50;;6837:126;;;:::o;6969:152::-;7045:9;7078:37;7109:5;7078:37;:::i;:::-;7065:50;;6969:152;;;:::o;7127:183::-;7240:63;7297:5;7240:63;:::i;:::-;7235:3;7228:76;7127:183;;:::o;7316:274::-;7435:4;7473:2;7462:9;7458:18;7450:26;;7486:97;7580:1;7569:9;7565:17;7556:6;7486:97;:::i;:::-;7316:274;;;;:::o;7596:118::-;7683:24;7701:5;7683:24;:::i;:::-;7678:3;7671:37;7596:118;;:::o;7720:222::-;7813:4;7851:2;7840:9;7836:18;7828:26;;7864:71;7932:1;7921:9;7917:17;7908:6;7864:71;:::i;:::-;7720:222;;;;:::o;7948:619::-;8025:6;8033;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;8471:2;8497:53;8542:7;8533:6;8522:9;8518:22;8497:53;:::i;:::-;8487:63;;8442:118;7948:619;;;;;:::o;8573:117::-;8682:1;8679;8672:12;8713:568;8786:8;8796:6;8846:3;8839:4;8831:6;8827:17;8823:27;8813:122;;8854:79;;:::i;:::-;8813:122;8967:6;8954:20;8944:30;;8997:18;8989:6;8986:30;8983:117;;;9019:79;;:::i;:::-;8983:117;9133:4;9125:6;9121:17;9109:29;;9187:3;9179:4;9171:6;9167:17;9157:8;9153:32;9150:41;9147:128;;;9194:79;;:::i;:::-;9147:128;8713:568;;;;;:::o;9287:116::-;9357:21;9372:5;9357:21;:::i;:::-;9350:5;9347:32;9337:60;;9393:1;9390;9383:12;9337:60;9287:116;:::o;9409:133::-;9452:5;9490:6;9477:20;9468:29;;9506:30;9530:5;9506:30;:::i;:::-;9409:133;;;;:::o;9548:698::-;9640:6;9648;9656;9705:2;9693:9;9684:7;9680:23;9676:32;9673:119;;;9711:79;;:::i;:::-;9673:119;9859:1;9848:9;9844:17;9831:31;9889:18;9881:6;9878:30;9875:117;;;9911:79;;:::i;:::-;9875:117;10024:80;10096:7;10087:6;10076:9;10072:22;10024:80;:::i;:::-;10006:98;;;;9802:312;10153:2;10179:50;10221:7;10212:6;10201:9;10197:22;10179:50;:::i;:::-;10169:60;;10124:115;9548:698;;;;;:::o;10252:86::-;10287:7;10327:4;10320:5;10316:16;10305:27;;10252:86;;;:::o;10344:112::-;10427:22;10443:5;10427:22;:::i;:::-;10422:3;10415:35;10344:112;;:::o;10462:214::-;10551:4;10589:2;10578:9;10574:18;10566:26;;10602:67;10666:1;10655:9;10651:17;10642:6;10602:67;:::i;:::-;10462:214;;;;:::o;10682:118::-;10769:24;10787:5;10769:24;:::i;:::-;10764:3;10757:37;10682:118;;:::o;10806:222::-;10899:4;10937:2;10926:9;10922:18;10914:26;;10950:71;11018:1;11007:9;11003:17;10994:6;10950:71;:::i;:::-;10806:222;;;;:::o;11034:323::-;11090:6;11139:2;11127:9;11118:7;11114:23;11110:32;11107:119;;;11145:79;;:::i;:::-;11107:119;11265:1;11290:50;11332:7;11323:6;11312:9;11308:22;11290:50;:::i;:::-;11280:60;;11236:114;11034:323;;;;:::o;11363:329::-;11422:6;11471:2;11459:9;11450:7;11446:23;11442:32;11439:119;;;11477:79;;:::i;:::-;11439:119;11597:1;11622:53;11667:7;11658:6;11647:9;11643:22;11622:53;:::i;:::-;11612:63;;11568:117;11363:329;;;;:::o;11698:474::-;11766:6;11774;11823:2;11811:9;11802:7;11798:23;11794:32;11791:119;;;11829:79;;:::i;:::-;11791:119;11949:1;11974:53;12019:7;12010:6;11999:9;11995:22;11974:53;:::i;:::-;11964:63;;11920:117;12076:2;12102:53;12147:7;12138:6;12127:9;12123:22;12102:53;:::i;:::-;12092:63;;12047:118;11698:474;;;;;:::o;12178:::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:182::-;12798:34;12794:1;12786:6;12782:14;12775:58;12658:182;:::o;12846:366::-;12988:3;13009:67;13073:2;13068:3;13009:67;:::i;:::-;13002:74;;13085:93;13174:3;13085:93;:::i;:::-;13203:2;13198:3;13194:12;13187:19;;12846:366;;;:::o;13218:419::-;13384:4;13422:2;13411:9;13407:18;13399:26;;13471:9;13465:4;13461:20;13457:1;13446:9;13442:17;13435:47;13499:131;13625:4;13499:131;:::i;:::-;13491:139;;13218:419;;;:::o;13643:180::-;13691:77;13688:1;13681:88;13788:4;13785:1;13778:15;13812:4;13809:1;13802:15;13829:180;13877:77;13874:1;13867:88;13974:4;13971:1;13964:15;13998:4;13995:1;13988:15;14015:233;14054:3;14077:24;14095:5;14077:24;:::i;:::-;14068:33;;14123:66;14116:5;14113:77;14110:103;;14193:18;;:::i;:::-;14110:103;14240:1;14233:5;14229:13;14222:20;;14015:233;;;:::o;14254:221::-;14394:34;14390:1;14382:6;14378:14;14371:58;14463:4;14458:2;14450:6;14446:15;14439:29;14254:221;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:222::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:5;15482:2;15474:6;15470:15;15463:30;15278:222;:::o;15506:366::-;15648:3;15669:67;15733:2;15728:3;15669:67;:::i;:::-;15662:74;;15745:93;15834:3;15745:93;:::i;:::-;15863:2;15858:3;15854:12;15847:19;;15506:366;;;:::o;15878:419::-;16044:4;16082:2;16071:9;16067:18;16059:26;;16131:9;16125:4;16121:20;16117:1;16106:9;16102:17;16095:47;16159:131;16285:4;16159:131;:::i;:::-;16151:139;;15878:419;;;:::o;16303:225::-;16443:34;16439:1;16431:6;16427:14;16420:58;16512:8;16507:2;16499:6;16495:15;16488:33;16303:225;:::o;16534:366::-;16676:3;16697:67;16761:2;16756:3;16697:67;:::i;:::-;16690:74;;16773:93;16862:3;16773:93;:::i;:::-;16891:2;16886:3;16882:12;16875:19;;16534:366;;;:::o;16906:419::-;17072:4;17110:2;17099:9;17095:18;17087:26;;17159:9;17153:4;17149:20;17145:1;17134:9;17130:17;17123:47;17187:131;17313:4;17187:131;:::i;:::-;17179:139;;16906:419;;;:::o;17331:223::-;17471:34;17467:1;17459:6;17455:14;17448:58;17540:6;17535:2;17527:6;17523:15;17516:31;17331:223;:::o;17560:366::-;17702:3;17723:67;17787:2;17782:3;17723:67;:::i;:::-;17716:74;;17799:93;17888:3;17799:93;:::i;:::-;17917:2;17912:3;17908:12;17901:19;;17560:366;;;:::o;17932:419::-;18098:4;18136:2;18125:9;18121:18;18113:26;;18185:9;18179:4;18175:20;18171:1;18160:9;18156:17;18149:47;18213:131;18339:4;18213:131;:::i;:::-;18205:139;;17932:419;;;:::o;18357:221::-;18497:34;18493:1;18485:6;18481:14;18474:58;18566:4;18561:2;18553:6;18549:15;18542:29;18357:221;:::o;18584:366::-;18726:3;18747:67;18811:2;18806:3;18747:67;:::i;:::-;18740:74;;18823:93;18912:3;18823:93;:::i;:::-;18941:2;18936:3;18932:12;18925:19;;18584:366;;;:::o;18956:419::-;19122:4;19160:2;19149:9;19145:18;19137:26;;19209:9;19203:4;19199:20;19195:1;19184:9;19180:17;19173:47;19237:131;19363:4;19237:131;:::i;:::-;19229:139;;18956:419;;;:::o;19381:224::-;19521:34;19517:1;19509:6;19505:14;19498:58;19590:7;19585:2;19577:6;19573:15;19566:32;19381:224;:::o;19611:366::-;19753:3;19774:67;19838:2;19833:3;19774:67;:::i;:::-;19767:74;;19850:93;19939:3;19850:93;:::i;:::-;19968:2;19963:3;19959:12;19952:19;;19611:366;;;:::o;19983:419::-;20149:4;20187:2;20176:9;20172:18;20164:26;;20236:9;20230:4;20226:20;20222:1;20211:9;20207:17;20200:47;20264:131;20390:4;20264:131;:::i;:::-;20256:139;;19983:419;;;:::o;20408:222::-;20548:34;20544:1;20536:6;20532:14;20525:58;20617:5;20612:2;20604:6;20600:15;20593:30;20408:222;:::o;20636:366::-;20778:3;20799:67;20863:2;20858:3;20799:67;:::i;:::-;20792:74;;20875:93;20964:3;20875:93;:::i;:::-;20993:2;20988:3;20984:12;20977:19;;20636:366;;;:::o;21008:419::-;21174:4;21212:2;21201:9;21197:18;21189:26;;21261:9;21255:4;21251:20;21247:1;21236:9;21232:17;21225:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21008:419;;;:::o;21433:228::-;21573:34;21569:1;21561:6;21557:14;21550:58;21642:11;21637:2;21629:6;21625:15;21618:36;21433:228;:::o;21667:366::-;21809:3;21830:67;21894:2;21889:3;21830:67;:::i;:::-;21823:74;;21906:93;21995:3;21906:93;:::i;:::-;22024:2;22019:3;22015:12;22008:19;;21667:366;;;:::o;22039:419::-;22205:4;22243:2;22232:9;22228:18;22220:26;;22292:9;22286:4;22282:20;22278:1;22267:9;22263:17;22256:47;22320:131;22446:4;22320:131;:::i;:::-;22312:139;;22039:419;;;:::o;22464:250::-;22604:34;22600:1;22592:6;22588:14;22581:58;22673:33;22668:2;22660:6;22656:15;22649:58;22464:250;:::o;22720:366::-;22862:3;22883:67;22947:2;22942:3;22883:67;:::i;:::-;22876:74;;22959:93;23048:3;22959:93;:::i;:::-;23077:2;23072:3;23068:12;23061:19;;22720:366;;;:::o;23092:419::-;23258:4;23296:2;23285:9;23281:18;23273:26;;23345:9;23339:4;23335:20;23331:1;23320:9;23316:17;23309:47;23373:131;23499:4;23373:131;:::i;:::-;23365:139;;23092:419;;;:::o;23517:178::-;23657:30;23653:1;23645:6;23641:14;23634:54;23517:178;:::o;23701:366::-;23843:3;23864:67;23928:2;23923:3;23864:67;:::i;:::-;23857:74;;23940:93;24029:3;23940:93;:::i;:::-;24058:2;24053:3;24049:12;24042:19;;23701:366;;;:::o;24073:419::-;24239:4;24277:2;24266:9;24262:18;24254:26;;24326:9;24320:4;24316:20;24312:1;24301:9;24297:17;24290:47;24354:131;24480:4;24354:131;:::i;:::-;24346:139;;24073:419;;;:::o;24498:222::-;24638:34;24634:1;24626:6;24622:14;24615:58;24707:5;24702:2;24694:6;24690:15;24683:30;24498:222;:::o;24726:366::-;24868:3;24889:67;24953:2;24948:3;24889:67;:::i;:::-;24882:74;;24965:93;25054:3;24965:93;:::i;:::-;25083:2;25078:3;25074:12;25067:19;;24726:366;;;:::o;25098:419::-;25264:4;25302:2;25291:9;25287:18;25279:26;;25351:9;25345:4;25341:20;25337:1;25326:9;25322:17;25315:47;25379:131;25505:4;25379:131;:::i;:::-;25371:139;;25098:419;;;:::o;25523:191::-;25563:3;25582:20;25600:1;25582:20;:::i;:::-;25577:25;;25616:20;25634:1;25616:20;:::i;:::-;25611:25;;25659:1;25656;25652:9;25645:16;;25680:3;25677:1;25674:10;25671:36;;;25687:18;;:::i;:::-;25671:36;25523:191;;;;:::o;25720:222::-;25860:34;25856:1;25848:6;25844:14;25837:58;25929:5;25924:2;25916:6;25912:15;25905:30;25720:222;:::o;25948:366::-;26090:3;26111:67;26175:2;26170:3;26111:67;:::i;:::-;26104:74;;26187:93;26276:3;26187:93;:::i;:::-;26305:2;26300:3;26296:12;26289:19;;25948:366;;;:::o;26320:419::-;26486:4;26524:2;26513:9;26509:18;26501:26;;26573:9;26567:4;26563:20;26559:1;26548:9;26544:17;26537:47;26601:131;26727:4;26601:131;:::i;:::-;26593:139;;26320:419;;;:::o;26745:194::-;26785:4;26805:20;26823:1;26805:20;:::i;:::-;26800:25;;26839:20;26857:1;26839:20;:::i;:::-;26834:25;;26883:1;26880;26876:9;26868:17;;26907:1;26901:4;26898:11;26895:37;;;26912:18;;:::i;:::-;26895:37;26745:194;;;;:::o;26945:143::-;27002:5;27033:6;27027:13;27018:22;;27049:33;27076:5;27049:33;:::i;:::-;26945:143;;;;:::o;27094:351::-;27164:6;27213:2;27201:9;27192:7;27188:23;27184:32;27181:119;;;27219:79;;:::i;:::-;27181:119;27339:1;27364:64;27420:7;27411:6;27400:9;27396:22;27364:64;:::i;:::-;27354:74;;27310:128;27094:351;;;;:::o;27451:85::-;27496:7;27525:5;27514:16;;27451:85;;;:::o;27542:158::-;27600:9;27633:61;27651:42;27660:32;27686:5;27660:32;:::i;:::-;27651:42;:::i;:::-;27633:61;:::i;:::-;27620:74;;27542:158;;;:::o;27706:147::-;27801:45;27840:5;27801:45;:::i;:::-;27796:3;27789:58;27706:147;;:::o;27859:114::-;27926:6;27960:5;27954:12;27944:22;;27859:114;;;:::o;27979:184::-;28078:11;28112:6;28107:3;28100:19;28152:4;28147:3;28143:14;28128:29;;27979:184;;;;:::o;28169:132::-;28236:4;28259:3;28251:11;;28289:4;28284:3;28280:14;28272:22;;28169:132;;;:::o;28307:108::-;28384:24;28402:5;28384:24;:::i;:::-;28379:3;28372:37;28307:108;;:::o;28421:179::-;28490:10;28511:46;28553:3;28545:6;28511:46;:::i;:::-;28589:4;28584:3;28580:14;28566:28;;28421:179;;;;:::o;28606:113::-;28676:4;28708;28703:3;28699:14;28691:22;;28606:113;;;:::o;28755:732::-;28874:3;28903:54;28951:5;28903:54;:::i;:::-;28973:86;29052:6;29047:3;28973:86;:::i;:::-;28966:93;;29083:56;29133:5;29083:56;:::i;:::-;29162:7;29193:1;29178:284;29203:6;29200:1;29197:13;29178:284;;;29279:6;29273:13;29306:63;29365:3;29350:13;29306:63;:::i;:::-;29299:70;;29392:60;29445:6;29392:60;:::i;:::-;29382:70;;29238:224;29225:1;29222;29218:9;29213:14;;29178:284;;;29182:14;29478:3;29471:10;;28879:608;;;28755:732;;;;:::o;29493:831::-;29756:4;29794:3;29783:9;29779:19;29771:27;;29808:71;29876:1;29865:9;29861:17;29852:6;29808:71;:::i;:::-;29889:80;29965:2;29954:9;29950:18;29941:6;29889:80;:::i;:::-;30016:9;30010:4;30006:20;30001:2;29990:9;29986:18;29979:48;30044:108;30147:4;30138:6;30044:108;:::i;:::-;30036:116;;30162:72;30230:2;30219:9;30215:18;30206:6;30162:72;:::i;:::-;30244:73;30312:3;30301:9;30297:19;30288:6;30244:73;:::i;:::-;29493:831;;;;;;;;:::o;30330:229::-;30470:34;30466:1;30458:6;30454:14;30447:58;30539:12;30534:2;30526:6;30522:15;30515:37;30330:229;:::o;30565:366::-;30707:3;30728:67;30792:2;30787:3;30728:67;:::i;:::-;30721:74;;30804:93;30893:3;30804:93;:::i;:::-;30922:2;30917:3;30913:12;30906:19;;30565:366;;;:::o;30937:419::-;31103:4;31141:2;31130:9;31126:18;31118:26;;31190:9;31184:4;31180:20;31176:1;31165:9;31161:17;31154:47;31218:131;31344:4;31218:131;:::i;:::-;31210:139;;30937:419;;;:::o;31362:180::-;31410:77;31407:1;31400:88;31507:4;31504:1;31497:15;31531:4;31528:1;31521:15;31548:185;31588:1;31605:20;31623:1;31605:20;:::i;:::-;31600:25;;31639:20;31657:1;31639:20;:::i;:::-;31634:25;;31678:1;31668:35;;31683:18;;:::i;:::-;31668:35;31725:1;31722;31718:9;31713:14;;31548:185;;;;:::o;31739:177::-;31879:29;31875:1;31867:6;31863:14;31856:53;31739:177;:::o;31922:366::-;32064:3;32085:67;32149:2;32144:3;32085:67;:::i;:::-;32078:74;;32161:93;32250:3;32161:93;:::i;:::-;32279:2;32274:3;32270:12;32263:19;;31922:366;;;:::o;32294:419::-;32460:4;32498:2;32487:9;32483:18;32475:26;;32547:9;32541:4;32537:20;32533:1;32522:9;32518:17;32511:47;32575:131;32701:4;32575:131;:::i;:::-;32567:139;;32294:419;;;:::o;32719:410::-;32759:7;32782:20;32800:1;32782:20;:::i;:::-;32777:25;;32816:20;32834:1;32816:20;:::i;:::-;32811:25;;32871:1;32868;32864:9;32893:30;32911:11;32893:30;:::i;:::-;32882:41;;33072:1;33063:7;33059:15;33056:1;33053:22;33033:1;33026:9;33006:83;32983:139;;33102:18;;:::i;:::-;32983:139;32767:362;32719:410;;;;:::o;33135:220::-;33275:34;33271:1;33263:6;33259:14;33252:58;33344:3;33339:2;33331:6;33327:15;33320:28;33135:220;:::o;33361:366::-;33503:3;33524:67;33588:2;33583:3;33524:67;:::i;:::-;33517:74;;33600:93;33689:3;33600:93;:::i;:::-;33718:2;33713:3;33709:12;33702:19;;33361:366;;;:::o;33733:419::-;33899:4;33937:2;33926:9;33922:18;33914:26;;33986:9;33980:4;33976:20;33972:1;33961:9;33957:17;33950:47;34014:131;34140:4;34014:131;:::i;:::-;34006:139;;33733:419;;;:::o

Swarm Source

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