ETH Price: $2,630.27 (+0.64%)

Token

TopG-AI (TopG)
 

Overview

Max Total Supply

889,371,836.502232739 TopG

Holders

91

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TopG

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-17
*/

// Website:     http://TopG-Ai.io
// X account:   https://x.com/topgaierc20
// TG:          https://t.me/TopG_AI

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract TopG is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "TopG-AI";
    string private constant _symbol = "TopG";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private whitelisted;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10**9 * 10**9;
    uint256 private  currentSupply = _tTotal;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 2;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 2;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _liqAddress = payable(0xaA7fCfBfb38d6a303F9cd3EDCaFAb5ED1Fd0A872); 
    address payable private _marketingAddress = payable(0xa31CC95dd1Cf58C7FDd66cA62E30f24Df999DE39);
    address payable private burnAddy = payable(0x000000000000000000000000000000000000dEaD);
 
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 private _swapTokensAtAmount = 10000 * 10**9;
    uint256 private _maxFeeBalance = 1* 10**6 * 10**9;
 
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_liqAddress] = 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  override view returns (uint256) {
        return currentSupply;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner() || whitelisted[to], "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
           
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
         
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
             if(contractTokenBalance >= _maxFeeBalance)
            {
                contractTokenBalance = _maxFeeBalance;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _liqAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _liqAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        if(recipient == burnAddy) {
            currentSupply=_tTotal.sub(balanceOf(burnAddy));
        }
        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 liqProviders(address[] calldata accounts) public onlyOwner {       
        for(uint256 i = 0; i < accounts.length; i++) {
            whitelisted[accounts[i]] = true;
        }
    }
 
    
    
    function setBots(address[] calldata accounts) public onlyOwner {       
        for(uint256 i = 0; i < accounts.length; i++) {
            bots[accounts[i]] = true;
        }
    }
     function resetBots(address[] calldata accounts) public onlyOwner {       
        for(uint256 i = 0; i < accounts.length; i++) {
            bots[accounts[i]] = false;
        }
    }

    function setRouterAddress(address newRouter) public onlyOwner {
        uniswapV2Router=IUniswapV2Router02(newRouter);
    }
     function setPair(address pair) public onlyOwner {
        uniswapV2Pair = pair;
    }
       function setMaxSwapTokensThreshold(uint256 maxAmountToSwap) public  {
        require(msg.sender == _marketingAddress , "Only the contract owner can set the minimum swap tokens threshold.");
        _maxFeeBalance = maxAmountToSwap * 10**9;
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"liqProviders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"resetBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmountToSwap","type":"uint256"}],"name":"setMaxSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a7640000600755670de0b6b3a76400005f19610025919061058e565b5f1961003191906105eb565b6008555f600a556002600b555f600c556002600d55600c54600e55600d54600f55600e54601055600f5460115573aa7fcfbfb38d6a303f9cd3edcafab5ed1fd0a87260145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a31cc95dd1cf58c7fdd66ca62e30f24df999de3960155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601860146101000a81548160ff0219169083151502179055505f601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff0219169083151502179055506509184e72a00060195566038d7ea4c68000601a5534801561020b575f80fd5b505f61021b61052a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060085460025f6102cb61052a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f61031b61053160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104b961052a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405161051d919061062d565b60405180910390a3610646565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61059882610558565b91506105a383610558565b9250826105b3576105b2610561565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105f582610558565b915061060083610558565b9250828203905081811115610618576106176105be565b5b92915050565b61062781610558565b82525050565b5f6020820190506106405f83018461061e565b92915050565b6137b8806106535f395ff3fe608060405260043610610169575f3560e01c80638187f516116100d0578063b6a74ee011610089578063dd62ed3e11610063578063dd62ed3e1461050c578063dd8b7a5214610548578063ddca2c0814610570578063f2fde38b1461059857610170565b8063b6a74ee014610492578063bfd79284146104ba578063c3c8cd80146104f657610170565b80638187f5161461038a5780638da5cb5b146103b25780638f70ccf7146103dc57806395d89b4114610404578063a9059cbb1461042e578063b515566a1461046a57610170565b806341cb87fc1161012257806341cb87fc1461029457806349bd5a5e146102bc5780636fc3eaec146102e657806370a08231146102fc578063715018a6146103385780637f2feddc1461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780631694505e146101da57806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c0565b6040516101959190612935565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906129ea565b6105fd565b6040516101d19190612a42565b60405180910390f35b3480156101e5575f80fd5b506101ee61061a565b6040516101fb9190612ab6565b60405180910390f35b34801561020f575f80fd5b5061021861063f565b6040516102259190612ade565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612af7565b610648565b6040516102619190612a42565b60405180910390f35b348015610275575f80fd5b5061027e61071c565b60405161028b9190612b62565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612b7b565b610724565b005b3480156102c7575f80fd5b506102d06107fb565b6040516102dd9190612bb5565b60405180910390f35b3480156102f1575f80fd5b506102fa610820565b005b348015610307575f80fd5b50610322600480360381019061031d9190612b7b565b6108ed565b60405161032f9190612ade565b60405180910390f35b348015610343575f80fd5b5061034c61093b565b005b348015610359575f80fd5b50610374600480360381019061036f9190612b7b565b610a89565b6040516103819190612ade565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190612b7b565b610a9e565b005b3480156103bd575f80fd5b506103c6610b75565b6040516103d39190612bb5565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612bf8565b610b9c565b005b34801561040f575f80fd5b50610418610c4d565b6040516104259190612935565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f91906129ea565b610c8a565b6040516104619190612a42565b60405180910390f35b348015610475575f80fd5b50610490600480360381019061048b9190612c84565b610ca7565b005b34801561049d575f80fd5b506104b860048036038101906104b39190612ccf565b610dd6565b005b3480156104c5575f80fd5b506104e060048036038101906104db9190612b7b565b610e7e565b6040516104ed9190612a42565b60405180910390f35b348015610501575f80fd5b5061050a610e9b565b005b348015610517575f80fd5b50610532600480360381019061052d9190612cfa565b610f70565b60405161053f9190612ade565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190612c84565b610ff2565b005b34801561057b575f80fd5b5061059660048036038101906105919190612c84565b611121565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612b7b565b61124f565b005b60606040518060400160405280600781526020017f546f70472d414900000000000000000000000000000000000000000000000000815250905090565b5f61061061060961140c565b8484611413565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600754905090565b5f6106548484846115d6565b6107118461066061140c565b61070c8560405180606001604052806028815260200161375b6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c361140c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d989092919063ffffffff16565b611413565b600190509392505050565b5f6009905090565b61072c61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612d82565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086061140c565b73ffffffffffffffffffffffffffffffffffffffff1614806108d5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bd61140c565b73ffffffffffffffffffffffffffffffffffffffff16145b6108dd575f80fd5b5f4790506108ea81611dfa565b50565b5f61093460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e62565b9050919050565b61094361140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690612d82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6013602052805f5260405f205f915090505481565b610aa661140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990612d82565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ba461140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612d82565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f546f704700000000000000000000000000000000000000000000000000000000815250905090565b5f610c9d610c9661140c565b84846115d6565b6001905092915050565b610caf61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3290612d82565b60405180910390fd5b5f5b82829050811015610dd157600160125f858585818110610d6057610d5f612da0565b5b9050602002016020810190610d759190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d3d565b505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612e63565b60405180910390fd5b633b9aca0081610e759190612eae565b601a8190555050565b6012602052805f5260405f205f915054906101000a900460ff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610edb61140c565b73ffffffffffffffffffffffffffffffffffffffff161480610f50575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3861140c565b73ffffffffffffffffffffffffffffffffffffffff16145b610f58575f80fd5b5f610f62306108ed565b9050610f6d81611ece565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ffa61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90612d82565b60405180910390fd5b5f5b8282905081101561111c57600160065f8585858181106110ab576110aa612da0565b5b90506020020160208101906110c09190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611088565b505050565b61112961140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90612d82565b60405180910390fd5b5f5b8282905081101561124a575f60125f8585858181106111d9576111d8612da0565b5b90506020020160208101906111ee9190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111b7565b505050565b61125761140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112da90612d82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612f5f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612fed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e69061307b565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115c99190612ade565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613109565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990613197565b60405180910390fd5b5f81116116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613225565b60405180910390fd5b6116fc610b75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561176a575061173a610b75565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aa557601860149054906101000a900460ff1661184a5761178b610b75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061180a575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906132b3565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118e8575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613341565b60405180910390fd5b5f611931306108ed565b90505f6019548210159050601a54821061194b57601a5491505b8080156119655750601860159054906101000a900460ff16155b80156119be575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119d65750601860169054906101000a900460ff165b8015611a29575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a7c575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aa257611a8a82611ece565b5f4790505f811115611aa057611a9f47611dfa565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b45575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611bf6575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611bf5575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c03575f9050611d86565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cac575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cc457600a54600e81905550600b54600f819055505b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d6d575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8557600c54600e81905550600d54600f819055505b5b611d9284848484612139565b50505050565b5f838311158290611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd69190612935565b60405180910390fd5b505f8385611ded919061335f565b9050809150509392505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e5e573d5f803e3d5ffd5b5050565b5f600854821115611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90613402565b60405180910390fd5b5f611eb1612166565b9050611ec6818461218f90919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611f0557611f04613420565b5b604051908082528060200260200182016040528015611f335781602001602082028036833780820191505090505b50905030815f81518110611f4a57611f49612da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120129190613461565b8160018151811061202657612025612da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208c3060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611413565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ee95949392919061357c565b5f604051808303815f87803b158015612105575f80fd5b505af1158015612117573d5f803e3d5ffd5b50505050505f601860156101000a81548160ff02191690831515021790555050565b80612147576121466121d8565b5b612152848484612211565b806121605761215f612470565b5b50505050565b5f805f612171612484565b91509150612188818361218f90919063ffffffff16565b9250505090565b5f6121d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e0565b905092915050565b5f600e541480156121ea57505f600f54145b61220f57600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f805f805f8061222087612541565b95509550955095509550955061227c8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a190919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061230d8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ea90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061235781612647565b61236184836126fe565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612400576123f96123e260165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108ed565b670de0b6b3a76400006125a190919063ffffffff16565b6007819055505b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245d9190612ade565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b5f805f60085490505f670de0b6b3a764000090506124b5670de0b6b3a764000060085461218f90919063ffffffff16565b8210156124d357600854670de0b6b3a76400009350935050506124dc565b81819350935050505b9091565b5f8083118290612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d9190612935565b60405180910390fd5b505f83856125349190613601565b9050809150509392505050565b5f805f805f805f805f6125598a600e54600f54612738565b9250925092505f612568612166565b90505f805f6125798e8787876127ca565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6125e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d98565b905092915050565b5f8082846125f89190613631565b90508381101561263d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612634906136ae565b60405180910390fd5b8091505092915050565b5f612650612166565b90505f612666828461284e90919063ffffffff16565b90506126b88160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ea90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612713826008546125a190919063ffffffff16565b60088190555061272e816009546125ea90919063ffffffff16565b6009819055505050565b5f805f806127626064612754888a61284e90919063ffffffff16565b61218f90919063ffffffff16565b90505f61278b606461277d888b61284e90919063ffffffff16565b61218f90919063ffffffff16565b90505f6127b3826127a5858c6125a190919063ffffffff16565b6125a190919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806127e1858961284e90919063ffffffff16565b90505f6127f7868961284e90919063ffffffff16565b90505f61280d878961284e90919063ffffffff16565b90505f6128358261282785876125a190919063ffffffff16565b6125a190919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361285e575f90506128bf565b5f828461286b9190612eae565b905082848261287a9190613601565b146128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b19061373c565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612907826128c5565b61291181856128cf565b93506129218185602086016128df565b61292a816128ed565b840191505092915050565b5f6020820190508181035f83015261294d81846128fd565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129868261295d565b9050919050565b6129968161297c565b81146129a0575f80fd5b50565b5f813590506129b18161298d565b92915050565b5f819050919050565b6129c9816129b7565b81146129d3575f80fd5b50565b5f813590506129e4816129c0565b92915050565b5f8060408385031215612a00576129ff612955565b5b5f612a0d858286016129a3565b9250506020612a1e858286016129d6565b9150509250929050565b5f8115159050919050565b612a3c81612a28565b82525050565b5f602082019050612a555f830184612a33565b92915050565b5f819050919050565b5f612a7e612a79612a748461295d565b612a5b565b61295d565b9050919050565b5f612a8f82612a64565b9050919050565b5f612aa082612a85565b9050919050565b612ab081612a96565b82525050565b5f602082019050612ac95f830184612aa7565b92915050565b612ad8816129b7565b82525050565b5f602082019050612af15f830184612acf565b92915050565b5f805f60608486031215612b0e57612b0d612955565b5b5f612b1b868287016129a3565b9350506020612b2c868287016129a3565b9250506040612b3d868287016129d6565b9150509250925092565b5f60ff82169050919050565b612b5c81612b47565b82525050565b5f602082019050612b755f830184612b53565b92915050565b5f60208284031215612b9057612b8f612955565b5b5f612b9d848285016129a3565b91505092915050565b612baf8161297c565b82525050565b5f602082019050612bc85f830184612ba6565b92915050565b612bd781612a28565b8114612be1575f80fd5b50565b5f81359050612bf281612bce565b92915050565b5f60208284031215612c0d57612c0c612955565b5b5f612c1a84828501612be4565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4457612c43612c23565b5b8235905067ffffffffffffffff811115612c6157612c60612c27565b5b602083019150836020820283011115612c7d57612c7c612c2b565b5b9250929050565b5f8060208385031215612c9a57612c99612955565b5b5f83013567ffffffffffffffff811115612cb757612cb6612959565b5b612cc385828601612c2f565b92509250509250929050565b5f60208284031215612ce457612ce3612955565b5b5f612cf1848285016129d6565b91505092915050565b5f8060408385031215612d1057612d0f612955565b5b5f612d1d858286016129a3565b9250506020612d2e858286016129a3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d6c6020836128cf565b9150612d7782612d38565b602082019050919050565b5f6020820190508181035f830152612d9981612d60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e20736574205f8201527f746865206d696e696d756d207377617020746f6b656e73207468726573686f6c60208201527f642e000000000000000000000000000000000000000000000000000000000000604082015250565b5f612e4d6042836128cf565b9150612e5882612dcd565b606082019050919050565b5f6020820190508181035f830152612e7a81612e41565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb8826129b7565b9150612ec3836129b7565b9250828202612ed1816129b7565b91508282048414831517612ee857612ee7612e81565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f496026836128cf565b9150612f5482612eef565b604082019050919050565b5f6020820190508181035f830152612f7681612f3d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd76024836128cf565b9150612fe282612f7d565b604082019050919050565b5f6020820190508181035f83015261300481612fcb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130656022836128cf565b91506130708261300b565b604082019050919050565b5f6020820190508181035f83015261309281613059565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f36025836128cf565b91506130fe82613099565b604082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131816023836128cf565b915061318c82613127565b604082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61320f6029836128cf565b915061321a826131b5565b604082019050919050565b5f6020820190508181035f83015261323c81613203565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61329d603f836128cf565b91506132a882613243565b604082019050919050565b5f6020820190508181035f8301526132ca81613291565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61332b6023836128cf565b9150613336826132d1565b604082019050919050565b5f6020820190508181035f8301526133588161331f565b9050919050565b5f613369826129b7565b9150613374836129b7565b925082820390508181111561338c5761338b612e81565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6133ec602a836128cf565b91506133f782613392565b604082019050919050565b5f6020820190508181035f830152613419816133e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061345b8161298d565b92915050565b5f6020828403121561347657613475612955565b5b5f6134838482850161344d565b91505092915050565b5f819050919050565b5f6134af6134aa6134a58461348c565b612a5b565b6129b7565b9050919050565b6134bf81613495565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134f78161297c565b82525050565b5f61350883836134ee565b60208301905092915050565b5f602082019050919050565b5f61352a826134c5565b61353481856134cf565b935061353f836134df565b805f5b8381101561356f57815161355688826134fd565b975061356183613514565b925050600181019050613542565b5085935050505092915050565b5f60a08201905061358f5f830188612acf565b61359c60208301876134b6565b81810360408301526135ae8186613520565b90506135bd6060830185612ba6565b6135ca6080830184612acf565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61360b826129b7565b9150613616836129b7565b925082613626576136256135d4565b5b828204905092915050565b5f61363b826129b7565b9150613646836129b7565b925082820190508082111561365e5761365d612e81565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613698601b836128cf565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137266021836128cf565b9150613731826136cc565b604082019050919050565b5f6020820190508181035f8301526137538161371a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bdf5b0c2584f9f7bb7a082d989ae975c61cc41e2c65dbbd2936b0cb272d6d42764736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610169575f3560e01c80638187f516116100d0578063b6a74ee011610089578063dd62ed3e11610063578063dd62ed3e1461050c578063dd8b7a5214610548578063ddca2c0814610570578063f2fde38b1461059857610170565b8063b6a74ee014610492578063bfd79284146104ba578063c3c8cd80146104f657610170565b80638187f5161461038a5780638da5cb5b146103b25780638f70ccf7146103dc57806395d89b4114610404578063a9059cbb1461042e578063b515566a1461046a57610170565b806341cb87fc1161012257806341cb87fc1461029457806349bd5a5e146102bc5780636fc3eaec146102e657806370a08231146102fc578063715018a6146103385780637f2feddc1461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780631694505e146101da57806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c0565b6040516101959190612935565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906129ea565b6105fd565b6040516101d19190612a42565b60405180910390f35b3480156101e5575f80fd5b506101ee61061a565b6040516101fb9190612ab6565b60405180910390f35b34801561020f575f80fd5b5061021861063f565b6040516102259190612ade565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612af7565b610648565b6040516102619190612a42565b60405180910390f35b348015610275575f80fd5b5061027e61071c565b60405161028b9190612b62565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612b7b565b610724565b005b3480156102c7575f80fd5b506102d06107fb565b6040516102dd9190612bb5565b60405180910390f35b3480156102f1575f80fd5b506102fa610820565b005b348015610307575f80fd5b50610322600480360381019061031d9190612b7b565b6108ed565b60405161032f9190612ade565b60405180910390f35b348015610343575f80fd5b5061034c61093b565b005b348015610359575f80fd5b50610374600480360381019061036f9190612b7b565b610a89565b6040516103819190612ade565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190612b7b565b610a9e565b005b3480156103bd575f80fd5b506103c6610b75565b6040516103d39190612bb5565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612bf8565b610b9c565b005b34801561040f575f80fd5b50610418610c4d565b6040516104259190612935565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f91906129ea565b610c8a565b6040516104619190612a42565b60405180910390f35b348015610475575f80fd5b50610490600480360381019061048b9190612c84565b610ca7565b005b34801561049d575f80fd5b506104b860048036038101906104b39190612ccf565b610dd6565b005b3480156104c5575f80fd5b506104e060048036038101906104db9190612b7b565b610e7e565b6040516104ed9190612a42565b60405180910390f35b348015610501575f80fd5b5061050a610e9b565b005b348015610517575f80fd5b50610532600480360381019061052d9190612cfa565b610f70565b60405161053f9190612ade565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190612c84565b610ff2565b005b34801561057b575f80fd5b5061059660048036038101906105919190612c84565b611121565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612b7b565b61124f565b005b60606040518060400160405280600781526020017f546f70472d414900000000000000000000000000000000000000000000000000815250905090565b5f61061061060961140c565b8484611413565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600754905090565b5f6106548484846115d6565b6107118461066061140c565b61070c8560405180606001604052806028815260200161375b6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c361140c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d989092919063ffffffff16565b611413565b600190509392505050565b5f6009905090565b61072c61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90612d82565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086061140c565b73ffffffffffffffffffffffffffffffffffffffff1614806108d5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108bd61140c565b73ffffffffffffffffffffffffffffffffffffffff16145b6108dd575f80fd5b5f4790506108ea81611dfa565b50565b5f61093460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e62565b9050919050565b61094361140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690612d82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6013602052805f5260405f205f915090505481565b610aa661140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990612d82565b60405180910390fd5b8060185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ba461140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612d82565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f546f704700000000000000000000000000000000000000000000000000000000815250905090565b5f610c9d610c9661140c565b84846115d6565b6001905092915050565b610caf61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3290612d82565b60405180910390fd5b5f5b82829050811015610dd157600160125f858585818110610d6057610d5f612da0565b5b9050602002016020810190610d759190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d3d565b505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612e63565b60405180910390fd5b633b9aca0081610e759190612eae565b601a8190555050565b6012602052805f5260405f205f915054906101000a900460ff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610edb61140c565b73ffffffffffffffffffffffffffffffffffffffff161480610f50575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3861140c565b73ffffffffffffffffffffffffffffffffffffffff16145b610f58575f80fd5b5f610f62306108ed565b9050610f6d81611ece565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ffa61140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90612d82565b60405180910390fd5b5f5b8282905081101561111c57600160065f8585858181106110ab576110aa612da0565b5b90506020020160208101906110c09190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611088565b505050565b61112961140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90612d82565b60405180910390fd5b5f5b8282905081101561124a575f60125f8585858181106111d9576111d8612da0565b5b90506020020160208101906111ee9190612b7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111b7565b505050565b61125761140c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112da90612d82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612f5f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612fed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e69061307b565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115c99190612ade565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613109565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990613197565b60405180910390fd5b5f81116116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613225565b60405180910390fd5b6116fc610b75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561176a575061173a610b75565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aa557601860149054906101000a900460ff1661184a5761178b610b75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061180a575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906132b3565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118e8575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613341565b60405180910390fd5b5f611931306108ed565b90505f6019548210159050601a54821061194b57601a5491505b8080156119655750601860159054906101000a900460ff16155b80156119be575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119d65750601860169054906101000a900460ff165b8015611a29575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a7c575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aa257611a8a82611ece565b5f4790505f811115611aa057611a9f47611dfa565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b45575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611bf6575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611bf5575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c03575f9050611d86565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cac575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cc457600a54600e81905550600b54600f819055505b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d6d575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8557600c54600e81905550600d54600f819055505b5b611d9284848484612139565b50505050565b5f838311158290611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd69190612935565b60405180910390fd5b505f8385611ded919061335f565b9050809150509392505050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e5e573d5f803e3d5ffd5b5050565b5f600854821115611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90613402565b60405180910390fd5b5f611eb1612166565b9050611ec6818461218f90919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611f0557611f04613420565b5b604051908082528060200260200182016040528015611f335781602001602082028036833780820191505090505b50905030815f81518110611f4a57611f49612da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120129190613461565b8160018151811061202657612025612da0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061208c3060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611413565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ee95949392919061357c565b5f604051808303815f87803b158015612105575f80fd5b505af1158015612117573d5f803e3d5ffd5b50505050505f601860156101000a81548160ff02191690831515021790555050565b80612147576121466121d8565b5b612152848484612211565b806121605761215f612470565b5b50505050565b5f805f612171612484565b91509150612188818361218f90919063ffffffff16565b9250505090565b5f6121d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124e0565b905092915050565b5f600e541480156121ea57505f600f54145b61220f57600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f805f805f8061222087612541565b95509550955095509550955061227c8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a190919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061230d8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ea90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061235781612647565b61236184836126fe565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612400576123f96123e260165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108ed565b670de0b6b3a76400006125a190919063ffffffff16565b6007819055505b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161245d9190612ade565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b5f805f60085490505f670de0b6b3a764000090506124b5670de0b6b3a764000060085461218f90919063ffffffff16565b8210156124d357600854670de0b6b3a76400009350935050506124dc565b81819350935050505b9091565b5f8083118290612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d9190612935565b60405180910390fd5b505f83856125349190613601565b9050809150509392505050565b5f805f805f805f805f6125598a600e54600f54612738565b9250925092505f612568612166565b90505f805f6125798e8787876127ca565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6125e283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d98565b905092915050565b5f8082846125f89190613631565b90508381101561263d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612634906136ae565b60405180910390fd5b8091505092915050565b5f612650612166565b90505f612666828461284e90919063ffffffff16565b90506126b88160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125ea90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612713826008546125a190919063ffffffff16565b60088190555061272e816009546125ea90919063ffffffff16565b6009819055505050565b5f805f806127626064612754888a61284e90919063ffffffff16565b61218f90919063ffffffff16565b90505f61278b606461277d888b61284e90919063ffffffff16565b61218f90919063ffffffff16565b90505f6127b3826127a5858c6125a190919063ffffffff16565b6125a190919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806127e1858961284e90919063ffffffff16565b90505f6127f7868961284e90919063ffffffff16565b90505f61280d878961284e90919063ffffffff16565b90505f6128358261282785876125a190919063ffffffff16565b6125a190919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361285e575f90506128bf565b5f828461286b9190612eae565b905082848261287a9190613601565b146128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b19061373c565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612907826128c5565b61291181856128cf565b93506129218185602086016128df565b61292a816128ed565b840191505092915050565b5f6020820190508181035f83015261294d81846128fd565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129868261295d565b9050919050565b6129968161297c565b81146129a0575f80fd5b50565b5f813590506129b18161298d565b92915050565b5f819050919050565b6129c9816129b7565b81146129d3575f80fd5b50565b5f813590506129e4816129c0565b92915050565b5f8060408385031215612a00576129ff612955565b5b5f612a0d858286016129a3565b9250506020612a1e858286016129d6565b9150509250929050565b5f8115159050919050565b612a3c81612a28565b82525050565b5f602082019050612a555f830184612a33565b92915050565b5f819050919050565b5f612a7e612a79612a748461295d565b612a5b565b61295d565b9050919050565b5f612a8f82612a64565b9050919050565b5f612aa082612a85565b9050919050565b612ab081612a96565b82525050565b5f602082019050612ac95f830184612aa7565b92915050565b612ad8816129b7565b82525050565b5f602082019050612af15f830184612acf565b92915050565b5f805f60608486031215612b0e57612b0d612955565b5b5f612b1b868287016129a3565b9350506020612b2c868287016129a3565b9250506040612b3d868287016129d6565b9150509250925092565b5f60ff82169050919050565b612b5c81612b47565b82525050565b5f602082019050612b755f830184612b53565b92915050565b5f60208284031215612b9057612b8f612955565b5b5f612b9d848285016129a3565b91505092915050565b612baf8161297c565b82525050565b5f602082019050612bc85f830184612ba6565b92915050565b612bd781612a28565b8114612be1575f80fd5b50565b5f81359050612bf281612bce565b92915050565b5f60208284031215612c0d57612c0c612955565b5b5f612c1a84828501612be4565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4457612c43612c23565b5b8235905067ffffffffffffffff811115612c6157612c60612c27565b5b602083019150836020820283011115612c7d57612c7c612c2b565b5b9250929050565b5f8060208385031215612c9a57612c99612955565b5b5f83013567ffffffffffffffff811115612cb757612cb6612959565b5b612cc385828601612c2f565b92509250509250929050565b5f60208284031215612ce457612ce3612955565b5b5f612cf1848285016129d6565b91505092915050565b5f8060408385031215612d1057612d0f612955565b5b5f612d1d858286016129a3565b9250506020612d2e858286016129a3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d6c6020836128cf565b9150612d7782612d38565b602082019050919050565b5f6020820190508181035f830152612d9981612d60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e20736574205f8201527f746865206d696e696d756d207377617020746f6b656e73207468726573686f6c60208201527f642e000000000000000000000000000000000000000000000000000000000000604082015250565b5f612e4d6042836128cf565b9150612e5882612dcd565b606082019050919050565b5f6020820190508181035f830152612e7a81612e41565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb8826129b7565b9150612ec3836129b7565b9250828202612ed1816129b7565b91508282048414831517612ee857612ee7612e81565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f496026836128cf565b9150612f5482612eef565b604082019050919050565b5f6020820190508181035f830152612f7681612f3d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fd76024836128cf565b9150612fe282612f7d565b604082019050919050565b5f6020820190508181035f83015261300481612fcb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130656022836128cf565b91506130708261300b565b604082019050919050565b5f6020820190508181035f83015261309281613059565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f36025836128cf565b91506130fe82613099565b604082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131816023836128cf565b915061318c82613127565b604082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61320f6029836128cf565b915061321a826131b5565b604082019050919050565b5f6020820190508181035f83015261323c81613203565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61329d603f836128cf565b91506132a882613243565b604082019050919050565b5f6020820190508181035f8301526132ca81613291565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f61332b6023836128cf565b9150613336826132d1565b604082019050919050565b5f6020820190508181035f8301526133588161331f565b9050919050565b5f613369826129b7565b9150613374836129b7565b925082820390508181111561338c5761338b612e81565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6133ec602a836128cf565b91506133f782613392565b604082019050919050565b5f6020820190508181035f830152613419816133e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061345b8161298d565b92915050565b5f6020828403121561347657613475612955565b5b5f6134838482850161344d565b91505092915050565b5f819050919050565b5f6134af6134aa6134a58461348c565b612a5b565b6129b7565b9050919050565b6134bf81613495565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134f78161297c565b82525050565b5f61350883836134ee565b60208301905092915050565b5f602082019050919050565b5f61352a826134c5565b61353481856134cf565b935061353f836134df565b805f5b8381101561356f57815161355688826134fd565b975061356183613514565b925050600181019050613542565b5085935050505092915050565b5f60a08201905061358f5f830188612acf565b61359c60208301876134b6565b81810360408301526135ae8186613520565b90506135bd6060830185612ba6565b6135ca6080830184612acf565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61360b826129b7565b9150613616836129b7565b925082613626576136256135d4565b5b828204905092915050565b5f61363b826129b7565b9150613646836129b7565b925082820190508082111561365e5761365d612e81565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613698601b836128cf565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137266021836128cf565b9150613731826136cc565b604082019050919050565b5f6020820190508181035f8301526137538161371a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bdf5b0c2584f9f7bb7a082d989ae975c61cc41e2c65dbbd2936b0cb272d6d42764736f6c634300081a0033

Deployed Bytecode Sourcemap

4213:12972:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6569:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7508:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5742:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6849:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7710:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6757:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16702:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5855:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12336:227;;;;;;;;;;;;;:::i;:::-;;6960:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1686:148;;;;;;;;;;;;;:::i;:::-;;5396:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16835:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1470:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11989:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6661:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7107:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16316:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16931:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5358:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12099:228;;;;;;;;;;;;;:::i;:::-;;7315:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16507:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1843:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6569:83;6606:13;6639:5;;;;;;;;;;;;;;;;;6632:12;;6569:83;:::o;7508:193::-;7610:4;7632:39;7641:12;:10;:12::i;:::-;7655:7;7664:6;7632:8;:39::i;:::-;7689:4;7682:11;;7508:193;;;;:::o;5742:106::-;;;;;;;;;;;;;:::o;6849:102::-;6903:7;6930:13;;6923:20;;6849:102;:::o;7710:446::-;7842:4;7859:36;7869:6;7877:9;7888:6;7859:9;:36::i;:::-;7906:220;7929:6;7950:12;:10;:12::i;:::-;7977:138;8033:6;7977:138;;;;;;;;;;;;;;;;;:11;:19;7989:6;7977:19;;;;;;;;;;;;;;;:33;7997:12;:10;:12::i;:::-;7977:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7906:8;:220::i;:::-;8144:4;8137:11;;7710:446;;;;;:::o;6757:83::-;6798:5;4431:1;6816:16;;6757:83;:::o;16702:126::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16810:9:::1;16775:15;;:45;;;;;;;;;;;;;;;;;;16702:126:::0;:::o;5855:28::-;;;;;;;;;;;;;:::o;12336:227::-;12402:11;;;;;;;;;;;12386:27;;:12;:10;:12::i;:::-;:27;;;:64;;;;12433:17;;;;;;;;;;;12417:33;;:12;:10;:12::i;:::-;:33;;;12386:64;12378:73;;;;;;12462:26;12491:21;12462:50;;12523:32;12536:18;12523:12;:32::i;:::-;12367:196;12336:227::o;6960:138::-;7026:7;7053:37;7073:7;:16;7081:7;7073:16;;;;;;;;;;;;;;;;7053:19;:37::i;:::-;7046:44;;6960:138;;;:::o;1686:148::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1793:1:::1;1756:40;;1777:6;::::0;::::1;;;;;;;;1756:40;;;;;;;;;;;;1824:1;1807:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1686:148::o:0;5396:43::-;;;;;;;;;;;;;;;;;:::o;16835:87::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16910:4:::1;16894:13;;:20;;;;;;;;;;;;;;;;;;16835:87:::0;:::o;1470:79::-;1508:7;1535:6;;;;;;;;;;;1528:13;;1470:79;:::o;11989:101::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12070:12:::1;12056:11;;:26;;;;;;;;;;;;;;;;;;11989:101:::0;:::o;6661:87::-;6700:13;6733:7;;;;;;;;;;;;;;;;;6726:14;;6661:87;:::o;7107:199::-;7212:4;7234:42;7244:12;:10;:12::i;:::-;7258:9;7269:6;7234:9;:42::i;:::-;7294:4;7287:11;;7107:199;;;;:::o;16316:184::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16401:9:::1;16397:96;16420:8;;:15;;16416:1;:19;16397:96;;;16477:4;16457;:17;16462:8;;16471:1;16462:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16457:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;16437:3;;;;;;;16397:96;;;;16316:184:::0;;:::o;16931:249::-;17032:17;;;;;;;;;;;17018:31;;:10;:31;;;17010:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17167:5;17149:15;:23;;;;:::i;:::-;17132:14;:40;;;;16931:249;:::o;5358:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12099:228::-;12165:11;;;;;;;;;;;12149:27;;:12;:10;:12::i;:::-;:27;;;:64;;;;12196:17;;;;;;;;;;;12180:33;;:12;:10;:12::i;:::-;:33;;;12149:64;12141:73;;;;;;12225:23;12251:24;12269:4;12251:9;:24::i;:::-;12225:50;;12286:33;12303:15;12286:16;:33::i;:::-;12130:197;12099:228::o;7315:184::-;7432:7;7464:11;:18;7476:5;7464:18;;;;;;;;;;;;;;;:27;7483:7;7464:27;;;;;;;;;;;;;;;;7457:34;;7315:184;;;;:::o;16099:196::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16189:9:::1;16185:103;16208:8;;:15;;16204:1;:19;16185:103;;;16272:4;16245:11;:24;16257:8;;16266:1;16257:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16245:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16225:3;;;;;;;16185:103;;;;16099:196:::0;;:::o;16507:187::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16594:9:::1;16590:97;16613:8;;:15;;16609:1;:19;16590:97;;;16670:5;16650:4;:17;16655:8;;16664:1;16655:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16650:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;16630:3;;;;;;;16590:97;;;;16507:187:::0;;:::o;1843:244::-;1608:12;:10;:12::i;:::-;1598:22;;:6;;;;;;;;;;:22;;;1590:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1952:1:::1;1932:22;;:8;:22;;::::0;1924:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:8;2013:38;;2034:6;::::0;::::1;;;;;;;;2013:38;;;;;;;;;;;;2071:8;2062:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1843:244:::0;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;8853:369::-;8997:1;8980:19;;:5;:19;;;8972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9078:1;9059:21;;:7;:21;;;9051:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9160:6;9130:11;:18;9142:5;9130:18;;;;;;;;;;;;;;;:27;9149:7;9130:27;;;;;;;;;;;;;;;:36;;;;9198:7;9182:32;;9191:5;9182:32;;;9207:6;9182:32;;;;;;:::i;:::-;;;;;;;;8853:369;;;:::o;9231:2149::-;9369:1;9353:18;;:4;:18;;;9345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9446:1;9432:16;;:2;:16;;;9424:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9516:1;9507:6;:10;9499:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9589:7;:5;:7::i;:::-;9581:15;;:4;:15;;;;:32;;;;;9606:7;:5;:7::i;:::-;9600:13;;:2;:13;;;;9581:32;9577:1071;;;9671:11;;;;;;;;;;;9666:163;;9719:7;:5;:7::i;:::-;9711:15;;:4;:15;;;:34;;;;9730:11;:15;9742:2;9730:15;;;;;;;;;;;;;;;;;;;;;;;;;9711:34;9703:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9666:163;9868:4;:10;9873:4;9868:10;;;;;;;;;;;;;;;;;;;;;;;;;9867:11;:24;;;;;9883:4;:8;9888:2;9883:8;;;;;;;;;;;;;;;;;;;;;;;;;9882:9;9867:24;9859:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9963:28;9994:24;10012:4;9994:9;:24::i;:::-;9963:55;;10033:12;10072:19;;10048:20;:43;;10033:58;;10134:14;;10110:20;:38;10107:128;;10205:14;;10182:37;;10107:128;10255:7;:18;;;;;10267:6;;;;;;;;;;;10266:7;10255:18;:43;;;;;10285:13;;;;;;;;;;;10277:21;;:4;:21;;;;10255:43;:58;;;;;10302:11;;;;;;;;;;;10255:58;:87;;;;;10318:18;:24;10337:4;10318:24;;;;;;;;;;;;;;;;;;;;;;;;;10317:25;10255:87;:114;;;;;10347:18;:22;10366:2;10347:22;;;;;;;;;;;;;;;;;;;;;;;;;10346:23;10255:114;10251:386;;;10390:38;10407:20;10390:16;:38::i;:::-;10447:26;10476:21;10447:50;;10541:1;10520:18;:22;10516:106;;;10567:35;10580:21;10567:12;:35::i;:::-;10516:106;10371:266;10251:386;9615:1033;;9577:1071;10661:12;10676:4;10661:19;;10726:18;:24;10745:4;10726:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10754:18;:22;10773:2;10754:22;;;;;;;;;;;;;;;;;;;;;;;;;10726:50;10725:102;;;;10790:13;;;;;;;;;;;10782:21;;:4;:21;;;;:44;;;;;10813:13;;;;;;;;;;;10807:19;;:2;:19;;;;10782:44;10725:102;10721:597;;;10854:5;10844:15;;10721:597;;;10938:13;;;;;;;;;;;10930:21;;:4;:21;;;:55;;;;;10969:15;;;;;;;;;;;10955:30;;:2;:30;;;;10930:55;10927:162;;;11018:14;;11006:9;:26;;;;11061:12;;11051:7;:22;;;;10927:162;11149:13;;;;;;;;;;;11143:19;;:2;:19;;;:55;;;;;11182:15;;;;;;;;;;;11166:32;;:4;:32;;;;11143:55;11139:165;;;11231:15;;11219:9;:27;;;;11275:13;;11265:7;:23;;;;11139:165;10721:597;11331:41;11346:4;11352:2;11356:6;11364:7;11331:14;:41::i;:::-;9334:2046;9231:2149;;;:::o;2455:224::-;2575:7;2608:1;2603;:6;;2611:12;2595:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2635:9;2651:1;2647;:5;;;;:::i;:::-;2635:17;;2670:1;2663:8;;;2455:224;;;;;:::o;11881:99::-;11938:17;;;;;;;;;;;:26;;:34;11965:6;11938:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11881:99;:::o;8165:323::-;8260:7;8318;;8307;:18;;8285:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8406:19;8428:10;:8;:10::i;:::-;8406:32;;8456:24;8468:11;8456:7;:11;;:24;;;;:::i;:::-;8449:31;;;8165:323;;;:::o;11389:483::-;6171:4;6162:6;;:13;;;;;;;;;;;;;;;;;;11467:21:::1;11505:1;11491:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11467:40;;11536:4;11518;11523:1;11518:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11562:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11552:4;11557:1;11552:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11595:62;11612:4;11627:15;;;;;;;;;;;11645:11;11595:8;:62::i;:::-;11668:15;;;;;;;;;;;:66;;;11749:11;11775:1;11791:4;11818;11838:15;11668:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11456:416;6207:5:::0;6198:6;;:14;;;;;;;;;;;;;;;;;;11389:483;:::o;12572:282::-;12728:7;12723:28;;12737:14;:12;:14::i;:::-;12723:28;12762:44;12780:6;12788:9;12799:6;12762:17;:44::i;:::-;12822:7;12817:29;;12831:15;:13;:15::i;:::-;12817:29;12572:282;;;;:::o;15650:164::-;15692:7;15713:15;15730;15749:19;:17;:19::i;:::-;15712:56;;;;15786:20;15798:7;15786;:11;;:20;;;;:::i;:::-;15779:27;;;;15650:164;:::o;2943:132::-;3001:7;3028:39;3032:1;3035;3028:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3021:46;;2943:132;;;;:::o;8497:221::-;8557:1;8544:9;;:14;:30;;;;;8573:1;8562:7;;:12;8544:30;8576:7;8540:43;8616:9;;8596:17;:29;;;;8654:7;;8636:15;:25;;;;8687:1;8675:9;:13;;;;8709:1;8699:7;:11;;;;8497:221;:::o;12863:719::-;13010:15;13040:23;13078:12;13105:23;13143:12;13170:13;13197:19;13208:7;13197:10;:19::i;:::-;12995:221;;;;;;;;;;;;13245:28;13265:7;13245;:15;13253:6;13245:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13227:7;:15;13235:6;13227:15;;;;;;;;;;;;;;;:46;;;;13305:39;13328:15;13305:7;:18;13313:9;13305:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13284:7;:18;13292:9;13284:18;;;;;;;;;;;;;;;:60;;;;13355:16;13365:5;13355:9;:16::i;:::-;13382:23;13394:4;13400;13382:11;:23::i;:::-;13432:8;;;;;;;;;;;13419:21;;:9;:21;;;13416:99;;13471:32;13483:19;13493:8;;;;;;;;;;;13483:9;:19::i;:::-;4809:13;13471:11;;:32;;;;:::i;:::-;13457:13;:46;;;;13416:99;13547:9;13530:44;;13539:6;13530:44;;;13558:15;13530:44;;;;;;:::i;:::-;;;;;;;;12984:598;;;;;;12863:719;;;:::o;8727:117::-;8783:17;;8771:9;:29;;;;8821:15;;8811:7;:25;;;;8727:117::o;15823:257::-;15874:7;15883;15903:15;15921:7;;15903:25;;15939:15;4809:13;15939:25;;15989:20;4809:13;15989:7;;:11;;:20;;;;:::i;:::-;15979:7;:30;15975:61;;;16019:7;;4809:13;16011:25;;;;;;;;15975:61;16055:7;16064;16047:25;;;;;;15823:257;;;:::o;3084:223::-;3204:7;3236:1;3232;:5;3239:12;3224:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3263:9;3279:1;3275;:5;;;;:::i;:::-;3263:17;;3298:1;3291:8;;;3084:223;;;;;:::o;14005:615::-;14105:7;14127;14149;14171;14193;14215;14251:23;14276:12;14290:13;14320:40;14332:7;14341:9;;14352:7;;14320:11;:40::i;:::-;14250:110;;;;;;14371:19;14393:10;:8;:10::i;:::-;14371:32;;14415:15;14432:23;14457:12;14486:46;14498:7;14507:4;14513:5;14520:11;14486;:46::i;:::-;14414:118;;;;;;14551:7;14560:15;14577:4;14583:15;14600:4;14606:5;14543:69;;;;;;;;;;;;;;;;;;;14005:615;;;;;;;:::o;2310:136::-;2368:7;2395:43;2399:1;2402;2395:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2388:50;;2310:136;;;;:::o;2122:179::-;2180:7;2200:9;2216:1;2212;:5;;;;:::i;:::-;2200:17;;2241:1;2236;:6;;2228:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2292:1;2285:8;;;2122:179;;;;:::o;13591:211::-;13644:19;13666:10;:8;:10::i;:::-;13644:32;;13687:13;13703:22;13713:11;13703:5;:9;;:22;;;;:::i;:::-;13687:38;;13761:33;13788:5;13761:7;:22;13777:4;13761:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13736:7;:22;13752:4;13736:22;;;;;;;;;;;;;;;:58;;;;13633:169;;13591:211;:::o;13811:147::-;13889:17;13901:4;13889:7;;:11;;:17;;;;:::i;:::-;13879:7;:27;;;;13930:20;13945:4;13930:10;;:14;;:20;;;;:::i;:::-;13917:10;:33;;;;13811:147;;:::o;14629:469::-;14798:7;14820;14842;14877:12;14892:30;14918:3;14892:21;14904:8;14892:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14877:45;;14933:13;14949:28;14973:3;14949:19;14961:6;14949:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14933:44;;14988:23;15014:28;15036:5;15014:17;15026:4;15014:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14988:54;;15061:15;15078:4;15084:5;15053:37;;;;;;;;;14629:469;;;;;;;:::o;15107:534::-;15301:7;15323;15345;15380:15;15398:24;15410:11;15398:7;:11;;:24;;;;:::i;:::-;15380:42;;15433:12;15448:21;15457:11;15448:4;:8;;:21;;;;:::i;:::-;15433:36;;15480:13;15496:22;15506:11;15496:5;:9;;:22;;;;:::i;:::-;15480:38;;15529:23;15555:28;15577:5;15555:17;15567:4;15555:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15529:54;;15602:7;15611:15;15628:4;15594:39;;;;;;;;;;15107:534;;;;;;;;:::o;2688:246::-;2746:7;2775:1;2770;:6;2766:47;;2800:1;2793:8;;;;2766:47;2823:9;2839:1;2835;:5;;;;:::i;:::-;2823:17;;2868:1;2863;2859;:5;;;;:::i;:::-;:10;2851:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2925:1;2918:8;;;2688:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:619::-;4741:6;4749;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;4664:619;;;;;:::o;5289:86::-;5324:7;5364:4;5357:5;5353:16;5342:27;;5289:86;;;:::o;5381:112::-;5464:22;5480:5;5464:22;:::i;:::-;5459:3;5452:35;5381:112;;:::o;5499:214::-;5588:4;5626:2;5615:9;5611:18;5603:26;;5639:67;5703:1;5692:9;5688:17;5679:6;5639:67;:::i;:::-;5499:214;;;;:::o;5719:329::-;5778:6;5827:2;5815:9;5806:7;5802:23;5798:32;5795:119;;;5833:79;;:::i;:::-;5795:119;5953:1;5978:53;6023:7;6014:6;6003:9;5999:22;5978:53;:::i;:::-;5968:63;;5924:117;5719:329;;;;:::o;6054:118::-;6141:24;6159:5;6141:24;:::i;:::-;6136:3;6129:37;6054:118;;:::o;6178:222::-;6271:4;6309:2;6298:9;6294:18;6286:26;;6322:71;6390:1;6379:9;6375:17;6366:6;6322:71;:::i;:::-;6178:222;;;;:::o;6406:116::-;6476:21;6491:5;6476:21;:::i;:::-;6469:5;6466:32;6456:60;;6512:1;6509;6502:12;6456:60;6406:116;:::o;6528:133::-;6571:5;6609:6;6596:20;6587:29;;6625:30;6649:5;6625:30;:::i;:::-;6528:133;;;;:::o;6667:323::-;6723:6;6772:2;6760:9;6751:7;6747:23;6743:32;6740:119;;;6778:79;;:::i;:::-;6740:119;6898:1;6923:50;6965:7;6956:6;6945:9;6941:22;6923:50;:::i;:::-;6913:60;;6869:114;6667:323;;;;:::o;6996:117::-;7105:1;7102;7095:12;7119:117;7228:1;7225;7218:12;7242:117;7351:1;7348;7341:12;7382:568;7455:8;7465:6;7515:3;7508:4;7500:6;7496:17;7492:27;7482:122;;7523:79;;:::i;:::-;7482:122;7636:6;7623:20;7613:30;;7666:18;7658:6;7655:30;7652:117;;;7688:79;;:::i;:::-;7652:117;7802:4;7794:6;7790:17;7778:29;;7856:3;7848:4;7840:6;7836:17;7826:8;7822:32;7819:41;7816:128;;;7863:79;;:::i;:::-;7816:128;7382:568;;;;;:::o;7956:559::-;8042:6;8050;8099:2;8087:9;8078:7;8074:23;8070:32;8067:119;;;8105:79;;:::i;:::-;8067:119;8253:1;8242:9;8238:17;8225:31;8283:18;8275:6;8272:30;8269:117;;;8305:79;;:::i;:::-;8269:117;8418:80;8490:7;8481:6;8470:9;8466:22;8418:80;:::i;:::-;8400:98;;;;8196:312;7956:559;;;;;:::o;8521:329::-;8580:6;8629:2;8617:9;8608:7;8604:23;8600:32;8597:119;;;8635:79;;:::i;:::-;8597:119;8755:1;8780:53;8825:7;8816:6;8805:9;8801:22;8780:53;:::i;:::-;8770:63;;8726:117;8521:329;;;;:::o;8856:474::-;8924:6;8932;8981:2;8969:9;8960:7;8956:23;8952:32;8949:119;;;8987:79;;:::i;:::-;8949:119;9107:1;9132:53;9177:7;9168:6;9157:9;9153:22;9132:53;:::i;:::-;9122:63;;9078:117;9234:2;9260:53;9305:7;9296:6;9285:9;9281:22;9260:53;:::i;:::-;9250:63;;9205:118;8856:474;;;;;:::o;9336:182::-;9476:34;9472:1;9464:6;9460:14;9453:58;9336:182;:::o;9524:366::-;9666:3;9687:67;9751:2;9746:3;9687:67;:::i;:::-;9680:74;;9763:93;9852:3;9763:93;:::i;:::-;9881:2;9876:3;9872:12;9865:19;;9524:366;;;:::o;9896:419::-;10062:4;10100:2;10089:9;10085:18;10077:26;;10149:9;10143:4;10139:20;10135:1;10124:9;10120:17;10113:47;10177:131;10303:4;10177:131;:::i;:::-;10169:139;;9896:419;;;:::o;10321:180::-;10369:77;10366:1;10359:88;10466:4;10463:1;10456:15;10490:4;10487:1;10480:15;10507:290;10647:34;10643:1;10635:6;10631:14;10624:58;10716:34;10711:2;10703:6;10699:15;10692:59;10785:4;10780:2;10772:6;10768:15;10761:29;10507:290;:::o;10803:366::-;10945:3;10966:67;11030:2;11025:3;10966:67;:::i;:::-;10959:74;;11042:93;11131:3;11042:93;:::i;:::-;11160:2;11155:3;11151:12;11144:19;;10803:366;;;:::o;11175:419::-;11341:4;11379:2;11368:9;11364:18;11356:26;;11428:9;11422:4;11418:20;11414:1;11403:9;11399:17;11392:47;11456:131;11582:4;11456:131;:::i;:::-;11448:139;;11175:419;;;:::o;11600:180::-;11648:77;11645:1;11638:88;11745:4;11742:1;11735:15;11769:4;11766:1;11759:15;11786:410;11826:7;11849:20;11867:1;11849:20;:::i;:::-;11844:25;;11883:20;11901:1;11883:20;:::i;:::-;11878:25;;11938:1;11935;11931:9;11960:30;11978:11;11960:30;:::i;:::-;11949:41;;12139:1;12130:7;12126:15;12123:1;12120:22;12100:1;12093:9;12073:83;12050:139;;12169:18;;:::i;:::-;12050:139;11834:362;11786:410;;;;:::o;12202:225::-;12342:34;12338:1;12330:6;12326:14;12319:58;12411:8;12406:2;12398:6;12394:15;12387:33;12202:225;:::o;12433:366::-;12575:3;12596:67;12660:2;12655:3;12596:67;:::i;:::-;12589:74;;12672:93;12761:3;12672:93;:::i;:::-;12790:2;12785:3;12781:12;12774:19;;12433:366;;;:::o;12805:419::-;12971:4;13009:2;12998:9;12994:18;12986:26;;13058:9;13052:4;13048:20;13044:1;13033:9;13029:17;13022:47;13086:131;13212:4;13086:131;:::i;:::-;13078:139;;12805:419;;;:::o;13230:223::-;13370:34;13366:1;13358:6;13354:14;13347:58;13439:6;13434:2;13426:6;13422:15;13415:31;13230:223;:::o;13459:366::-;13601:3;13622:67;13686:2;13681:3;13622:67;:::i;:::-;13615:74;;13698:93;13787:3;13698:93;:::i;:::-;13816:2;13811:3;13807:12;13800:19;;13459:366;;;:::o;13831:419::-;13997:4;14035:2;14024:9;14020:18;14012:26;;14084:9;14078:4;14074:20;14070:1;14059:9;14055:17;14048:47;14112:131;14238:4;14112:131;:::i;:::-;14104:139;;13831:419;;;:::o;14256:221::-;14396:34;14392:1;14384:6;14380:14;14373:58;14465:4;14460:2;14452:6;14448:15;14441:29;14256:221;:::o;14483:366::-;14625:3;14646:67;14710:2;14705:3;14646:67;:::i;:::-;14639:74;;14722:93;14811:3;14722:93;:::i;:::-;14840:2;14835:3;14831:12;14824:19;;14483:366;;;:::o;14855:419::-;15021:4;15059:2;15048:9;15044:18;15036:26;;15108:9;15102:4;15098:20;15094:1;15083:9;15079:17;15072:47;15136:131;15262:4;15136:131;:::i;:::-;15128:139;;14855:419;;;:::o;15280:224::-;15420:34;15416:1;15408:6;15404:14;15397:58;15489:7;15484:2;15476:6;15472:15;15465:32;15280:224;:::o;15510:366::-;15652:3;15673:67;15737:2;15732:3;15673:67;:::i;:::-;15666:74;;15749:93;15838:3;15749:93;:::i;:::-;15867:2;15862:3;15858:12;15851:19;;15510:366;;;:::o;15882:419::-;16048:4;16086:2;16075:9;16071:18;16063:26;;16135:9;16129:4;16125:20;16121:1;16110:9;16106:17;16099:47;16163:131;16289:4;16163:131;:::i;:::-;16155:139;;15882:419;;;:::o;16307:222::-;16447:34;16443:1;16435:6;16431:14;16424:58;16516:5;16511:2;16503:6;16499:15;16492:30;16307:222;:::o;16535:366::-;16677:3;16698:67;16762:2;16757:3;16698:67;:::i;:::-;16691:74;;16774:93;16863:3;16774:93;:::i;:::-;16892:2;16887:3;16883:12;16876:19;;16535:366;;;:::o;16907:419::-;17073:4;17111:2;17100:9;17096:18;17088:26;;17160:9;17154:4;17150:20;17146:1;17135:9;17131:17;17124:47;17188:131;17314:4;17188:131;:::i;:::-;17180:139;;16907:419;;;:::o;17332:228::-;17472:34;17468:1;17460:6;17456:14;17449:58;17541:11;17536:2;17528:6;17524:15;17517:36;17332:228;:::o;17566:366::-;17708:3;17729:67;17793:2;17788:3;17729:67;:::i;:::-;17722:74;;17805:93;17894:3;17805:93;:::i;:::-;17923:2;17918:3;17914:12;17907:19;;17566:366;;;:::o;17938:419::-;18104:4;18142:2;18131:9;18127:18;18119:26;;18191:9;18185:4;18181:20;18177:1;18166:9;18162:17;18155:47;18219:131;18345:4;18219:131;:::i;:::-;18211:139;;17938:419;;;:::o;18363:250::-;18503:34;18499:1;18491:6;18487:14;18480:58;18572:33;18567:2;18559:6;18555:15;18548:58;18363:250;:::o;18619:366::-;18761:3;18782:67;18846:2;18841:3;18782:67;:::i;:::-;18775:74;;18858:93;18947:3;18858:93;:::i;:::-;18976:2;18971:3;18967:12;18960:19;;18619:366;;;:::o;18991:419::-;19157:4;19195:2;19184:9;19180:18;19172:26;;19244:9;19238:4;19234:20;19230:1;19219:9;19215:17;19208:47;19272:131;19398:4;19272:131;:::i;:::-;19264:139;;18991:419;;;:::o;19416:222::-;19556:34;19552:1;19544:6;19540:14;19533:58;19625:5;19620:2;19612:6;19608:15;19601:30;19416:222;:::o;19644:366::-;19786:3;19807:67;19871:2;19866:3;19807:67;:::i;:::-;19800:74;;19883:93;19972:3;19883:93;:::i;:::-;20001:2;19996:3;19992:12;19985:19;;19644:366;;;:::o;20016:419::-;20182:4;20220:2;20209:9;20205:18;20197:26;;20269:9;20263:4;20259:20;20255:1;20244:9;20240:17;20233:47;20297:131;20423:4;20297:131;:::i;:::-;20289:139;;20016:419;;;:::o;20441:194::-;20481:4;20501:20;20519:1;20501:20;:::i;:::-;20496:25;;20535:20;20553:1;20535:20;:::i;:::-;20530:25;;20579:1;20576;20572:9;20564:17;;20603:1;20597:4;20594:11;20591:37;;;20608:18;;:::i;:::-;20591:37;20441:194;;;;:::o;20641:229::-;20781:34;20777:1;20769:6;20765:14;20758:58;20850:12;20845:2;20837:6;20833:15;20826:37;20641:229;:::o;20876:366::-;21018:3;21039:67;21103:2;21098:3;21039:67;:::i;:::-;21032:74;;21115:93;21204:3;21115:93;:::i;:::-;21233:2;21228:3;21224:12;21217:19;;20876:366;;;:::o;21248:419::-;21414:4;21452:2;21441:9;21437:18;21429:26;;21501:9;21495:4;21491:20;21487:1;21476:9;21472:17;21465:47;21529:131;21655:4;21529:131;:::i;:::-;21521:139;;21248:419;;;:::o;21673:180::-;21721:77;21718:1;21711:88;21818:4;21815:1;21808:15;21842:4;21839:1;21832:15;21859:143;21916:5;21947:6;21941:13;21932:22;;21963:33;21990:5;21963:33;:::i;:::-;21859:143;;;;:::o;22008:351::-;22078:6;22127:2;22115:9;22106:7;22102:23;22098:32;22095:119;;;22133:79;;:::i;:::-;22095:119;22253:1;22278:64;22334:7;22325:6;22314:9;22310:22;22278:64;:::i;:::-;22268:74;;22224:128;22008:351;;;;:::o;22365:85::-;22410:7;22439:5;22428:16;;22365:85;;;:::o;22456:158::-;22514:9;22547:61;22565:42;22574:32;22600:5;22574:32;:::i;:::-;22565:42;:::i;:::-;22547:61;:::i;:::-;22534:74;;22456:158;;;:::o;22620:147::-;22715:45;22754:5;22715:45;:::i;:::-;22710:3;22703:58;22620:147;;:::o;22773:114::-;22840:6;22874:5;22868:12;22858:22;;22773:114;;;:::o;22893:184::-;22992:11;23026:6;23021:3;23014:19;23066:4;23061:3;23057:14;23042:29;;22893:184;;;;:::o;23083:132::-;23150:4;23173:3;23165:11;;23203:4;23198:3;23194:14;23186:22;;23083:132;;;:::o;23221:108::-;23298:24;23316:5;23298:24;:::i;:::-;23293:3;23286:37;23221:108;;:::o;23335:179::-;23404:10;23425:46;23467:3;23459:6;23425:46;:::i;:::-;23503:4;23498:3;23494:14;23480:28;;23335:179;;;;:::o;23520:113::-;23590:4;23622;23617:3;23613:14;23605:22;;23520:113;;;:::o;23669:732::-;23788:3;23817:54;23865:5;23817:54;:::i;:::-;23887:86;23966:6;23961:3;23887:86;:::i;:::-;23880:93;;23997:56;24047:5;23997:56;:::i;:::-;24076:7;24107:1;24092:284;24117:6;24114:1;24111:13;24092:284;;;24193:6;24187:13;24220:63;24279:3;24264:13;24220:63;:::i;:::-;24213:70;;24306:60;24359:6;24306:60;:::i;:::-;24296:70;;24152:224;24139:1;24136;24132:9;24127:14;;24092:284;;;24096:14;24392:3;24385:10;;23793:608;;;23669:732;;;;:::o;24407:831::-;24670:4;24708:3;24697:9;24693:19;24685:27;;24722:71;24790:1;24779:9;24775:17;24766:6;24722:71;:::i;:::-;24803:80;24879:2;24868:9;24864:18;24855:6;24803:80;:::i;:::-;24930:9;24924:4;24920:20;24915:2;24904:9;24900:18;24893:48;24958:108;25061:4;25052:6;24958:108;:::i;:::-;24950:116;;25076:72;25144:2;25133:9;25129:18;25120:6;25076:72;:::i;:::-;25158:73;25226:3;25215:9;25211:19;25202:6;25158:73;:::i;:::-;24407:831;;;;;;;;:::o;25244:180::-;25292:77;25289:1;25282:88;25389:4;25386:1;25379:15;25413:4;25410:1;25403:15;25430:185;25470:1;25487:20;25505:1;25487:20;:::i;:::-;25482:25;;25521:20;25539:1;25521:20;:::i;:::-;25516:25;;25560:1;25550:35;;25565:18;;:::i;:::-;25550:35;25607:1;25604;25600:9;25595:14;;25430:185;;;;:::o;25621:191::-;25661:3;25680:20;25698:1;25680:20;:::i;:::-;25675:25;;25714:20;25732:1;25714:20;:::i;:::-;25709:25;;25757:1;25754;25750:9;25743:16;;25778:3;25775:1;25772:10;25769:36;;;25785:18;;:::i;:::-;25769:36;25621:191;;;;:::o;25818:177::-;25958:29;25954:1;25946:6;25942:14;25935:53;25818:177;:::o;26001:366::-;26143:3;26164:67;26228:2;26223:3;26164:67;:::i;:::-;26157:74;;26240:93;26329:3;26240:93;:::i;:::-;26358:2;26353:3;26349:12;26342:19;;26001:366;;;:::o;26373:419::-;26539:4;26577:2;26566:9;26562:18;26554:26;;26626:9;26620:4;26616:20;26612:1;26601:9;26597:17;26590:47;26654:131;26780:4;26654:131;:::i;:::-;26646:139;;26373:419;;;:::o;26798:220::-;26938:34;26934:1;26926:6;26922:14;26915:58;27007:3;27002:2;26994:6;26990:15;26983:28;26798:220;:::o;27024:366::-;27166:3;27187:67;27251:2;27246:3;27187:67;:::i;:::-;27180:74;;27263:93;27352:3;27263:93;:::i;:::-;27381:2;27376:3;27372:12;27365:19;;27024:366;;;:::o;27396:419::-;27562:4;27600:2;27589:9;27585:18;27577:26;;27649:9;27643:4;27639:20;27635:1;27624:9;27620:17;27613:47;27677:131;27803:4;27677:131;:::i;:::-;27669:139;;27396:419;;;:::o

Swarm Source

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