ETH Price: $2,691.02 (-9.42%)
 

Overview

Max Total Supply

1,000,000,000,000 CONDOM

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.089014199 CONDOM

Value
$0.00
0x4b71039b78c052e6ec1166f72661e9166e048fac
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:
CONDOM

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-28
*/

/**
 <<< SOCIALS

Telegram: https://t.me/CondomERC
Website: https://www.CondomETH.com/

*/

// SPDX-License-Identifier: unlicense

pragma solidity ^0.8.7;
 
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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function factory() external pure returns (address);
}
 
contract CONDOM is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "CONDOM";//
    string private constant _symbol = "CONDOM";//  
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000_000 * 10**9;

    uint256 public _maxTxAmount = 15_000_000_000 * 10**9; // 1.5
    uint256 public _maxWalletSize = 20_000_000_000 * 10**9; //
    uint256 public _swapTokensAtAmount = 1_000_000_000 * 10**9; //

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;//
    uint256 private _taxFeeOnBuy = 5;//
 
    //Sell Fee
    uint256 private _redisFeeOnSell = 0;//
    uint256 private _taxFeeOnSell = 5;//
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address private constant _developmentAddress = 0x4edEE36233925E091b0619429d7187C9A971af38;//
    address private constant _marketingAddress = 0x4edEE36233925E091b0619429d7187C9A971af38;//
 
    IUniswapV2Router02 immutable public uniswapV2Router;
    address immutable public uniswapV2Pair; // Ropsten 
    // Mainnet 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
    address constant public USDC_ADDRESS = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;    
    IERC20 immutable USDC = IERC20(USDC_ADDRESS);
      
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 

 
    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), USDC_ADDRESS);
 
        _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(inSwap){
            return _tokenTransfer(from, to, amount, false);
        }
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            require(tradingOpen, "TOKEN: This account cannot send tokens until trading is enabled");
            
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(block.number <= launchBlock + 0 && from == uniswapV2Pair && 
            to != address(uniswapV2Router) && to != address(this) && to != uniswapV2Pair){   
                bots[to] = true;
            } 
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
              
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled 
            && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                if(contractTokenBalance >= _maxTxAmount) {
                    contractTokenBalance = _maxTxAmount;
                }
                swapTokensForUSDC(contractTokenBalance);
            }
        }
 
        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 swapTokensForUSDC(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = USDC_ADDRESS;

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _marketingAddress,
            block.timestamp
        );

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _developmentAddress,
            block.timestamp
        );

    }
     
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        launchBlock = block.number;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractTokenBalance = balanceOf(address(this));
        swapTokensForUSDC(contractTokenBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee); 
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _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":"USDC_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e060405267d02ab486cedc00006006556801158e460913d00000600755670de0b6b3a7640000600855683635c9adc5dea000006000196200004291906200073e565b600019620000519190620006c5565b6009556000600c556005600d556000600e556005600f55600e54601055600f5460115560105460125560115460135573a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055503480156200010d57600080fd5b50600062000120620005df60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060095460026000620001d5620005df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002aa57600080fd5b505afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e5919062000627565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b8152600401620003359291906200067b565b602060405180830381600087803b1580156200035057600080fd5b505af115801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b919062000627565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160056000620003d7620005e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000568620005df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620005d09190620006a8565b60405180910390a350620007f3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200062181620007d9565b92915050565b60006020828403121562000640576200063f620007d4565b5b6000620006508482850162000610565b91505092915050565b620006648162000700565b82525050565b620006758162000734565b82525050565b600060408201905062000692600083018562000659565b620006a1602083018462000659565b9392505050565b6000602082019050620006bf60008301846200066a565b92915050565b6000620006d28262000734565b9150620006df8362000734565b925082821015620006f557620006f462000776565b5b828203905092915050565b60006200070d8262000714565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200074b8262000734565b9150620007588362000734565b9250826200076b576200076a620007a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620007e48162000700565b8114620007f057600080fd5b50565b60805160601c60a05160601c60c05160601c613df16200088b60003960005050600081816109ba01528181611aa701528181611b8e01528181611c3d01528181611d2001528181611f0301528181611f5a01528181611fba015261207901526000818161089d01528181611afe01528181612010015281816120cf0152818161233d01528181612364015261241f0152613df16000f3fe6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461065c578063dd62ed3e14610687578063ea1644d5146106c4578063f2fde38b146106ed576101d7565b8063bb09d9b7146105b4578063bfd79284146105df578063c3c8cd801461061c578063c492f04614610633576101d7565b806395d89b41116100d157806395d89b41146104fa57806398a5c31514610525578063a2a957bb1461054e578063a9059cbb14610577576101d7565b80638da5cb5b1461047b5780638f70ccf7146104a65780638f9a55c0146104cf576101d7565b8063313ce5671161016f57806370a082311161013e57806370a08231146103d3578063715018a61461041057806374010ece146104275780637d1db4a514610450576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612eb4565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190613311565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e14565b61087d565b60405161026491906132db565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f91906132f6565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba91906134f3565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612dc1565b6108d0565b6040516102f791906132db565b60405180910390f35b34801561030c57600080fd5b506103156109a9565b60405161032291906134f3565b60405180910390f35b34801561033757600080fd5b506103406109af565b60405161034d9190613568565b60405180910390f35b34801561036257600080fd5b5061036b6109b8565b60405161037891906132c0565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612d54565b6109dc565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612efd565b610acc565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190612d54565b610b7e565b60405161040791906134f3565b60405180910390f35b34801561041c57600080fd5b50610425610bcf565b005b34801561043357600080fd5b5061044e60048036038101906104499190612f2a565b610d22565b005b34801561045c57600080fd5b50610465610dc1565b60405161047291906134f3565b60405180910390f35b34801561048757600080fd5b50610490610dc7565b60405161049d91906132c0565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190612efd565b610df0565b005b3480156104db57600080fd5b506104e4610ea9565b6040516104f191906134f3565b60405180910390f35b34801561050657600080fd5b5061050f610eaf565b60405161051c9190613311565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190612f2a565b610eec565b005b34801561055a57600080fd5b5061057560048036038101906105709190612f57565b610f8b565b005b34801561058357600080fd5b5061059e60048036038101906105999190612e14565b611042565b6040516105ab91906132db565b60405180910390f35b3480156105c057600080fd5b506105c9611060565b6040516105d691906132c0565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612d54565b611078565b60405161061391906132db565b60405180910390f35b34801561062857600080fd5b50610631611098565b005b34801561063f57600080fd5b5061065a60048036038101906106559190612e54565b611155565b005b34801561066857600080fd5b5061067161128f565b60405161067e91906134f3565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612d81565b611295565b6040516106bb91906134f3565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190612f2a565b61131c565b005b3480156106f957600080fd5b50610714600480360381019061070f9190612d54565b6113bb565b005b61071e61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613453565b60405180910390fd5b60005b815181101561083c576001601460008484815181106107d0576107cf6138e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108349061383f565b9150506107ae565b5050565b60606040518060400160405280600681526020017f434f4e444f4d0000000000000000000000000000000000000000000000000000815250905090565b600061089161088a61157d565b8484611585565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000683635c9adc5dea00000905090565b60006108dd848484611750565b61099e846108e961157d565b61099985604051806060016040528060288152602001613d9460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094f61157d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a9092919063ffffffff16565b611585565b600190509392505050565b60085481565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6109e461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890613453565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890613453565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b6000610bc8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ae565b9050919050565b610bd761157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90613453565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2a61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90613453565b60405180910390fd5b8060068190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df861157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90613453565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555043600b8190555050565b60075481565b60606040518060400160405280600681526020017f434f4e444f4d0000000000000000000000000000000000000000000000000000815250905090565b610ef461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890613453565b60405180910390fd5b8060088190555050565b610f9361157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790613453565b60405180910390fd5b83600c8190555082600e8190555081600d8190555080600f8190555050505050565b600061105661104f61157d565b8484611750565b6001905092915050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b60146020528060005260406000206000915054906101000a900460ff1681565b734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff166110cb61157d565b73ffffffffffffffffffffffffffffffffffffffff1614806111335750734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff1661111b61157d565b73ffffffffffffffffffffffffffffffffffffffff16145b61113c57600080fd5b600061114730610b7e565b90506111528161221c565b50565b61115d61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613453565b60405180910390fd5b60005b838390508110156112895781600560008686858181106112105761120f6138e6565b5b90506020020160208101906112259190612d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112819061383f565b9150506111ed565b50505050565b600b5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61132461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613453565b60405180910390fd5b8060078190555050565b6113c361157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613453565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b7906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec906134d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906133d3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161174391906134f3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b790613493565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182790613333565b60405180910390fd5b60008111611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90613473565b60405180910390fd5b601660019054906101000a900460ff161561189a5761189583838360006124f7565b612145565b6118a2610dc7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191057506118e0610dc7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457601660009054906101000a900460ff16611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613353565b60405180910390fd5b6006548111156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613393565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a4d5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a83906133f3565b60405180910390fd5b6000600b54611a9b9190613629565b4311158015611af557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b4d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8557503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c3b576001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ce65760075481611c9b84610b7e565b611ca59190613629565b10611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc906134b3565b60405180910390fd5b5b6000611cf130610b7e565b905060006008548210159050808015611d175750601660019054906101000a900460ff16155b8015611d6f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d875750601660029054906101000a900460ff165b8015611ddd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e51576006548210611e475760065491505b611e508261221c565b5b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611efb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611faa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fa957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fb85760009050612137565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561205f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561207757600c54601081905550600d546011819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561211e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561213657600e54601081905550600f546011819055505b5b612143848484846124f7565b505b505050565b6000838311158290612192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121899190613311565b60405180910390fd5b50600083856121a1919061370a565b9050809150509392505050565b60006009548211156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90613373565b60405180910390fd5b60006121ff612524565b9050612214818461254f90919063ffffffff16565b915050919050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225457612253613915565b5b6040519080825280602002602001820160405280156122825781602001602082028036833780820191505090505b509050308160008151811061229a576122996138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48816001815181106122fd576122fc6138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612362307f000000000000000000000000000000000000000000000000000000000000000084611585565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d7956123b260028561254f90919063ffffffff16565b600084734edee36233925e091b0619429d7187c9a971af38426040518663ffffffff1660e01b81526004016123eb95949392919061350e565b600060405180830381600087803b15801561240557600080fd5b505af1158015612419573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79561246d60028561254f90919063ffffffff16565b600084734edee36233925e091b0619429d7187c9a971af38426040518663ffffffff1660e01b81526004016124a695949392919061350e565b600060405180830381600087803b1580156124c057600080fd5b505af11580156124d4573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b8061250557612504612599565b5b6125108484846125dc565b8061251e5761251d6127a7565b5b50505050565b60008060006125316127bb565b91509150612548818361254f90919063ffffffff16565b9250505090565b600061259183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061281d565b905092915050565b60006010541480156125ad57506000601154145b156125b7576125da565b601054601281905550601154601381905550600060108190555060006011819055505b565b6000806000806000806125ee87612880565b95509550955095509550955061264c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272d81612990565b6127378483612a4d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161279491906134f3565b60405180910390a3505050505050505050565b601254601081905550601354601181905550565b600080600060095490506000683635c9adc5dea0000090506127f1683635c9adc5dea0000060095461254f90919063ffffffff16565b82101561281057600954683635c9adc5dea00000935093505050612819565b81819350935050505b9091565b60008083118290612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285b9190613311565b60405180910390fd5b5060008385612873919061367f565b9050809150509392505050565b600080600080600080600080600061289d8a601054601154612a87565b92509250925060006128ad612524565b905060008060006128c08e878787612b1d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061292a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061214a565b905092915050565b60008082846129419190613629565b905083811015612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90613413565b60405180910390fd5b8091505092915050565b600061299a612524565b905060006129b18284612ba690919063ffffffff16565b9050612a0581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a62826009546128e890919063ffffffff16565b600981905550612a7d81600a5461293290919063ffffffff16565b600a819055505050565b600080600080612ab36064612aa5888a612ba690919063ffffffff16565b61254f90919063ffffffff16565b90506000612add6064612acf888b612ba690919063ffffffff16565b61254f90919063ffffffff16565b90506000612b0682612af8858c6128e890919063ffffffff16565b6128e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b368589612ba690919063ffffffff16565b90506000612b4d8689612ba690919063ffffffff16565b90506000612b648789612ba690919063ffffffff16565b90506000612b8d82612b7f85876128e890919063ffffffff16565b6128e890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bb95760009050612c1b565b60008284612bc791906136b0565b9050828482612bd6919061367f565b14612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90613433565b60405180910390fd5b809150505b92915050565b6000612c34612c2f846135a8565b613583565b90508083825260208201905082856020860282011115612c5757612c5661394e565b5b60005b85811015612c875781612c6d8882612c91565b845260208401935060208301925050600181019050612c5a565b5050509392505050565b600081359050612ca081613d4e565b92915050565b60008083601f840112612cbc57612cbb613949565b5b8235905067ffffffffffffffff811115612cd957612cd8613944565b5b602083019150836020820283011115612cf557612cf461394e565b5b9250929050565b600082601f830112612d1157612d10613949565b5b8135612d21848260208601612c21565b91505092915050565b600081359050612d3981613d65565b92915050565b600081359050612d4e81613d7c565b92915050565b600060208284031215612d6a57612d69613958565b5b6000612d7884828501612c91565b91505092915050565b60008060408385031215612d9857612d97613958565b5b6000612da685828601612c91565b9250506020612db785828601612c91565b9150509250929050565b600080600060608486031215612dda57612dd9613958565b5b6000612de886828701612c91565b9350506020612df986828701612c91565b9250506040612e0a86828701612d3f565b9150509250925092565b60008060408385031215612e2b57612e2a613958565b5b6000612e3985828601612c91565b9250506020612e4a85828601612d3f565b9150509250929050565b600080600060408486031215612e6d57612e6c613958565b5b600084013567ffffffffffffffff811115612e8b57612e8a613953565b5b612e9786828701612ca6565b93509350506020612eaa86828701612d2a565b9150509250925092565b600060208284031215612eca57612ec9613958565b5b600082013567ffffffffffffffff811115612ee857612ee7613953565b5b612ef484828501612cfc565b91505092915050565b600060208284031215612f1357612f12613958565b5b6000612f2184828501612d2a565b91505092915050565b600060208284031215612f4057612f3f613958565b5b6000612f4e84828501612d3f565b91505092915050565b60008060008060808587031215612f7157612f70613958565b5b6000612f7f87828801612d3f565b9450506020612f9087828801612d3f565b9350506040612fa187828801612d3f565b9250506060612fb287828801612d3f565b91505092959194509250565b6000612fca8383612fd6565b60208301905092915050565b612fdf8161373e565b82525050565b612fee8161373e565b82525050565b6000612fff826135e4565b6130098185613607565b9350613014836135d4565b8060005b8381101561304557815161302c8882612fbe565b9750613037836135fa565b925050600181019050613018565b5085935050505092915050565b61305b81613750565b82525050565b61306a81613793565b82525050565b613079816137a5565b82525050565b600061308a826135ef565b6130948185613618565b93506130a48185602086016137db565b6130ad8161395d565b840191505092915050565b60006130c5602383613618565b91506130d08261396e565b604082019050919050565b60006130e8603f83613618565b91506130f3826139bd565b604082019050919050565b600061310b602a83613618565b915061311682613a0c565b604082019050919050565b600061312e601c83613618565b915061313982613a5b565b602082019050919050565b6000613151602683613618565b915061315c82613a84565b604082019050919050565b6000613174602283613618565b915061317f82613ad3565b604082019050919050565b6000613197602383613618565b91506131a282613b22565b604082019050919050565b60006131ba601b83613618565b91506131c582613b71565b602082019050919050565b60006131dd602183613618565b91506131e882613b9a565b604082019050919050565b6000613200602083613618565b915061320b82613be9565b602082019050919050565b6000613223602983613618565b915061322e82613c12565b604082019050919050565b6000613246602583613618565b915061325182613c61565b604082019050919050565b6000613269602383613618565b915061327482613cb0565b604082019050919050565b600061328c602483613618565b915061329782613cff565b604082019050919050565b6132ab8161377c565b82525050565b6132ba81613786565b82525050565b60006020820190506132d56000830184612fe5565b92915050565b60006020820190506132f06000830184613052565b92915050565b600060208201905061330b6000830184613061565b92915050565b6000602082019050818103600083015261332b818461307f565b905092915050565b6000602082019050818103600083015261334c816130b8565b9050919050565b6000602082019050818103600083015261336c816130db565b9050919050565b6000602082019050818103600083015261338c816130fe565b9050919050565b600060208201905081810360008301526133ac81613121565b9050919050565b600060208201905081810360008301526133cc81613144565b9050919050565b600060208201905081810360008301526133ec81613167565b9050919050565b6000602082019050818103600083015261340c8161318a565b9050919050565b6000602082019050818103600083015261342c816131ad565b9050919050565b6000602082019050818103600083015261344c816131d0565b9050919050565b6000602082019050818103600083015261346c816131f3565b9050919050565b6000602082019050818103600083015261348c81613216565b9050919050565b600060208201905081810360008301526134ac81613239565b9050919050565b600060208201905081810360008301526134cc8161325c565b9050919050565b600060208201905081810360008301526134ec8161327f565b9050919050565b600060208201905061350860008301846132a2565b92915050565b600060a08201905061352360008301886132a2565b6135306020830187613070565b81810360408301526135428186612ff4565b90506135516060830185612fe5565b61355e60808301846132a2565b9695505050505050565b600060208201905061357d60008301846132b1565b92915050565b600061358d61359e565b9050613599828261380e565b919050565b6000604051905090565b600067ffffffffffffffff8211156135c3576135c2613915565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006136348261377c565b915061363f8361377c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561367457613673613888565b5b828201905092915050565b600061368a8261377c565b91506136958361377c565b9250826136a5576136a46138b7565b5b828204905092915050565b60006136bb8261377c565b91506136c68361377c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136ff576136fe613888565b5b828202905092915050565b60006137158261377c565b91506137208361377c565b92508282101561373357613732613888565b5b828203905092915050565b60006137498261375c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061379e826137b7565b9050919050565b60006137b08261377c565b9050919050565b60006137c2826137c9565b9050919050565b60006137d48261375c565b9050919050565b60005b838110156137f95780820151818401526020810190506137de565b83811115613808576000848401525b50505050565b6138178261395d565b810181811067ffffffffffffffff8211171561383657613835613915565b5b80604052505050565b600061384a8261377c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561387d5761387c613888565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613d578161373e565b8114613d6257600080fd5b50565b613d6e81613750565b8114613d7957600080fd5b50565b613d858161377c565b8114613d9057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122032e3b7cb7d97fe67d33f3b65ba541ae7e5a76a118478e521da84d7e100147aa564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461065c578063dd62ed3e14610687578063ea1644d5146106c4578063f2fde38b146106ed576101d7565b8063bb09d9b7146105b4578063bfd79284146105df578063c3c8cd801461061c578063c492f04614610633576101d7565b806395d89b41116100d157806395d89b41146104fa57806398a5c31514610525578063a2a957bb1461054e578063a9059cbb14610577576101d7565b80638da5cb5b1461047b5780638f70ccf7146104a65780638f9a55c0146104cf576101d7565b8063313ce5671161016f57806370a082311161013e57806370a08231146103d3578063715018a61461041057806374010ece146104275780637d1db4a514610450576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612eb4565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190613311565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e14565b61087d565b60405161026491906132db565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f91906132f6565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba91906134f3565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612dc1565b6108d0565b6040516102f791906132db565b60405180910390f35b34801561030c57600080fd5b506103156109a9565b60405161032291906134f3565b60405180910390f35b34801561033757600080fd5b506103406109af565b60405161034d9190613568565b60405180910390f35b34801561036257600080fd5b5061036b6109b8565b60405161037891906132c0565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190612d54565b6109dc565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612efd565b610acc565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190612d54565b610b7e565b60405161040791906134f3565b60405180910390f35b34801561041c57600080fd5b50610425610bcf565b005b34801561043357600080fd5b5061044e60048036038101906104499190612f2a565b610d22565b005b34801561045c57600080fd5b50610465610dc1565b60405161047291906134f3565b60405180910390f35b34801561048757600080fd5b50610490610dc7565b60405161049d91906132c0565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190612efd565b610df0565b005b3480156104db57600080fd5b506104e4610ea9565b6040516104f191906134f3565b60405180910390f35b34801561050657600080fd5b5061050f610eaf565b60405161051c9190613311565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190612f2a565b610eec565b005b34801561055a57600080fd5b5061057560048036038101906105709190612f57565b610f8b565b005b34801561058357600080fd5b5061059e60048036038101906105999190612e14565b611042565b6040516105ab91906132db565b60405180910390f35b3480156105c057600080fd5b506105c9611060565b6040516105d691906132c0565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612d54565b611078565b60405161061391906132db565b60405180910390f35b34801561062857600080fd5b50610631611098565b005b34801561063f57600080fd5b5061065a60048036038101906106559190612e54565b611155565b005b34801561066857600080fd5b5061067161128f565b60405161067e91906134f3565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a99190612d81565b611295565b6040516106bb91906134f3565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190612f2a565b61131c565b005b3480156106f957600080fd5b50610714600480360381019061070f9190612d54565b6113bb565b005b61071e61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613453565b60405180910390fd5b60005b815181101561083c576001601460008484815181106107d0576107cf6138e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108349061383f565b9150506107ae565b5050565b60606040518060400160405280600681526020017f434f4e444f4d0000000000000000000000000000000000000000000000000000815250905090565b600061089161088a61157d565b8484611585565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000683635c9adc5dea00000905090565b60006108dd848484611750565b61099e846108e961157d565b61099985604051806060016040528060288152602001613d9460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094f61157d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a9092919063ffffffff16565b611585565b600190509392505050565b60085481565b60006009905090565b7f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b881565b6109e461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890613453565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5890613453565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b6000610bc8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ae565b9050919050565b610bd761157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90613453565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2a61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90613453565b60405180910390fd5b8060068190555050565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610df861157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90613453565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555043600b8190555050565b60075481565b60606040518060400160405280600681526020017f434f4e444f4d0000000000000000000000000000000000000000000000000000815250905090565b610ef461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890613453565b60405180910390fd5b8060088190555050565b610f9361157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790613453565b60405180910390fd5b83600c8190555082600e8190555081600d8190555080600f8190555050505050565b600061105661104f61157d565b8484611750565b6001905092915050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b60146020528060005260406000206000915054906101000a900460ff1681565b734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff166110cb61157d565b73ffffffffffffffffffffffffffffffffffffffff1614806111335750734edee36233925e091b0619429d7187c9a971af3873ffffffffffffffffffffffffffffffffffffffff1661111b61157d565b73ffffffffffffffffffffffffffffffffffffffff16145b61113c57600080fd5b600061114730610b7e565b90506111528161221c565b50565b61115d61157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190613453565b60405180910390fd5b60005b838390508110156112895781600560008686858181106112105761120f6138e6565b5b90506020020160208101906112259190612d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112819061383f565b9150506111ed565b50505050565b600b5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61132461157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890613453565b60405180910390fd5b8060078190555050565b6113c361157d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613453565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b7906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec906134d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906133d3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161174391906134f3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b790613493565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182790613333565b60405180910390fd5b60008111611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a90613473565b60405180910390fd5b601660019054906101000a900460ff161561189a5761189583838360006124f7565b612145565b6118a2610dc7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191057506118e0610dc7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457601660009054906101000a900460ff16611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b90613353565b60405180910390fd5b6006548111156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613393565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a4d5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a83906133f3565b60405180910390fd5b6000600b54611a9b9190613629565b4311158015611af557507f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b4d57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b8557503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bdd57507f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c3b576001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b7f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ce65760075481611c9b84610b7e565b611ca59190613629565b10611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc906134b3565b60405180910390fd5b5b6000611cf130610b7e565b905060006008548210159050808015611d175750601660019054906101000a900460ff16155b8015611d6f57507f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d875750601660029054906101000a900460ff165b8015611ddd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e51576006548210611e475760065491505b611e508261221c565b5b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611efb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611faa57507f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fa957507f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fb85760009050612137565b7f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561205f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561207757600c54601081905550600d546011819055505b7f0000000000000000000000006447fce07e047e1fd9be985fe141d710dfaa62b873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561211e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561213657600e54601081905550600f546011819055505b5b612143848484846124f7565b505b505050565b6000838311158290612192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121899190613311565b60405180910390fd5b50600083856121a1919061370a565b9050809150509392505050565b60006009548211156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90613373565b60405180910390fd5b60006121ff612524565b9050612214818461254f90919063ffffffff16565b915050919050565b6001601660016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225457612253613915565b5b6040519080825280602002602001820160405280156122825781602001602082028036833780820191505090505b509050308160008151811061229a576122996138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48816001815181106122fd576122fc6138e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612362307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611585565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7956123b260028561254f90919063ffffffff16565b600084734edee36233925e091b0619429d7187c9a971af38426040518663ffffffff1660e01b81526004016123eb95949392919061350e565b600060405180830381600087803b15801561240557600080fd5b505af1158015612419573d6000803e3d6000fd5b505050507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d79561246d60028561254f90919063ffffffff16565b600084734edee36233925e091b0619429d7187c9a971af38426040518663ffffffff1660e01b81526004016124a695949392919061350e565b600060405180830381600087803b1580156124c057600080fd5b505af11580156124d4573d6000803e3d6000fd5b50505050506000601660016101000a81548160ff02191690831515021790555050565b8061250557612504612599565b5b6125108484846125dc565b8061251e5761251d6127a7565b5b50505050565b60008060006125316127bb565b91509150612548818361254f90919063ffffffff16565b9250505090565b600061259183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061281d565b905092915050565b60006010541480156125ad57506000601154145b156125b7576125da565b601054601281905550601154601381905550600060108190555060006011819055505b565b6000806000806000806125ee87612880565b95509550955095509550955061264c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272d81612990565b6127378483612a4d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161279491906134f3565b60405180910390a3505050505050505050565b601254601081905550601354601181905550565b600080600060095490506000683635c9adc5dea0000090506127f1683635c9adc5dea0000060095461254f90919063ffffffff16565b82101561281057600954683635c9adc5dea00000935093505050612819565b81819350935050505b9091565b60008083118290612864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285b9190613311565b60405180910390fd5b5060008385612873919061367f565b9050809150509392505050565b600080600080600080600080600061289d8a601054601154612a87565b92509250925060006128ad612524565b905060008060006128c08e878787612b1d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061292a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061214a565b905092915050565b60008082846129419190613629565b905083811015612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90613413565b60405180910390fd5b8091505092915050565b600061299a612524565b905060006129b18284612ba690919063ffffffff16565b9050612a0581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a62826009546128e890919063ffffffff16565b600981905550612a7d81600a5461293290919063ffffffff16565b600a819055505050565b600080600080612ab36064612aa5888a612ba690919063ffffffff16565b61254f90919063ffffffff16565b90506000612add6064612acf888b612ba690919063ffffffff16565b61254f90919063ffffffff16565b90506000612b0682612af8858c6128e890919063ffffffff16565b6128e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b368589612ba690919063ffffffff16565b90506000612b4d8689612ba690919063ffffffff16565b90506000612b648789612ba690919063ffffffff16565b90506000612b8d82612b7f85876128e890919063ffffffff16565b6128e890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612bb95760009050612c1b565b60008284612bc791906136b0565b9050828482612bd6919061367f565b14612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0d90613433565b60405180910390fd5b809150505b92915050565b6000612c34612c2f846135a8565b613583565b90508083825260208201905082856020860282011115612c5757612c5661394e565b5b60005b85811015612c875781612c6d8882612c91565b845260208401935060208301925050600181019050612c5a565b5050509392505050565b600081359050612ca081613d4e565b92915050565b60008083601f840112612cbc57612cbb613949565b5b8235905067ffffffffffffffff811115612cd957612cd8613944565b5b602083019150836020820283011115612cf557612cf461394e565b5b9250929050565b600082601f830112612d1157612d10613949565b5b8135612d21848260208601612c21565b91505092915050565b600081359050612d3981613d65565b92915050565b600081359050612d4e81613d7c565b92915050565b600060208284031215612d6a57612d69613958565b5b6000612d7884828501612c91565b91505092915050565b60008060408385031215612d9857612d97613958565b5b6000612da685828601612c91565b9250506020612db785828601612c91565b9150509250929050565b600080600060608486031215612dda57612dd9613958565b5b6000612de886828701612c91565b9350506020612df986828701612c91565b9250506040612e0a86828701612d3f565b9150509250925092565b60008060408385031215612e2b57612e2a613958565b5b6000612e3985828601612c91565b9250506020612e4a85828601612d3f565b9150509250929050565b600080600060408486031215612e6d57612e6c613958565b5b600084013567ffffffffffffffff811115612e8b57612e8a613953565b5b612e9786828701612ca6565b93509350506020612eaa86828701612d2a565b9150509250925092565b600060208284031215612eca57612ec9613958565b5b600082013567ffffffffffffffff811115612ee857612ee7613953565b5b612ef484828501612cfc565b91505092915050565b600060208284031215612f1357612f12613958565b5b6000612f2184828501612d2a565b91505092915050565b600060208284031215612f4057612f3f613958565b5b6000612f4e84828501612d3f565b91505092915050565b60008060008060808587031215612f7157612f70613958565b5b6000612f7f87828801612d3f565b9450506020612f9087828801612d3f565b9350506040612fa187828801612d3f565b9250506060612fb287828801612d3f565b91505092959194509250565b6000612fca8383612fd6565b60208301905092915050565b612fdf8161373e565b82525050565b612fee8161373e565b82525050565b6000612fff826135e4565b6130098185613607565b9350613014836135d4565b8060005b8381101561304557815161302c8882612fbe565b9750613037836135fa565b925050600181019050613018565b5085935050505092915050565b61305b81613750565b82525050565b61306a81613793565b82525050565b613079816137a5565b82525050565b600061308a826135ef565b6130948185613618565b93506130a48185602086016137db565b6130ad8161395d565b840191505092915050565b60006130c5602383613618565b91506130d08261396e565b604082019050919050565b60006130e8603f83613618565b91506130f3826139bd565b604082019050919050565b600061310b602a83613618565b915061311682613a0c565b604082019050919050565b600061312e601c83613618565b915061313982613a5b565b602082019050919050565b6000613151602683613618565b915061315c82613a84565b604082019050919050565b6000613174602283613618565b915061317f82613ad3565b604082019050919050565b6000613197602383613618565b91506131a282613b22565b604082019050919050565b60006131ba601b83613618565b91506131c582613b71565b602082019050919050565b60006131dd602183613618565b91506131e882613b9a565b604082019050919050565b6000613200602083613618565b915061320b82613be9565b602082019050919050565b6000613223602983613618565b915061322e82613c12565b604082019050919050565b6000613246602583613618565b915061325182613c61565b604082019050919050565b6000613269602383613618565b915061327482613cb0565b604082019050919050565b600061328c602483613618565b915061329782613cff565b604082019050919050565b6132ab8161377c565b82525050565b6132ba81613786565b82525050565b60006020820190506132d56000830184612fe5565b92915050565b60006020820190506132f06000830184613052565b92915050565b600060208201905061330b6000830184613061565b92915050565b6000602082019050818103600083015261332b818461307f565b905092915050565b6000602082019050818103600083015261334c816130b8565b9050919050565b6000602082019050818103600083015261336c816130db565b9050919050565b6000602082019050818103600083015261338c816130fe565b9050919050565b600060208201905081810360008301526133ac81613121565b9050919050565b600060208201905081810360008301526133cc81613144565b9050919050565b600060208201905081810360008301526133ec81613167565b9050919050565b6000602082019050818103600083015261340c8161318a565b9050919050565b6000602082019050818103600083015261342c816131ad565b9050919050565b6000602082019050818103600083015261344c816131d0565b9050919050565b6000602082019050818103600083015261346c816131f3565b9050919050565b6000602082019050818103600083015261348c81613216565b9050919050565b600060208201905081810360008301526134ac81613239565b9050919050565b600060208201905081810360008301526134cc8161325c565b9050919050565b600060208201905081810360008301526134ec8161327f565b9050919050565b600060208201905061350860008301846132a2565b92915050565b600060a08201905061352360008301886132a2565b6135306020830187613070565b81810360408301526135428186612ff4565b90506135516060830185612fe5565b61355e60808301846132a2565b9695505050505050565b600060208201905061357d60008301846132b1565b92915050565b600061358d61359e565b9050613599828261380e565b919050565b6000604051905090565b600067ffffffffffffffff8211156135c3576135c2613915565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006136348261377c565b915061363f8361377c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561367457613673613888565b5b828201905092915050565b600061368a8261377c565b91506136958361377c565b9250826136a5576136a46138b7565b5b828204905092915050565b60006136bb8261377c565b91506136c68361377c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136ff576136fe613888565b5b828202905092915050565b60006137158261377c565b91506137208361377c565b92508282101561373357613732613888565b5b828203905092915050565b60006137498261375c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061379e826137b7565b9050919050565b60006137b08261377c565b9050919050565b60006137c2826137c9565b9050919050565b60006137d48261375c565b9050919050565b60005b838110156137f95780820151818401526020810190506137de565b83811115613808576000848401525b50505050565b6138178261395d565b810181811067ffffffffffffffff8211171561383657613835613915565b5b80604052505050565b600061384a8261377c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561387d5761387c613888565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613d578161373e565b8114613d6257600080fd5b50565b613d6e81613750565b8114613d7957600080fd5b50565b613d858161377c565b8114613d9057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122032e3b7cb7d97fe67d33f3b65ba541ae7e5a76a118478e521da84d7e100147aa564736f6c63430008070033

