ETH Price: $3,249.18 (+3.43%)
Gas: 5 Gwei

Token

Crack (CRACK)
 

Overview

Max Total Supply

1,000,000,000 CRACK

Holders

161

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
CrackToken

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

░█████╗░██████╗░░█████╗░░█████╗░██╗░░██╗
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║░██╔╝
██║░░╚═╝██████╔╝███████║██║░░╚═╝█████═╝░
██║░░██╗██╔══██╗██╔══██║██║░░██╗██╔═██╗░
╚█████╔╝██║░░██║██║░░██║╚█████╔╝██║░╚██╗
░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝░╚════╝░╚═╝░░╚═╝

*********

Website: www.cracktoken.vip
Twitter: https://twitter.com/CrackTokenERC20
Telegram: https://t.me/CrackToken

*********

**/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

 
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 internal _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 CrackToken  is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Crack";
    string private constant _symbol = "CRACK";
    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;
    mapping(address => bool) private _isExcludedFromMax;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 1_000_000_000 * 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 = 35;
 
    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 _marketingAddress = payable(0xaA87BB779f4Ad9B3Ea85677d2ed22Aaf076EC970);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    address private _uncxLPLocker = 0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(100).div(100);
    uint256 public _maxWalletSize = _tTotal.mul(3).div(100); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(1).div(1000);
 
    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[_marketingAddress] = true;
        _isExcludedFromFee[address(_uniswapV2Router)] = true;
        _isExcludedFromFee[_uncxLPLocker] = true; //UNCX LP Lock address

        _isExcludedFromMax[owner()] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[_marketingAddress] = true;
        _isExcludedFromMax[address(_uniswapV2Router)] = true;
        _isExcludedFromMax[_uncxLPLocker] = true; //UNCX LP Lock address


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

            if (!_isExcludedFromMax[from]){
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            }
            
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair && !_isExcludedFromMax[to]) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require( _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require( _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unsetBot(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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    function setMaxWalletSize(uint256 amountPercent) public onlyOwner {
        require(amountPercent>0);
        _maxWalletSize = (_tTotal * amountPercent ) / 100;
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }


}

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":[],"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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":[],"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"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unsetBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c919062000b80565b6000196200002b919062000be7565b6007556000600955601e600a556000600b556023600c55600b54600d55600c54600e55600d54600f55600e5460105573aa87bb779f4ad9b3ea85677d2ed22aaf076ec970601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073663a5c229c09b049e36dcc11a9b0d4a8eb9db214601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550620001766064620001626064670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b601755620001b66064620001a26003670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b601855620001f76103e8620001e36001670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b6019553480156200020757600080fd5b5060006200021a62000aae60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002cf62000aae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000c8c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062000c8c565b6040518363ffffffff1660e01b8152600401620004a692919062000ccf565b602060405180830381600087803b158015620004c157600080fd5b505af1158015620004d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fc919062000c8c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200055262000ab660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660006200075d62000ab660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200096262000aae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620009c9919062000d0d565b60405180910390a35062000f23565b600080831415620009ed576000905062000a56565b60008284620009fd919062000d2a565b905082848262000a0e919062000d8b565b1462000a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a489062000e4a565b60405180910390fd5b809150505b92915050565b600062000aa683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000adf60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b20919062000eff565b60405180910390fd5b506000838562000b3a919062000d8b565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b8d8262000b47565b915062000b9a8362000b47565b92508262000bad5762000bac62000b51565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bf48262000b47565b915062000c018362000b47565b92508282101562000c175762000c1662000bb8565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c548262000c27565b9050919050565b62000c668162000c47565b811462000c7257600080fd5b50565b60008151905062000c868162000c5b565b92915050565b60006020828403121562000ca55762000ca462000c22565b5b600062000cb58482850162000c75565b91505092915050565b62000cc98162000c47565b82525050565b600060408201905062000ce6600083018562000cbe565b62000cf5602083018462000cbe565b9392505050565b62000d078162000b47565b82525050565b600060208201905062000d24600083018462000cfc565b92915050565b600062000d378262000b47565b915062000d448362000b47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d805762000d7f62000bb8565b5b828202905092915050565b600062000d988262000b47565b915062000da58362000b47565b92508262000db85762000db762000b51565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000e3260218362000dc3565b915062000e3f8262000dd4565b604082019050919050565b6000602082019050818103600083015262000e658162000e23565b9050919050565b600081519050919050565b60005b8381101562000e9757808201518184015260208101905062000e7a565b8381111562000ea7576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ecb8262000e6c565b62000ed7818562000dc3565b935062000ee981856020860162000e77565b62000ef48162000ead565b840191505092915050565b6000602082019050818103600083015262000f1b818462000ebe565b905092915050565b613af08062000f336000396000f3fe6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a9059cbb14610552578063b515566a1461058f578063bfd79284146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104aa57806395d89b41146104d557806398a5c31514610500578063a2a957bb14610529576101c2565b80637f2feddc146104195780638da5cb5b146104565780638f70ccf714610481576101c2565b8063313ce5671161015957806370a082311161013357806370a0823114610383578063715018a6146103c0578063751039fc146103d75780637d1db4a5146103ee576101c2565b8063313ce5671461031657806349bd5a5e146103415780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632b89628b146102c25780632fd689e3146102eb576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612a05565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612acf565b6106d8565b6040516102269190612b2a565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612ba4565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612bce565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be9565b61072c565b6040516102b99190612b2a565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c3c565b610805565b005b3480156102f757600080fd5b506103006108f5565b60405161030d9190612bce565b60405180910390f35b34801561032257600080fd5b5061032b6108fb565b6040516103389190612c85565b60405180910390f35b34801561034d57600080fd5b50610356610904565b6040516103639190612caf565b60405180910390f35b34801561037857600080fd5b5061038161092a565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c3c565b61099c565b6040516103b79190612bce565b60405180910390f35b3480156103cc57600080fd5b506103d56109ed565b005b3480156103e357600080fd5b506103ec610b40565b005b3480156103fa57600080fd5b50610403610bf5565b6040516104109190612bce565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612c3c565b610bfb565b60405161044d9190612bce565b60405180910390f35b34801561046257600080fd5b5061046b610c13565b6040516104789190612caf565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612cf6565b610c3c565b005b3480156104b657600080fd5b506104bf610cee565b6040516104cc9190612bce565b60405180910390f35b3480156104e157600080fd5b506104ea610cf4565b6040516104f79190612a05565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612d23565b610d31565b005b34801561053557600080fd5b50610550600480360381019061054b9190612d50565b610dd0565b005b34801561055e57600080fd5b5061057960048036038101906105749190612acf565b610e87565b6040516105869190612b2a565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612eff565b610ea5565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612c3c565b610fcf565b6040516105ec9190612b2a565b60405180910390f35b34801561060157600080fd5b5061060a610fef565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f48565b611069565b6040516106409190612bce565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612d23565b6110f0565b005b34801561067e57600080fd5b5061069960048036038101906106949190612c3c565b6111bb565b005b60606040518060400160405280600581526020017f437261636b000000000000000000000000000000000000000000000000000000815250905090565b60006106ec6106e5611442565b848461144a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610739848484611615565b6107fa84610745611442565b6107f585604051806060016040528060288152602001613a9360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611442565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b61144a565b600190509392505050565b61080d611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612fd4565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096b611442565b73ffffffffffffffffffffffffffffffffffffffff161461098b57600080fd5b600047905061099981611fa8565b50565b60006109e6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612014565b9050919050565b6109f5611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7990612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612fd4565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c44611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890612fd4565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f435241434b000000000000000000000000000000000000000000000000000000815250905090565b610d39611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90612fd4565b60405180910390fd5b8060198190555050565b610dd8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612fd4565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610e9b610e94611442565b8484611615565b6001905092915050565b610ead611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612fd4565b60405180910390fd5b60005b8151811015610fcb57600160116000848481518110610f5f57610f5e612ff4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fc390613052565b915050610f3d565b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611030611442565b73ffffffffffffffffffffffffffffffffffffffff161461105057600080fd5b600061105b3061099c565b905061106681612082565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110f8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90612fd4565b60405180910390fd5b6000811161119257600080fd5b606481670de0b6b3a76400006111a8919061309b565b6111b29190613124565b60188190555050565b6111c3611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906131c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561139057600090506113f2565b6000828461139e919061309b565b90508284826113ad9190613124565b146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613259565b60405180910390fd5b809150505b92915050565b600061143a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906132eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561152a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115219061337d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116089190612bce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061340f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906134a1565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613533565b60405180910390fd5b611740610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610c13565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4357601660149054906101000a900460ff1661183d576117cf610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906135c5565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d4576017548111156118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90613631565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119785750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906136c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5f5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc5760185481611a718461099c565b611a7b91906136e3565b10611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137ab565b60405180910390fd5b5b6000611ac73061099c565b9050600060195482101590506017548210611ae25760175491505b808015611afc5750601660159054906101000a900460ff16155b8015611b565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c575060168054906101000a900460ff165b8015611bc25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c185750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4057611c2682612082565b60004790506000811115611c3e57611c3d47611fa8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dab5760009050611f32565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e565750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e6e57600954600d81905550600a54600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3157600b54600d81905550600c54600e819055505b5b611f3e8484848461236d565b50505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839190612a05565b60405180910390fd5b5060008385611f9b91906137cb565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612010573d6000803e3d6000fd5b5050565b600060075482111561205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613871565b60405180910390fd5b600061206561239a565b905061207a81846113f890919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ba576120b9612dbc565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da91906138a6565b816001815181106121ee576121ed612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122b99594939291906139cc565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489190612a05565b60405180910390fd5b50600083856123609190613124565b9050809150509392505050565b8061237b5761237a6123c5565b5b612386848484612408565b80612394576123936125d3565b5b50505050565b60008060006123a76125e7565b915091506123be81836113f890919063ffffffff16565b9250505090565b6000600d541480156123d957506000600e54145b156123e357612406565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061241a87612646565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ae90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255981612756565b6125638483612813565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612bce565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a7640000905061261b670de0b6b3a76400006007546113f890919063ffffffff16565b82101561263957600754670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b60008060008060008060008060006126638a600d54600e5461284d565b925092509250600061267361239a565b905060008060006126868e8787876128e3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600080828461270791906136e3565b90508381101561274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274390613a72565b60405180910390fd5b8091505092915050565b600061276061239a565b90506000612777828461137d90919063ffffffff16565b90506127cb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612828826007546126ae90919063ffffffff16565b600781905550612843816008546126f890919063ffffffff16565b6008819055505050565b600080600080612879606461286b888a61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128a36064612895888b61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128cc826128be858c6126ae90919063ffffffff16565b6126ae90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fc858961137d90919063ffffffff16565b90506000612913868961137d90919063ffffffff16565b9050600061292a878961137d90919063ffffffff16565b905060006129538261294585876126ae90919063ffffffff16565b6126ae90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6682612a3b565b9050919050565b612a7681612a5b565b8114612a8157600080fd5b50565b600081359050612a9381612a6d565b92915050565b6000819050919050565b612aac81612a99565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b60008060408385031215612ae657612ae5612a31565b5b6000612af485828601612a84565b9250506020612b0585828601612aba565b9150509250929050565b60008115159050919050565b612b2481612b0f565b82525050565b6000602082019050612b3f6000830184612b1b565b92915050565b6000819050919050565b6000612b6a612b65612b6084612a3b565b612b45565b612a3b565b9050919050565b6000612b7c82612b4f565b9050919050565b6000612b8e82612b71565b9050919050565b612b9e81612b83565b82525050565b6000602082019050612bb96000830184612b95565b92915050565b612bc881612a99565b82525050565b6000602082019050612be36000830184612bbf565b92915050565b600080600060608486031215612c0257612c01612a31565b5b6000612c1086828701612a84565b9350506020612c2186828701612a84565b9250506040612c3286828701612aba565b9150509250925092565b600060208284031215612c5257612c51612a31565b5b6000612c6084828501612a84565b91505092915050565b600060ff82169050919050565b612c7f81612c69565b82525050565b6000602082019050612c9a6000830184612c76565b92915050565b612ca981612a5b565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612b0f565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612a31565b5b6000612d1a84828501612ce1565b91505092915050565b600060208284031215612d3957612d38612a31565b5b6000612d4784828501612aba565b91505092915050565b60008060008060808587031215612d6a57612d69612a31565b5b6000612d7887828801612aba565b9450506020612d8987828801612aba565b9350506040612d9a87828801612aba565b9250506060612dab87828801612aba565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df4826129bb565b810181811067ffffffffffffffff82111715612e1357612e12612dbc565b5b80604052505050565b6000612e26612a27565b9050612e328282612deb565b919050565b600067ffffffffffffffff821115612e5257612e51612dbc565b5b602082029050602081019050919050565b600080fd5b6000612e7b612e7684612e37565b612e1c565b90508083825260208201905060208402830185811115612e9e57612e9d612e63565b5b835b81811015612ec75780612eb38882612a84565b845260208401935050602081019050612ea0565b5050509392505050565b600082601f830112612ee657612ee5612db7565b5b8135612ef6848260208601612e68565b91505092915050565b600060208284031215612f1557612f14612a31565b5b600082013567ffffffffffffffff811115612f3357612f32612a36565b5b612f3f84828501612ed1565b91505092915050565b60008060408385031215612f5f57612f5e612a31565b5b6000612f6d85828601612a84565b9250506020612f7e85828601612a84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fbe602083612977565b9150612fc982612f88565b602082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061305d82612a99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130905761308f613023565b5b600182019050919050565b60006130a682612a99565b91506130b183612a99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130ea576130e9613023565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312f82612a99565b915061313a83612a99565b92508261314a576131496130f5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b1602683612977565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613243602183612977565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602483612977565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613367602283612977565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f9602583612977565b91506134048261339d565b604082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061348b602383612977565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351d602983612977565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006135af603f83612977565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061361b601c83612977565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006136ad602383612977565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b60006136ee82612a99565b91506136f983612a99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561372e5761372d613023565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602383612977565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b60006137d682612a99565b91506137e183612a99565b9250828210156137f4576137f3613023565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061385b602a83612977565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b6000815190506138a081612a6d565b92915050565b6000602082840312156138bc576138bb612a31565b5b60006138ca84828501613891565b91505092915050565b6000819050919050565b60006138f86138f36138ee846138d3565b612b45565b612a99565b9050919050565b613908816138dd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61394381612a5b565b82525050565b6000613955838361393a565b60208301905092915050565b6000602082019050919050565b60006139798261390e565b6139838185613919565b935061398e8361392a565b8060005b838110156139bf5781516139a68882613949565b97506139b183613961565b925050600181019050613992565b5085935050505092915050565b600060a0820190506139e16000830188612bbf565b6139ee60208301876138ff565b8181036040830152613a00818661396e565b9050613a0f6060830185612ca0565b613a1c6080830184612bbf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a5c601b83612977565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f8891c95ab41da07c6ea6c853a217d4f6021f8eb613a589c349a8b9a9b4597c964736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a9059cbb14610552578063b515566a1461058f578063bfd79284146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104aa57806395d89b41146104d557806398a5c31514610500578063a2a957bb14610529576101c2565b80637f2feddc146104195780638da5cb5b146104565780638f70ccf714610481576101c2565b8063313ce5671161015957806370a082311161013357806370a0823114610383578063715018a6146103c0578063751039fc146103d75780637d1db4a5146103ee576101c2565b8063313ce5671461031657806349bd5a5e146103415780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632b89628b146102c25780632fd689e3146102eb576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612a05565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612acf565b6106d8565b6040516102269190612b2a565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612ba4565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612bce565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be9565b61072c565b6040516102b99190612b2a565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c3c565b610805565b005b3480156102f757600080fd5b506103006108f5565b60405161030d9190612bce565b60405180910390f35b34801561032257600080fd5b5061032b6108fb565b6040516103389190612c85565b60405180910390f35b34801561034d57600080fd5b50610356610904565b6040516103639190612caf565b60405180910390f35b34801561037857600080fd5b5061038161092a565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c3c565b61099c565b6040516103b79190612bce565b60405180910390f35b3480156103cc57600080fd5b506103d56109ed565b005b3480156103e357600080fd5b506103ec610b40565b005b3480156103fa57600080fd5b50610403610bf5565b6040516104109190612bce565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612c3c565b610bfb565b60405161044d9190612bce565b60405180910390f35b34801561046257600080fd5b5061046b610c13565b6040516104789190612caf565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612cf6565b610c3c565b005b3480156104b657600080fd5b506104bf610cee565b6040516104cc9190612bce565b60405180910390f35b3480156104e157600080fd5b506104ea610cf4565b6040516104f79190612a05565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612d23565b610d31565b005b34801561053557600080fd5b50610550600480360381019061054b9190612d50565b610dd0565b005b34801561055e57600080fd5b5061057960048036038101906105749190612acf565b610e87565b6040516105869190612b2a565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612eff565b610ea5565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612c3c565b610fcf565b6040516105ec9190612b2a565b60405180910390f35b34801561060157600080fd5b5061060a610fef565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f48565b611069565b6040516106409190612bce565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612d23565b6110f0565b005b34801561067e57600080fd5b5061069960048036038101906106949190612c3c565b6111bb565b005b60606040518060400160405280600581526020017f437261636b000000000000000000000000000000000000000000000000000000815250905090565b60006106ec6106e5611442565b848461144a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610739848484611615565b6107fa84610745611442565b6107f585604051806060016040528060288152602001613a9360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611442565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b61144a565b600190509392505050565b61080d611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612fd4565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096b611442565b73ffffffffffffffffffffffffffffffffffffffff161461098b57600080fd5b600047905061099981611fa8565b50565b60006109e6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612014565b9050919050565b6109f5611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7990612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612fd4565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c44611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890612fd4565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f435241434b000000000000000000000000000000000000000000000000000000815250905090565b610d39611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90612fd4565b60405180910390fd5b8060198190555050565b610dd8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612fd4565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610e9b610e94611442565b8484611615565b6001905092915050565b610ead611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612fd4565b60405180910390fd5b60005b8151811015610fcb57600160116000848481518110610f5f57610f5e612ff4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fc390613052565b915050610f3d565b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611030611442565b73ffffffffffffffffffffffffffffffffffffffff161461105057600080fd5b600061105b3061099c565b905061106681612082565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110f8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90612fd4565b60405180910390fd5b6000811161119257600080fd5b606481670de0b6b3a76400006111a8919061309b565b6111b29190613124565b60188190555050565b6111c3611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906131c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561139057600090506113f2565b6000828461139e919061309b565b90508284826113ad9190613124565b146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613259565b60405180910390fd5b809150505b92915050565b600061143a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906132eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561152a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115219061337d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116089190612bce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061340f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906134a1565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613533565b60405180910390fd5b611740610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610c13565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4357601660149054906101000a900460ff1661183d576117cf610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906135c5565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d4576017548111156118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90613631565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119785750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906136c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5f5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc5760185481611a718461099c565b611a7b91906136e3565b10611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137ab565b60405180910390fd5b5b6000611ac73061099c565b9050600060195482101590506017548210611ae25760175491505b808015611afc5750601660159054906101000a900460ff16155b8015611b565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c575060168054906101000a900460ff165b8015611bc25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c185750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4057611c2682612082565b60004790506000811115611c3e57611c3d47611fa8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dab5760009050611f32565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e565750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e6e57600954600d81905550600a54600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3157600b54600d81905550600c54600e819055505b5b611f3e8484848461236d565b50505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839190612a05565b60405180910390fd5b5060008385611f9b91906137cb565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612010573d6000803e3d6000fd5b5050565b600060075482111561205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613871565b60405180910390fd5b600061206561239a565b905061207a81846113f890919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ba576120b9612dbc565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da91906138a6565b816001815181106121ee576121ed612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122b99594939291906139cc565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489190612a05565b60405180910390fd5b50600083856123609190613124565b9050809150509392505050565b8061237b5761237a6123c5565b5b612386848484612408565b80612394576123936125d3565b5b50505050565b60008060006123a76125e7565b915091506123be81836113f890919063ffffffff16565b9250505090565b6000600d541480156123d957506000600e54145b156123e357612406565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061241a87612646565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ae90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255981612756565b6125638483612813565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612bce565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a7640000905061261b670de0b6b3a76400006007546113f890919063ffffffff16565b82101561263957600754670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b60008060008060008060008060006126638a600d54600e5461284d565b925092509250600061267361239a565b905060008060006126868e8787876128e3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600080828461270791906136e3565b90508381101561274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274390613a72565b60405180910390fd5b8091505092915050565b600061276061239a565b90506000612777828461137d90919063ffffffff16565b90506127cb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612828826007546126ae90919063ffffffff16565b600781905550612843816008546126f890919063ffffffff16565b6008819055505050565b600080600080612879606461286b888a61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128a36064612895888b61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128cc826128be858c6126ae90919063ffffffff16565b6126ae90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fc858961137d90919063ffffffff16565b90506000612913868961137d90919063ffffffff16565b9050600061292a878961137d90919063ffffffff16565b905060006129538261294585876126ae90919063ffffffff16565b6126ae90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6682612a3b565b9050919050565b612a7681612a5b565b8114612a8157600080fd5b50565b600081359050612a9381612a6d565b92915050565b6000819050919050565b612aac81612a99565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b60008060408385031215612ae657612ae5612a31565b5b6000612af485828601612a84565b9250506020612b0585828601612aba565b9150509250929050565b60008115159050919050565b612b2481612b0f565b82525050565b6000602082019050612b3f6000830184612b1b565b92915050565b6000819050919050565b6000612b6a612b65612b6084612a3b565b612b45565b612a3b565b9050919050565b6000612b7c82612b4f565b9050919050565b6000612b8e82612b71565b9050919050565b612b9e81612b83565b82525050565b6000602082019050612bb96000830184612b95565b92915050565b612bc881612a99565b82525050565b6000602082019050612be36000830184612bbf565b92915050565b600080600060608486031215612c0257612c01612a31565b5b6000612c1086828701612a84565b9350506020612c2186828701612a84565b9250506040612c3286828701612aba565b9150509250925092565b600060208284031215612c5257612c51612a31565b5b6000612c6084828501612a84565b91505092915050565b600060ff82169050919050565b612c7f81612c69565b82525050565b6000602082019050612c9a6000830184612c76565b92915050565b612ca981612a5b565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612b0f565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612a31565b5b6000612d1a84828501612ce1565b91505092915050565b600060208284031215612d3957612d38612a31565b5b6000612d4784828501612aba565b91505092915050565b60008060008060808587031215612d6a57612d69612a31565b5b6000612d7887828801612aba565b9450506020612d8987828801612aba565b9350506040612d9a87828801612aba565b9250506060612dab87828801612aba565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df4826129bb565b810181811067ffffffffffffffff82111715612e1357612e12612dbc565b5b80604052505050565b6000612e26612a27565b9050612e328282612deb565b919050565b600067ffffffffffffffff821115612e5257612e51612dbc565b5b602082029050602081019050919050565b600080fd5b6000612e7b612e7684612e37565b612e1c565b90508083825260208201905060208402830185811115612e9e57612e9d612e63565b5b835b81811015612ec75780612eb38882612a84565b845260208401935050602081019050612ea0565b5050509392505050565b600082601f830112612ee657612ee5612db7565b5b8135612ef6848260208601612e68565b91505092915050565b600060208284031215612f1557612f14612a31565b5b600082013567ffffffffffffffff811115612f3357612f32612a36565b5b612f3f84828501612ed1565b91505092915050565b60008060408385031215612f5f57612f5e612a31565b5b6000612f6d85828601612a84565b9250506020612f7e85828601612a84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fbe602083612977565b9150612fc982612f88565b602082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061305d82612a99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130905761308f613023565b5b600182019050919050565b60006130a682612a99565b91506130b183612a99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130ea576130e9613023565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312f82612a99565b915061313a83612a99565b92508261314a576131496130f5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b1602683612977565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613243602183612977565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602483612977565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613367602283612977565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f9602583612977565b91506134048261339d565b604082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061348b602383612977565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351d602983612977565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006135af603f83612977565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061361b601c83612977565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006136ad602383612977565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b60006136ee82612a99565b91506136f983612a99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561372e5761372d613023565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602383612977565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b60006137d682612a99565b91506137e183612a99565b9250828210156137f4576137f3613023565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061385b602a83612977565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b6000815190506138a081612a6d565b92915050565b6000602082840312156138bc576138bb612a31565b5b60006138ca84828501613891565b91505092915050565b6000819050919050565b60006138f86138f36138ee846138d3565b612b45565b612a99565b9050919050565b613908816138dd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61394381612a5b565b82525050565b6000613955838361393a565b60208301905092915050565b6000602082019050919050565b60006139798261390e565b6139838185613919565b935061398e8361392a565b8060005b838110156139bf5781516139a68882613949565b97506139b183613961565b925050600181019050613992565b5085935050505092915050565b600060a0820190506139e16000830188612bbf565b6139ee60208301876138ff565b8181036040830152613a00818661396e565b9050613a0f6060830185612ca0565b613a1c6080830184612bbf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a5c601b83612977565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f8891c95ab41da07c6ea6c853a217d4f6021f8eb613a589c349a8b9a9b4597c964736f6c63430008090033

Deployed Bytecode Sourcemap

4978:13611:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7917:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8849:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6276:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8197:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9051:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14328:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6676:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8105:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6324:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13946:197;;;;;;;;;;;;;:::i;:::-;;8301:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2452:148;;;;;;;;;;;;;:::i;:::-;;18464:118;;;;;;;;;;;;;:::i;:::-;;6551:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6121:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2236:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13629:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6613:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8009:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18139:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17835:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8448:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14152:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6083:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13739:198;;;;;;;;;;;;;:::i;:::-;;8656:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18287:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2609:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7917:83;7954:13;7987:5;;;;;;;;;;;;;;;;;7980:12;;7917:83;:::o;8849:193::-;8951:4;8973:39;8982:12;:10;:12::i;:::-;8996:7;9005:6;8973:8;:39::i;:::-;9030:4;9023:11;;8849:193;;;;:::o;6276:41::-;;;;;;;;;;;;;:::o;8197:95::-;8250:7;5589:21;8270:14;;8197:95;:::o;9051:446::-;9183:4;9200:36;9210:6;9218:9;9229:6;9200:9;:36::i;:::-;9247:220;9270:6;9291:12;:10;:12::i;:::-;9318:138;9374:6;9318:138;;;;;;;;;;;;;;;;;:11;:19;9330:6;9318:19;;;;;;;;;;;;;;;:33;9338:12;:10;:12::i;:::-;9318:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;9247:8;:220::i;:::-;9485:4;9478:11;;9051:446;;;;;:::o;14328:90::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14405:5:::1;14390:4;:12;14395:6;14390:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14328:90:::0;:::o;6676:61::-;;;;:::o;8105:83::-;8146:5;5202:1;8164:16;;8105:83;:::o;6324:28::-;;;;;;;;;;;;;:::o;13946:197::-;14013:17;;;;;;;;;;;13997:33;;:12;:10;:12::i;:::-;:33;;;13988:43;;;;;;14042:26;14071:21;14042:50;;14103:32;14116:18;14103:12;:32::i;:::-;13977:166;13946:197::o;8301:138::-;8367:7;8394:37;8414:7;:16;8422:7;8414:16;;;;;;;;;;;;;;;;8394:19;:37::i;:::-;8387:44;;8301:138;;;:::o;2452:148::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2559:1:::1;2522:40;;2543:6;::::0;::::1;;;;;;;;2522:40;;;;;;;;;;;;2590:1;2573:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2452:148::o:0;18464:118::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5589:21:::1;18517:12;:22;;;;5589:21;18550:14;:24;;;;18464:118::o:0;6551:55::-;;;;:::o;6121:43::-;;;;;;;;;;;;;;;;;:::o;2236:79::-;2274:7;2301:6;;;;;;;;;;;2294:13;;2236:79;:::o;13629:101::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13710:12:::1;13696:11;;:26;;;;;;;;;;;;;;;;;;13629:101:::0;:::o;6613:55::-;;;;:::o;8009:87::-;8048:13;8081:7;;;;;;;;;;;;;;;;;8074:14;;8009:87;:::o;18139:139::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18252:18:::1;18230:19;:40;;;;18139:139:::0;:::o;17835:295::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17988:13:::1;17971:14;:30;;;;18030:14;18012:15;:32;;;;18070:11;18055:12;:26;;;;18108:12;18092:13;:28;;;;17835:295:::0;;;;:::o;8448:199::-;8553:4;8575:42;8585:12;:10;:12::i;:::-;8599:9;8610:6;8575:9;:42::i;:::-;8635:4;8628:11;;8448:199;;;;:::o;14152:167::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14226:9:::1;14221:91;14245:5;:12;14241:1;:16;14221:91;;;14296:4;14279;:14;14284:5;14290:1;14284:8;;;;;;;;:::i;:::-;;;;;;;;14279:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14259:3;;;;;:::i;:::-;;;;14221:91;;;;14152:167:::0;:::o;6083:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13739:198::-;13806:17;;;;;;;;;;;13790:33;;:12;:10;:12::i;:::-;:33;;;13781:43;;;;;;13835:23;13861:24;13879:4;13861:9;:24::i;:::-;13835:50;;13896:33;13913:15;13896:16;:33::i;:::-;13770:167;13739:198::o;8656:184::-;8773:7;8805:11;:18;8817:5;8805:18;;;;;;;;;;;;;;;:27;8824:7;8805:27;;;;;;;;;;;;;;;;8798:34;;8656:184;;;;:::o;18287:169::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18386:1:::1;18372:13;:15;18364:24;;;::::0;::::1;;18445:3;18427:13;5589:21;18417:23;;;;:::i;:::-;18416:32;;;;:::i;:::-;18399:14;:49;;;;18287:169:::0;:::o;2609:244::-;2374:12;:10;:12::i;:::-;2364:22;;:6;;;;;;;;;;:22;;;2356:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2718:1:::1;2698:22;;:8;:22;;;;2690:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2808:8;2779:38;;2800:6;::::0;::::1;;;;;;;;2779:38;;;;;;;;;;;;2837:8;2828:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2609:244:::0;:::o;3453:246::-;3511:7;3540:1;3535;:6;3531:47;;;3565:1;3558:8;;;;3531:47;3588:9;3604:1;3600;:5;;;;:::i;:::-;3588:17;;3633:1;3628;3624;:5;;;;:::i;:::-;:10;3616:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3690:1;3683:8;;;3453:246;;;;;:::o;3708:132::-;3766:7;3793:39;3797:1;3800;3793:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3786:46;;3708:132;;;;:::o;984:98::-;1037:7;1064:10;1057:17;;984:98;:::o;10194:369::-;10338:1;10321:19;;:5;:19;;;;10313:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10419:1;10400:21;;:7;:21;;;;10392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10501:6;10471:11;:18;10483:5;10471:18;;;;;;;;;;;;;;;:27;10490:7;10471:27;;;;;;;;;;;;;;;:36;;;;10539:7;10523:32;;10532:5;10523:32;;;10548:6;10523:32;;;;;;:::i;:::-;;;;;;;;10194:369;;;:::o;10572:2448::-;10710:1;10694:18;;:4;:18;;;;10686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10787:1;10773:16;;:2;:16;;;;10765:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10857:1;10848:6;:10;10840:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10930:7;:5;:7::i;:::-;10922:15;;:4;:15;;;;:32;;;;;10947:7;:5;:7::i;:::-;10941:13;;:2;:13;;;;10922:32;10918:1369;;;11012:11;;;;;;;;;;;11007:144;;11060:7;:5;:7::i;:::-;11052:15;;:4;:15;;;11044:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;11007:144;11172:18;:24;11191:4;11172:24;;;;;;;;;;;;;;;;;;;;;;;;;11167:128;;11234:12;;11224:6;:22;;11216:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11167:128;11332:4;:10;11337:4;11332:10;;;;;;;;;;;;;;;;;;;;;;;;;11331:11;:24;;;;;11347:4;:8;11352:2;11347:8;;;;;;;;;;;;;;;;;;;;;;;;;11346:9;11331:24;11323:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11422:13;;;;;;;;;;;11416:19;;:2;:19;;;;:46;;;;;11440:18;:22;11459:2;11440:22;;;;;;;;;;;;;;;;;;;;;;;;;11439:23;11416:46;11413:173;;;11516:14;;11507:6;11491:13;11501:2;11491:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11483:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11413:173;11603:28;11634:24;11652:4;11634:9;:24::i;:::-;11603:55;;11673:12;11712:19;;11688:20;:43;;11673:58;;11776:12;;11752:20;:36;11749:124;;11845:12;;11822:35;;11749:124;11894:7;:18;;;;;11906:6;;;;;;;;;;;11905:7;11894:18;:43;;;;;11924:13;;;;;;;;;;;11916:21;;:4;:21;;;;11894:43;:58;;;;;11941:11;;;;;;;;;;11894:58;:87;;;;;11957:18;:24;11976:4;11957:24;;;;;;;;;;;;;;;;;;;;;;;;;11956:25;11894:87;:114;;;;;11986:18;:22;12005:2;11986:22;;;;;;;;;;;;;;;;;;;;;;;;;11985:23;11894:114;11890:386;;;12029:38;12046:20;12029:16;:38::i;:::-;12086:26;12115:21;12086:50;;12180:1;12159:18;:22;12155:106;;;12206:35;12219:21;12206:12;:35::i;:::-;12155:106;12010:266;11890:386;10956:1331;;10918:1369;12301:12;12316:4;12301:19;;12366:18;:24;12385:4;12366:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12394:18;:22;12413:2;12394:22;;;;;;;;;;;;;;;;;;;;;;;;;12366:50;12365:102;;;;12430:13;;;;;;;;;;;12422:21;;:4;:21;;;;:44;;;;;12453:13;;;;;;;;;;;12447:19;;:2;:19;;;;12422:44;12365:102;12361:597;;;12494:5;12484:15;;12361:597;;;12578:13;;;;;;;;;;;12570:21;;:4;:21;;;:55;;;;;12609:15;;;;;;;;;;;12595:30;;:2;:30;;;;12570:55;12567:162;;;12658:14;;12646:9;:26;;;;12701:12;;12691:7;:22;;;;12567:162;12789:13;;;;;;;;;;;12783:19;;:2;:19;;;:55;;;;;12822:15;;;;;;;;;;;12806:32;;:4;:32;;;;12783:55;12779:165;;;12871:15;;12859:9;:27;;;;12915:13;;12905:7;:23;;;;12779:165;12361:597;12971:41;12986:4;12992:2;12996:6;13004:7;12971:14;:41::i;:::-;10675:2345;10572:2448;;;:::o;3220:224::-;3340:7;3373:1;3368;:6;;3376:12;3360:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3400:9;3416:1;3412;:5;;;;:::i;:::-;3400:17;;3435:1;3428:8;;;3220:224;;;;;:::o;13521:99::-;13578:17;;;;;;;;;;;:26;;:34;13605:6;13578:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13521:99;:::o;9506:323::-;9601:7;9659;;9648;:18;;9626:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9747:19;9769:10;:8;:10::i;:::-;9747:32;;9797:24;9809:11;9797:7;:11;;:24;;;;:::i;:::-;9790:31;;;9506:323;;;:::o;13029:483::-;6841:4;6832:6;;:13;;;;;;;;;;;;;;;;;;13107:21:::1;13145:1;13131:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13107:40;;13176:4;13158;13163:1;13158:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13202:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13192:4;13197:1;13192:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13235:62;13252:4;13267:15;;;;;;;;;;;13285:11;13235:8;:62::i;:::-;13308:15;;;;;;;;;;;:66;;;13389:11;13415:1;13431:4;13458;13478:15;13308:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13096:416;6877:5:::0;6868:6;;:14;;;;;;;;;;;;;;;;;;13029:483;:::o;3849:223::-;3969:7;4001:1;3997;:5;4004:12;3989:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4028:9;4044:1;4040;:5;;;;:::i;:::-;4028:17;;4063:1;4056:8;;;3849:223;;;;;:::o;14427:282::-;14583:7;14578:28;;14592:14;:12;:14::i;:::-;14578:28;14617:44;14635:6;14643:9;14654:6;14617:17;:44::i;:::-;14677:7;14672:29;;14686:15;:13;:15::i;:::-;14672:29;14427:282;;;;:::o;17396:164::-;17438:7;17459:15;17476;17495:19;:17;:19::i;:::-;17458:56;;;;17532:20;17544:7;17532;:11;;:20;;;;:::i;:::-;17525:27;;;;17396:164;:::o;9838:221::-;9898:1;9885:9;;:14;:30;;;;;9914:1;9903:7;;:12;9885:30;9881:43;;;9917:7;;9881:43;9957:9;;9937:17;:29;;;;9995:7;;9977:15;:25;;;;10028:1;10016:9;:13;;;;10050:1;10040:7;:11;;;;9838:221;:::o;14718:610::-;14865:15;14895:23;14933:12;14960:23;14998:12;15025:13;15052:19;15063:7;15052:10;:19::i;:::-;14850:221;;;;;;;;;;;;15100:28;15120:7;15100;:15;15108:6;15100:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15082:7;:15;15090:6;15082:15;;;;;;;;;;;;;;;:46;;;;15160:39;15183:15;15160:7;:18;15168:9;15160:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15139:7;:18;15147:9;15139:18;;;;;;;;;;;;;;;:60;;;;15210:16;15220:5;15210:9;:16::i;:::-;15237:23;15249:4;15255;15237:11;:23::i;:::-;15293:9;15276:44;;15285:6;15276:44;;;15304:15;15276:44;;;;;;:::i;:::-;;;;;;;;14839:489;;;;;;14718:610;;;:::o;10068:117::-;10124:17;;10112:9;:29;;;;10162:15;;10152:7;:25;;;;10068:117::o;17569:257::-;17620:7;17629;17649:15;17667:7;;17649:25;;17685:15;5589:21;17685:25;;17735:20;5589:21;17735:7;;:11;;:20;;;;:::i;:::-;17725:7;:30;17721:61;;;17765:7;;5589:21;17757:25;;;;;;;;17721:61;17801:7;17810;17793:25;;;;;;17569:257;;;:::o;15751:615::-;15851:7;15873;15895;15917;15939;15961;15997:23;16022:12;16036:13;16066:40;16078:7;16087:9;;16098:7;;16066:11;:40::i;:::-;15996:110;;;;;;16117:19;16139:10;:8;:10::i;:::-;16117:32;;16161:15;16178:23;16203:12;16232:46;16244:7;16253:4;16259:5;16266:11;16232;:46::i;:::-;16160:118;;;;;;16297:7;16306:15;16323:4;16329:15;16346:4;16352:5;16289:69;;;;;;;;;;;;;;;;;;;15751:615;;;;;;;:::o;3075:136::-;3133:7;3160:43;3164:1;3167;3160:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3153:50;;3075:136;;;;:::o;2887:179::-;2945:7;2965:9;2981:1;2977;:5;;;;:::i;:::-;2965:17;;3006:1;3001;:6;;2993:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3057:1;3050:8;;;2887:179;;;;:::o;15337:211::-;15390:19;15412:10;:8;:10::i;:::-;15390:32;;15433:13;15449:22;15459:11;15449:5;:9;;:22;;;;:::i;:::-;15433:38;;15507:33;15534:5;15507:7;:22;15523:4;15507:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15482:7;:22;15498:4;15482:22;;;;;;;;;;;;;;;:58;;;;15379:169;;15337:211;:::o;15557:147::-;15635:17;15647:4;15635:7;;:11;;:17;;;;:::i;:::-;15625:7;:27;;;;15676:20;15691:4;15676:10;;:14;;:20;;;;:::i;:::-;15663:10;:33;;;;15557:147;;:::o;16375:469::-;16544:7;16566;16588;16623:12;16638:30;16664:3;16638:21;16650:8;16638:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16623:45;;16679:13;16695:28;16719:3;16695:19;16707:6;16695:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16679:44;;16734:23;16760:28;16782:5;16760:17;16772:4;16760:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16734:54;;16807:15;16824:4;16830:5;16799:37;;;;;;;;;16375:469;;;;;;;:::o;16853:534::-;17047:7;17069;17091;17126:15;17144:24;17156:11;17144:7;:11;;:24;;;;:::i;:::-;17126:42;;17179:12;17194:21;17203:11;17194:4;:8;;:21;;;;:::i;:::-;17179:36;;17226:13;17242:22;17252:11;17242:5;:9;;:22;;;;:::i;:::-;17226:38;;17275:23;17301:28;17323:5;17301:17;17313:4;17301:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17275:54;;17348:7;17357:15;17374:4;17340:39;;;;;;;;;;16853:534;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:329::-;5503:6;5552:2;5540:9;5531:7;5527:23;5523:32;5520:119;;;5558:79;;:::i;:::-;5520:119;5678:1;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5649:117;5444:329;;;;:::o;5779:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:118::-;6296:24;6314:5;6296:24;:::i;:::-;6291:3;6284:37;6209:118;;:::o;6333:222::-;6426:4;6464:2;6453:9;6449:18;6441:26;;6477:71;6545:1;6534:9;6530:17;6521:6;6477:71;:::i;:::-;6333:222;;;;:::o;6561:116::-;6631:21;6646:5;6631:21;:::i;:::-;6624:5;6621:32;6611:60;;6667:1;6664;6657:12;6611:60;6561:116;:::o;6683:133::-;6726:5;6764:6;6751:20;6742:29;;6780:30;6804:5;6780:30;:::i;:::-;6683:133;;;;:::o;6822:323::-;6878:6;6927:2;6915:9;6906:7;6902:23;6898:32;6895:119;;;6933:79;;:::i;:::-;6895:119;7053:1;7078:50;7120:7;7111:6;7100:9;7096:22;7078:50;:::i;:::-;7068:60;;7024:114;6822:323;;;;:::o;7151:329::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:180;8428:77;8425:1;8418:88;8525:4;8522:1;8515:15;8549:4;8546:1;8539:15;8566:281;8649:27;8671:4;8649:27;:::i;:::-;8641:6;8637:40;8779:6;8767:10;8764:22;8743:18;8731:10;8728:34;8725:62;8722:88;;;8790:18;;:::i;:::-;8722:88;8830:10;8826:2;8819:22;8609:238;8566:281;;:::o;8853:129::-;8887:6;8914:20;;:::i;:::-;8904:30;;8943:33;8971:4;8963:6;8943:33;:::i;:::-;8853:129;;;:::o;8988:311::-;9065:4;9155:18;9147:6;9144:30;9141:56;;;9177:18;;:::i;:::-;9141:56;9227:4;9219:6;9215:17;9207:25;;9287:4;9281;9277:15;9269:23;;8988:311;;;:::o;9305:117::-;9414:1;9411;9404:12;9445:710;9541:5;9566:81;9582:64;9639:6;9582:64;:::i;:::-;9566:81;:::i;:::-;9557:90;;9667:5;9696:6;9689:5;9682:21;9730:4;9723:5;9719:16;9712:23;;9783:4;9775:6;9771:17;9763:6;9759:30;9812:3;9804:6;9801:15;9798:122;;;9831:79;;:::i;:::-;9798:122;9946:6;9929:220;9963:6;9958:3;9955:15;9929:220;;;10038:3;10067:37;10100:3;10088:10;10067:37;:::i;:::-;10062:3;10055:50;10134:4;10129:3;10125:14;10118:21;;10005:144;9989:4;9984:3;9980:14;9973:21;;9929:220;;;9933:21;9547:608;;9445:710;;;;;:::o;10178:370::-;10249:5;10298:3;10291:4;10283:6;10279:17;10275:27;10265:122;;10306:79;;:::i;:::-;10265:122;10423:6;10410:20;10448:94;10538:3;10530:6;10523:4;10515:6;10511:17;10448:94;:::i;:::-;10439:103;;10255:293;10178:370;;;;:::o;10554:539::-;10638:6;10687:2;10675:9;10666:7;10662:23;10658:32;10655:119;;;10693:79;;:::i;:::-;10655:119;10841:1;10830:9;10826:17;10813:31;10871:18;10863:6;10860:30;10857:117;;;10893:79;;:::i;:::-;10857:117;10998:78;11068:7;11059:6;11048:9;11044:22;10998:78;:::i;:::-;10988:88;;10784:302;10554:539;;;;:::o;11099:474::-;11167:6;11175;11224:2;11212:9;11203:7;11199:23;11195:32;11192:119;;;11230:79;;:::i;:::-;11192:119;11350:1;11375:53;11420:7;11411:6;11400:9;11396:22;11375:53;:::i;:::-;11365:63;;11321:117;11477:2;11503:53;11548:7;11539:6;11528:9;11524:22;11503:53;:::i;:::-;11493:63;;11448:118;11099:474;;;;;:::o;11579:182::-;11719:34;11715:1;11707:6;11703:14;11696:58;11579:182;:::o;11767:366::-;11909:3;11930:67;11994:2;11989:3;11930:67;:::i;:::-;11923:74;;12006:93;12095:3;12006:93;:::i;:::-;12124:2;12119:3;12115:12;12108:19;;11767:366;;;:::o;12139:419::-;12305:4;12343:2;12332:9;12328:18;12320:26;;12392:9;12386:4;12382:20;12378:1;12367:9;12363:17;12356:47;12420:131;12546:4;12420:131;:::i;:::-;12412:139;;12139:419;;;:::o;12564:180::-;12612:77;12609:1;12602:88;12709:4;12706:1;12699:15;12733:4;12730:1;12723:15;12750:180;12798:77;12795:1;12788:88;12895:4;12892:1;12885:15;12919:4;12916:1;12909:15;12936:233;12975:3;12998:24;13016:5;12998:24;:::i;:::-;12989:33;;13044:66;13037:5;13034:77;13031:103;;;13114:18;;:::i;:::-;13031:103;13161:1;13154:5;13150:13;13143:20;;12936:233;;;:::o;13175:348::-;13215:7;13238:20;13256:1;13238:20;:::i;:::-;13233:25;;13272:20;13290:1;13272:20;:::i;:::-;13267:25;;13460:1;13392:66;13388:74;13385:1;13382:81;13377:1;13370:9;13363:17;13359:105;13356:131;;;13467:18;;:::i;:::-;13356:131;13515:1;13512;13508:9;13497:20;;13175:348;;;;:::o;13529:180::-;13577:77;13574:1;13567:88;13674:4;13671:1;13664:15;13698:4;13695:1;13688:15;13715:185;13755:1;13772:20;13790:1;13772:20;:::i;:::-;13767:25;;13806:20;13824:1;13806:20;:::i;:::-;13801:25;;13845:1;13835:35;;13850:18;;:::i;:::-;13835:35;13892:1;13889;13885:9;13880:14;;13715:185;;;;:::o;13906:225::-;14046:34;14042:1;14034:6;14030:14;14023:58;14115:8;14110:2;14102:6;14098:15;14091:33;13906:225;:::o;14137:366::-;14279:3;14300:67;14364:2;14359:3;14300:67;:::i;:::-;14293:74;;14376:93;14465:3;14376:93;:::i;:::-;14494:2;14489:3;14485:12;14478:19;;14137:366;;;:::o;14509:419::-;14675:4;14713:2;14702:9;14698:18;14690:26;;14762:9;14756:4;14752:20;14748:1;14737:9;14733:17;14726:47;14790:131;14916:4;14790:131;:::i;:::-;14782:139;;14509:419;;;:::o;14934:220::-;15074:34;15070:1;15062:6;15058:14;15051:58;15143:3;15138:2;15130:6;15126:15;15119:28;14934:220;:::o;15160:366::-;15302:3;15323:67;15387:2;15382:3;15323:67;:::i;:::-;15316:74;;15399:93;15488:3;15399:93;:::i;:::-;15517:2;15512:3;15508:12;15501:19;;15160:366;;;:::o;15532:419::-;15698:4;15736:2;15725:9;15721:18;15713:26;;15785:9;15779:4;15775:20;15771:1;15760:9;15756:17;15749:47;15813:131;15939:4;15813:131;:::i;:::-;15805:139;;15532:419;;;:::o;15957:223::-;16097:34;16093:1;16085:6;16081:14;16074:58;16166:6;16161:2;16153:6;16149:15;16142:31;15957:223;:::o;16186:366::-;16328:3;16349:67;16413:2;16408:3;16349:67;:::i;:::-;16342:74;;16425:93;16514:3;16425:93;:::i;:::-;16543:2;16538:3;16534:12;16527:19;;16186:366;;;:::o;16558:419::-;16724:4;16762:2;16751:9;16747:18;16739:26;;16811:9;16805:4;16801:20;16797:1;16786:9;16782:17;16775:47;16839:131;16965:4;16839:131;:::i;:::-;16831:139;;16558:419;;;:::o;16983:221::-;17123:34;17119:1;17111:6;17107:14;17100:58;17192:4;17187:2;17179:6;17175:15;17168:29;16983:221;:::o;17210:366::-;17352:3;17373:67;17437:2;17432:3;17373:67;:::i;:::-;17366:74;;17449:93;17538:3;17449:93;:::i;:::-;17567:2;17562:3;17558:12;17551:19;;17210:366;;;:::o;17582:419::-;17748:4;17786:2;17775:9;17771:18;17763:26;;17835:9;17829:4;17825:20;17821:1;17810:9;17806:17;17799:47;17863:131;17989:4;17863:131;:::i;:::-;17855:139;;17582:419;;;:::o;18007:224::-;18147:34;18143:1;18135:6;18131:14;18124:58;18216:7;18211:2;18203:6;18199:15;18192:32;18007:224;:::o;18237:366::-;18379:3;18400:67;18464:2;18459:3;18400:67;:::i;:::-;18393:74;;18476:93;18565:3;18476:93;:::i;:::-;18594:2;18589:3;18585:12;18578:19;;18237:366;;;:::o;18609:419::-;18775:4;18813:2;18802:9;18798:18;18790:26;;18862:9;18856:4;18852:20;18848:1;18837:9;18833:17;18826:47;18890:131;19016:4;18890:131;:::i;:::-;18882:139;;18609:419;;;:::o;19034:222::-;19174:34;19170:1;19162:6;19158:14;19151:58;19243:5;19238:2;19230:6;19226:15;19219:30;19034:222;:::o;19262:366::-;19404:3;19425:67;19489:2;19484:3;19425:67;:::i;:::-;19418:74;;19501:93;19590:3;19501:93;:::i;:::-;19619:2;19614:3;19610:12;19603:19;;19262:366;;;:::o;19634:419::-;19800:4;19838:2;19827:9;19823:18;19815:26;;19887:9;19881:4;19877:20;19873:1;19862:9;19858:17;19851:47;19915:131;20041:4;19915:131;:::i;:::-;19907:139;;19634:419;;;:::o;20059:228::-;20199:34;20195:1;20187:6;20183:14;20176:58;20268:11;20263:2;20255:6;20251:15;20244:36;20059:228;:::o;20293:366::-;20435:3;20456:67;20520:2;20515:3;20456:67;:::i;:::-;20449:74;;20532:93;20621:3;20532:93;:::i;:::-;20650:2;20645:3;20641:12;20634:19;;20293:366;;;:::o;20665:419::-;20831:4;20869:2;20858:9;20854:18;20846:26;;20918:9;20912:4;20908:20;20904:1;20893:9;20889:17;20882:47;20946:131;21072:4;20946:131;:::i;:::-;20938:139;;20665:419;;;:::o;21090:250::-;21230:34;21226:1;21218:6;21214:14;21207:58;21299:33;21294:2;21286:6;21282:15;21275:58;21090:250;:::o;21346:366::-;21488:3;21509:67;21573:2;21568:3;21509:67;:::i;:::-;21502:74;;21585:93;21674:3;21585:93;:::i;:::-;21703:2;21698:3;21694:12;21687:19;;21346:366;;;:::o;21718:419::-;21884:4;21922:2;21911:9;21907:18;21899:26;;21971:9;21965:4;21961:20;21957:1;21946:9;21942:17;21935:47;21999:131;22125:4;21999:131;:::i;:::-;21991:139;;21718:419;;;:::o;22143:178::-;22283:30;22279:1;22271:6;22267:14;22260:54;22143:178;:::o;22327:366::-;22469:3;22490:67;22554:2;22549:3;22490:67;:::i;:::-;22483:74;;22566:93;22655:3;22566:93;:::i;:::-;22684:2;22679:3;22675:12;22668:19;;22327:366;;;:::o;22699:419::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22952:9;22946:4;22942:20;22938:1;22927:9;22923:17;22916:47;22980:131;23106:4;22980:131;:::i;:::-;22972:139;;22699:419;;;:::o;23124:222::-;23264:34;23260:1;23252:6;23248:14;23241:58;23333:5;23328:2;23320:6;23316:15;23309:30;23124:222;:::o;23352:366::-;23494:3;23515:67;23579:2;23574:3;23515:67;:::i;:::-;23508:74;;23591:93;23680:3;23591:93;:::i;:::-;23709:2;23704:3;23700:12;23693:19;;23352:366;;;:::o;23724:419::-;23890:4;23928:2;23917:9;23913:18;23905:26;;23977:9;23971:4;23967:20;23963:1;23952:9;23948:17;23941:47;24005:131;24131:4;24005:131;:::i;:::-;23997:139;;23724:419;;;:::o;24149:305::-;24189:3;24208:20;24226:1;24208:20;:::i;:::-;24203:25;;24242:20;24260:1;24242:20;:::i;:::-;24237:25;;24396:1;24328:66;24324:74;24321:1;24318:81;24315:107;;;24402:18;;:::i;:::-;24315:107;24446:1;24443;24439:9;24432:16;;24149:305;;;;:::o;24460:222::-;24600:34;24596:1;24588:6;24584:14;24577:58;24669:5;24664:2;24656:6;24652:15;24645:30;24460:222;:::o;24688:366::-;24830:3;24851:67;24915:2;24910:3;24851:67;:::i;:::-;24844:74;;24927:93;25016:3;24927:93;:::i;:::-;25045:2;25040:3;25036:12;25029:19;;24688:366;;;:::o;25060:419::-;25226:4;25264:2;25253:9;25249:18;25241:26;;25313:9;25307:4;25303:20;25299:1;25288:9;25284:17;25277:47;25341:131;25467:4;25341:131;:::i;:::-;25333:139;;25060:419;;;:::o;25485:191::-;25525:4;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25579:20;25597:1;25579:20;:::i;:::-;25574:25;;25618:1;25615;25612:8;25609:34;;;25623:18;;:::i;:::-;25609:34;25668:1;25665;25661:9;25653:17;;25485:191;;;;:::o;25682:229::-;25822:34;25818:1;25810:6;25806:14;25799:58;25891:12;25886:2;25878:6;25874:15;25867:37;25682:229;:::o;25917:366::-;26059:3;26080:67;26144:2;26139:3;26080:67;:::i;:::-;26073:74;;26156:93;26245:3;26156:93;:::i;:::-;26274:2;26269:3;26265:12;26258:19;;25917:366;;;:::o;26289:419::-;26455:4;26493:2;26482:9;26478:18;26470:26;;26542:9;26536:4;26532:20;26528:1;26517:9;26513:17;26506:47;26570:131;26696:4;26570:131;:::i;:::-;26562:139;;26289:419;;;:::o;26714:143::-;26771:5;26802:6;26796:13;26787:22;;26818:33;26845:5;26818:33;:::i;:::-;26714:143;;;;:::o;26863:351::-;26933:6;26982:2;26970:9;26961:7;26957:23;26953:32;26950:119;;;26988:79;;:::i;:::-;26950:119;27108:1;27133:64;27189:7;27180:6;27169:9;27165:22;27133:64;:::i;:::-;27123:74;;27079:128;26863:351;;;;:::o;27220:85::-;27265:7;27294:5;27283:16;;27220:85;;;:::o;27311:158::-;27369:9;27402:61;27420:42;27429:32;27455:5;27429:32;:::i;:::-;27420:42;:::i;:::-;27402:61;:::i;:::-;27389:74;;27311:158;;;:::o;27475:147::-;27570:45;27609:5;27570:45;:::i;:::-;27565:3;27558:58;27475:147;;:::o;27628:114::-;27695:6;27729:5;27723:12;27713:22;;27628:114;;;:::o;27748:184::-;27847:11;27881:6;27876:3;27869:19;27921:4;27916:3;27912:14;27897:29;;27748:184;;;;:::o;27938:132::-;28005:4;28028:3;28020:11;;28058:4;28053:3;28049:14;28041:22;;27938:132;;;:::o;28076:108::-;28153:24;28171:5;28153:24;:::i;:::-;28148:3;28141:37;28076:108;;:::o;28190:179::-;28259:10;28280:46;28322:3;28314:6;28280:46;:::i;:::-;28358:4;28353:3;28349:14;28335:28;;28190:179;;;;:::o;28375:113::-;28445:4;28477;28472:3;28468:14;28460:22;;28375:113;;;:::o;28524:732::-;28643:3;28672:54;28720:5;28672:54;:::i;:::-;28742:86;28821:6;28816:3;28742:86;:::i;:::-;28735:93;;28852:56;28902:5;28852:56;:::i;:::-;28931:7;28962:1;28947:284;28972:6;28969:1;28966:13;28947:284;;;29048:6;29042:13;29075:63;29134:3;29119:13;29075:63;:::i;:::-;29068:70;;29161:60;29214:6;29161:60;:::i;:::-;29151:70;;29007:224;28994:1;28991;28987:9;28982:14;;28947:284;;;28951:14;29247:3;29240:10;;28648:608;;;28524:732;;;;:::o;29262:831::-;29525:4;29563:3;29552:9;29548:19;29540:27;;29577:71;29645:1;29634:9;29630:17;29621:6;29577:71;:::i;:::-;29658:80;29734:2;29723:9;29719:18;29710:6;29658:80;:::i;:::-;29785:9;29779:4;29775:20;29770:2;29759:9;29755:18;29748:48;29813:108;29916:4;29907:6;29813:108;:::i;:::-;29805:116;;29931:72;29999:2;29988:9;29984:18;29975:6;29931:72;:::i;:::-;30013:73;30081:3;30070:9;30066:19;30057:6;30013:73;:::i;:::-;29262:831;;;;;;;;:::o;30099:177::-;30239:29;30235:1;30227:6;30223:14;30216:53;30099:177;:::o;30282:366::-;30424:3;30445:67;30509:2;30504:3;30445:67;:::i;:::-;30438:74;;30521:93;30610:3;30521:93;:::i;:::-;30639:2;30634:3;30630:12;30623:19;;30282:366;;;:::o;30654:419::-;30820:4;30858:2;30847:9;30843:18;30835:26;;30907:9;30901:4;30897:20;30893:1;30882:9;30878:17;30871:47;30935:131;31061:4;30935:131;:::i;:::-;30927:139;;30654:419;;;:::o

Swarm Source

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