ETH Price: $3,949.37 (+1.48%)

Token

ERC-20: Doge Daniels (DD)
 

Overview

Max Total Supply

100,000,000,000 DD

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
103,513,946.199757376 DD

Value
$0.00
0xf39eb6aa5bf9dc7ec47a8ec2257d7d39e0f0c218
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:
DogeDaniels

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-11
*/

/**

Doge Daniels - $DD

The first and only token/alcohol drink in the history of cryptocurrencies!
We believe that innovation is, seeing what everybody has seen, and thinking what nobody has thought.

Doge Daniels ($DD) is the change we need.

The most powerful meme name mixed with the leader in the whiskey world.

Website: https://www.dogedaniels.com
Twitter: https://twitter.com/DogeDaniels
TG: https://t.me/dogedaniels

*/

pragma solidity ^0.8.16;
// SPDX-License-Identifier: UNLICENSED
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);
}

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

}

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

}  

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract DogeDaniels is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100 * 10**9 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    struct Taxes {
        uint256 buyFee1;
        uint256 buyFee2;
        uint256 sellFee1;
        uint256 sellFee2;
    }

    Taxes private _taxes = Taxes(0,5,0,5);
    uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2;
    uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2;

    address payable private _feeAddrWallet;
    uint256 private _feeRate = 20;
    
    string private constant _name = "Doge Daniels";
    string private constant _symbol = "DD";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private tradingOpen;
    uint256 launchedAt;

    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;

    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TaxChange(uint _tax);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(0x687bDe08C2738942aD3245D527FD6265b2C7DCD4);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    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 _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(amount > 0, "Amount cannot be zero.");

        if (from != owner() && to != owner()) {

            if (!_isBuy(from)) {
                if (_buyMap[tx.origin] != 0 &&
                    (_buyMap[tx.origin] + (2 hours) >= block.timestamp))  {
                    _taxes.sellFee2 = 12;
                } else {
                    _taxes.sellFee2 = 5;
                }
            } else {
                if (_buyMap[to] == 0) {
                    _buyMap[to] = block.timestamp;
                }
                _taxes.sellFee2 = 5;
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // buy
                require(amount <= _maxTxAmount, "Max transaction exceeded.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Max wallet exceeded.");
            }

            if (from != address(uniswapV2Router) && ! _isExcludedFromFee[from] && to == uniswapV2Pair){
                require(!bots[from] && !bots[to]);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
            }

            if (!inSwap && from != uniswapV2Pair && swapEnabled) {

                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(from,to,amount);
    }

    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 + 60
        );
    }

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

    function getCurrentFees() public view returns (uint256, uint256, uint256, uint256) {
        return (_taxes.buyFee1, _taxes.buyFee2, _taxes.sellFee1, _taxes.sellFee2);
    }

    function adjustFees(uint256 buyFee1, uint256 buyFee2, uint256 sellFee1, uint256 sellFee2) external onlyOwner {
        require(buyFee1 + buyFee2 <= initialTotalBuyFee);
        require(sellFee1 + sellFee2 <= initialTotalSellFee);
        _taxes.buyFee1 = buyFee1;
        _taxes.buyFee2 = buyFee2;
        _taxes.sellFee1 = sellFee1;
        _taxes.sellFee2 = sellFee2;
    }

    function changeMaxTxAmount(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxTxAmount = _tTotal.mul(percentage).div(100);
    }

    function changeMaxWalletSize(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxWalletSize = _tTotal.mul(percentage).div(100);
    }

    function setFeeRate(uint256 rate) external onlyOwner() {
        require(rate<=49);
        _feeRate = rate;
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet.transfer(amount);
    }  

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading already open.");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(3).div(100);
        _maxWalletSize = _tTotal.mul(3).div(100);
        tradingOpen = true;
        launchedAt = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addBot(address[] memory _bots) public onlyOwner {
        for (uint i = 0; i < _bots.length; i++) {
            if (_bots[i] != address(this) && _bots[i] != uniswapV2Pair && _bots[i] != address(uniswapV2Router)){
                bots[_bots[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _isBuy(_msgSender()) ? _getTValues(tAmount, _taxes.buyFee1, _taxes.buyFee2) : _getTValues(tAmount, _taxes.sellFee1, _taxes.sellFee2);
        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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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 _isBuy(address _sender) private view returns (bool) {
        return _sender == uniswapV2Pair;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TaxChange","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":"_bots","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee1","type":"uint256"},{"internalType":"uint256","name":"buyFee2","type":"uint256"},{"internalType":"uint256","name":"sellFee1","type":"uint256"},{"internalType":"uint256","name":"sellFee2","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006000196200001d9190620004b7565b6000196200002c91906200051e565b60095560405180608001604052806000815260200160058152602001600081526020016005815250600b600082015181600001556020820151816001015560408201518160020155606082015181600301555050600b60010154600b6000015462000098919062000559565b600f55600b60030154600b60020154620000b3919062000559565b60105560146012556000601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff0219169083151502179055506000601660026101000a81548160ff02191690831515021790555068056bc75e2d6310000060175568056bc75e2d631000006018553480156200013357600080fd5b506000620001466200044d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073687bde08c2738942ad3245d527fd6265b2c7dcd4601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460026000620002506200044d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002a46200045560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003d76200044d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040516200043f9190620005a5565b60405180910390a3620005c2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004c4826200047e565b9150620004d1836200047e565b925082620004e457620004e362000488565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200052b826200047e565b915062000538836200047e565b9250828203905081811115620005535762000552620004ef565b5b92915050565b600062000566826200047e565b915062000573836200047e565b92508282019050808211156200058e576200058d620004ef565b5b92915050565b6200059f816200047e565b82525050565b6000602082019050620005bc600083018462000594565b92915050565b613bcf80620005d26000396000f3fe6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612c8f565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612d59565b610555565b6040516101af9190612db4565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612dcf565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e45565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612fa8565b61067b565b005b34801561024157600080fd5b5061025c60048036038101906102579190612ff1565b6108dd565b6040516102699190612db4565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190613044565b6109b6565b005b3480156102a757600080fd5b506102b0610aa6565b6040516102bd919061308d565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130a8565b610aaf565b005b3480156102fb57600080fd5b5061031660048036038101906103119190613101565b610b5c565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130a8565b610c0e565b005b34801561034d57600080fd5b50610356610ce8565b005b34801561036457600080fd5b5061037f600480360381019061037a9190613044565b610d8e565b60405161038c9190612e45565b60405180910390f35b3480156103a157600080fd5b506103aa610ddf565b005b3480156103b857600080fd5b506103c1610f32565b6040516103d1949392919061312e565b60405180910390f35b3480156103e657600080fd5b506103ef610f5e565b005b3480156103fd57600080fd5b50610406611015565b6040516104139190613182565b60405180910390f35b34801561042857600080fd5b5061043161103e565b60405161043e9190612c8f565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612d59565b61107b565b60405161047b9190612db4565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130a8565b611099565b005b3480156104b957600080fd5b506104c2611173565b005b3480156104d057600080fd5b506104d9611221565b005b3480156104e757600080fd5b5061050260048036038101906104fd919061319d565b611793565b60405161050f9190612e45565b60405180910390f35b60606040518060400160405280600c81526020017f446f67652044616e69656c730000000000000000000000000000000000000000815250905090565b600061056961056261181a565b8484611822565b6001905092915050565b61057b61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613229565b60405180910390fd5b600f5483856106179190613278565b111561062257600080fd5b60105481836106319190613278565b111561063c57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b600068056bc75e2d63100000905090565b61068361181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790613229565b60405180910390fd5b60005b81518110156108d9573073ffffffffffffffffffffffffffffffffffffffff16828281518110610746576107456132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107da5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b9576107b86132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082d5761082c6132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c65760016007600084848151811061086c5761086b6132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d1906132db565b915050610713565b5050565b60006108ea8484846119eb565b6109ab846108f661181a565b6109a685604051806060016040528060288152602001613b7260289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095c61181a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f89092919063ffffffff16565b611822565b600190509392505050565b6109be61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290613229565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab761181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90613229565b60405180910390fd5b6031811115610b5257600080fd5b8060128190555050565b610b6461181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890613229565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b610c1661181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613229565b60405180910390fd5b60008111610cb057600080fd5b610cdf6064610cd18368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60178190555050565b610cf061181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613229565b60405180910390fd5b6000479050610d8b81612220565b50565b6000610dd8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228c565b9050919050565b610de761181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90613229565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b610f6661181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90613229565b60405180910390fd5b68056bc75e2d6310000060178190555068056bc75e2d63100000601881905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f4444000000000000000000000000000000000000000000000000000000000000815250905090565b600061108f61108861181a565b84846119eb565b6001905092915050565b6110a161181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613229565b60405180910390fd5b6000811161113b57600080fd5b61116a606461115c8368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60188190555050565b61117b61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90613229565b60405180910390fd5b600061121330610d8e565b905061121e816122fa565b50565b61122961181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613229565b60405180910390fd5b60148054906101000a900460ff1615611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb9061336f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d63100000611822565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140391906133a4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e91906133a4565b6040518363ffffffff1660e01b81526004016114ab9291906133d1565b6020604051808303816000875af11580156114ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ee91906133a4565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157730610d8e565b600080611582611015565b426040518863ffffffff1660e01b81526004016115a49695949392919061343f565b60606040518083038185885af11580156115c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e791906134b5565b5050506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506116506064611642600368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b6017819055506116866064611678600368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60188190555060016014806101000a81548160ff02191690831515021790555043601581905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161174c929190613508565b6020604051808303816000875af115801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613546565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611888906135e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613677565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119de9190612e45565b60405180910390a3505050565b60008111611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a25906136e3565b60405180910390fd5b611a36611015565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa45750611a74611015565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120e857611ab28361257f565b611b78576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611b52575042611c20600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4f9190613278565b10155b15611b6757600c600b60030181905550611b73565b6005600b600301819055505b611c10565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c045742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6005600b600301819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cbb5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d295750601660029054906101000a900460ff165b15611dcc57601754811115611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a9061374f565b60405180910390fd5b60185481611d8084610d8e565b611d8a9190613278565b1115611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906137bb565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e745750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ecd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f8057600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f765750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f7f57600080fd5b5b6000611f8b30610d8e565b9050611fdf6064611fd1601254611fc3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8e565b61215c90919063ffffffff16565b6121d690919063ffffffff16565b81111561203b57612038606461202a60125461201c601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8e565b61215c90919063ffffffff16565b6121d690919063ffffffff16565b90505b601660009054906101000a900460ff161580156120a65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120be5750601660019054906101000a900460ff165b156120e6576120cc816122fa565b600047905060008111156120e4576120e347612220565b5b505b505b6120f38383836125d9565b505050565b6000838311158290612140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121379190612c8f565b60405180910390fd5b506000838561214f91906137db565b9050809150509392505050565b600080830361216e57600090506121d0565b6000828461217c919061380f565b905082848261218b9190613898565b146121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c29061393b565b60405180910390fd5b809150505b92915050565b600061221883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612288573d6000803e3d6000fd5b5050565b60006009548211156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca906139cd565b60405180910390fd5b60006122dd61264c565b90506122f281846121d690919063ffffffff16565b915050919050565b6001601660006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561233257612331612e65565b5b6040519080825280602002602001820160405280156123605781602001602082028036833780820191505090505b5090503081600081518110612378576123776132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244391906133a4565b81600181518110612457576124566132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124be30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611822565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261250e9190613278565b6040518663ffffffff1660e01b815260040161252e959493929190613aab565b600060405180830381600087803b15801561254857600080fd5b505af115801561255c573d6000803e3d6000fd5b50505050506000601660006101000a81548160ff02191690831515021790555050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6125e4838383612677565b505050565b60008083118290612630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126279190612c8f565b60405180910390fd5b506000838561263f9190613898565b9050809150509392505050565b6000806000612659612842565b9150915061267081836121d690919063ffffffff16565b9250505090565b600080600080600080612689876128a4565b9550955095509550955095506126e786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c8816129e9565b6127d28483612aa6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161282f9190612e45565b60405180910390a3505050505050505050565b60008060006009549050600068056bc75e2d63100000905061287868056bc75e2d631000006009546121d690919063ffffffff16565b8210156128975760095468056bc75e2d631000009350935050506128a0565b81819350935050505b9091565b60008060008060008060008060006128c26128bd61181a565b61257f565b6128e0576128db8a600b60020154600b60030154612ae0565b6128f6565b6128f58a600b60000154600b60010154612ae0565b5b925092509250600061290661264c565b905060008060006129198e878787612b76565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061298383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120f8565b905092915050565b600080828461299a9190613278565b9050838110156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690613b51565b60405180910390fd5b8091505092915050565b60006129f361264c565b90506000612a0a828461215c90919063ffffffff16565b9050612a5e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612abb8260095461294190919063ffffffff16565b600981905550612ad681600a5461298b90919063ffffffff16565b600a819055505050565b600080600080612b0c6064612afe888a61215c90919063ffffffff16565b6121d690919063ffffffff16565b90506000612b366064612b28888b61215c90919063ffffffff16565b6121d690919063ffffffff16565b90506000612b5f82612b51858c61294190919063ffffffff16565b61294190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b8f858961215c90919063ffffffff16565b90506000612ba6868961215c90919063ffffffff16565b90506000612bbd878961215c90919063ffffffff16565b90506000612be682612bd8858761294190919063ffffffff16565b61294190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c39578082015181840152602081019050612c1e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6182612bff565b612c6b8185612c0a565b9350612c7b818560208601612c1b565b612c8481612c45565b840191505092915050565b60006020820190508181036000830152612ca98184612c56565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cf082612cc5565b9050919050565b612d0081612ce5565b8114612d0b57600080fd5b50565b600081359050612d1d81612cf7565b92915050565b6000819050919050565b612d3681612d23565b8114612d4157600080fd5b50565b600081359050612d5381612d2d565b92915050565b60008060408385031215612d7057612d6f612cbb565b5b6000612d7e85828601612d0e565b9250506020612d8f85828601612d44565b9150509250929050565b60008115159050919050565b612dae81612d99565b82525050565b6000602082019050612dc96000830184612da5565b92915050565b60008060008060808587031215612de957612de8612cbb565b5b6000612df787828801612d44565b9450506020612e0887828801612d44565b9350506040612e1987828801612d44565b9250506060612e2a87828801612d44565b91505092959194509250565b612e3f81612d23565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e9d82612c45565b810181811067ffffffffffffffff82111715612ebc57612ebb612e65565b5b80604052505050565b6000612ecf612cb1565b9050612edb8282612e94565b919050565b600067ffffffffffffffff821115612efb57612efa612e65565b5b602082029050602081019050919050565b600080fd5b6000612f24612f1f84612ee0565b612ec5565b90508083825260208201905060208402830185811115612f4757612f46612f0c565b5b835b81811015612f705780612f5c8882612d0e565b845260208401935050602081019050612f49565b5050509392505050565b600082601f830112612f8f57612f8e612e60565b5b8135612f9f848260208601612f11565b91505092915050565b600060208284031215612fbe57612fbd612cbb565b5b600082013567ffffffffffffffff811115612fdc57612fdb612cc0565b5b612fe884828501612f7a565b91505092915050565b60008060006060848603121561300a57613009612cbb565b5b600061301886828701612d0e565b935050602061302986828701612d0e565b925050604061303a86828701612d44565b9150509250925092565b60006020828403121561305a57613059612cbb565b5b600061306884828501612d0e565b91505092915050565b600060ff82169050919050565b61308781613071565b82525050565b60006020820190506130a2600083018461307e565b92915050565b6000602082840312156130be576130bd612cbb565b5b60006130cc84828501612d44565b91505092915050565b6130de81612d99565b81146130e957600080fd5b50565b6000813590506130fb816130d5565b92915050565b60006020828403121561311757613116612cbb565b5b6000613125848285016130ec565b91505092915050565b60006080820190506131436000830187612e36565b6131506020830186612e36565b61315d6040830185612e36565b61316a6060830184612e36565b95945050505050565b61317c81612ce5565b82525050565b60006020820190506131976000830184613173565b92915050565b600080604083850312156131b4576131b3612cbb565b5b60006131c285828601612d0e565b92505060206131d385828601612d0e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613213602083612c0a565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328382612d23565b915061328e83612d23565b92508282019050808211156132a6576132a5613249565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006132e682612d23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361331857613317613249565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613359601583612c0a565b915061336482613323565b602082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b60008151905061339e81612cf7565b92915050565b6000602082840312156133ba576133b9612cbb565b5b60006133c88482850161338f565b91505092915050565b60006040820190506133e66000830185613173565b6133f36020830184613173565b9392505050565b6000819050919050565b6000819050919050565b600061342961342461341f846133fa565b613404565b612d23565b9050919050565b6134398161340e565b82525050565b600060c0820190506134546000830189613173565b6134616020830188612e36565b61346e6040830187613430565b61347b6060830186613430565b6134886080830185613173565b61349560a0830184612e36565b979650505050505050565b6000815190506134af81612d2d565b92915050565b6000806000606084860312156134ce576134cd612cbb565b5b60006134dc868287016134a0565b93505060206134ed868287016134a0565b92505060406134fe868287016134a0565b9150509250925092565b600060408201905061351d6000830185613173565b61352a6020830184612e36565b9392505050565b600081519050613540816130d5565b92915050565b60006020828403121561355c5761355b612cbb565b5b600061356a84828501613531565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135cf602483612c0a565b91506135da82613573565b604082019050919050565b600060208201905081810360008301526135fe816135c2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613661602283612c0a565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b60006136cd601683612c0a565b91506136d882613697565b602082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613739601983612c0a565b915061374482613703565b602082019050919050565b600060208201905081810360008301526137688161372c565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006137a5601483612c0a565b91506137b08261376f565b602082019050919050565b600060208201905081810360008301526137d481613798565b9050919050565b60006137e682612d23565b91506137f183612d23565b925082820390508181111561380957613808613249565b5b92915050565b600061381a82612d23565b915061382583612d23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561385e5761385d613249565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138a382612d23565b91506138ae83612d23565b9250826138be576138bd613869565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613925602183612c0a565b9150613930826138c9565b604082019050919050565b6000602082019050818103600083015261395481613918565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b7602a83612c0a565b91506139c28261395b565b604082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a2281612ce5565b82525050565b6000613a348383613a19565b60208301905092915050565b6000602082019050919050565b6000613a58826139ed565b613a6281856139f8565b9350613a6d83613a09565b8060005b83811015613a9e578151613a858882613a28565b9750613a9083613a40565b925050600181019050613a71565b5085935050505092915050565b600060a082019050613ac06000830188612e36565b613acd6020830187613430565b8181036040830152613adf8186613a4d565b9050613aee6060830185613173565b613afb6080830184612e36565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b3b601b83612c0a565b9150613b4682613b05565b602082019050919050565b60006020820190508181036000830152613b6a81613b2e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122070069ac894025d4c282f9cf1fbc20a869fe484d0e1464139259e92620d6ab5fc64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612c8f565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612d59565b610555565b6040516101af9190612db4565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612dcf565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e45565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612fa8565b61067b565b005b34801561024157600080fd5b5061025c60048036038101906102579190612ff1565b6108dd565b6040516102699190612db4565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190613044565b6109b6565b005b3480156102a757600080fd5b506102b0610aa6565b6040516102bd919061308d565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130a8565b610aaf565b005b3480156102fb57600080fd5b5061031660048036038101906103119190613101565b610b5c565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130a8565b610c0e565b005b34801561034d57600080fd5b50610356610ce8565b005b34801561036457600080fd5b5061037f600480360381019061037a9190613044565b610d8e565b60405161038c9190612e45565b60405180910390f35b3480156103a157600080fd5b506103aa610ddf565b005b3480156103b857600080fd5b506103c1610f32565b6040516103d1949392919061312e565b60405180910390f35b3480156103e657600080fd5b506103ef610f5e565b005b3480156103fd57600080fd5b50610406611015565b6040516104139190613182565b60405180910390f35b34801561042857600080fd5b5061043161103e565b60405161043e9190612c8f565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612d59565b61107b565b60405161047b9190612db4565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130a8565b611099565b005b3480156104b957600080fd5b506104c2611173565b005b3480156104d057600080fd5b506104d9611221565b005b3480156104e757600080fd5b5061050260048036038101906104fd919061319d565b611793565b60405161050f9190612e45565b60405180910390f35b60606040518060400160405280600c81526020017f446f67652044616e69656c730000000000000000000000000000000000000000815250905090565b600061056961056261181a565b8484611822565b6001905092915050565b61057b61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613229565b60405180910390fd5b600f5483856106179190613278565b111561062257600080fd5b60105481836106319190613278565b111561063c57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b600068056bc75e2d63100000905090565b61068361181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790613229565b60405180910390fd5b60005b81518110156108d9573073ffffffffffffffffffffffffffffffffffffffff16828281518110610746576107456132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107da5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b9576107b86132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082d5761082c6132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c65760016007600084848151811061086c5761086b6132ac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d1906132db565b915050610713565b5050565b60006108ea8484846119eb565b6109ab846108f661181a565b6109a685604051806060016040528060288152602001613b7260289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095c61181a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f89092919063ffffffff16565b611822565b600190509392505050565b6109be61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290613229565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab761181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90613229565b60405180910390fd5b6031811115610b5257600080fd5b8060128190555050565b610b6461181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890613229565b60405180910390fd5b80601660026101000a81548160ff02191690831515021790555050565b610c1661181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a90613229565b60405180910390fd5b60008111610cb057600080fd5b610cdf6064610cd18368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60178190555050565b610cf061181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490613229565b60405180910390fd5b6000479050610d8b81612220565b50565b6000610dd8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228c565b9050919050565b610de761181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90613229565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b610f6661181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90613229565b60405180910390fd5b68056bc75e2d6310000060178190555068056bc75e2d63100000601881905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f4444000000000000000000000000000000000000000000000000000000000000815250905090565b600061108f61108861181a565b84846119eb565b6001905092915050565b6110a161181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112590613229565b60405180910390fd5b6000811161113b57600080fd5b61116a606461115c8368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60188190555050565b61117b61181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90613229565b60405180910390fd5b600061121330610d8e565b905061121e816122fa565b50565b61122961181a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613229565b60405180910390fd5b60148054906101000a900460ff1615611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb9061336f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d63100000611822565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140391906133a4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e91906133a4565b6040518363ffffffff1660e01b81526004016114ab9291906133d1565b6020604051808303816000875af11580156114ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ee91906133a4565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157730610d8e565b600080611582611015565b426040518863ffffffff1660e01b81526004016115a49695949392919061343f565b60606040518083038185885af11580156115c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e791906134b5565b5050506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506116506064611642600368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b6017819055506116866064611678600368056bc75e2d6310000061215c90919063ffffffff16565b6121d690919063ffffffff16565b60188190555060016014806101000a81548160ff02191690831515021790555043601581905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161174c929190613508565b6020604051808303816000875af115801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613546565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611891576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611888906135e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613677565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119de9190612e45565b60405180910390a3505050565b60008111611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a25906136e3565b60405180910390fd5b611a36611015565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa45750611a74611015565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120e857611ab28361257f565b611b78576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611b52575042611c20600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4f9190613278565b10155b15611b6757600c600b60030181905550611b73565b6005600b600301819055505b611c10565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c045742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6005600b600301819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cbb5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d295750601660029054906101000a900460ff165b15611dcc57601754811115611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a9061374f565b60405180910390fd5b60185481611d8084610d8e565b611d8a9190613278565b1115611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906137bb565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e745750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ecd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f8057600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f765750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f7f57600080fd5b5b6000611f8b30610d8e565b9050611fdf6064611fd1601254611fc3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8e565b61215c90919063ffffffff16565b6121d690919063ffffffff16565b81111561203b57612038606461202a60125461201c601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8e565b61215c90919063ffffffff16565b6121d690919063ffffffff16565b90505b601660009054906101000a900460ff161580156120a65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120be5750601660019054906101000a900460ff165b156120e6576120cc816122fa565b600047905060008111156120e4576120e347612220565b5b505b505b6120f38383836125d9565b505050565b6000838311158290612140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121379190612c8f565b60405180910390fd5b506000838561214f91906137db565b9050809150509392505050565b600080830361216e57600090506121d0565b6000828461217c919061380f565b905082848261218b9190613898565b146121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c29061393b565b60405180910390fd5b809150505b92915050565b600061221883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612288573d6000803e3d6000fd5b5050565b60006009548211156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca906139cd565b60405180910390fd5b60006122dd61264c565b90506122f281846121d690919063ffffffff16565b915050919050565b6001601660006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561233257612331612e65565b5b6040519080825280602002602001820160405280156123605781602001602082028036833780820191505090505b5090503081600081518110612378576123776132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244391906133a4565b81600181518110612457576124566132ac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124be30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611822565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261250e9190613278565b6040518663ffffffff1660e01b815260040161252e959493929190613aab565b600060405180830381600087803b15801561254857600080fd5b505af115801561255c573d6000803e3d6000fd5b50505050506000601660006101000a81548160ff02191690831515021790555050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6125e4838383612677565b505050565b60008083118290612630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126279190612c8f565b60405180910390fd5b506000838561263f9190613898565b9050809150509392505050565b6000806000612659612842565b9150915061267081836121d690919063ffffffff16565b9250505090565b600080600080600080612689876128a4565b9550955095509550955095506126e786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061277c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c8816129e9565b6127d28483612aa6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161282f9190612e45565b60405180910390a3505050505050505050565b60008060006009549050600068056bc75e2d63100000905061287868056bc75e2d631000006009546121d690919063ffffffff16565b8210156128975760095468056bc75e2d631000009350935050506128a0565b81819350935050505b9091565b60008060008060008060008060006128c26128bd61181a565b61257f565b6128e0576128db8a600b60020154600b60030154612ae0565b6128f6565b6128f58a600b60000154600b60010154612ae0565b5b925092509250600061290661264c565b905060008060006129198e878787612b76565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061298383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120f8565b905092915050565b600080828461299a9190613278565b9050838110156129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d690613b51565b60405180910390fd5b8091505092915050565b60006129f361264c565b90506000612a0a828461215c90919063ffffffff16565b9050612a5e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612abb8260095461294190919063ffffffff16565b600981905550612ad681600a5461298b90919063ffffffff16565b600a819055505050565b600080600080612b0c6064612afe888a61215c90919063ffffffff16565b6121d690919063ffffffff16565b90506000612b366064612b28888b61215c90919063ffffffff16565b6121d690919063ffffffff16565b90506000612b5f82612b51858c61294190919063ffffffff16565b61294190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b8f858961215c90919063ffffffff16565b90506000612ba6868961215c90919063ffffffff16565b90506000612bbd878961215c90919063ffffffff16565b90506000612be682612bd8858761294190919063ffffffff16565b61294190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c39578082015181840152602081019050612c1e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6182612bff565b612c6b8185612c0a565b9350612c7b818560208601612c1b565b612c8481612c45565b840191505092915050565b60006020820190508181036000830152612ca98184612c56565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cf082612cc5565b9050919050565b612d0081612ce5565b8114612d0b57600080fd5b50565b600081359050612d1d81612cf7565b92915050565b6000819050919050565b612d3681612d23565b8114612d4157600080fd5b50565b600081359050612d5381612d2d565b92915050565b60008060408385031215612d7057612d6f612cbb565b5b6000612d7e85828601612d0e565b9250506020612d8f85828601612d44565b9150509250929050565b60008115159050919050565b612dae81612d99565b82525050565b6000602082019050612dc96000830184612da5565b92915050565b60008060008060808587031215612de957612de8612cbb565b5b6000612df787828801612d44565b9450506020612e0887828801612d44565b9350506040612e1987828801612d44565b9250506060612e2a87828801612d44565b91505092959194509250565b612e3f81612d23565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e9d82612c45565b810181811067ffffffffffffffff82111715612ebc57612ebb612e65565b5b80604052505050565b6000612ecf612cb1565b9050612edb8282612e94565b919050565b600067ffffffffffffffff821115612efb57612efa612e65565b5b602082029050602081019050919050565b600080fd5b6000612f24612f1f84612ee0565b612ec5565b90508083825260208201905060208402830185811115612f4757612f46612f0c565b5b835b81811015612f705780612f5c8882612d0e565b845260208401935050602081019050612f49565b5050509392505050565b600082601f830112612f8f57612f8e612e60565b5b8135612f9f848260208601612f11565b91505092915050565b600060208284031215612fbe57612fbd612cbb565b5b600082013567ffffffffffffffff811115612fdc57612fdb612cc0565b5b612fe884828501612f7a565b91505092915050565b60008060006060848603121561300a57613009612cbb565b5b600061301886828701612d0e565b935050602061302986828701612d0e565b925050604061303a86828701612d44565b9150509250925092565b60006020828403121561305a57613059612cbb565b5b600061306884828501612d0e565b91505092915050565b600060ff82169050919050565b61308781613071565b82525050565b60006020820190506130a2600083018461307e565b92915050565b6000602082840312156130be576130bd612cbb565b5b60006130cc84828501612d44565b91505092915050565b6130de81612d99565b81146130e957600080fd5b50565b6000813590506130fb816130d5565b92915050565b60006020828403121561311757613116612cbb565b5b6000613125848285016130ec565b91505092915050565b60006080820190506131436000830187612e36565b6131506020830186612e36565b61315d6040830185612e36565b61316a6060830184612e36565b95945050505050565b61317c81612ce5565b82525050565b60006020820190506131976000830184613173565b92915050565b600080604083850312156131b4576131b3612cbb565b5b60006131c285828601612d0e565b92505060206131d385828601612d0e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613213602083612c0a565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061328382612d23565b915061328e83612d23565b92508282019050808211156132a6576132a5613249565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006132e682612d23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361331857613317613249565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613359601583612c0a565b915061336482613323565b602082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b60008151905061339e81612cf7565b92915050565b6000602082840312156133ba576133b9612cbb565b5b60006133c88482850161338f565b91505092915050565b60006040820190506133e66000830185613173565b6133f36020830184613173565b9392505050565b6000819050919050565b6000819050919050565b600061342961342461341f846133fa565b613404565b612d23565b9050919050565b6134398161340e565b82525050565b600060c0820190506134546000830189613173565b6134616020830188612e36565b61346e6040830187613430565b61347b6060830186613430565b6134886080830185613173565b61349560a0830184612e36565b979650505050505050565b6000815190506134af81612d2d565b92915050565b6000806000606084860312156134ce576134cd612cbb565b5b60006134dc868287016134a0565b93505060206134ed868287016134a0565b92505060406134fe868287016134a0565b9150509250925092565b600060408201905061351d6000830185613173565b61352a6020830184612e36565b9392505050565b600081519050613540816130d5565b92915050565b60006020828403121561355c5761355b612cbb565b5b600061356a84828501613531565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135cf602483612c0a565b91506135da82613573565b604082019050919050565b600060208201905081810360008301526135fe816135c2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613661602283612c0a565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b60006136cd601683612c0a565b91506136d882613697565b602082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613739601983612c0a565b915061374482613703565b602082019050919050565b600060208201905081810360008301526137688161372c565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006137a5601483612c0a565b91506137b08261376f565b602082019050919050565b600060208201905081810360008301526137d481613798565b9050919050565b60006137e682612d23565b91506137f183612d23565b925082820390508181111561380957613808613249565b5b92915050565b600061381a82612d23565b915061382583612d23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561385e5761385d613249565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138a382612d23565b91506138ae83612d23565b9250826138be576138bd613869565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613925602183612c0a565b9150613930826138c9565b604082019050919050565b6000602082019050818103600083015261395481613918565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b7602a83612c0a565b91506139c28261395b565b604082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a2281612ce5565b82525050565b6000613a348383613a19565b60208301905092915050565b6000602082019050919050565b6000613a58826139ed565b613a6281856139f8565b9350613a6d83613a09565b8060005b83811015613a9e578151613a858882613a28565b9750613a9083613a40565b925050600181019050613a71565b5085935050505092915050565b600060a082019050613ac06000830188612e36565b613acd6020830187613430565b8181036040830152613adf8186613a4d565b9050613aee6060830185613173565b613afb6080830184612e36565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b3b601b83612c0a565b9150613b4682613b05565b602082019050919050565b60006020820190508181036000830152613b6a81613b2e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122070069ac894025d4c282f9cf1fbc20a869fe484d0e1464139259e92620d6ab5fc64736f6c63430008100033

Deployed Bytecode Sourcemap

3963:12436:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10804:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6383:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12697:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7127:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13005:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6292:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11540:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7448:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11194:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14341:153;;;;;;;;;;;;;:::i;:::-;;6486:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3042:148;;;;;;;;;;;;;:::i;:::-;;10621:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;10495:118;;;;;;;;;;;;;:::i;:::-;;2828:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6197:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6632:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14175:154;;;;;;;;;;;;;:::i;:::-;;11779:906;;;;;;;;;;;;;:::i;:::-;;6807:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6106:83;6143:13;6176:5;;;;;;;;;;;;;;;;;6169:12;;6106:83;:::o;6958:161::-;7033:4;7050:39;7059:12;:10;:12::i;:::-;7073:7;7082:6;7050:8;:39::i;:::-;7107:4;7100:11;;6958:161;;;;:::o;10804:382::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10953:18:::1;;10942:7;10932;:17;;;;:::i;:::-;:39;;10924:48;;;::::0;::::1;;11014:19;;11002:8;10991;:19;;;;:::i;:::-;:42;;10983:51;;;::::0;::::1;;11062:7;11045:6;:14;;:24;;;;11097:7;11080:6;:14;;:24;;;;11133:8;11115:6;:15;;:26;;;;11170:8;11152:6;:15;;:26;;;;10804:382:::0;;;;:::o;6383:95::-;6436:7;4518:19;6456:14;;6383:95;:::o;12697:296::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12770:6:::1;12765:221;12786:5;:12;12782:1;:16;12765:221;;;12844:4;12824:25;;:5;12830:1;12824:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;12865:13;;;;;;;;;;;12853:25;;:5;12859:1;12853:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;12824:54;:94;;;;;12902:15;;;;;;;;;;;12882:36;;:5;12888:1;12882:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;12824:94;12820:155;;;12955:4;12938;:14;12943:5;12949:1;12943:8;;;;;;;;:::i;:::-;;;;;;;;12938:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12820:155;12800:3;;;;;:::i;:::-;;;;12765:221;;;;12697:296:::0;:::o;7127:313::-;7225:4;7242:36;7252:6;7260:9;7271:6;7242:9;:36::i;:::-;7289:121;7298:6;7306:12;:10;:12::i;:::-;7320:89;7358:6;7320:89;;;;;;;;;;;;;;;;;:11;:19;7332:6;7320:19;;;;;;;;;;;;;;;:33;7340:12;:10;:12::i;:::-;7320:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7289:8;:121::i;:::-;7428:4;7421:11;;7127:313;;;;;:::o;13005:88::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13080:5:::1;13065:4;:12;13070:6;13065:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13005:88:::0;:::o;6292:83::-;6333:5;5193:1;6351:16;;6292:83;:::o;11540:117::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11620:2:::1;11614:4;:8;;11606:17;;;::::0;::::1;;11645:4;11634:8;:15;;;;11540:117:::0;:::o;7448:103::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7538:5:::1;7520:15;;:23;;;;;;;;;;;;;;;;;;7448:103:::0;:::o;11194:163::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11289:1:::1;11278:10;:12;11270:21;;;::::0;::::1;;11317:32;11345:3;11317:23;11329:10;4518:19;11317:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11302:12;:47;;;;11194:163:::0;:::o;14341:153::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14393:26:::1;14422:21;14393:50;;14454:32;14467:18;14454:12;:32::i;:::-;14382:112;14341:153::o:0;6486:138::-;6552:7;6579:37;6599:7;:16;6607:7;6599:16;;;;;;;;;;;;;;;;6579:19;:37::i;:::-;6572:44;;6486:138;;;:::o;3042:148::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3149:1:::1;3112:40;;3133:6;::::0;::::1;;;;;;;;3112:40;;;;;;;;;;;;3180:1;3163:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3042:148::o:0;10621:175::-;10668:7;10677;10686;10695;10723:6;:14;;;10739:6;:14;;;10755:6;:15;;;10772:6;:15;;;10715:73;;;;;;;;10621:175;;;;:::o;10495:118::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4518:19:::1;10548:12;:22;;;;4518:19;10581:14;:24;;;;10495:118::o:0;2828:79::-;2866:7;2893:6;;;;;;;;;;;2886:13;;2828:79;:::o;6197:87::-;6236:13;6269:7;;;;;;;;;;;;;;;;;6262:14;;6197:87;:::o;6632:167::-;6710:4;6727:42;6737:12;:10;:12::i;:::-;6751:9;6762:6;6727:9;:42::i;:::-;6787:4;6780:11;;6632:167;;;;:::o;11365:::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11462:1:::1;11451:10;:12;11443:21;;;::::0;::::1;;11492:32;11520:3;11492:23;11504:10;4518:19;11492:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11475:14;:49;;;;11365:167:::0;:::o;14175:154::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14227:23:::1;14253:24;14271:4;14253:9;:24::i;:::-;14227:50;;14288:33;14305:15;14288:16;:33::i;:::-;14216:113;14175:154::o:0;11779:906::-;2965:12;:10;:12::i;:::-;2955:22;;:6;;;;;;;;;;:22;;;2947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:11:::1;::::0;::::1;;;;;;;;11842:12;11834:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11891:35;11948:42;11891:100;;12020:16;12002:15;;:34;;;;;;;;;;;;;;;;;;12047:58;12064:4;12079:15;;;;;;;;;;;4518:19;12047:8;:58::i;:::-;12150:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12132:56;;;12197:4;12204:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12132:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12116:13;;:112;;;;;;;;;;;;;;;;;;12239:15;;;;;;;;;;;:31;;;12278:21;12309:4;12315:24;12333:4;12315:9;:24::i;:::-;12340:1;12342::::0;12344:7:::1;:5;:7::i;:::-;12352:15;12239:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12393:4;12379:11;;:18;;;;;;;;;;;;;;;;;;12426:4;12408:15;;:22;;;;;;;;;;;;;;;;;;12456:23;12475:3;12456:14;12468:1;4518:19;12456:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12441:12;:38;;;;12507:23;12526:3;12507:14;12519:1;4518:19;12507:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12490:14;:40;;;;12555:4;12541:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12583:12;12570:10;:25;;;;12613:13;;;;;;;;;;;12606:29;;;12644:15;;;;;;;;;;;12662:14;12606:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11823:862;11779:906::o:0;6807:143::-;6888:7;6915:11;:18;6927:5;6915:18;;;;;;;;;;;;;;;:27;6934:7;6915:27;;;;;;;;;;;;;;;;6908:34;;6807:143;;;;:::o;546:98::-;599:7;626:10;619:17;;546:98;:::o;7821:335::-;7931:1;7914:19;;:5;:19;;;7906:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8012:1;7993:21;;:7;:21;;;7985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8094:6;8064:11;:18;8076:5;8064:18;;;;;;;;;;;;;;;:27;8083:7;8064:27;;;;;;;;;;;;;;;:36;;;;8132:7;8116:32;;8125:5;8116:32;;;8141:6;8116:32;;;;;;:::i;:::-;;;;;;;;7821:335;;;:::o;8164:1827::-;8261:1;8252:6;:10;8244:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8314:7;:5;:7::i;:::-;8306:15;;:4;:15;;;;:32;;;;;8331:7;:5;:7::i;:::-;8325:13;;:2;:13;;;;8306:32;8302:1639;;;8362:12;8369:4;8362:6;:12::i;:::-;8357:462;;8421:1;8399:7;:18;8407:9;8399:18;;;;;;;;;;;;;;;;:23;;:99;;;;;8482:15;8470:7;8448;:18;8456:9;8448:18;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;:49;;8399:99;8395:237;;;8542:2;8524:6;:15;;:20;;;;8395:237;;;8611:1;8593:6;:15;;:19;;;;8395:237;8357:462;;;8691:1;8676:7;:11;8684:2;8676:11;;;;;;;;;;;;;;;;:16;8672:94;;8731:15;8717:7;:11;8725:2;8717:11;;;;;;;;;;;;;;;:29;;;;8672:94;8802:1;8784:6;:15;;:19;;;;8357:462;8847:13;;;;;;;;;;;8839:21;;:4;:21;;;:55;;;;;8878:15;;;;;;;;;;;8864:30;;:2;:30;;;;8839:55;:83;;;;;8900:18;:22;8919:2;8900:22;;;;;;;;;;;;;;;;;;;;;;;;;8898:24;8839:83;:102;;;;;8926:15;;;;;;;;;;;8839:102;8835:319;;;9004:12;;8994:6;:22;;8986:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9099:14;;9089:6;9073:13;9083:2;9073:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9065:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8835:319;9190:15;;;;;;;;;;;9174:32;;:4;:32;;;;:62;;;;;9212:18;:24;9231:4;9212:24;;;;;;;;;;;;;;;;;;;;;;;;;9210:26;9174:62;:85;;;;;9246:13;;;;;;;;;;;9240:19;;:2;:19;;;9174:85;9170:158;;;9288:4;:10;9293:4;9288:10;;;;;;;;;;;;;;;;;;;;;;;;;9287:11;:24;;;;;9303:4;:8;9308:2;9303:8;;;;;;;;;;;;;;;;;;;;;;;;;9302:9;9287:24;9279:33;;;;;;9170:158;9344:28;9375:24;9393:4;9375:9;:24::i;:::-;9344:55;;9440:47;9483:3;9440:38;9469:8;;9440:24;9450:13;;;;;;;;;;;9440:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9417:20;:70;9414:180;;;9531:47;9574:3;9531:38;9560:8;;9531:24;9541:13;;;;;;;;;;;9531:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9508:70;;9414:180;9615:6;;;;;;;;;;;9614:7;:32;;;;;9633:13;;;;;;;;;;;9625:21;;:4;:21;;;;9614:32;:47;;;;;9650:11;;;;;;;;;;;9614:47;9610:320;;;9684:38;9701:20;9684:16;:38::i;:::-;9741:26;9770:21;9741:50;;9834:1;9813:18;:22;9810:105;;;9860:35;9873:21;9860:12;:35::i;:::-;9810:105;9663:267;9610:320;8340:1601;8302:1639;9953:30;9968:4;9973:2;9976:6;9953:14;:30::i;:::-;8164:1827;;;:::o;1683:190::-;1769:7;1802:1;1797;:6;;1805:12;1789:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1829:9;1845:1;1841;:5;;;;:::i;:::-;1829:17;;1864:1;1857:8;;;1683:190;;;;;:::o;1881:246::-;1939:7;1968:1;1963;:6;1959:47;;1993:1;1986:8;;;;1959:47;2016:9;2032:1;2028;:5;;;;:::i;:::-;2016:17;;2061:1;2056;2052;:5;;;;:::i;:::-;:10;2044:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2118:1;2111:8;;;1881:246;;;;;:::o;2135:132::-;2193:7;2220:39;2224:1;2227;2220:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2213:46;;2135:132;;;;:::o;11673:96::-;11730:14;;;;;;;;;;;:23;;:31;11754:6;11730:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11673:96;:::o;7559:254::-;7626:7;7665;;7654;:18;;7646:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7730:19;7753:10;:8;:10::i;:::-;7730:33;;7781:24;7793:11;7781:7;:11;;:24;;;;:::i;:::-;7774:31;;;7559:254;;;:::o;9999:488::-;5690:4;5681:6;;:13;;;;;;;;;;;;;;;;;;10077:21:::1;10115:1;10101:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10077:40;;10146:4;10128;10133:1;10128:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10172:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10162:4;10167:1;10162:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10205:62;10222:4;10237:15;;;;;;;;;;;10255:11;10205:8;:62::i;:::-;10278:15;;;;;;;;;;;:66;;;10359:11;10385:1;10401:4;10428;10466:2;10448:15;:20;;;;:::i;:::-;10278:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10066:421;5726:5:::0;5717:6;;:14;;;;;;;;;;;;;;;;;;9999:488;:::o;15847:111::-;15902:4;15937:13;;;;;;;;;;;15926:24;;:7;:24;;;15919:31;;15847:111;;;:::o;13109:146::-;13203:44;13221:6;13229:9;13240:6;13203:17;:44::i;:::-;13109:146;;;:::o;2275:189::-;2361:7;2393:1;2389;:5;2396:12;2381:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2420:9;2436:1;2432;:5;;;;:::i;:::-;2420:17;;2455:1;2448:8;;;2275:189;;;;;:::o;15963:163::-;16004:7;16025:15;16042;16061:19;:17;:19::i;:::-;16024:56;;;;16098:20;16110:7;16098;:11;;:20;;;;:::i;:::-;16091:27;;;;15963:163;:::o;13263:488::-;13362:15;13379:23;13404:12;13418:23;13443:12;13457:13;13474:19;13485:7;13474:10;:19::i;:::-;13361:132;;;;;;;;;;;;13522:28;13542:7;13522;:15;13530:6;13522:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13504:7;:15;13512:6;13504:15;;;;;;;;;;;;;;;:46;;;;13582:39;13605:15;13582:7;:18;13590:9;13582:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13561:7;:18;13569:9;13561:18;;;;;;;;;;;;;;;:60;;;;13633:16;13643:5;13633:9;:16::i;:::-;13660:23;13672:4;13678;13660:11;:23::i;:::-;13716:9;13699:44;;13708:6;13699:44;;;13727:15;13699:44;;;;;;:::i;:::-;;;;;;;;13350:401;;;;;;13263:488;;;:::o;16134:262::-;16184:7;16193;16213:15;16231:7;;16213:25;;16249:15;4518:19;16249:25;;16305:20;4518:19;16305:7;;:11;;:20;;;;:::i;:::-;16295:7;:30;16291:61;;;16335:7;;4518:19;16327:25;;;;;;;;16291:61;16371:7;16380;16363:25;;;;;;16134:262;;;:::o;14502:561::-;14561:7;14570;14579;14588;14597;14606;14627:23;14652:12;14666:13;14683:20;14690:12;:10;:12::i;:::-;14683:6;:20::i;:::-;:132;;14761:54;14773:7;14782:6;:15;;;14799:6;:15;;;14761:11;:54::i;:::-;14683:132;;;14706:52;14718:7;14727:6;:14;;;14743:6;:14;;;14706:11;:52::i;:::-;14683:132;14626:189;;;;;;14826:19;14849:10;:8;:10::i;:::-;14826:33;;14871:15;14888:23;14913:12;14929:46;14941:7;14950:4;14956:5;14963:11;14929;:46::i;:::-;14870:105;;;;;;14994:7;15003:15;15020:4;15026:15;15043:4;15049:5;14986:69;;;;;;;;;;;;;;;;;;;14502:561;;;;;;;:::o;1539:136::-;1597:7;1624:43;1628:1;1631;1624:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1617:50;;1539:136;;;;:::o;1352:179::-;1410:7;1430:9;1446:1;1442;:5;;;;:::i;:::-;1430:17;;1471:1;1466;:6;;1458:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1522:1;1515:8;;;1352:179;;;;:::o;13759:212::-;13812:19;13835:10;:8;:10::i;:::-;13812:33;;13856:13;13872:22;13882:11;13872:5;:9;;:22;;;;:::i;:::-;13856:38;;13930:33;13957:5;13930:7;:22;13946:4;13930:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13905:7;:22;13921:4;13905:22;;;;;;;;;;;;;;;:58;;;;13801:170;;13759:212;:::o;13979:147::-;14057:17;14069:4;14057:7;;:11;;:17;;;;:::i;:::-;14047:7;:27;;;;14098:20;14113:4;14098:10;;:14;;:20;;;;:::i;:::-;14085:10;:33;;;;13979:147;;:::o;15071:351::-;15164:7;15173;15182;15202:12;15217:28;15241:3;15217:19;15229:6;15217:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15202:43;;15256:13;15272:29;15297:3;15272:20;15284:7;15272;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15256:45;;15312:23;15338:28;15360:5;15338:17;15350:4;15338:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15312:54;;15385:15;15402:4;15408:5;15377:37;;;;;;;;;15071:351;;;;;;;:::o;15430:409::-;15540:7;15549;15558;15578:15;15596:24;15608:11;15596:7;:11;;:24;;;;:::i;:::-;15578:42;;15631:12;15646:21;15655:11;15646:4;:8;;:21;;;;:::i;:::-;15631:36;;15678:13;15694:22;15704:11;15694:5;:9;;:22;;;;:::i;:::-;15678:38;;15727:23;15753:28;15775:5;15753:17;15765:4;15753:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15727:54;;15800:7;15809:15;15826:4;15792:39;;;;;;;;;;15430:409;;;;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:765::-;3532:6;3540;3548;3556;3605:3;3593:9;3584:7;3580:23;3576:33;3573:120;;;3612:79;;:::i;:::-;3573:120;3732:1;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3703:117;3859:2;3885:53;3930:7;3921:6;3910:9;3906:22;3885:53;:::i;:::-;3875:63;;3830:118;3987:2;4013:53;4058:7;4049:6;4038:9;4034:22;4013:53;:::i;:::-;4003:63;;3958:118;4115:2;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4086:118;3446:765;;;;;;;:::o;4217:118::-;4304:24;4322:5;4304:24;:::i;:::-;4299:3;4292:37;4217:118;;:::o;4341:222::-;4434:4;4472:2;4461:9;4457:18;4449:26;;4485:71;4553:1;4542:9;4538:17;4529:6;4485:71;:::i;:::-;4341:222;;;;:::o;4569:117::-;4678:1;4675;4668:12;4692:180;4740:77;4737:1;4730:88;4837:4;4834:1;4827:15;4861:4;4858:1;4851:15;4878:281;4961:27;4983:4;4961:27;:::i;:::-;4953:6;4949:40;5091:6;5079:10;5076:22;5055:18;5043:10;5040:34;5037:62;5034:88;;;5102:18;;:::i;:::-;5034:88;5142:10;5138:2;5131:22;4921:238;4878:281;;:::o;5165:129::-;5199:6;5226:20;;:::i;:::-;5216:30;;5255:33;5283:4;5275:6;5255:33;:::i;:::-;5165:129;;;:::o;5300:311::-;5377:4;5467:18;5459:6;5456:30;5453:56;;;5489:18;;:::i;:::-;5453:56;5539:4;5531:6;5527:17;5519:25;;5599:4;5593;5589:15;5581:23;;5300:311;;;:::o;5617:117::-;5726:1;5723;5716:12;5757:710;5853:5;5878:81;5894:64;5951:6;5894:64;:::i;:::-;5878:81;:::i;:::-;5869:90;;5979:5;6008:6;6001:5;5994:21;6042:4;6035:5;6031:16;6024:23;;6095:4;6087:6;6083:17;6075:6;6071:30;6124:3;6116:6;6113:15;6110:122;;;6143:79;;:::i;:::-;6110:122;6258:6;6241:220;6275:6;6270:3;6267:15;6241:220;;;6350:3;6379:37;6412:3;6400:10;6379:37;:::i;:::-;6374:3;6367:50;6446:4;6441:3;6437:14;6430:21;;6317:144;6301:4;6296:3;6292:14;6285:21;;6241:220;;;6245:21;5859:608;;5757:710;;;;;:::o;6490:370::-;6561:5;6610:3;6603:4;6595:6;6591:17;6587:27;6577:122;;6618:79;;:::i;:::-;6577:122;6735:6;6722:20;6760:94;6850:3;6842:6;6835:4;6827:6;6823:17;6760:94;:::i;:::-;6751:103;;6567:293;6490:370;;;;:::o;6866:539::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7153:1;7142:9;7138:17;7125:31;7183:18;7175:6;7172:30;7169:117;;;7205:79;;:::i;:::-;7169:117;7310:78;7380:7;7371:6;7360:9;7356:22;7310:78;:::i;:::-;7300:88;;7096:302;6866:539;;;;:::o;7411:619::-;7488:6;7496;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7934:2;7960:53;8005:7;7996:6;7985:9;7981:22;7960:53;:::i;:::-;7950:63;;7905:118;7411:619;;;;;:::o;8036:329::-;8095:6;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8036:329;;;;:::o;8371:86::-;8406:7;8446:4;8439:5;8435:16;8424:27;;8371:86;;;:::o;8463:112::-;8546:22;8562:5;8546:22;:::i;:::-;8541:3;8534:35;8463:112;;:::o;8581:214::-;8670:4;8708:2;8697:9;8693:18;8685:26;;8721:67;8785:1;8774:9;8770:17;8761:6;8721:67;:::i;:::-;8581:214;;;;:::o;8801:329::-;8860:6;8909:2;8897:9;8888:7;8884:23;8880:32;8877:119;;;8915:79;;:::i;:::-;8877:119;9035:1;9060:53;9105:7;9096:6;9085:9;9081:22;9060:53;:::i;:::-;9050:63;;9006:117;8801:329;;;;:::o;9136:116::-;9206:21;9221:5;9206:21;:::i;:::-;9199:5;9196:32;9186:60;;9242:1;9239;9232:12;9186:60;9136:116;:::o;9258:133::-;9301:5;9339:6;9326:20;9317:29;;9355:30;9379:5;9355:30;:::i;:::-;9258:133;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:553::-;9903:4;9941:3;9930:9;9926:19;9918:27;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;10036:72;10104:2;10093:9;10089:18;10080:6;10036:72;:::i;:::-;10118;10186:2;10175:9;10171:18;10162:6;10118:72;:::i;:::-;10200;10268:2;10257:9;10253:18;10244:6;10200:72;:::i;:::-;9726:553;;;;;;;:::o;10285:118::-;10372:24;10390:5;10372:24;:::i;:::-;10367:3;10360:37;10285:118;;:::o;10409:222::-;10502:4;10540:2;10529:9;10525:18;10517:26;;10553:71;10621:1;10610:9;10606:17;10597:6;10553:71;:::i;:::-;10409:222;;;;:::o;10637:474::-;10705:6;10713;10762:2;10750:9;10741:7;10737:23;10733:32;10730:119;;;10768:79;;:::i;:::-;10730:119;10888:1;10913:53;10958:7;10949:6;10938:9;10934:22;10913:53;:::i;:::-;10903:63;;10859:117;11015:2;11041:53;11086:7;11077:6;11066:9;11062:22;11041:53;:::i;:::-;11031:63;;10986:118;10637:474;;;;;:::o;11117:182::-;11257:34;11253:1;11245:6;11241:14;11234:58;11117:182;:::o;11305:366::-;11447:3;11468:67;11532:2;11527:3;11468:67;:::i;:::-;11461:74;;11544:93;11633:3;11544:93;:::i;:::-;11662:2;11657:3;11653:12;11646:19;;11305:366;;;:::o;11677:419::-;11843:4;11881:2;11870:9;11866:18;11858:26;;11930:9;11924:4;11920:20;11916:1;11905:9;11901:17;11894:47;11958:131;12084:4;11958:131;:::i;:::-;11950:139;;11677:419;;;:::o;12102:180::-;12150:77;12147:1;12140:88;12247:4;12244:1;12237:15;12271:4;12268:1;12261:15;12288:191;12328:3;12347:20;12365:1;12347:20;:::i;:::-;12342:25;;12381:20;12399:1;12381:20;:::i;:::-;12376:25;;12424:1;12421;12417:9;12410:16;;12445:3;12442:1;12439:10;12436:36;;;12452:18;;:::i;:::-;12436:36;12288:191;;;;:::o;12485:180::-;12533:77;12530:1;12523:88;12630:4;12627:1;12620:15;12654:4;12651:1;12644:15;12671:233;12710:3;12733:24;12751:5;12733:24;:::i;:::-;12724:33;;12779:66;12772:5;12769:77;12766:103;;12849:18;;:::i;:::-;12766:103;12896:1;12889:5;12885:13;12878:20;;12671:233;;;:::o;12910:171::-;13050:23;13046:1;13038:6;13034:14;13027:47;12910:171;:::o;13087:366::-;13229:3;13250:67;13314:2;13309:3;13250:67;:::i;:::-;13243:74;;13326:93;13415:3;13326:93;:::i;:::-;13444:2;13439:3;13435:12;13428:19;;13087:366;;;:::o;13459:419::-;13625:4;13663:2;13652:9;13648:18;13640:26;;13712:9;13706:4;13702:20;13698:1;13687:9;13683:17;13676:47;13740:131;13866:4;13740:131;:::i;:::-;13732:139;;13459:419;;;:::o;13884:143::-;13941:5;13972:6;13966:13;13957:22;;13988:33;14015:5;13988:33;:::i;:::-;13884:143;;;;:::o;14033:351::-;14103:6;14152:2;14140:9;14131:7;14127:23;14123:32;14120:119;;;14158:79;;:::i;:::-;14120:119;14278:1;14303:64;14359:7;14350:6;14339:9;14335:22;14303:64;:::i;:::-;14293:74;;14249:128;14033:351;;;;:::o;14390:332::-;14511:4;14549:2;14538:9;14534:18;14526:26;;14562:71;14630:1;14619:9;14615:17;14606:6;14562:71;:::i;:::-;14643:72;14711:2;14700:9;14696:18;14687:6;14643:72;:::i;:::-;14390:332;;;;;:::o;14728:85::-;14773:7;14802:5;14791:16;;14728:85;;;:::o;14819:60::-;14847:3;14868:5;14861:12;;14819:60;;;:::o;14885:158::-;14943:9;14976:61;14994:42;15003:32;15029:5;15003:32;:::i;:::-;14994:42;:::i;:::-;14976:61;:::i;:::-;14963:74;;14885:158;;;:::o;15049:147::-;15144:45;15183:5;15144:45;:::i;:::-;15139:3;15132:58;15049:147;;:::o;15202:807::-;15451:4;15489:3;15478:9;15474:19;15466:27;;15503:71;15571:1;15560:9;15556:17;15547:6;15503:71;:::i;:::-;15584:72;15652:2;15641:9;15637:18;15628:6;15584:72;:::i;:::-;15666:80;15742:2;15731:9;15727:18;15718:6;15666:80;:::i;:::-;15756;15832:2;15821:9;15817:18;15808:6;15756:80;:::i;:::-;15846:73;15914:3;15903:9;15899:19;15890:6;15846:73;:::i;:::-;15929;15997:3;15986:9;15982:19;15973:6;15929:73;:::i;:::-;15202:807;;;;;;;;;:::o;16015:143::-;16072:5;16103:6;16097:13;16088:22;;16119:33;16146:5;16119:33;:::i;:::-;16015:143;;;;:::o;16164:663::-;16252:6;16260;16268;16317:2;16305:9;16296:7;16292:23;16288:32;16285:119;;;16323:79;;:::i;:::-;16285:119;16443:1;16468:64;16524:7;16515:6;16504:9;16500:22;16468:64;:::i;:::-;16458:74;;16414:128;16581:2;16607:64;16663:7;16654:6;16643:9;16639:22;16607:64;:::i;:::-;16597:74;;16552:129;16720:2;16746:64;16802:7;16793:6;16782:9;16778:22;16746:64;:::i;:::-;16736:74;;16691:129;16164:663;;;;;:::o;16833:332::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17005:71;17073:1;17062:9;17058:17;17049:6;17005:71;:::i;:::-;17086:72;17154:2;17143:9;17139:18;17130:6;17086:72;:::i;:::-;16833:332;;;;;:::o;17171:137::-;17225:5;17256:6;17250:13;17241:22;;17272:30;17296:5;17272:30;:::i;:::-;17171:137;;;;:::o;17314:345::-;17381:6;17430:2;17418:9;17409:7;17405:23;17401:32;17398:119;;;17436:79;;:::i;:::-;17398:119;17556:1;17581:61;17634:7;17625:6;17614:9;17610:22;17581:61;:::i;:::-;17571:71;;17527:125;17314:345;;;;:::o;17665:223::-;17805:34;17801:1;17793:6;17789:14;17782:58;17874:6;17869:2;17861:6;17857:15;17850:31;17665:223;:::o;17894:366::-;18036:3;18057:67;18121:2;18116:3;18057:67;:::i;:::-;18050:74;;18133:93;18222:3;18133:93;:::i;:::-;18251:2;18246:3;18242:12;18235:19;;17894:366;;;:::o;18266:419::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:221::-;18831:34;18827:1;18819:6;18815:14;18808:58;18900:4;18895:2;18887:6;18883:15;18876:29;18691:221;:::o;18918:366::-;19060:3;19081:67;19145:2;19140:3;19081:67;:::i;:::-;19074:74;;19157:93;19246:3;19157:93;:::i;:::-;19275:2;19270:3;19266:12;19259:19;;18918:366;;;:::o;19290:419::-;19456:4;19494:2;19483:9;19479:18;19471:26;;19543:9;19537:4;19533:20;19529:1;19518:9;19514:17;19507:47;19571:131;19697:4;19571:131;:::i;:::-;19563:139;;19290:419;;;:::o;19715:172::-;19855:24;19851:1;19843:6;19839:14;19832:48;19715:172;:::o;19893:366::-;20035:3;20056:67;20120:2;20115:3;20056:67;:::i;:::-;20049:74;;20132:93;20221:3;20132:93;:::i;:::-;20250:2;20245:3;20241:12;20234:19;;19893:366;;;:::o;20265:419::-;20431:4;20469:2;20458:9;20454:18;20446:26;;20518:9;20512:4;20508:20;20504:1;20493:9;20489:17;20482:47;20546:131;20672:4;20546:131;:::i;:::-;20538:139;;20265:419;;;:::o;20690:175::-;20830:27;20826:1;20818:6;20814:14;20807:51;20690:175;:::o;20871:366::-;21013:3;21034:67;21098:2;21093:3;21034:67;:::i;:::-;21027:74;;21110:93;21199:3;21110:93;:::i;:::-;21228:2;21223:3;21219:12;21212:19;;20871:366;;;:::o;21243:419::-;21409:4;21447:2;21436:9;21432:18;21424:26;;21496:9;21490:4;21486:20;21482:1;21471:9;21467:17;21460:47;21524:131;21650:4;21524:131;:::i;:::-;21516:139;;21243:419;;;:::o;21668:170::-;21808:22;21804:1;21796:6;21792:14;21785:46;21668:170;:::o;21844:366::-;21986:3;22007:67;22071:2;22066:3;22007:67;:::i;:::-;22000:74;;22083:93;22172:3;22083:93;:::i;:::-;22201:2;22196:3;22192:12;22185:19;;21844:366;;;:::o;22216:419::-;22382:4;22420:2;22409:9;22405:18;22397:26;;22469:9;22463:4;22459:20;22455:1;22444:9;22440:17;22433:47;22497:131;22623:4;22497:131;:::i;:::-;22489:139;;22216:419;;;:::o;22641:194::-;22681:4;22701:20;22719:1;22701:20;:::i;:::-;22696:25;;22735:20;22753:1;22735:20;:::i;:::-;22730:25;;22779:1;22776;22772:9;22764:17;;22803:1;22797:4;22794:11;22791:37;;;22808:18;;:::i;:::-;22791:37;22641:194;;;;:::o;22841:348::-;22881:7;22904:20;22922:1;22904:20;:::i;:::-;22899:25;;22938:20;22956:1;22938:20;:::i;:::-;22933:25;;23126:1;23058:66;23054:74;23051:1;23048:81;23043:1;23036:9;23029:17;23025:105;23022:131;;;23133:18;;:::i;:::-;23022:131;23181:1;23178;23174:9;23163:20;;22841:348;;;;:::o;23195:180::-;23243:77;23240:1;23233:88;23340:4;23337:1;23330:15;23364:4;23361:1;23354:15;23381:185;23421:1;23438:20;23456:1;23438:20;:::i;:::-;23433:25;;23472:20;23490:1;23472:20;:::i;:::-;23467:25;;23511:1;23501:35;;23516:18;;:::i;:::-;23501:35;23558:1;23555;23551:9;23546:14;;23381:185;;;;:::o;23572:220::-;23712:34;23708:1;23700:6;23696:14;23689:58;23781:3;23776:2;23768:6;23764:15;23757:28;23572:220;:::o;23798:366::-;23940:3;23961:67;24025:2;24020:3;23961:67;:::i;:::-;23954:74;;24037:93;24126:3;24037:93;:::i;:::-;24155:2;24150:3;24146:12;24139:19;;23798:366;;;:::o;24170:419::-;24336:4;24374:2;24363:9;24359:18;24351:26;;24423:9;24417:4;24413:20;24409:1;24398:9;24394:17;24387:47;24451:131;24577:4;24451:131;:::i;:::-;24443:139;;24170:419;;;:::o;24595:229::-;24735:34;24731:1;24723:6;24719:14;24712:58;24804:12;24799:2;24791:6;24787:15;24780:37;24595:229;:::o;24830:366::-;24972:3;24993:67;25057:2;25052:3;24993:67;:::i;:::-;24986:74;;25069:93;25158:3;25069:93;:::i;:::-;25187:2;25182:3;25178:12;25171:19;;24830:366;;;:::o;25202:419::-;25368:4;25406:2;25395:9;25391:18;25383:26;;25455:9;25449:4;25445:20;25441:1;25430:9;25426:17;25419:47;25483:131;25609:4;25483:131;:::i;:::-;25475:139;;25202:419;;;:::o;25627:114::-;25694:6;25728:5;25722:12;25712:22;;25627:114;;;:::o;25747:184::-;25846:11;25880:6;25875:3;25868:19;25920:4;25915:3;25911:14;25896:29;;25747:184;;;;:::o;25937:132::-;26004:4;26027:3;26019:11;;26057:4;26052:3;26048:14;26040:22;;25937:132;;;:::o;26075:108::-;26152:24;26170:5;26152:24;:::i;:::-;26147:3;26140:37;26075:108;;:::o;26189:179::-;26258:10;26279:46;26321:3;26313:6;26279:46;:::i;:::-;26357:4;26352:3;26348:14;26334:28;;26189:179;;;;:::o;26374:113::-;26444:4;26476;26471:3;26467:14;26459:22;;26374:113;;;:::o;26523:732::-;26642:3;26671:54;26719:5;26671:54;:::i;:::-;26741:86;26820:6;26815:3;26741:86;:::i;:::-;26734:93;;26851:56;26901:5;26851:56;:::i;:::-;26930:7;26961:1;26946:284;26971:6;26968:1;26965:13;26946:284;;;27047:6;27041:13;27074:63;27133:3;27118:13;27074:63;:::i;:::-;27067:70;;27160:60;27213:6;27160:60;:::i;:::-;27150:70;;27006:224;26993:1;26990;26986:9;26981:14;;26946:284;;;26950:14;27246:3;27239:10;;26647:608;;;26523:732;;;;:::o;27261:831::-;27524:4;27562:3;27551:9;27547:19;27539:27;;27576:71;27644:1;27633:9;27629:17;27620:6;27576:71;:::i;:::-;27657:80;27733:2;27722:9;27718:18;27709:6;27657:80;:::i;:::-;27784:9;27778:4;27774:20;27769:2;27758:9;27754:18;27747:48;27812:108;27915:4;27906:6;27812:108;:::i;:::-;27804:116;;27930:72;27998:2;27987:9;27983:18;27974:6;27930:72;:::i;:::-;28012:73;28080:3;28069:9;28065:19;28056:6;28012:73;:::i;:::-;27261:831;;;;;;;;:::o;28098:177::-;28238:29;28234:1;28226:6;28222:14;28215:53;28098:177;:::o;28281:366::-;28423:3;28444:67;28508:2;28503:3;28444:67;:::i;:::-;28437:74;;28520:93;28609:3;28520:93;:::i;:::-;28638:2;28633:3;28629:12;28622:19;;28281:366;;;:::o;28653:419::-;28819:4;28857:2;28846:9;28842:18;28834:26;;28906:9;28900:4;28896:20;28892:1;28881:9;28877:17;28870:47;28934:131;29060:4;28934:131;:::i;:::-;28926:139;;28653:419;;;:::o

Swarm Source

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