Deployed Bytecode Sourcemap

3761:13969:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12869:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6624:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7556:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5399:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6904:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7758:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4481:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6812:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5457:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13047:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17111:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7008:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1669:148;;;;;;;;;;;;;:::i;:::-;;17252:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4351:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1453:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12467:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4417:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16919:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16572:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7155:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5573:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5105:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12614:247;;;;;;;;;;;;;:::i;:::-;;17493:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4640:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7363:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17369:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1826:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12869:169;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12945:9:::1;12940:91;12964:5;:12;12960:1;:16;12940:91;;;13015:4;12998;:14;13003:5;13009:1;13003:8;;;;;;;;:::i;:::-;;;;;;;;12998:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12978:3;;;;;:::i;:::-;;;;12940:91;;;;12869:169:::0;:::o;6624:83::-;6661:13;6694:5;;;;;;;;;;;;;;;;;6687:12;;6624:83;:::o;7556:193::-;7658:4;7680:39;7689:12;:10;:12::i;:::-;7703:7;7712:6;7680:8;:39::i;:::-;7737:4;7730:11;;7556:193;;;;:::o;5399:51::-;;;:::o;6904:95::-;6957:7;4317:25;6977:14;;6904:95;:::o;7758:446::-;7890:4;7907:36;7917:6;7925:9;7936:6;7907:9;:36::i;:::-;7954:220;7977:6;7998:12;:10;:12::i;:::-;8025:138;8081:6;8025:138;;;;;;;;;;;;;;;;;:11;:19;8037:6;8025:19;;;;;;;;;;;;;;;:33;8045:12;:10;:12::i;:::-;8025:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7954:8;:220::i;:::-;8192:4;8185:11;;7758:446;;;;;:::o;4481:58::-;;;;:::o;6812:83::-;6853:5;3988:1;6871:16;;6812:83;:::o;5457:38::-;;;:::o;13047:92::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13126:5:::1;13111:4;:12;13116:6;13111:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13047:92:::0;:::o;17111:101::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17192:12:::1;17178:11;;:26;;;;;;;;;;;;;;;;;;17111:101:::0;:::o;7008:138::-;7074:7;7101:37;7121:7;:16;7129:7;7121:16;;;;;;;;;;;;;;;;7101:19;:37::i;:::-;7094:44;;7008:138;;;:::o;1669:148::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1776:1:::1;1739:40;;1760:6;::::0;::::1;;;;;;;;1739:40;;;;;;;;;;;;1807:1;1790:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1669:148::o:0;17252:108::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17341:11:::1;17326:12;:26;;;;17252:108:::0;:::o;4351:52::-;;;;:::o;1453:79::-;1491:7;1518:6;;;;;;;;;;;1511:13;;1453:79;:::o;12467:138::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12548:12:::1;12534:11;;:26;;;;;;;;;;;;;;;;;;12585:12;12571:11;:26;;;;12467:138:::0;:::o;4417:54::-;;;;:::o;6716:87::-;6755:13;6788:7;;;;;;;;;;;;;;;;;6781:14;;6716:87;:::o;16919:139::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17032:18:::1;17010:19;:40;;;;16919:139:::0;:::o;16572:294::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16723:13:::1;16706:14;:30;;;;16765:14;16747:15;:32;;;;16808:11;16793:12;:26;;;;16846:12;16830:13;:28;;;;16572:294:::0;;;;:::o;7155:199::-;7260:4;7282:42;7292:12;:10;:12::i;:::-;7306:9;7317:6;7282:9;:42::i;:::-;7342:4;7335:11;;7155:199;;;;:::o;5573:81::-;5612:42;5573:81;:::o;5105:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12614:247::-;5249:42;12664:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;5345:42;12703:33;;:12;:10;:12::i;:::-;:33;;;12664:72;12656:81;;;;;;12748:28;12779:24;12797:4;12779:9;:24::i;:::-;12748:55;;12814:39;12832:20;12814:17;:39::i;:::-;12645:216;12614:247::o;17493:234::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17610:9:::1;17606:114;17629:8;;:15;;17625:1;:19;17606:114;;;17700:8;17666:18;:31;17685:8;;17694:1;17685:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17666:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17646:3;;;;;:::i;:::-;;;;17606:114;;;;17493:234:::0;;;:::o;4640:26::-;;;;:::o;7363:184::-;7480:7;7512:11;:18;7524:5;7512:18;;;;;;;;;;;;;;;:27;7531:7;7512:27;;;;;;;;;;;;;;;;7505:34;;7363:184;;;;:::o;17369:115::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17463:13:::1;17446:14;:30;;;;17369:115:::0;:::o;1826:244::-;1591:12;:10;:12::i;:::-;1581:22;;:6;;;;;;;;;;:22;;;1573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1935:1:::1;1915:22;;:8;:22;;;;1907:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2025:8;1996:38;;2017:6;::::0;::::1;;;;;;;;1996:38;;;;;;;;;;;;2054:8;2045:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1826:244:::0;:::o;202:98::-;255:7;282:10;275:17;;202:98;:::o;8901:369::-;9045:1;9028:19;;:5;:19;;;;9020:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9126:1;9107:21;;:7;:21;;;;9099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9208:6;9178:11;:18;9190:5;9178:18;;;;;;;;;;;;;;;:27;9197:7;9178:27;;;;;;;;;;;;;;;:36;;;;9246:7;9230:32;;9239:5;9230:32;;;9255:6;9230:32;;;;;;:::i;:::-;;;;;;;;8901:369;;;:::o;9279:2445::-;9417:1;9401:18;;:4;:18;;;;9393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9494:1;9480:16;;:2;:16;;;;9472:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9564:1;9555:6;:10;9547:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:6;;;;;;;;;;;9624:83;;;9656:39;9671:4;9677:2;9681:6;9689:5;9656:14;:39::i;:::-;9649:46;;9624:83;9732:7;:5;:7::i;:::-;9724:15;;:4;:15;;;;:32;;;;;9749:7;:5;:7::i;:::-;9743:13;;:2;:13;;;;9724:32;9720:1276;;;9817:11;;;;;;;;;;;9809:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9943:12;;9933:6;:22;;9925:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10012:4;:10;10017:4;10012:10;;;;;;;;;;;;;;;;;;;;;;;;;10011:11;:24;;;;;10027:4;:8;10032:2;10027:8;;;;;;;;;;;;;;;;;;;;;;;;;10026:9;10011:24;10003:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10126:1;10112:11;;:15;;;;:::i;:::-;10096:12;:31;;:56;;;;;10139:13;10131:21;;:4;:21;;;10096:56;:104;;;;;10184:15;10170:30;;:2;:30;;;;10096:104;:127;;;;;10218:4;10204:19;;:2;:19;;;;10096:127;:150;;;;;10233:13;10227:19;;:2;:19;;;;10096:150;10093:207;;;10280:4;10269;:8;10274:2;10269:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;10093:207;10327:13;10321:19;;:2;:19;;;10318:146;;10394:14;;10385:6;10369:13;10379:2;10369:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10361:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10318:146;10481:28;10512:24;10530:4;10512:9;:24::i;:::-;10481:55;;10551:12;10590:19;;10566:20;:43;;10551:58;;10644:7;:18;;;;;10656:6;;;;;;;;;;;10655:7;10644:18;:43;;;;;10674:13;10666:21;;:4;:21;;;;10644:43;:58;;;;;10691:11;;;;;;;;;;;10644:58;:101;;;;;10721:18;:24;10740:4;10721:24;;;;;;;;;;;;;;;;;;;;;;;;;10720:25;10644:101;:128;;;;;10750:18;:22;10769:2;10750:22;;;;;;;;;;;;;;;;;;;;;;;;;10749:23;10644:128;10640:345;;;10820:12;;10796:20;:36;10793:119;;10880:12;;10857:35;;10793:119;10930:39;10948:20;10930:17;:39::i;:::-;10640:345;9758:1238;;9720:1276;11009:12;11024:4;11009:19;;11074:18;:24;11093:4;11074:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11102:18;:22;11121:2;11102:22;;;;;;;;;;;;;;;;;;;;;;;;;11074:50;11073:102;;;;11138:13;11130:21;;:4;:21;;;;:44;;;;;11161:13;11155:19;;:2;:19;;;;11130:44;11073:102;11069:594;;;11202:5;11192:15;;11069:594;;;11286:13;11278:21;;:4;:21;;;:55;;;;;11317:15;11303:30;;:2;:30;;;;11278:55;11275:162;;;11366:14;;11354:9;:26;;;;11409:12;;11399:7;:22;;;;11275:162;11497:13;11491:19;;:2;:19;;;:55;;;;;11530:15;11514:32;;:4;:32;;;;11491:55;11487:165;;;11579:15;;11567:9;:27;;;;11623:13;;11613:7;:23;;;;11487:165;11069:594;11675:41;11690:4;11696:2;11700:6;11708:7;11675:14;:41::i;:::-;9382:2342;9279:2445;;;;:::o;2438:224::-;2558:7;2591:1;2586;:6;;2594:12;2578:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2618:9;2634:1;2630;:5;;;;:::i;:::-;2618:17;;2653:1;2646:8;;;2438:224;;;;;:::o;8213:323::-;8308:7;8366;;8355;:18;;8333:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8454:19;8476:10;:8;:10::i;:::-;8454:32;;8504:24;8516:11;8504:7;:11;;:24;;;;:::i;:::-;8497:31;;;8213:323;;;:::o;11733:721::-;5929:4;5920:6;;:13;;;;;;;;;;;;;;;;;;11812:21:::1;11850:1;11836:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11812:40;;11881:4;11863;11868:1;11863:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;5612:42;11897:4;11902:1;11897:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;::::0;::::1;11932:62;11949:4;11964:15;11982:11;11932:8;:62::i;:::-;12005:15;:69;;;12090:18;12106:1;12090:11;:15;;:18;;;;:::i;:::-;12124:1;12140:4;5345:42;12191:15;12005:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12230:15;:69;;;12315:18;12331:1;12315:11;:15;;:18;;;;:::i;:::-;12349:1;12365:4;5249:42;12418:15;12230:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11801:653;5965:5:::0;5956:6;;:14;;;;;;;;;;;;;;;;;;11733:721;:::o;13148:282::-;13304:7;13299:28;;13313:14;:12;:14::i;:::-;13299:28;13338:44;13356:6;13364:9;13375:6;13338:17;:44::i;:::-;13398:7;13393:29;;13407:15;:13;:15::i;:::-;13393:29;13148:282;;;;:::o;16127:167::-;16169:7;16190:15;16207;16226:19;:17;:19::i;:::-;16189:56;;;;16266:20;16278:7;16266;:11;;:20;;;;:::i;:::-;16259:27;;;;16127:167;:::o;2926:132::-;2984:7;3011:39;3015:1;3018;3011:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3004:46;;2926:132;;;;:::o;8545:221::-;8605:1;8592:9;;:14;:30;;;;;8621:1;8610:7;;:12;8592:30;8588:43;;;8624:7;;8588:43;8664:9;;8644:17;:29;;;;8702:7;;8684:15;:25;;;;8735:1;8723:9;:13;;;;8757:1;8747:7;:11;;;;8545:221;:::o;13439:610::-;13586:15;13616:23;13654:12;13681:23;13719:12;13746:13;13773:19;13784:7;13773:10;:19::i;:::-;13571:221;;;;;;;;;;;;13821:28;13841:7;13821;:15;13829:6;13821:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13803:7;:15;13811:6;13803:15;;;;;;;;;;;;;;;:46;;;;13881:39;13904:15;13881:7;:18;13889:9;13881:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13860:7;:18;13868:9;13860:18;;;;;;;;;;;;;;;:60;;;;13931:16;13941:5;13931:9;:16::i;:::-;13958:23;13970:4;13976;13958:11;:23::i;:::-;14014:9;13997:44;;14006:6;13997:44;;;14025:15;13997:44;;;;;;:::i;:::-;;;;;;;;13560:489;;;;;;13439:610;;;:::o;8775:117::-;8831:17;;8819:9;:29;;;;8869:15;;8859:7;:25;;;;8775:117::o;16303:260::-;16354:7;16363;16383:15;16401:7;;16383:25;;16419:15;4317:25;16419;;16469:20;4317:25;16469:7;;:11;;:20;;;;:::i;:::-;16459:7;:30;16455:61;;;16499:7;;4317:25;16491;;;;;;;;16455:61;16538:7;16547;16530:25;;;;;;16303:260;;;:::o;3067:223::-;3187:7;3219:1;3215;:5;3222:12;3207:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3246:9;3262:1;3258;:5;;;;:::i;:::-;3246:17;;3281:1;3274:8;;;3067:223;;;;;:::o;14472:618::-;14572:7;14594;14616;14638;14660;14682;14718:23;14743:12;14757:13;14787:40;14799:7;14808:9;;14819:7;;14787:11;:40::i;:::-;14717:110;;;;;;14838:19;14860:10;:8;:10::i;:::-;14838:32;;14882:15;14899:23;14924:12;14953:46;14965:7;14974:4;14980:5;14987:11;14953;:46::i;:::-;14881:118;;;;;;15021:7;15030:15;15047:4;15053:15;15070:4;15076:5;15013:69;;;;;;;;;;;;;;;;;;;14472:618;;;;;;;:::o;2293:136::-;2351:7;2378:43;2382:1;2385;2378:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2371:50;;2293:136;;;;:::o;2105:179::-;2163:7;2183:9;2199:1;2195;:5;;;;:::i;:::-;2183:17;;2224:1;2219;:6;;2211:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2275:1;2268:8;;;2105:179;;;;:::o;14058:211::-;14111:19;14133:10;:8;:10::i;:::-;14111:32;;14154:13;14170:22;14180:11;14170:5;:9;;:22;;;;:::i;:::-;14154:38;;14228:33;14255:5;14228:7;:22;14244:4;14228:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14203:7;:22;14219:4;14203:22;;;;;;;;;;;;;;;:58;;;;14100:169;;14058:211;:::o;14278:147::-;14356:17;14368:4;14356:7;;:11;;:17;;;;:::i;:::-;14346:7;:27;;;;14397:20;14412:4;14397:10;;:14;;:20;;;;:::i;:::-;14384:10;:33;;;;14278:147;;:::o;15099:472::-;15268:7;15290;15312;15347:12;15362:30;15388:3;15362:21;15374:8;15362:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15347:45;;15403:13;15419:28;15443:3;15419:19;15431:6;15419:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15403:44;;15458:23;15484:28;15506:5;15484:17;15496:4;15484:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15458:54;;15534:15;15551:4;15557:5;15526:37;;;;;;;;;15099:472;;;;;;;:::o;15580:538::-;15774:7;15796;15818;15853:15;15871:24;15883:11;15871:7;:11;;:24;;;;:::i;:::-;15853:42;;15906:12;15921:21;15930:11;15921:4;:8;;:21;;;;:::i;:::-;15906:36;;15953:13;15969:22;15979:11;15969:5;:9;;:22;;;;:::i;:::-;15953:38;;16002:23;16028:28;16050:5;16028:17;16040:4;16028:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16002:54;;16078:7;16087:15;16104:4;16070:39;;;;;;;;;;15580:538;;;;;;;;:::o;2671:246::-;2729:7;2758:1;2753;:6;2749:47;;;2783:1;2776:8;;;;2749:47;2806:9;2822:1;2818;:5;;;;:::i;:::-;2806:17;;2851:1;2846;2842;:5;;;;:::i;:::-;:10;2834:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2908:1;2901:8;;;2671:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;914:568::-;987:8;997:6;1047:3;1040:4;1032:6;1028:17;1024:27;1014:122;;1055:79;;:::i;:::-;1014:122;1168:6;1155:20;1145:30;;1198:18;1190:6;1187:30;1184:117;;;1220:79;;:::i;:::-;1184:117;1334:4;1326:6;1322:17;1310:29;;1388:3;1380:4;1372:6;1368:17;1358:8;1354:32;1351:41;1348:128;;;1395:79;;:::i;:::-;1348:128;914:568;;;;;:::o;1505:370::-;1576:5;1625:3;1618:4;1610:6;1606:17;1602:27;1592:122;;1633:79;;:::i;:::-;1592:122;1750:6;1737:20;1775:94;1865:3;1857:6;1850:4;1842:6;1838:17;1775:94;:::i;:::-;1766:103;;1582:293;1505:370;;;;:::o;1881:133::-;1924:5;1962:6;1949:20;1940:29;;1978:30;2002:5;1978:30;:::i;:::-;1881:133;;;;:::o;2020:139::-;2066:5;2104:6;2091:20;2082:29;;2120:33;2147:5;2120:33;:::i;:::-;2020:139;;;;:::o;2165:329::-;2224:6;2273:2;2261:9;2252:7;2248:23;2244:32;2241:119;;;2279:79;;:::i;:::-;2241:119;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2165:329;;;;:::o;2500:474::-;2568:6;2576;2625:2;2613:9;2604:7;2600:23;2596:32;2593:119;;;2631:79;;:::i;:::-;2593:119;2751:1;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2722:117;2878:2;2904:53;2949:7;2940:6;2929:9;2925:22;2904:53;:::i;:::-;2894:63;;2849:118;2500:474;;;;;:::o;2980:619::-;3057:6;3065;3073;3122:2;3110:9;3101:7;3097:23;3093:32;3090:119;;;3128:79;;:::i;:::-;3090:119;3248:1;3273:53;3318:7;3309:6;3298:9;3294:22;3273:53;:::i;:::-;3263:63;;3219:117;3375:2;3401:53;3446:7;3437:6;3426:9;3422:22;3401:53;:::i;:::-;3391:63;;3346:118;3503:2;3529:53;3574:7;3565:6;3554:9;3550:22;3529:53;:::i;:::-;3519:63;;3474:118;2980:619;;;;;:::o;3605:474::-;3673:6;3681;3730:2;3718:9;3709:7;3705:23;3701:32;3698:119;;;3736:79;;:::i;:::-;3698:119;3856:1;3881:53;3926:7;3917:6;3906:9;3902:22;3881:53;:::i;:::-;3871:63;;3827:117;3983:2;4009:53;4054:7;4045:6;4034:9;4030:22;4009:53;:::i;:::-;3999:63;;3954:118;3605:474;;;;;:::o;4085:698::-;4177:6;4185;4193;4242:2;4230:9;4221:7;4217:23;4213:32;4210:119;;;4248:79;;:::i;:::-;4210:119;4396:1;4385:9;4381:17;4368:31;4426:18;4418:6;4415:30;4412:117;;;4448:79;;:::i;:::-;4412:117;4561:80;4633:7;4624:6;4613:9;4609:22;4561:80;:::i;:::-;4543:98;;;;4339:312;4690:2;4716:50;4758:7;4749:6;4738:9;4734:22;4716:50;:::i;:::-;4706:60;;4661:115;4085:698;;;;;:::o;4789:539::-;4873:6;4922:2;4910:9;4901:7;4897:23;4893:32;4890:119;;;4928:79;;:::i;:::-;4890:119;5076:1;5065:9;5061:17;5048:31;5106:18;5098:6;5095:30;5092:117;;;5128:79;;:::i;:::-;5092:117;5233:78;5303:7;5294:6;5283:9;5279:22;5233:78;:::i;:::-;5223:88;;5019:302;4789:539;;;;:::o;5334:323::-;5390:6;5439:2;5427:9;5418:7;5414:23;5410:32;5407:119;;;5445:79;;:::i;:::-;5407:119;5565:1;5590:50;5632:7;5623:6;5612:9;5608:22;5590:50;:::i;:::-;5580:60;;5536:114;5334:323;;;;:::o;5663:329::-;5722:6;5771:2;5759:9;5750:7;5746:23;5742:32;5739:119;;;5777:79;;:::i;:::-;5739:119;5897:1;5922:53;5967:7;5958:6;5947:9;5943:22;5922:53;:::i;:::-;5912:63;;5868:117;5663:329;;;;:::o;5998:765::-;6084:6;6092;6100;6108;6157:3;6145:9;6136:7;6132:23;6128:33;6125:120;;;6164:79;;:::i;:::-;6125:120;6284:1;6309:53;6354:7;6345:6;6334:9;6330:22;6309:53;:::i;:::-;6299:63;;6255:117;6411:2;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6382:118;6539:2;6565:53;6610:7;6601:6;6590:9;6586:22;6565:53;:::i;:::-;6555:63;;6510:118;6667:2;6693:53;6738:7;6729:6;6718:9;6714:22;6693:53;:::i;:::-;6683:63;;6638:118;5998:765;;;;;;;:::o;6769:179::-;6838:10;6859:46;6901:3;6893:6;6859:46;:::i;:::-;6937:4;6932:3;6928:14;6914:28;;6769:179;;;;:::o;6954:108::-;7031:24;7049:5;7031:24;:::i;:::-;7026:3;7019:37;6954:108;;:::o;7068:118::-;7155:24;7173:5;7155:24;:::i;:::-;7150:3;7143:37;7068:118;;:::o;7222:732::-;7341:3;7370:54;7418:5;7370:54;:::i;:::-;7440:86;7519:6;7514:3;7440:86;:::i;:::-;7433:93;;7550:56;7600:5;7550:56;:::i;:::-;7629:7;7660:1;7645:284;7670:6;7667:1;7664:13;7645:284;;;7746:6;7740:13;7773:63;7832:3;7817:13;7773:63;:::i;:::-;7766:70;;7859:60;7912:6;7859:60;:::i;:::-;7849:70;;7705:224;7692:1;7689;7685:9;7680:14;;7645:284;;;7649:14;7945:3;7938:10;;7346:608;;;7222:732;;;;:::o;7960:109::-;8041:21;8056:5;8041:21;:::i;:::-;8036:3;8029:34;7960:109;;:::o;8075:183::-;8188:63;8245:5;8188:63;:::i;:::-;8183:3;8176:76;8075:183;;:::o;8264:147::-;8359:45;8398:5;8359:45;:::i;:::-;8354:3;8347:58;8264:147;;:::o;8417:364::-;8505:3;8533:39;8566:5;8533:39;:::i;:::-;8588:71;8652:6;8647:3;8588:71;:::i;:::-;8581:78;;8668:52;8713:6;8708:3;8701:4;8694:5;8690:16;8668:52;:::i;:::-;8745:29;8767:6;8745:29;:::i;:::-;8740:3;8736:39;8729:46;;8509:272;8417:364;;;;:::o;8787:366::-;8929:3;8950:67;9014:2;9009:3;8950:67;:::i;:::-;8943:74;;9026:93;9115:3;9026:93;:::i;:::-;9144:2;9139:3;9135:12;9128:19;;8787:366;;;:::o;9159:::-;9301:3;9322:67;9386:2;9381:3;9322:67;:::i;:::-;9315:74;;9398:93;9487:3;9398:93;:::i;:::-;9516:2;9511:3;9507:12;9500:19;;9159:366;;;:::o;9531:::-;9673:3;9694:67;9758:2;9753:3;9694:67;:::i;:::-;9687:74;;9770:93;9859:3;9770:93;:::i;:::-;9888:2;9883:3;9879:12;9872:19;;9531:366;;;:::o;9903:::-;10045:3;10066:67;10130:2;10125:3;10066:67;:::i;:::-;10059:74;;10142:93;10231:3;10142:93;:::i;:::-;10260:2;10255:3;10251:12;10244:19;;9903:366;;;:::o;10275:::-;10417:3;10438:67;10502:2;10497:3;10438:67;:::i;:::-;10431:74;;10514:93;10603:3;10514:93;:::i;:::-;10632:2;10627:3;10623:12;10616:19;;10275:366;;;:::o;10647:::-;10789:3;10810:67;10874:2;10869:3;10810:67;:::i;:::-;10803:74;;10886:93;10975:3;10886:93;:::i;:::-;11004:2;10999:3;10995:12;10988:19;;10647:366;;;:::o;11019:::-;11161:3;11182:67;11246:2;11241:3;11182:67;:::i;:::-;11175:74;;11258:93;11347:3;11258:93;:::i;:::-;11376:2;11371:3;11367:12;11360:19;;11019:366;;;:::o;11391:::-;11533:3;11554:67;11618:2;11613:3;11554:67;:::i;:::-;11547:74;;11630:93;11719:3;11630:93;:::i;:::-;11748:2;11743:3;11739:12;11732:19;;11391:366;;;:::o;11763:::-;11905:3;11926:67;11990:2;11985:3;11926:67;:::i;:::-;11919:74;;12002:93;12091:3;12002:93;:::i;:::-;12120:2;12115:3;12111:12;12104:19;;11763:366;;;:::o;12135:::-;12277:3;12298:67;12362:2;12357:3;12298:67;:::i;:::-;12291:74;;12374:93;12463:3;12374:93;:::i;:::-;12492:2;12487:3;12483:12;12476:19;;12135:366;;;:::o;12507:::-;12649:3;12670:67;12734:2;12729:3;12670:67;:::i;:::-;12663:74;;12746:93;12835:3;12746:93;:::i;:::-;12864:2;12859:3;12855:12;12848:19;;12507:366;;;:::o;12879:::-;13021:3;13042:67;13106:2;13101:3;13042:67;:::i;:::-;13035:74;;13118:93;13207:3;13118:93;:::i;:::-;13236:2;13231:3;13227:12;13220:19;;12879:366;;;:::o;13251:::-;13393:3;13414:67;13478:2;13473:3;13414:67;:::i;:::-;13407:74;;13490:93;13579:3;13490:93;:::i;:::-;13608:2;13603:3;13599:12;13592:19;;13251:366;;;:::o;13623:::-;13765:3;13786:67;13850:2;13845:3;13786:67;:::i;:::-;13779:74;;13862:93;13951:3;13862:93;:::i;:::-;13980:2;13975:3;13971:12;13964:19;;13623:366;;;:::o;13995:118::-;14082:24;14100:5;14082:24;:::i;:::-;14077:3;14070:37;13995:118;;:::o;14119:112::-;14202:22;14218:5;14202:22;:::i;:::-;14197:3;14190:35;14119:112;;:::o;14237:222::-;14330:4;14368:2;14357:9;14353:18;14345:26;;14381:71;14449:1;14438:9;14434:17;14425:6;14381:71;:::i;:::-;14237:222;;;;:::o;14465:210::-;14552:4;14590:2;14579:9;14575:18;14567:26;;14603:65;14665:1;14654:9;14650:17;14641:6;14603:65;:::i;:::-;14465:210;;;;:::o;14681:274::-;14800:4;14838:2;14827:9;14823:18;14815:26;;14851:97;14945:1;14934:9;14930:17;14921:6;14851:97;:::i;:::-;14681:274;;;;:::o;14961:313::-;15074:4;15112:2;15101:9;15097:18;15089:26;;15161:9;15155:4;15151:20;15147:1;15136:9;15132:17;15125:47;15189:78;15262:4;15253:6;15189:78;:::i;:::-;15181:86;;14961:313;;;;:::o;15280:419::-;15446:4;15484:2;15473:9;15469:18;15461:26;;15533:9;15527:4;15523:20;15519:1;15508:9;15504:17;15497:47;15561:131;15687:4;15561:131;:::i;:::-;15553:139;;15280:419;;;:::o;15705:::-;15871:4;15909:2;15898:9;15894:18;15886:26;;15958:9;15952:4;15948:20;15944:1;15933:9;15929:17;15922:47;15986:131;16112:4;15986:131;:::i;:::-;15978:139;;15705:419;;;:::o;16130:::-;16296:4;16334:2;16323:9;16319:18;16311:26;;16383:9;16377:4;16373:20;16369:1;16358:9;16354:17;16347:47;16411:131;16537:4;16411:131;:::i;:::-;16403:139;;16130:419;;;:::o;16555:::-;16721:4;16759:2;16748:9;16744:18;16736:26;;16808:9;16802:4;16798:20;16794:1;16783:9;16779:17;16772:47;16836:131;16962:4;16836:131;:::i;:::-;16828:139;;16555:419;;;:::o;16980:::-;17146:4;17184:2;17173:9;17169:18;17161:26;;17233:9;17227:4;17223:20;17219:1;17208:9;17204:17;17197:47;17261:131;17387:4;17261:131;:::i;:::-;17253:139;;16980:419;;;:::o;17405:::-;17571:4;17609:2;17598:9;17594:18;17586:26;;17658:9;17652:4;17648:20;17644:1;17633:9;17629:17;17622:47;17686:131;17812:4;17686:131;:::i;:::-;17678:139;;17405:419;;;:::o;17830:::-;17996:4;18034:2;18023:9;18019:18;18011:26;;18083:9;18077:4;18073:20;18069:1;18058:9;18054:17;18047:47;18111:131;18237:4;18111:131;:::i;:::-;18103:139;;17830:419;;;:::o;18255:::-;18421:4;18459:2;18448:9;18444:18;18436:26;;18508:9;18502:4;18498:20;18494:1;18483:9;18479:17;18472:47;18536:131;18662:4;18536:131;:::i;:::-;18528:139;;18255:419;;;:::o;18680:::-;18846:4;18884:2;18873:9;18869:18;18861:26;;18933:9;18927:4;18923:20;18919:1;18908:9;18904:17;18897:47;18961:131;19087:4;18961:131;:::i;:::-;18953:139;;18680:419;;;:::o;19105:::-;19271:4;19309:2;19298:9;19294:18;19286:26;;19358:9;19352:4;19348:20;19344:1;19333:9;19329:17;19322:47;19386:131;19512:4;19386:131;:::i;:::-;19378:139;;19105:419;;;:::o;19530:::-;19696:4;19734:2;19723:9;19719:18;19711:26;;19783:9;19777:4;19773:20;19769:1;19758:9;19754:17;19747:47;19811:131;19937:4;19811:131;:::i;:::-;19803:139;;19530:419;;;:::o;19955:::-;20121:4;20159:2;20148:9;20144:18;20136:26;;20208:9;20202:4;20198:20;20194:1;20183:9;20179:17;20172:47;20236:131;20362:4;20236:131;:::i;:::-;20228:139;;19955:419;;;:::o;20380:::-;20546:4;20584:2;20573:9;20569:18;20561:26;;20633:9;20627:4;20623:20;20619:1;20608:9;20604:17;20597:47;20661:131;20787:4;20661:131;:::i;:::-;20653:139;;20380:419;;;:::o;20805:::-;20971:4;21009:2;20998:9;20994:18;20986:26;;21058:9;21052:4;21048:20;21044:1;21033:9;21029:17;21022:47;21086:131;21212:4;21086:131;:::i;:::-;21078:139;;20805:419;;;:::o;21230:222::-;21323:4;21361:2;21350:9;21346:18;21338:26;;21374:71;21442:1;21431:9;21427:17;21418:6;21374:71;:::i;:::-;21230:222;;;;:::o;21458:831::-;21721:4;21759:3;21748:9;21744:19;21736:27;;21773:71;21841:1;21830:9;21826:17;21817:6;21773:71;:::i;:::-;21854:80;21930:2;21919:9;21915:18;21906:6;21854:80;:::i;:::-;21981:9;21975:4;21971:20;21966:2;21955:9;21951:18;21944:48;22009:108;22112:4;22103:6;22009:108;:::i;:::-;22001:116;;22127:72;22195:2;22184:9;22180:18;22171:6;22127:72;:::i;:::-;22209:73;22277:3;22266:9;22262:19;22253:6;22209:73;:::i;:::-;21458:831;;;;;;;;:::o;22295:214::-;22384:4;22422:2;22411:9;22407:18;22399:26;;22435:67;22499:1;22488:9;22484:17;22475:6;22435:67;:::i;:::-;22295:214;;;;:::o;22515:129::-;22549:6;22576:20;;:::i;:::-;22566:30;;22605:33;22633:4;22625:6;22605:33;:::i;:::-;22515:129;;;:::o;22650:75::-;22683:6;22716:2;22710:9;22700:19;;22650:75;:::o;22731:311::-;22808:4;22898:18;22890:6;22887:30;22884:56;;;22920:18;;:::i;:::-;22884:56;22970:4;22962:6;22958:17;22950:25;;23030:4;23024;23020:15;23012:23;;22731:311;;;:::o;23048:132::-;23115:4;23138:3;23130:11;;23168:4;23163:3;23159:14;23151:22;;23048:132;;;:::o;23186:114::-;23253:6;23287:5;23281:12;23271:22;;23186:114;;;:::o;23306:99::-;23358:6;23392:5;23386:12;23376:22;;23306:99;;;:::o;23411:113::-;23481:4;23513;23508:3;23504:14;23496:22;;23411:113;;;:::o;23530:184::-;23629:11;23663:6;23658:3;23651:19;23703:4;23698:3;23694:14;23679:29;;23530:184;;;;:::o;23720:169::-;23804:11;23838:6;23833:3;23826:19;23878:4;23873:3;23869:14;23854:29;;23720:169;;;;:::o;23895:305::-;23935:3;23954:20;23972:1;23954:20;:::i;:::-;23949:25;;23988:20;24006:1;23988:20;:::i;:::-;23983:25;;24142:1;24074:66;24070:74;24067:1;24064:81;24061:107;;;24148:18;;:::i;:::-;24061:107;24192:1;24189;24185:9;24178:16;;23895:305;;;;:::o;24206:185::-;24246:1;24263:20;24281:1;24263:20;:::i;:::-;24258:25;;24297:20;24315:1;24297:20;:::i;:::-;24292:25;;24336:1;24326:35;;24341:18;;:::i;:::-;24326:35;24383:1;24380;24376:9;24371:14;;24206:185;;;;:::o;24397:348::-;24437:7;24460:20;24478:1;24460:20;:::i;:::-;24455:25;;24494:20;24512:1;24494:20;:::i;:::-;24489:25;;24682:1;24614:66;24610:74;24607:1;24604:81;24599:1;24592:9;24585:17;24581:105;24578:131;;;24689:18;;:::i;:::-;24578:131;24737:1;24734;24730:9;24719:20;;24397:348;;;;:::o;24751:191::-;24791:4;24811:20;24829:1;24811:20;:::i;:::-;24806:25;;24845:20;24863:1;24845:20;:::i;:::-;24840:25;;24884:1;24881;24878:8;24875:34;;;24889:18;;:::i;:::-;24875:34;24934:1;24931;24927:9;24919:17;;24751:191;;;;:::o;24948:96::-;24985:7;25014:24;25032:5;25014:24;:::i;:::-;25003:35;;24948:96;;;:::o;25050:90::-;25084:7;25127:5;25120:13;25113:21;25102:32;;25050:90;;;:::o;25146:126::-;25183:7;25223:42;25216:5;25212:54;25201:65;;25146:126;;;:::o;25278:77::-;25315:7;25344:5;25333:16;;25278:77;;;:::o;25361:86::-;25396:7;25436:4;25429:5;25425:16;25414:27;;25361:86;;;:::o;25453:152::-;25529:9;25562:37;25593:5;25562:37;:::i;:::-;25549:50;;25453:152;;;:::o;25611:121::-;25669:9;25702:24;25720:5;25702:24;:::i;:::-;25689:37;;25611:121;;;:::o;25738:126::-;25788:9;25821:37;25852:5;25821:37;:::i;:::-;25808:50;;25738:126;;;:::o;25870:113::-;25920:9;25953:24;25971:5;25953:24;:::i;:::-;25940:37;;25870:113;;;:::o;25989:307::-;26057:1;26067:113;26081:6;26078:1;26075:13;26067:113;;;26166:1;26161:3;26157:11;26151:18;26147:1;26142:3;26138:11;26131:39;26103:2;26100:1;26096:10;26091:15;;26067:113;;;26198:6;26195:1;26192:13;26189:101;;;26278:1;26269:6;26264:3;26260:16;26253:27;26189:101;26038:258;25989:307;;;:::o;26302:281::-;26385:27;26407:4;26385:27;:::i;:::-;26377:6;26373:40;26515:6;26503:10;26500:22;26479:18;26467:10;26464:34;26461:62;26458:88;;;26526:18;;:::i;:::-;26458:88;26566:10;26562:2;26555:22;26345:238;26302:281;;:::o;26589:233::-;26628:3;26651:24;26669:5;26651:24;:::i;:::-;26642:33;;26697:66;26690:5;26687:77;26684:103;;;26767:18;;:::i;:::-;26684:103;26814:1;26807:5;26803:13;26796:20;;26589:233;;;:::o;26828:180::-;26876:77;26873:1;26866:88;26973:4;26970:1;26963:15;26997:4;26994:1;26987:15;27014:180;27062:77;27059:1;27052:88;27159:4;27156:1;27149:15;27183:4;27180:1;27173:15;27200:180;27248:77;27245:1;27238:88;27345:4;27342:1;27335:15;27369:4;27366:1;27359:15;27386:180;27434:77;27431:1;27424:88;27531:4;27528:1;27521:15;27555:4;27552:1;27545:15;27572:117;27681:1;27678;27671:12;27695:117;27804:1;27801;27794:12;27818:117;27927:1;27924;27917:12;27941:117;28050:1;28047;28040:12;28064:117;28173:1;28170;28163:12;28187:102;28228:6;28279:2;28275:7;28270:2;28263:5;28259:14;28255:28;28245:38;;28187:102;;;:::o;28295:222::-;28435:34;28431:1;28423:6;28419:14;28412:58;28504:5;28499:2;28491:6;28487:15;28480:30;28295:222;:::o;28523:250::-;28663:34;28659:1;28651:6;28647:14;28640:58;28732:33;28727:2;28719:6;28715:15;28708:58;28523:250;:::o;28779:229::-;28919:34;28915:1;28907:6;28903:14;28896:58;28988:12;28983:2;28975:6;28971:15;28964:37;28779:229;:::o;29014:178::-;29154:30;29150:1;29142:6;29138:14;29131:54;29014:178;:::o;29198:225::-;29338:34;29334:1;29326:6;29322:14;29315:58;29407:8;29402:2;29394:6;29390:15;29383:33;29198:225;:::o;29429:221::-;29569:34;29565:1;29557:6;29553:14;29546:58;29638:4;29633:2;29625:6;29621:15;29614:29;29429:221;:::o;29656:222::-;29796:34;29792:1;29784:6;29780:14;29773:58;29865:5;29860:2;29852:6;29848:15;29841:30;29656:222;:::o;29884:177::-;30024:29;30020:1;30012:6;30008:14;30001:53;29884:177;:::o;30067:220::-;30207:34;30203:1;30195:6;30191:14;30184:58;30276:3;30271:2;30263:6;30259:15;30252:28;30067:220;:::o;30293:182::-;30433:34;30429:1;30421:6;30417:14;30410:58;30293:182;:::o;30481:228::-;30621:34;30617:1;30609:6;30605:14;30598:58;30690:11;30685:2;30677:6;30673:15;30666:36;30481:228;:::o;30715:224::-;30855:34;30851:1;30843:6;30839:14;30832:58;30924:7;30919:2;30911:6;30907:15;30900:32;30715:224;:::o;30945:222::-;31085:34;31081:1;31073:6;31069:14;31062:58;31154:5;31149:2;31141:6;31137:15;31130:30;30945:222;:::o;31173:223::-;31313:34;31309:1;31301:6;31297:14;31290:58;31382:6;31377:2;31369:6;31365:15;31358:31;31173:223;:::o;31402:122::-;31475:24;31493:5;31475:24;:::i;:::-;31468:5;31465:35;31455:63;;31514:1;31511;31504:12;31455:63;31402:122;:::o;31530:116::-;31600:21;31615:5;31600:21;:::i;:::-;31593:5;31590:32;31580:60;;31636:1;31633;31626:12;31580:60;31530:116;:::o;31652:122::-;31725:24;31743:5;31725:24;:::i;:::-;31718:5;31715:35;31705:63;;31764:1;31761;31754:12;31705:63;31652:122;:::o

Swarm Source

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