ETH Price: $2,696.78 (-1.55%)

Token

The Crypto President (POTUS)
 

Overview

Max Total Supply

1,000,000,000 POTUS

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: POTUS 9
Balance
0.000000000021429815 POTUS

Value
$0.00
0xd8C279db63fB5b8ce2161714fBEc246949DE5107
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:
POTUS

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

// THE ELECTIONS ARE COMING UP SHORTLY THE USA HAS TO MAKE THE RIGHT CHOICE AND
// ELECT A PRESIDENT WHO FULLY SUPPORTS CRYPTO. THIS TOKEN HAS BEEN CREATED TO HELP THIS CAUSE.

// Website - https://thecryptopresident.com/
// TG - https://t.me/potuseth
// Twitter - https://twitter.com/potuserc

                                                            
pragma solidity ^0.8.13;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract POTUS is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "The Crypto President";
    string private constant _symbol = "POTUS";
    uint8 private constant _decimals = 18;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 20;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 40;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
  
    address payable private _developmentAddress = payable(0xb7446FdAF10d67b0aEd21f3022c5EA12091EBE10); 
    address payable private _marketingAddress = payable(0xb7446FdAF10d67b0aEd21f3022c5EA12091EBE10);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000000 * 10**18; 
    uint256 public _maxWalletSize = 20000000 * 10**18; 
    uint256 public _swapTokensAtAmount = 10000 * 10**18;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
 
            if(to != uniswapV2Pair) {
                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() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function _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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 1, "Buy rewards must be between 0% and 1%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 20, "Buy tax must be between 0% and 20%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 1, "Sell rewards must be between 0% and 1%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 99, "Sell tax must be between 0% and 99%");

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

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","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":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce800000060001962000020919062000723565b6000196200002f91906200078a565b600655600060085560146009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5573b7446fdaf10d67b0aed21f3022c5ea12091ebe10601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b7446fdaf10d67b0aed21f3022c5ea12091ebe10601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506a108b2a2c280290940000006014556a108b2a2c2802909400000060155569021e19e0c9bab24000006016553480156200017757600080fd5b5060006200018a620006b960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200023f620006b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200082f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d791906200082f565b6040518363ffffffff1660e01b8152600401620003f692919062000872565b6020604051808303816000875af115801562000416573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043c91906200082f565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000492620006c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200063f620006b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620006aa9190620008b0565b60405180910390a350620008cd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073082620006ea565b91506200073d83620006ea565b92508262000750576200074f620006f4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079782620006ea565b9150620007a483620006ea565b925082821015620007ba57620007b96200075b565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f782620007ca565b9050919050565b6200080981620007ea565b81146200081557600080fd5b50565b6000815190506200082981620007fe565b92915050565b600060208284031215620008485762000847620007c5565b5b6000620008588482850162000818565b91505092915050565b6200086c81620007ea565b82525050565b600060408201905062000889600083018562000861565b62000898602083018462000861565b9392505050565b620008aa81620006ea565b82525050565b6000602082019050620008c760008301846200089f565b92915050565b613b2480620008dd6000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b3919061292b565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906129eb565b61063a565b6040516101f09190612a46565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612ac0565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612aea565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b05565b610692565b6040516102839190612a46565b60405180910390f35b34801561029857600080fd5b506102a161076b565b6040516102ae9190612aea565b60405180910390f35b3480156102c357600080fd5b506102cc610771565b6040516102d99190612b74565b60405180910390f35b3480156102ee57600080fd5b506102f761077a565b6040516103049190612b9e565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612be5565b6107a0565b005b34801561034257600080fd5b5061034b610852565b005b34801561035957600080fd5b50610374600480360381019061036f9190612c12565b610923565b6040516103819190612aea565b60405180910390f35b34801561039657600080fd5b5061039f610974565b005b3480156103ad57600080fd5b506103c860048036038101906103c39190612c3f565b610ac7565b005b3480156103d657600080fd5b506103df610b66565b6040516103ec9190612aea565b60405180910390f35b34801561040157600080fd5b5061040a610b6c565b6040516104179190612b9e565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612be5565b610b95565b005b34801561045557600080fd5b5061045e610c47565b60405161046b9190612aea565b60405180910390f35b34801561048057600080fd5b50610489610c4d565b604051610496919061292b565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612c3f565b610c8a565b005b3480156104d457600080fd5b506104ef60048036038101906104ea9190612c6c565b610d29565b005b3480156104fd57600080fd5b50610518600480360381019061051391906129eb565b610f24565b6040516105259190612a46565b60405180910390f35b34801561053a57600080fd5b50610543610f42565b005b34801561055157600080fd5b5061056c60048036038101906105679190612d38565b61101b565b005b34801561057a57600080fd5b5061059560048036038101906105909190612d98565b611155565b6040516105a29190612aea565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612c3f565b6111dc565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612c12565b61127b565b005b60606040518060400160405280601481526020017f5468652043727970746f20507265736964656e74000000000000000000000000815250905090565b600061064e61064761143c565b8484611444565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b600061069f84848461160d565b610760846106ab61143c565b61075b85604051806060016040528060288152602001613ac760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071161143c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611daf9092919063ffffffff16565b611444565b600190509392505050565b60165481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a861143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90612e24565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089361143c565b73ffffffffffffffffffffffffffffffffffffffff1614806109095750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f161143c565b73ffffffffffffffffffffffffffffffffffffffff16145b61091257600080fd5b600047905061092081611e13565b50565b600061096d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7f565b9050919050565b61097c61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090612e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610acf61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390612e24565b60405180910390fd5b8060148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b9d61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2190612e24565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600581526020017f504f545553000000000000000000000000000000000000000000000000000000815250905090565b610c9261143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612e24565b60405180910390fd5b8060168190555050565b610d3161143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590612e24565b60405180910390fd5b60008410158015610dd0575060018411155b610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612eb6565b60405180910390fd5b60008210158015610e21575060148211155b610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612f48565b60405180910390fd5b60008310158015610e72575060018311155b610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890612fda565b60405180910390fd5b60008110158015610ec3575060638111155b610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef99061306c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f38610f3161143c565b848461160d565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8361143c565b73ffffffffffffffffffffffffffffffffffffffff161480610ff95750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe161143c565b73ffffffffffffffffffffffffffffffffffffffff16145b61100257600080fd5b600061100d30610923565b905061101881611eed565b50565b61102361143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612e24565b60405180910390fd5b60005b8383905081101561114f5781600560008686858181106110d6576110d561308c565b5b90506020020160208101906110eb9190612c12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611147906130ea565b9150506110b3565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e461143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890612e24565b60405180910390fd5b8060158190555050565b61128361143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130790612e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611376906131a4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90613236565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611522576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611519906132c8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116009190612aea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361167c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116739061335a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906133ec565b60405180910390fd5b6000811161172e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117259061347e565b60405180910390fd5b611736610b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117a45750611774610b6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aae57601360149054906101000a900460ff16611833576117c5610b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990613510565b60405180910390fd5b5b601454811115611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f9061357c565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461192557601554816118da84610923565b6118e4919061359c565b10611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613664565b60405180910390fd5b5b600061193030610923565b905060006016548210159050601454821061194b5760145491505b8080156119655750601360159054906101000a900460ff16155b80156119bf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119d75750601360169054906101000a900460ff165b8015611a2d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a835750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aab57611a9182611eed565b60004790506000811115611aa957611aa847611e13565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b555750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c075750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c165760009050611d9d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc15750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd957600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d845750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9c57600a54600c81905550600b54600d819055505b5b611da984848484612166565b50505050565b6000838311158290611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee919061292b565b60405180910390fd5b5060008385611e069190613684565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e7b573d6000803e3d6000fd5b5050565b6000600654821115611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9061372a565b60405180910390fd5b6000611ed0612193565b9050611ee581846121be90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2557611f2461374a565b5b604051908082528060200260200182016040528015611f535781602001602082028036833780820191505090505b5090503081600081518110611f6b57611f6a61308c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612036919061378e565b8160018151811061204a5761204961308c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120b130601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611444565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121159594939291906138b4565b600060405180830381600087803b15801561212f57600080fd5b505af1158015612143573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061217457612173612208565b5b61217f848484612245565b8061218d5761218c612410565b5b50505050565b60008060006121a0612424565b915091506121b781836121be90919063ffffffff16565b9250505090565b600061220083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061248f565b905092915050565b6000600c5414801561221c57506000600d54145b61224357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612257876124f2565b9550955095509550955095506122b586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239681612602565b6123a084836126bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123fd9190612aea565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce800000090506124606b033b2e3c9fd0803ce80000006006546121be90919063ffffffff16565b821015612482576006546b033b2e3c9fd0803ce800000093509350505061248b565b81819350935050505b9091565b600080831182906124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd919061292b565b60405180910390fd5b50600083856124e5919061393d565b9050809150509392505050565b600080600080600080600080600061250f8a600c54600d546126f9565b925092509250600061251f612193565b905060008060006125328e87878761278f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611daf565b905092915050565b60008082846125b3919061359c565b9050838110156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef906139ba565b60405180910390fd5b8091505092915050565b600061260c612193565b90506000612623828461281890919063ffffffff16565b905061267781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d48260065461255a90919063ffffffff16565b6006819055506126ef816007546125a490919063ffffffff16565b6007819055505050565b6000806000806127256064612717888a61281890919063ffffffff16565b6121be90919063ffffffff16565b9050600061274f6064612741888b61281890919063ffffffff16565b6121be90919063ffffffff16565b905060006127788261276a858c61255a90919063ffffffff16565b61255a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127a8858961281890919063ffffffff16565b905060006127bf868961281890919063ffffffff16565b905060006127d6878961281890919063ffffffff16565b905060006127ff826127f1858761255a90919063ffffffff16565b61255a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361282a576000905061288c565b6000828461283891906139da565b9050828482612847919061393d565b14612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90613aa6565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128cc5780820151818401526020810190506128b1565b838111156128db576000848401525b50505050565b6000601f19601f8301169050919050565b60006128fd82612892565b612907818561289d565b93506129178185602086016128ae565b612920816128e1565b840191505092915050565b6000602082019050818103600083015261294581846128f2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298282612957565b9050919050565b61299281612977565b811461299d57600080fd5b50565b6000813590506129af81612989565b92915050565b6000819050919050565b6129c8816129b5565b81146129d357600080fd5b50565b6000813590506129e5816129bf565b92915050565b60008060408385031215612a0257612a0161294d565b5b6000612a10858286016129a0565b9250506020612a21858286016129d6565b9150509250929050565b60008115159050919050565b612a4081612a2b565b82525050565b6000602082019050612a5b6000830184612a37565b92915050565b6000819050919050565b6000612a86612a81612a7c84612957565b612a61565b612957565b9050919050565b6000612a9882612a6b565b9050919050565b6000612aaa82612a8d565b9050919050565b612aba81612a9f565b82525050565b6000602082019050612ad56000830184612ab1565b92915050565b612ae4816129b5565b82525050565b6000602082019050612aff6000830184612adb565b92915050565b600080600060608486031215612b1e57612b1d61294d565b5b6000612b2c868287016129a0565b9350506020612b3d868287016129a0565b9250506040612b4e868287016129d6565b9150509250925092565b600060ff82169050919050565b612b6e81612b58565b82525050565b6000602082019050612b896000830184612b65565b92915050565b612b9881612977565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a2b565b8114612bcd57600080fd5b50565b600081359050612bdf81612bb9565b92915050565b600060208284031215612bfb57612bfa61294d565b5b6000612c0984828501612bd0565b91505092915050565b600060208284031215612c2857612c2761294d565b5b6000612c36848285016129a0565b91505092915050565b600060208284031215612c5557612c5461294d565b5b6000612c63848285016129d6565b91505092915050565b60008060008060808587031215612c8657612c8561294d565b5b6000612c94878288016129d6565b9450506020612ca5878288016129d6565b9350506040612cb6878288016129d6565b9250506060612cc7878288016129d6565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cf857612cf7612cd3565b5b8235905067ffffffffffffffff811115612d1557612d14612cd8565b5b602083019150836020820283011115612d3157612d30612cdd565b5b9250929050565b600080600060408486031215612d5157612d5061294d565b5b600084013567ffffffffffffffff811115612d6f57612d6e612952565b5b612d7b86828701612ce2565b93509350506020612d8e86828701612bd0565b9150509250925092565b60008060408385031215612daf57612dae61294d565b5b6000612dbd858286016129a0565b9250506020612dce858286016129a0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e0e60208361289d565b9150612e1982612dd8565b602082019050919050565b60006020820190508181036000830152612e3d81612e01565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203125000000000000000000000000000000000000000000000000000000602082015250565b6000612ea060258361289d565b9150612eab82612e44565b604082019050919050565b60006020820190508181036000830152612ecf81612e93565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203260008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f3260228361289d565b9150612f3d82612ed6565b604082019050919050565b60006020820190508181036000830152612f6181612f25565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642031250000000000000000000000000000000000000000000000000000602082015250565b6000612fc460268361289d565b9150612fcf82612f68565b604082019050919050565b60006020820190508181036000830152612ff381612fb7565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b600061305660238361289d565b915061306182612ffa565b604082019050919050565b6000602082019050818103600083015261308581613049565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130f5826129b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613127576131266130bb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061318e60268361289d565b915061319982613132565b604082019050919050565b600060208201905081810360008301526131bd81613181565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061322060248361289d565b915061322b826131c4565b604082019050919050565b6000602082019050818103600083015261324f81613213565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b260228361289d565b91506132bd82613256565b604082019050919050565b600060208201905081810360008301526132e1816132a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061334460258361289d565b915061334f826132e8565b604082019050919050565b6000602082019050818103600083015261337381613337565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133d660238361289d565b91506133e18261337a565b604082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061346860298361289d565b91506134738261340c565b604082019050919050565b600060208201905081810360008301526134978161345b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134fa603f8361289d565b91506135058261349e565b604082019050919050565b60006020820190508181036000830152613529816134ed565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613566601c8361289d565b915061357182613530565b602082019050919050565b6000602082019050818103600083015261359581613559565b9050919050565b60006135a7826129b5565b91506135b2836129b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135e7576135e66130bb565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061364e60238361289d565b9150613659826135f2565b604082019050919050565b6000602082019050818103600083015261367d81613641565b9050919050565b600061368f826129b5565b915061369a836129b5565b9250828210156136ad576136ac6130bb565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613714602a8361289d565b915061371f826136b8565b604082019050919050565b6000602082019050818103600083015261374381613707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061378881612989565b92915050565b6000602082840312156137a4576137a361294d565b5b60006137b284828501613779565b91505092915050565b6000819050919050565b60006137e06137db6137d6846137bb565b612a61565b6129b5565b9050919050565b6137f0816137c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382b81612977565b82525050565b600061383d8383613822565b60208301905092915050565b6000602082019050919050565b6000613861826137f6565b61386b8185613801565b935061387683613812565b8060005b838110156138a757815161388e8882613831565b975061389983613849565b92505060018101905061387a565b5085935050505092915050565b600060a0820190506138c96000830188612adb565b6138d660208301876137e7565b81810360408301526138e88186613856565b90506138f76060830185612b8f565b6139046080830184612adb565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613948826129b5565b9150613953836129b5565b9250826139635761396261390e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139a4601b8361289d565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b60006139e5826129b5565b91506139f0836129b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a2957613a286130bb565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9060218361289d565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a4d6d636ac54d715b88960f6d4a0c36d2236d2b4ce21d294ed490cbdf7e6d17b64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b3919061292b565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906129eb565b61063a565b6040516101f09190612a46565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612ac0565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612aea565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b05565b610692565b6040516102839190612a46565b60405180910390f35b34801561029857600080fd5b506102a161076b565b6040516102ae9190612aea565b60405180910390f35b3480156102c357600080fd5b506102cc610771565b6040516102d99190612b74565b60405180910390f35b3480156102ee57600080fd5b506102f761077a565b6040516103049190612b9e565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612be5565b6107a0565b005b34801561034257600080fd5b5061034b610852565b005b34801561035957600080fd5b50610374600480360381019061036f9190612c12565b610923565b6040516103819190612aea565b60405180910390f35b34801561039657600080fd5b5061039f610974565b005b3480156103ad57600080fd5b506103c860048036038101906103c39190612c3f565b610ac7565b005b3480156103d657600080fd5b506103df610b66565b6040516103ec9190612aea565b60405180910390f35b34801561040157600080fd5b5061040a610b6c565b6040516104179190612b9e565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612be5565b610b95565b005b34801561045557600080fd5b5061045e610c47565b60405161046b9190612aea565b60405180910390f35b34801561048057600080fd5b50610489610c4d565b604051610496919061292b565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612c3f565b610c8a565b005b3480156104d457600080fd5b506104ef60048036038101906104ea9190612c6c565b610d29565b005b3480156104fd57600080fd5b50610518600480360381019061051391906129eb565b610f24565b6040516105259190612a46565b60405180910390f35b34801561053a57600080fd5b50610543610f42565b005b34801561055157600080fd5b5061056c60048036038101906105679190612d38565b61101b565b005b34801561057a57600080fd5b5061059560048036038101906105909190612d98565b611155565b6040516105a29190612aea565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612c3f565b6111dc565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612c12565b61127b565b005b60606040518060400160405280601481526020017f5468652043727970746f20507265736964656e74000000000000000000000000815250905090565b600061064e61064761143c565b8484611444565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006b033b2e3c9fd0803ce8000000905090565b600061069f84848461160d565b610760846106ab61143c565b61075b85604051806060016040528060288152602001613ac760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061071161143c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611daf9092919063ffffffff16565b611444565b600190509392505050565b60165481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a861143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90612e24565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089361143c565b73ffffffffffffffffffffffffffffffffffffffff1614806109095750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f161143c565b73ffffffffffffffffffffffffffffffffffffffff16145b61091257600080fd5b600047905061092081611e13565b50565b600061096d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7f565b9050919050565b61097c61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090612e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610acf61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390612e24565b60405180910390fd5b8060148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b9d61143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2190612e24565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600581526020017f504f545553000000000000000000000000000000000000000000000000000000815250905090565b610c9261143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612e24565b60405180910390fd5b8060168190555050565b610d3161143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590612e24565b60405180910390fd5b60008410158015610dd0575060018411155b610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612eb6565b60405180910390fd5b60008210158015610e21575060148211155b610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612f48565b60405180910390fd5b60008310158015610e72575060018311155b610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890612fda565b60405180910390fd5b60008110158015610ec3575060638111155b610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef99061306c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610f38610f3161143c565b848461160d565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f8361143c565b73ffffffffffffffffffffffffffffffffffffffff161480610ff95750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe161143c565b73ffffffffffffffffffffffffffffffffffffffff16145b61100257600080fd5b600061100d30610923565b905061101881611eed565b50565b61102361143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612e24565b60405180910390fd5b60005b8383905081101561114f5781600560008686858181106110d6576110d561308c565b5b90506020020160208101906110eb9190612c12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611147906130ea565b9150506110b3565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e461143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890612e24565b60405180910390fd5b8060158190555050565b61128361143c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130790612e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611376906131a4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90613236565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611522576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611519906132c8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116009190612aea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361167c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116739061335a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e2906133ec565b60405180910390fd5b6000811161172e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117259061347e565b60405180910390fd5b611736610b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117a45750611774610b6c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aae57601360149054906101000a900460ff16611833576117c5610b6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990613510565b60405180910390fd5b5b601454811115611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f9061357c565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461192557601554816118da84610923565b6118e4919061359c565b10611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613664565b60405180910390fd5b5b600061193030610923565b905060006016548210159050601454821061194b5760145491505b8080156119655750601360159054906101000a900460ff16155b80156119bf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119d75750601360169054906101000a900460ff165b8015611a2d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a835750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aab57611a9182611eed565b60004790506000811115611aa957611aa847611e13565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b555750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c075750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c165760009050611d9d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc15750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd957600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d845750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9c57600a54600c81905550600b54600d819055505b5b611da984848484612166565b50505050565b6000838311158290611df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dee919061292b565b60405180910390fd5b5060008385611e069190613684565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e7b573d6000803e3d6000fd5b5050565b6000600654821115611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9061372a565b60405180910390fd5b6000611ed0612193565b9050611ee581846121be90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2557611f2461374a565b5b604051908082528060200260200182016040528015611f535781602001602082028036833780820191505090505b5090503081600081518110611f6b57611f6a61308c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612012573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612036919061378e565b8160018151811061204a5761204961308c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120b130601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611444565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121159594939291906138b4565b600060405180830381600087803b15801561212f57600080fd5b505af1158015612143573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061217457612173612208565b5b61217f848484612245565b8061218d5761218c612410565b5b50505050565b60008060006121a0612424565b915091506121b781836121be90919063ffffffff16565b9250505090565b600061220083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061248f565b905092915050565b6000600c5414801561221c57506000600d54145b61224357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612257876124f2565b9550955095509550955095506122b586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239681612602565b6123a084836126bf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123fd9190612aea565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006b033b2e3c9fd0803ce800000090506124606b033b2e3c9fd0803ce80000006006546121be90919063ffffffff16565b821015612482576006546b033b2e3c9fd0803ce800000093509350505061248b565b81819350935050505b9091565b600080831182906124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd919061292b565b60405180910390fd5b50600083856124e5919061393d565b9050809150509392505050565b600080600080600080600080600061250f8a600c54600d546126f9565b925092509250600061251f612193565b905060008060006125328e87878761278f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611daf565b905092915050565b60008082846125b3919061359c565b9050838110156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef906139ba565b60405180910390fd5b8091505092915050565b600061260c612193565b90506000612623828461281890919063ffffffff16565b905061267781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d48260065461255a90919063ffffffff16565b6006819055506126ef816007546125a490919063ffffffff16565b6007819055505050565b6000806000806127256064612717888a61281890919063ffffffff16565b6121be90919063ffffffff16565b9050600061274f6064612741888b61281890919063ffffffff16565b6121be90919063ffffffff16565b905060006127788261276a858c61255a90919063ffffffff16565b61255a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127a8858961281890919063ffffffff16565b905060006127bf868961281890919063ffffffff16565b905060006127d6878961281890919063ffffffff16565b905060006127ff826127f1858761255a90919063ffffffff16565b61255a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361282a576000905061288c565b6000828461283891906139da565b9050828482612847919061393d565b14612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90613aa6565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128cc5780820151818401526020810190506128b1565b838111156128db576000848401525b50505050565b6000601f19601f8301169050919050565b60006128fd82612892565b612907818561289d565b93506129178185602086016128ae565b612920816128e1565b840191505092915050565b6000602082019050818103600083015261294581846128f2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298282612957565b9050919050565b61299281612977565b811461299d57600080fd5b50565b6000813590506129af81612989565b92915050565b6000819050919050565b6129c8816129b5565b81146129d357600080fd5b50565b6000813590506129e5816129bf565b92915050565b60008060408385031215612a0257612a0161294d565b5b6000612a10858286016129a0565b9250506020612a21858286016129d6565b9150509250929050565b60008115159050919050565b612a4081612a2b565b82525050565b6000602082019050612a5b6000830184612a37565b92915050565b6000819050919050565b6000612a86612a81612a7c84612957565b612a61565b612957565b9050919050565b6000612a9882612a6b565b9050919050565b6000612aaa82612a8d565b9050919050565b612aba81612a9f565b82525050565b6000602082019050612ad56000830184612ab1565b92915050565b612ae4816129b5565b82525050565b6000602082019050612aff6000830184612adb565b92915050565b600080600060608486031215612b1e57612b1d61294d565b5b6000612b2c868287016129a0565b9350506020612b3d868287016129a0565b9250506040612b4e868287016129d6565b9150509250925092565b600060ff82169050919050565b612b6e81612b58565b82525050565b6000602082019050612b896000830184612b65565b92915050565b612b9881612977565b82525050565b6000602082019050612bb36000830184612b8f565b92915050565b612bc281612a2b565b8114612bcd57600080fd5b50565b600081359050612bdf81612bb9565b92915050565b600060208284031215612bfb57612bfa61294d565b5b6000612c0984828501612bd0565b91505092915050565b600060208284031215612c2857612c2761294d565b5b6000612c36848285016129a0565b91505092915050565b600060208284031215612c5557612c5461294d565b5b6000612c63848285016129d6565b91505092915050565b60008060008060808587031215612c8657612c8561294d565b5b6000612c94878288016129d6565b9450506020612ca5878288016129d6565b9350506040612cb6878288016129d6565b9250506060612cc7878288016129d6565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612cf857612cf7612cd3565b5b8235905067ffffffffffffffff811115612d1557612d14612cd8565b5b602083019150836020820283011115612d3157612d30612cdd565b5b9250929050565b600080600060408486031215612d5157612d5061294d565b5b600084013567ffffffffffffffff811115612d6f57612d6e612952565b5b612d7b86828701612ce2565b93509350506020612d8e86828701612bd0565b9150509250925092565b60008060408385031215612daf57612dae61294d565b5b6000612dbd858286016129a0565b9250506020612dce858286016129a0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e0e60208361289d565b9150612e1982612dd8565b602082019050919050565b60006020820190508181036000830152612e3d81612e01565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203125000000000000000000000000000000000000000000000000000000602082015250565b6000612ea060258361289d565b9150612eab82612e44565b604082019050919050565b60006020820190508181036000830152612ecf81612e93565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203260008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f3260228361289d565b9150612f3d82612ed6565b604082019050919050565b60006020820190508181036000830152612f6181612f25565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642031250000000000000000000000000000000000000000000000000000602082015250565b6000612fc460268361289d565b9150612fcf82612f68565b604082019050919050565b60006020820190508181036000830152612ff381612fb7565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b600061305660238361289d565b915061306182612ffa565b604082019050919050565b6000602082019050818103600083015261308581613049565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130f5826129b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613127576131266130bb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061318e60268361289d565b915061319982613132565b604082019050919050565b600060208201905081810360008301526131bd81613181565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061322060248361289d565b915061322b826131c4565b604082019050919050565b6000602082019050818103600083015261324f81613213565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b260228361289d565b91506132bd82613256565b604082019050919050565b600060208201905081810360008301526132e1816132a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061334460258361289d565b915061334f826132e8565b604082019050919050565b6000602082019050818103600083015261337381613337565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133d660238361289d565b91506133e18261337a565b604082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061346860298361289d565b91506134738261340c565b604082019050919050565b600060208201905081810360008301526134978161345b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134fa603f8361289d565b91506135058261349e565b604082019050919050565b60006020820190508181036000830152613529816134ed565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613566601c8361289d565b915061357182613530565b602082019050919050565b6000602082019050818103600083015261359581613559565b9050919050565b60006135a7826129b5565b91506135b2836129b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135e7576135e66130bb565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061364e60238361289d565b9150613659826135f2565b604082019050919050565b6000602082019050818103600083015261367d81613641565b9050919050565b600061368f826129b5565b915061369a836129b5565b9250828210156136ad576136ac6130bb565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613714602a8361289d565b915061371f826136b8565b604082019050919050565b6000602082019050818103600083015261374381613707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061378881612989565b92915050565b6000602082840312156137a4576137a361294d565b5b60006137b284828501613779565b91505092915050565b6000819050919050565b60006137e06137db6137d6846137bb565b612a61565b6129b5565b9050919050565b6137f0816137c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61382b81612977565b82525050565b600061383d8383613822565b60208301905092915050565b6000602082019050919050565b6000613861826137f6565b61386b8185613801565b935061387683613812565b8060005b838110156138a757815161388e8882613831565b975061389983613849565b92505060018101905061387a565b5085935050505092915050565b600060a0820190506138c96000830188612adb565b6138d660208301876137e7565b81810360408301526138e88186613856565b90506138f76060830185612b8f565b6139046080830184612adb565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613948826129b5565b9150613953836129b5565b9250826139635761396261390e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139a4601b8361289d565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b60006139e5826129b5565b91506139f0836129b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a2957613a286130bb565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9060218361289d565b9150613a9b82613a34565b604082019050919050565b60006020820190508181036000830152613abf81613a83565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a4d6d636ac54d715b88960f6d4a0c36d2236d2b4ce21d294ed490cbdf7e6d17b64736f6c634300080d0033

Deployed Bytecode Sourcemap

4462:13543:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6906:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7838:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5744:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7186:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8040:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6048:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7094:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5792:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17371:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12781:235;;;;;;;;;;;;;:::i;:::-;;7290:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1935:148;;;;;;;;;;;;;:::i;:::-;;17512:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5936:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1719:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6998:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17179:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16433:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7437:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12536:236;;;;;;;;;;;;;:::i;:::-;;17766:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7645:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17642:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2092:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6906:83;6943:13;6976:5;;;;;;;;;;;;;;;;;6969:12;;6906:83;:::o;7838:193::-;7940:4;7962:39;7971:12;:10;:12::i;:::-;7985:7;7994:6;7962:8;:39::i;:::-;8019:4;8012:11;;7838:193;;;;:::o;5744:41::-;;;;;;;;;;;;;:::o;7186:95::-;7239:7;5023:19;7259:14;;7186:95;:::o;8040:446::-;8172:4;8189:36;8199:6;8207:9;8218:6;8189:9;:36::i;:::-;8236:220;8259:6;8280:12;:10;:12::i;:::-;8307:138;8363:6;8307:138;;;;;;;;;;;;;;;;;:11;:19;8319:6;8307:19;;;;;;;;;;;;;;;:33;8327:12;:10;:12::i;:::-;8307:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8236:8;:220::i;:::-;8474:4;8467:11;;8040:446;;;;;:::o;6048:51::-;;;;:::o;7094:83::-;7135:5;4695:2;7153:16;;7094:83;:::o;5792:28::-;;;;;;;;;;;;;:::o;17371:101::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17452:12:::1;17438:11;;:26;;;;;;;;;;;;;;;;;;17371:101:::0;:::o;12781:235::-;12847:19;;;;;;;;;;;12831:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12886:17;;;;;;;;;;;12870:33;;:12;:10;:12::i;:::-;:33;;;12831:72;12823:81;;;;;;12915:26;12944:21;12915:50;;12976:32;12989:18;12976:12;:32::i;:::-;12812:204;12781:235::o;7290:138::-;7356:7;7383:37;7403:7;:16;7411:7;7403:16;;;;;;;;;;;;;;;;7383:19;:37::i;:::-;7376:44;;7290:138;;;:::o;1935:148::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:1:::1;2005:40;;2026:6;::::0;::::1;;;;;;;;2005:40;;;;;;;;;;;;2073:1;2056:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1935:148::o:0;17512:121::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17604:11:::1;17589:12;:26;;;;17512:121:::0;:::o;5936:47::-;;;;:::o;1719:79::-;1757:7;1784:6;;;;;;;;;;;1777:13;;1719:79;:::o;12426:101::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12507:12:::1;12493:11;;:26;;;;;;;;;;;;;;;;;;12426:101:::0;:::o;5991:49::-;;;;:::o;6998:87::-;7037:13;7070:7;;;;;;;;;;;;;;;;;7063:14;;6998:87;:::o;17179:139::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17292:18:::1;17270:19;:40;;;;17179:139:::0;:::o;16433:693::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16592:1:::1;16575:13;:18;;:40;;;;;16614:1;16597:13;:18;;16575:40;16567:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16691:1;16676:11;:16;;:37;;;;;16711:2;16696:11;:17;;16676:37;16668:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16789:1;16771:14;:19;;:42;;;;;16812:1;16794:14;:19;;16771:42;16763:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16891:1;16875:12;:17;;:39;;;;;16912:2;16896:12;:18;;16875:39;16867:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16984:13;16967:14;:30;;;;17026:14;17008:15;:32;;;;17066:11;17051:12;:26;;;;17104:12;17088:13;:28;;;;16433:693:::0;;;;:::o;7437:199::-;7542:4;7564:42;7574:12;:10;:12::i;:::-;7588:9;7599:6;7564:9;:42::i;:::-;7624:4;7617:11;;7437:199;;;;:::o;12536:236::-;12602:19;;;;;;;;;;;12586:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12641:17;;;;;;;;;;;12625:33;;:12;:10;:12::i;:::-;:33;;;12586:72;12578:81;;;;;;12670:23;12696:24;12714:4;12696:9;:24::i;:::-;12670:50;;12731:33;12748:15;12731:16;:33::i;:::-;12567:205;12536:236::o;17766:234::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17883:9:::1;17879:114;17902:8;;:15;;17898:1;:19;17879:114;;;17973:8;17939:18;:31;17958:8;;17967:1;17958:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17939:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17919:3;;;;;:::i;:::-;;;;17879:114;;;;17766:234:::0;;;:::o;7645:184::-;7762:7;7794:11;:18;7806:5;7794:18;;;;;;;;;;;;;;;:27;7813:7;7794:27;;;;;;;;;;;;;;;;7787:34;;7645:184;;;;:::o;17642:115::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17736:13:::1;17719:14;:30;;;;17642:115:::0;:::o;2092:244::-;1857:12;:10;:12::i;:::-;1847:22;;:6;;;;;;;;;;:22;;;1839:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2201:1:::1;2181:22;;:8;:22;;::::0;2173:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2291:8;2262:38;;2283:6;::::0;::::1;;;;;;;;2262:38;;;;;;;;;;;;2320:8;2311:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2092:244:::0;:::o;468:98::-;521:7;548:10;541:17;;468:98;:::o;9183:369::-;9327:1;9310:19;;:5;:19;;;9302:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9408:1;9389:21;;:7;:21;;;9381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9490:6;9460:11;:18;9472:5;9460:18;;;;;;;;;;;;;;;:27;9479:7;9460:27;;;;;;;;;;;;;;;:36;;;;9528:7;9512:32;;9521:5;9512:32;;;9537:6;9512:32;;;;;;:::i;:::-;;;;;;;;9183:369;;;:::o;9561:2256::-;9699:1;9683:18;;:4;:18;;;9675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9776:1;9762:16;;:2;:16;;;9754:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9846:1;9837:6;:10;9829:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9919:7;:5;:7::i;:::-;9911:15;;:4;:15;;;;:32;;;;;9936:7;:5;:7::i;:::-;9930:13;;:2;:13;;;;9911:32;9907:1178;;;10001:11;;;;;;;;;;;9996:144;;10049:7;:5;:7::i;:::-;10041:15;;:4;:15;;;10033:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9996:144;10175:12;;10165:6;:22;;10157:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10247:13;;;;;;;;;;;10241:19;;:2;:19;;;10238:146;;10314:14;;10305:6;10289:13;10299:2;10289:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10281:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10238:146;10401:28;10432:24;10450:4;10432:9;:24::i;:::-;10401:55;;10471:12;10510:19;;10486:20;:43;;10471:58;;10574:12;;10550:20;:36;10547:124;;10643:12;;10620:35;;10547:124;10692:7;:18;;;;;10704:6;;;;;;;;;;;10703:7;10692:18;:43;;;;;10722:13;;;;;;;;;;;10714:21;;:4;:21;;;;10692:43;:58;;;;;10739:11;;;;;;;;;;;10692:58;:87;;;;;10755:18;:24;10774:4;10755:24;;;;;;;;;;;;;;;;;;;;;;;;;10754:25;10692:87;:114;;;;;10784:18;:22;10803:2;10784:22;;;;;;;;;;;;;;;;;;;;;;;;;10783:23;10692:114;10688:386;;;10827:38;10844:20;10827:16;:38::i;:::-;10884:26;10913:21;10884:50;;10978:1;10957:18;:22;10953:106;;;11004:35;11017:21;11004:12;:35::i;:::-;10953:106;10808:266;10688:386;9945:1140;;9907:1178;11098:12;11113:4;11098:19;;11163:18;:24;11182:4;11163:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11191:18;:22;11210:2;11191:22;;;;;;;;;;;;;;;;;;;;;;;;;11163:50;11162:102;;;;11227:13;;;;;;;;;;;11219:21;;:4;:21;;;;:44;;;;;11250:13;;;;;;;;;;;11244:19;;:2;:19;;;;11219:44;11162:102;11158:597;;;11291:5;11281:15;;11158:597;;;11375:13;;;;;;;;;;;11367:21;;:4;:21;;;:55;;;;;11406:15;;;;;;;;;;;11392:30;;:2;:30;;;;11367:55;11364:162;;;11455:14;;11443:9;:26;;;;11498:12;;11488:7;:22;;;;11364:162;11586:13;;;;;;;;;;;11580:19;;:2;:19;;;:55;;;;;11619:15;;;;;;;;;;;11603:32;;:4;:32;;;;11580:55;11576:165;;;11668:15;;11656:9;:27;;;;11712:13;;11702:7;:23;;;;11576:165;11158:597;11768:41;11783:4;11789:2;11793:6;11801:7;11768:14;:41::i;:::-;9664:2153;9561:2256;;;:::o;2704:224::-;2824:7;2857:1;2852;:6;;2860:12;2844:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2884:9;2900:1;2896;:5;;;;:::i;:::-;2884:17;;2919:1;2912:8;;;2704:224;;;;;:::o;12318:99::-;12375:17;;;;;;;;;;;:26;;:34;12402:6;12375:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:99;:::o;8495:323::-;8590:7;8648;;8637;:18;;8615:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8736:19;8758:10;:8;:10::i;:::-;8736:32;;8786:24;8798:11;8786:7;:11;;:24;;;;:::i;:::-;8779:31;;;8495:323;;;:::o;11826:483::-;6203:4;6194:6;;:13;;;;;;;;;;;;;;;;;;11904:21:::1;11942:1;11928:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:40;;11973:4;11955;11960:1;11955:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11999:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11989:4;11994:1;11989:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12032:62;12049:4;12064:15;;;;;;;;;;;12082:11;12032:8;:62::i;:::-;12105:15;;;;;;;;;;;:66;;;12186:11;12212:1;12228:4;12255;12275:15;12105:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11893:416;6239:5:::0;6230:6;;:14;;;;;;;;;;;;;;;;;;11826:483;:::o;13025:282::-;13181:7;13176:28;;13190:14;:12;:14::i;:::-;13176:28;13215:44;13233:6;13241:9;13252:6;13215:17;:44::i;:::-;13275:7;13270:29;;13284:15;:13;:15::i;:::-;13270:29;13025:282;;;;:::o;15994:164::-;16036:7;16057:15;16074;16093:19;:17;:19::i;:::-;16056:56;;;;16130:20;16142:7;16130;:11;;:20;;;;:::i;:::-;16123:27;;;;15994:164;:::o;3192:132::-;3250:7;3277:39;3281:1;3284;3277:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3270:46;;3192:132;;;;:::o;8827:221::-;8887:1;8874:9;;:14;:30;;;;;8903:1;8892:7;;:12;8874:30;8906:7;8870:43;8946:9;;8926:17;:29;;;;8984:7;;8966:15;:25;;;;9017:1;9005:9;:13;;;;9039:1;9029:7;:11;;;;8827:221;:::o;13316:610::-;13463:15;13493:23;13531:12;13558:23;13596:12;13623:13;13650:19;13661:7;13650:10;:19::i;:::-;13448:221;;;;;;;;;;;;13698:28;13718:7;13698;:15;13706:6;13698:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13680:7;:15;13688:6;13680:15;;;;;;;;;;;;;;;:46;;;;13758:39;13781:15;13758:7;:18;13766:9;13758:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13737:7;:18;13745:9;13737:18;;;;;;;;;;;;;;;:60;;;;13808:16;13818:5;13808:9;:16::i;:::-;13835:23;13847:4;13853;13835:11;:23::i;:::-;13891:9;13874:44;;13883:6;13874:44;;;13902:15;13874:44;;;;;;:::i;:::-;;;;;;;;13437:489;;;;;;13316:610;;;:::o;9057:117::-;9113:17;;9101:9;:29;;;;9151:15;;9141:7;:25;;;;9057:117::o;16167:257::-;16218:7;16227;16247:15;16265:7;;16247:25;;16283:15;5023:19;16283:25;;16333:20;5023:19;16333:7;;:11;;:20;;;;:::i;:::-;16323:7;:30;16319:61;;;16363:7;;5023:19;16355:25;;;;;;;;16319:61;16399:7;16408;16391:25;;;;;;16167:257;;;:::o;3333:223::-;3453:7;3485:1;3481;:5;3488:12;3473:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3512:9;3528:1;3524;:5;;;;:::i;:::-;3512:17;;3547:1;3540:8;;;3333:223;;;;;:::o;14349:615::-;14449:7;14471;14493;14515;14537;14559;14595:23;14620:12;14634:13;14664:40;14676:7;14685:9;;14696:7;;14664:11;:40::i;:::-;14594:110;;;;;;14715:19;14737:10;:8;:10::i;:::-;14715:32;;14759:15;14776:23;14801:12;14830:46;14842:7;14851:4;14857:5;14864:11;14830;:46::i;:::-;14758:118;;;;;;14895:7;14904:15;14921:4;14927:15;14944:4;14950:5;14887:69;;;;;;;;;;;;;;;;;;;14349:615;;;;;;;:::o;2559:136::-;2617:7;2644:43;2648:1;2651;2644:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2637:50;;2559:136;;;;:::o;2371:179::-;2429:7;2449:9;2465:1;2461;:5;;;;:::i;:::-;2449:17;;2490:1;2485;:6;;2477:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2541:1;2534:8;;;2371:179;;;;:::o;13935:211::-;13988:19;14010:10;:8;:10::i;:::-;13988:32;;14031:13;14047:22;14057:11;14047:5;:9;;:22;;;;:::i;:::-;14031:38;;14105:33;14132:5;14105:7;:22;14121:4;14105:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14080:7;:22;14096:4;14080:22;;;;;;;;;;;;;;;:58;;;;13977:169;;13935:211;:::o;14155:147::-;14233:17;14245:4;14233:7;;:11;;:17;;;;:::i;:::-;14223:7;:27;;;;14274:20;14289:4;14274:10;;:14;;:20;;;;:::i;:::-;14261:10;:33;;;;14155:147;;:::o;14973:469::-;15142:7;15164;15186;15221:12;15236:30;15262:3;15236:21;15248:8;15236:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15221:45;;15277:13;15293:28;15317:3;15293:19;15305:6;15293:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15277:44;;15332:23;15358:28;15380:5;15358:17;15370:4;15358:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15332:54;;15405:15;15422:4;15428:5;15397:37;;;;;;;;;14973:469;;;;;;;:::o;15451:534::-;15645:7;15667;15689;15724:15;15742:24;15754:11;15742:7;:11;;:24;;;;:::i;:::-;15724:42;;15777:12;15792:21;15801:11;15792:4;:8;;:21;;;;:::i;:::-;15777:36;;15824:13;15840:22;15850:11;15840:5;:9;;:22;;;;:::i;:::-;15824:38;;15873:23;15899:28;15921:5;15899:17;15911:4;15899:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15873:54;;15946:7;15955:15;15972:4;15938:39;;;;;;;;;;15451:534;;;;;;;;:::o;2937:246::-;2995:7;3024:1;3019;:6;3015:47;;3049:1;3042:8;;;;3015:47;3072:9;3088:1;3084;:5;;;;:::i;:::-;3072:17;;3117:1;3112;3108;:5;;;;:::i;:::-;:10;3100:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3174:1;3167:8;;;2937:246;;;;;:::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;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:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;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:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:474::-;9989:6;9997;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;10299:2;10325:53;10370:7;10361:6;10350:9;10346:22;10325:53;:::i;:::-;10315:63;;10270:118;9921:474;;;;;:::o;10401:182::-;10541:34;10537:1;10529:6;10525:14;10518:58;10401:182;:::o;10589:366::-;10731:3;10752:67;10816:2;10811:3;10752:67;:::i;:::-;10745:74;;10828:93;10917:3;10828:93;:::i;:::-;10946:2;10941:3;10937:12;10930:19;;10589:366;;;:::o;10961:419::-;11127:4;11165:2;11154:9;11150:18;11142:26;;11214:9;11208:4;11204:20;11200:1;11189:9;11185:17;11178:47;11242:131;11368:4;11242:131;:::i;:::-;11234:139;;10961:419;;;:::o;11386:224::-;11526:34;11522:1;11514:6;11510:14;11503:58;11595:7;11590:2;11582:6;11578:15;11571:32;11386:224;:::o;11616:366::-;11758:3;11779:67;11843:2;11838:3;11779:67;:::i;:::-;11772:74;;11855:93;11944:3;11855:93;:::i;:::-;11973:2;11968:3;11964:12;11957:19;;11616:366;;;:::o;11988:419::-;12154:4;12192:2;12181:9;12177:18;12169:26;;12241:9;12235:4;12231:20;12227:1;12216:9;12212:17;12205:47;12269:131;12395:4;12269:131;:::i;:::-;12261:139;;11988:419;;;:::o;12413:221::-;12553:34;12549:1;12541:6;12537:14;12530:58;12622:4;12617:2;12609:6;12605:15;12598:29;12413:221;:::o;12640:366::-;12782:3;12803:67;12867:2;12862:3;12803:67;:::i;:::-;12796:74;;12879:93;12968:3;12879:93;:::i;:::-;12997:2;12992:3;12988:12;12981:19;;12640:366;;;:::o;13012:419::-;13178:4;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:131;13419:4;13293:131;:::i;:::-;13285:139;;13012:419;;;:::o;13437:225::-;13577:34;13573:1;13565:6;13561:14;13554:58;13646:8;13641:2;13633:6;13629:15;13622:33;13437:225;:::o;13668:366::-;13810:3;13831:67;13895:2;13890:3;13831:67;:::i;:::-;13824:74;;13907:93;13996:3;13907:93;:::i;:::-;14025:2;14020:3;14016:12;14009:19;;13668:366;;;:::o;14040:419::-;14206:4;14244:2;14233:9;14229:18;14221:26;;14293:9;14287:4;14283:20;14279:1;14268:9;14264:17;14257:47;14321:131;14447:4;14321:131;:::i;:::-;14313:139;;14040:419;;;:::o;14465:222::-;14605:34;14601:1;14593:6;14589:14;14582:58;14674:5;14669:2;14661:6;14657:15;14650:30;14465:222;:::o;14693:366::-;14835:3;14856:67;14920:2;14915:3;14856:67;:::i;:::-;14849:74;;14932:93;15021:3;14932:93;:::i;:::-;15050:2;15045:3;15041:12;15034:19;;14693:366;;;:::o;15065:419::-;15231:4;15269:2;15258:9;15254:18;15246:26;;15318:9;15312:4;15308:20;15304:1;15293:9;15289:17;15282:47;15346:131;15472:4;15346:131;:::i;:::-;15338:139;;15065:419;;;:::o;15490:180::-;15538:77;15535:1;15528:88;15635:4;15632:1;15625:15;15659:4;15656:1;15649:15;15676:180;15724:77;15721:1;15714:88;15821:4;15818:1;15811:15;15845:4;15842:1;15835:15;15862:233;15901:3;15924:24;15942:5;15924:24;:::i;:::-;15915:33;;15970:66;15963:5;15960:77;15957:103;;16040:18;;:::i;:::-;15957:103;16087:1;16080:5;16076:13;16069:20;;15862:233;;;:::o;16101:225::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:8;16305:2;16297:6;16293:15;16286:33;16101:225;:::o;16332:366::-;16474:3;16495:67;16559:2;16554:3;16495:67;:::i;:::-;16488:74;;16571:93;16660:3;16571:93;:::i;:::-;16689:2;16684:3;16680:12;16673:19;;16332:366;;;:::o;16704:419::-;16870:4;16908:2;16897:9;16893:18;16885:26;;16957:9;16951:4;16947:20;16943:1;16932:9;16928:17;16921:47;16985:131;17111:4;16985:131;:::i;:::-;16977:139;;16704:419;;;:::o;17129:223::-;17269:34;17265:1;17257:6;17253:14;17246:58;17338:6;17333:2;17325:6;17321:15;17314:31;17129:223;:::o;17358:366::-;17500:3;17521:67;17585:2;17580:3;17521:67;:::i;:::-;17514:74;;17597:93;17686:3;17597:93;:::i;:::-;17715:2;17710:3;17706:12;17699:19;;17358:366;;;:::o;17730:419::-;17896:4;17934:2;17923:9;17919:18;17911:26;;17983:9;17977:4;17973:20;17969:1;17958:9;17954:17;17947:47;18011:131;18137:4;18011:131;:::i;:::-;18003:139;;17730:419;;;:::o;18155:221::-;18295:34;18291:1;18283:6;18279:14;18272:58;18364:4;18359:2;18351:6;18347:15;18340:29;18155:221;:::o;18382:366::-;18524:3;18545:67;18609:2;18604:3;18545:67;:::i;:::-;18538:74;;18621:93;18710:3;18621:93;:::i;:::-;18739:2;18734:3;18730:12;18723:19;;18382:366;;;:::o;18754:419::-;18920:4;18958:2;18947:9;18943:18;18935:26;;19007:9;19001:4;18997:20;18993:1;18982:9;18978:17;18971:47;19035:131;19161:4;19035:131;:::i;:::-;19027:139;;18754:419;;;:::o;19179:224::-;19319:34;19315:1;19307:6;19303:14;19296:58;19388:7;19383:2;19375:6;19371:15;19364:32;19179:224;:::o;19409:366::-;19551:3;19572:67;19636:2;19631:3;19572:67;:::i;:::-;19565:74;;19648:93;19737:3;19648:93;:::i;:::-;19766:2;19761:3;19757:12;19750:19;;19409:366;;;:::o;19781:419::-;19947:4;19985:2;19974:9;19970:18;19962:26;;20034:9;20028:4;20024:20;20020:1;20009:9;20005:17;19998:47;20062:131;20188:4;20062:131;:::i;:::-;20054:139;;19781:419;;;:::o;20206:222::-;20346:34;20342:1;20334:6;20330:14;20323:58;20415:5;20410:2;20402:6;20398:15;20391:30;20206:222;:::o;20434:366::-;20576:3;20597:67;20661:2;20656:3;20597:67;:::i;:::-;20590:74;;20673:93;20762:3;20673:93;:::i;:::-;20791:2;20786:3;20782:12;20775:19;;20434:366;;;:::o;20806:419::-;20972:4;21010:2;20999:9;20995:18;20987:26;;21059:9;21053:4;21049:20;21045:1;21034:9;21030:17;21023:47;21087:131;21213:4;21087:131;:::i;:::-;21079:139;;20806:419;;;:::o;21231:228::-;21371:34;21367:1;21359:6;21355:14;21348:58;21440:11;21435:2;21427:6;21423:15;21416:36;21231:228;:::o;21465:366::-;21607:3;21628:67;21692:2;21687:3;21628:67;:::i;:::-;21621:74;;21704:93;21793:3;21704:93;:::i;:::-;21822:2;21817:3;21813:12;21806:19;;21465:366;;;:::o;21837:419::-;22003:4;22041:2;22030:9;22026:18;22018:26;;22090:9;22084:4;22080:20;22076:1;22065:9;22061:17;22054:47;22118:131;22244:4;22118:131;:::i;:::-;22110:139;;21837:419;;;:::o;22262:250::-;22402:34;22398:1;22390:6;22386:14;22379:58;22471:33;22466:2;22458:6;22454:15;22447:58;22262:250;:::o;22518:366::-;22660:3;22681:67;22745:2;22740:3;22681:67;:::i;:::-;22674:74;;22757:93;22846:3;22757:93;:::i;:::-;22875:2;22870:3;22866:12;22859:19;;22518:366;;;:::o;22890:419::-;23056:4;23094:2;23083:9;23079:18;23071:26;;23143:9;23137:4;23133:20;23129:1;23118:9;23114:17;23107:47;23171:131;23297:4;23171:131;:::i;:::-;23163:139;;22890:419;;;:::o;23315:178::-;23455:30;23451:1;23443:6;23439:14;23432:54;23315:178;:::o;23499:366::-;23641:3;23662:67;23726:2;23721:3;23662:67;:::i;:::-;23655:74;;23738:93;23827:3;23738:93;:::i;:::-;23856:2;23851:3;23847:12;23840:19;;23499:366;;;:::o;23871:419::-;24037:4;24075:2;24064:9;24060:18;24052:26;;24124:9;24118:4;24114:20;24110:1;24099:9;24095:17;24088:47;24152:131;24278:4;24152:131;:::i;:::-;24144:139;;23871:419;;;:::o;24296:305::-;24336:3;24355:20;24373:1;24355:20;:::i;:::-;24350:25;;24389:20;24407:1;24389:20;:::i;:::-;24384:25;;24543:1;24475:66;24471:74;24468:1;24465:81;24462:107;;;24549:18;;:::i;:::-;24462:107;24593:1;24590;24586:9;24579:16;;24296:305;;;;:::o;24607:222::-;24747:34;24743:1;24735:6;24731:14;24724:58;24816:5;24811:2;24803:6;24799:15;24792:30;24607:222;:::o;24835:366::-;24977:3;24998:67;25062:2;25057:3;24998:67;:::i;:::-;24991:74;;25074:93;25163:3;25074:93;:::i;:::-;25192:2;25187:3;25183:12;25176:19;;24835:366;;;:::o;25207:419::-;25373:4;25411:2;25400:9;25396:18;25388:26;;25460:9;25454:4;25450:20;25446:1;25435:9;25431:17;25424:47;25488:131;25614:4;25488:131;:::i;:::-;25480:139;;25207:419;;;:::o;25632:191::-;25672:4;25692:20;25710:1;25692:20;:::i;:::-;25687:25;;25726:20;25744:1;25726:20;:::i;:::-;25721:25;;25765:1;25762;25759:8;25756:34;;;25770:18;;:::i;:::-;25756:34;25815:1;25812;25808:9;25800:17;;25632:191;;;;:::o;25829:229::-;25969:34;25965:1;25957:6;25953:14;25946:58;26038:12;26033:2;26025:6;26021:15;26014:37;25829:229;:::o;26064:366::-;26206:3;26227:67;26291:2;26286:3;26227:67;:::i;:::-;26220:74;;26303:93;26392:3;26303:93;:::i;:::-;26421:2;26416:3;26412:12;26405:19;;26064:366;;;:::o;26436:419::-;26602:4;26640:2;26629:9;26625:18;26617:26;;26689:9;26683:4;26679:20;26675:1;26664:9;26660:17;26653:47;26717:131;26843:4;26717:131;:::i;:::-;26709:139;;26436:419;;;:::o;26861:180::-;26909:77;26906:1;26899:88;27006:4;27003:1;26996:15;27030:4;27027:1;27020:15;27047:143;27104:5;27135:6;27129:13;27120:22;;27151:33;27178:5;27151:33;:::i;:::-;27047:143;;;;:::o;27196:351::-;27266:6;27315:2;27303:9;27294:7;27290:23;27286:32;27283:119;;;27321:79;;:::i;:::-;27283:119;27441:1;27466:64;27522:7;27513:6;27502:9;27498:22;27466:64;:::i;:::-;27456:74;;27412:128;27196:351;;;;:::o;27553:85::-;27598:7;27627:5;27616:16;;27553:85;;;:::o;27644:158::-;27702:9;27735:61;27753:42;27762:32;27788:5;27762:32;:::i;:::-;27753:42;:::i;:::-;27735:61;:::i;:::-;27722:74;;27644:158;;;:::o;27808:147::-;27903:45;27942:5;27903:45;:::i;:::-;27898:3;27891:58;27808:147;;:::o;27961:114::-;28028:6;28062:5;28056:12;28046:22;;27961:114;;;:::o;28081:184::-;28180:11;28214:6;28209:3;28202:19;28254:4;28249:3;28245:14;28230:29;;28081:184;;;;:::o;28271:132::-;28338:4;28361:3;28353:11;;28391:4;28386:3;28382:14;28374:22;;28271:132;;;:::o;28409:108::-;28486:24;28504:5;28486:24;:::i;:::-;28481:3;28474:37;28409:108;;:::o;28523:179::-;28592:10;28613:46;28655:3;28647:6;28613:46;:::i;:::-;28691:4;28686:3;28682:14;28668:28;;28523:179;;;;:::o;28708:113::-;28778:4;28810;28805:3;28801:14;28793:22;;28708:113;;;:::o;28857:732::-;28976:3;29005:54;29053:5;29005:54;:::i;:::-;29075:86;29154:6;29149:3;29075:86;:::i;:::-;29068:93;;29185:56;29235:5;29185:56;:::i;:::-;29264:7;29295:1;29280:284;29305:6;29302:1;29299:13;29280:284;;;29381:6;29375:13;29408:63;29467:3;29452:13;29408:63;:::i;:::-;29401:70;;29494:60;29547:6;29494:60;:::i;:::-;29484:70;;29340:224;29327:1;29324;29320:9;29315:14;;29280:284;;;29284:14;29580:3;29573:10;;28981:608;;;28857:732;;;;:::o;29595:831::-;29858:4;29896:3;29885:9;29881:19;29873:27;;29910:71;29978:1;29967:9;29963:17;29954:6;29910:71;:::i;:::-;29991:80;30067:2;30056:9;30052:18;30043:6;29991:80;:::i;:::-;30118:9;30112:4;30108:20;30103:2;30092:9;30088:18;30081:48;30146:108;30249:4;30240:6;30146:108;:::i;:::-;30138:116;;30264:72;30332:2;30321:9;30317:18;30308:6;30264:72;:::i;:::-;30346:73;30414:3;30403:9;30399:19;30390:6;30346:73;:::i;:::-;29595:831;;;;;;;;:::o;30432:180::-;30480:77;30477:1;30470:88;30577:4;30574:1;30567:15;30601:4;30598:1;30591:15;30618:185;30658:1;30675:20;30693:1;30675:20;:::i;:::-;30670:25;;30709:20;30727:1;30709:20;:::i;:::-;30704:25;;30748:1;30738:35;;30753:18;;:::i;:::-;30738:35;30795:1;30792;30788:9;30783:14;;30618:185;;;;:::o;30809:177::-;30949:29;30945:1;30937:6;30933:14;30926:53;30809:177;:::o;30992:366::-;31134:3;31155:67;31219:2;31214:3;31155:67;:::i;:::-;31148:74;;31231:93;31320:3;31231:93;:::i;:::-;31349:2;31344:3;31340:12;31333:19;;30992:366;;;:::o;31364:419::-;31530:4;31568:2;31557:9;31553:18;31545:26;;31617:9;31611:4;31607:20;31603:1;31592:9;31588:17;31581:47;31645:131;31771:4;31645:131;:::i;:::-;31637:139;;31364:419;;;:::o;31789:348::-;31829:7;31852:20;31870:1;31852:20;:::i;:::-;31847:25;;31886:20;31904:1;31886:20;:::i;:::-;31881:25;;32074:1;32006:66;32002:74;31999:1;31996:81;31991:1;31984:9;31977:17;31973:105;31970:131;;;32081:18;;:::i;:::-;31970:131;32129:1;32126;32122:9;32111:20;;31789:348;;;;:::o;32143:220::-;32283:34;32279:1;32271:6;32267:14;32260:58;32352:3;32347:2;32339:6;32335:15;32328:28;32143:220;:::o;32369:366::-;32511:3;32532:67;32596:2;32591:3;32532:67;:::i;:::-;32525:74;;32608:93;32697:3;32608:93;:::i;:::-;32726:2;32721:3;32717:12;32710:19;;32369:366;;;:::o;32741:419::-;32907:4;32945:2;32934:9;32930:18;32922:26;;32994:9;32988:4;32984:20;32980:1;32969:9;32965:17;32958:47;33022:131;33148:4;33022:131;:::i;:::-;33014:139;;32741:419;;;:::o

Swarm Source

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