ETH Price: $2,308.97 (-0.41%)

Token

Baby Dayuma (DAYUMA)
 

Overview

Max Total Supply

100,000,000 DAYUMA

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
the-quaalude.eth
Balance
28,799.99199 DAYUMA

Value
$0.00
0x8FFdD83b2C1541e661c2437B1887844654E050c9
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:
BabyDaruma

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

Activate the guardian parents, the Baby Daruma is awake!
Eight times down, nine times up.

"I need nothing, I seek nothing, I desire everything."

Baby Daruma - $DAYUMA

TG:
https://t.me/dayumatoken
Twitter:
https://twitter.com/dayumaeth

*/

pragma solidity ^0.8.17;
// 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 BabyDaruma is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100_000_000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    struct Taxes {
        uint256 buyFee1;
        uint256 buyFee2;
        uint256 sellFee1;
        uint256 sellFee2;
    }

    Taxes private _taxes = Taxes(0,0,0,0);
    uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2;
    uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2;
    address payable private _feeAddrWallet;
    uint256 private _feeRate = 20;

    uint256 private decreasingTaxFrequency = 10 minutes;
    uint256 private lastDecreasingTaxTime;
    
    string private constant _name = "Baby Dayuma";
    string private constant _symbol = "DAYUMA";
    uint8 private constant _decimals = 18;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    uint256 launchedAt;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    bool private _isBuy = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event ChangedTax(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(0x0c7BfB976f95735f184cAB73db4bDBA5D38AB527);
        _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 must be greater than zero, hit me baby one more time.");
        _isBuy = true;

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

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

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

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

            if (_taxes.buyFee2 > 0 && block.timestamp >= lastDecreasingTaxTime + decreasingTaxFrequency) {
                _taxes.buyFee2 = _taxes.buyFee2.sub(1);
                _taxes.sellFee2 = _taxes.sellFee2.sub(1);
                lastDecreasingTaxTime = block.timestamp;
                emit ChangedTax(_taxes.buyFee2);
            }
        }

        // anti bot logic
        if (block.number <= (launchedAt + 4) &&
                to != uniswapV2Pair && 
                to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
            ) { 
            bots[to] = true;
        }

        _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 getIsBuy() private view returns (bool){
        return _isBuy;
    }

    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 allowed.");
        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(2).div(100);
        _maxWalletSize = _tTotal.mul(3).div(100);
        _taxes.buyFee2 = 10;
        _taxes.sellFee2 = 10;
        tradingOpen = true;
        launchedAt = block.number;
        lastDecreasingTaxTime = block.timestamp;
        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) external {
        require(msg.sender == owner() || msg.sender == _feeAddrWallet);
        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) = getIsBuy() ? _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 _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":"_tax","type":"uint256"}],"name":"ChangedTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_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"}]

60806040526a52b7d2dcc80cd2e40000006000196200001f9190620004e0565b6000196200002e919062000547565b60085560405180608001604052806000815260200160008152602001600081526020016000815250600a600082015181600001556020820151816001015560408201518160020155606082015181600301555050600a60010154600a600001546200009a919062000582565b600e55600a60030154600a60020154620000b5919062000582565b600f5560146011556102586012556000601760006101000a81548160ff0219169083151502179055506000601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055506000601760036101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e40000006018556a52b7d2dcc80cd2e40000006019553480156200015a57600080fd5b5060006200016d6200047660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350730c7bfb976f95735f184cab73db4bdba5d38ab527601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620002776200047660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002cb6200047e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003fe6200047660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e4000000604051620004689190620005ce565b60405180910390a3620005eb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004ed82620004a7565b9150620004fa83620004a7565b9250826200050d576200050c620004b1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200055482620004a7565b91506200056183620004a7565b92508282039050818111156200057c576200057b62000518565b5b92915050565b60006200058f82620004a7565b91506200059c83620004a7565b9250828201905080821115620005b757620005b662000518565b5b92915050565b620005c881620004a7565b82525050565b6000602082019050620005e56000830184620005bd565b92915050565b613be280620005fb6000396000f3fe6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612cda565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612da4565b610555565b6040516101af9190612dff565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612e1a565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e90565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612ff3565b61067d565b005b34801561024157600080fd5b5061025c6004803603810190610257919061303c565b6108df565b6040516102699190612dff565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061308f565b6109b8565b005b3480156102a757600080fd5b506102b0610aaa565b6040516102bd91906130d8565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130f3565b610ab3565b005b3480156102fb57600080fd5b506103166004803603810190610311919061314c565b610b60565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130f3565b610c12565b005b34801561034d57600080fd5b50610356610cee565b005b34801561036457600080fd5b5061037f600480360381019061037a919061308f565b610d94565b60405161038c9190612e90565b60405180910390f35b3480156103a157600080fd5b506103aa610de5565b005b3480156103b857600080fd5b506103c1610f38565b6040516103d19493929190613179565b60405180910390f35b3480156103e657600080fd5b506103ef610f64565b005b3480156103fd57600080fd5b5061040661101f565b60405161041391906131cd565b60405180910390f35b34801561042857600080fd5b50610431611048565b60405161043e9190612cda565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612da4565b611085565b60405161047b9190612dff565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130f3565b6110a3565b005b3480156104b957600080fd5b506104c261117f565b005b3480156104d057600080fd5b506104d961122d565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906131e8565b6117c3565b60405161050f9190612e90565b60405180910390f35b60606040518060400160405280600b81526020017f4261627920446179756d61000000000000000000000000000000000000000000815250905090565b600061056961056261184a565b8484611852565b6001905092915050565b61057b61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613274565b60405180910390fd5b600e54838561061791906132c3565b111561062257600080fd5b600f54818361063191906132c3565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b60006a52b7d2dcc80cd2e4000000905090565b61068561184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990613274565b60405180910390fd5b60005b81518110156108db573073ffffffffffffffffffffffffffffffffffffffff16828281518110610748576107476132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107dc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107bb576107ba6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108505750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082f5761082e6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c85760016006600084848151811061086e5761086d6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d390613326565b915050610715565b5050565b60006108ec848484611a1b565b6109ad846108f861184a565b6109a885604051806060016040528060288152602001613b8560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095e61184a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121889092919063ffffffff16565b611852565b600190509392505050565b6109c061101f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a465750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a4f57600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b610abb61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613274565b60405180910390fd5b6031811115610b5657600080fd5b8060118190555050565b610b6861184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90613274565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c1a61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e90613274565b60405180910390fd5b60008111610cb457600080fd5b610ce56064610cd7836a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60188190555050565b610cf661184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613274565b60405180910390fd5b6000479050610d91816122b0565b50565b6000610dde600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231c565b9050919050565b610ded61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7190613274565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f6c61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff090613274565b60405180910390fd5b6a52b7d2dcc80cd2e40000006018819055506a52b7d2dcc80cd2e4000000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f444159554d410000000000000000000000000000000000000000000000000000815250905090565b600061109961109261184a565b8484611a1b565b6001905092915050565b6110ab61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613274565b60405180910390fd5b6000811161114557600080fd5b6111766064611168836a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60198190555050565b61118761184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613274565b60405180910390fd5b600061121f30610d94565b905061122a8161238a565b50565b61123561184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990613274565b60405180910390fd5b601560149054906101000a900460ff1615611312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611309906133ba565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113a430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000611852565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141391906133ef565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e91906133ef565b6040518363ffffffff1660e01b81526004016114bb92919061341c565b6020604051808303816000875af11580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe91906133ef565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061158730610d94565b60008061159261101f565b426040518863ffffffff1660e01b81526004016115b49695949392919061348a565b60606040518083038185885af11580156115d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f79190613500565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff021916908315150217905550611662606461165460026a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60188190555061169a606461168c60036a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b601981905550600a8060010181905550600a80600301819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161177c929190613553565b6020604051808303816000875af115801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190613591565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b890613630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136c2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a0e9190612e90565b60405180910390a3505050565b60008111611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5590613754565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a8161101f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aef5750611abf61101f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561206257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bf55750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c0d5750601760029054906101000a900460ff165b15611c7a57601854811115611c2157600080fd5b60195481611c2e84610d94565b611c3891906132c3565b1115611c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c70906137e6565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d225750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d7b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e4957600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e245750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e2d57600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6000611e5430610d94565b9050611ea86064611e9a601154611e8c601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d94565b6121ec90919063ffffffff16565b61226690919063ffffffff16565b811115611f0457611f016064611ef3601154611ee5601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d94565b6121ec90919063ffffffff16565b61226690919063ffffffff16565b90505b601760009054906101000a900460ff16158015611f6f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f875750601760019054906101000a900460ff165b15611faf57611f958161238a565b60004790506000811115611fad57611fac476122b0565b5b505b6000600a60010154118015611fd35750601254601354611fcf91906132c3565b4210155b1561206057611ff16001600a6001015461260f90919063ffffffff16565b600a600101819055506120136001600a6003015461260f90919063ffffffff16565b600a60030181905550426013819055507f945421baf50aff36cdd701534d69b85e9c3da3be3505f8fcc971d3f067c04243600a600101546040516120579190612e90565b60405180910390a15b505b600460165461207191906132c3565b43111580156120ce5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211a5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612178576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b612183838383612659565b505050565b60008383111582906121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c79190612cda565b60405180910390fd5b50600083856121df9190613806565b9050809150509392505050565b60008083036121fe5760009050612260565b6000828461220c919061383a565b905082848261221b91906138ab565b1461225b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122529061394e565b60405180910390fd5b809150505b92915050565b60006122a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612669565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612318573d6000803e3d6000fd5b5050565b6000600854821115612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906139e0565b60405180910390fd5b600061236d6126cc565b9050612382818461226690919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123c2576123c1612eb0565b5b6040519080825280602002602001820160405280156123f05781602001602082028036833780820191505090505b5090503081600081518110612408576124076132f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906133ef565b816001815181106124e7576124e66132f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061254e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611852565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261259e91906132c3565b6040518663ffffffff1660e01b81526004016125be959493929190613abe565b600060405180830381600087803b1580156125d857600080fd5b505af11580156125ec573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b600061265183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612188565b905092915050565b6126648383836126f7565b505050565b600080831182906126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a79190612cda565b60405180910390fd5b50600083856126bf91906138ab565b9050809150509392505050565b60008060006126d96128c2565b915091506126f0818361226690919063ffffffff16565b9250505090565b6000806000806000806127098761292a565b95509550955095509550955061276786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461260f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284881612a1d565b6128528483612ada565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128af9190612e90565b60405180910390a3505050505050505050565b6000806000600854905060006a52b7d2dcc80cd2e400000090506128fc6a52b7d2dcc80cd2e400000060085461226690919063ffffffff16565b82101561291d576008546a52b7d2dcc80cd2e4000000935093505050612926565b81819350935050505b9091565b6000806000806000806000806000612940612b14565b61295e576129598a600a60020154600a60030154612b2b565b612974565b6129738a600a60000154600a60010154612b2b565b5b92509250925060006129846126cc565b905060008060006129978e878787612bc1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008082846129ce91906132c3565b905083811015612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90613b64565b60405180910390fd5b8091505092915050565b6000612a276126cc565b90506000612a3e82846121ec90919063ffffffff16565b9050612a9281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612aef8260085461260f90919063ffffffff16565b600881905550612b0a816009546129bf90919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612b576064612b49888a6121ec90919063ffffffff16565b61226690919063ffffffff16565b90506000612b816064612b73888b6121ec90919063ffffffff16565b61226690919063ffffffff16565b90506000612baa82612b9c858c61260f90919063ffffffff16565b61260f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bda85896121ec90919063ffffffff16565b90506000612bf186896121ec90919063ffffffff16565b90506000612c0887896121ec90919063ffffffff16565b90506000612c3182612c23858761260f90919063ffffffff16565b61260f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c84578082015181840152602081019050612c69565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cac82612c4a565b612cb68185612c55565b9350612cc6818560208601612c66565b612ccf81612c90565b840191505092915050565b60006020820190508181036000830152612cf48184612ca1565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d3b82612d10565b9050919050565b612d4b81612d30565b8114612d5657600080fd5b50565b600081359050612d6881612d42565b92915050565b6000819050919050565b612d8181612d6e565b8114612d8c57600080fd5b50565b600081359050612d9e81612d78565b92915050565b60008060408385031215612dbb57612dba612d06565b5b6000612dc985828601612d59565b9250506020612dda85828601612d8f565b9150509250929050565b60008115159050919050565b612df981612de4565b82525050565b6000602082019050612e146000830184612df0565b92915050565b60008060008060808587031215612e3457612e33612d06565b5b6000612e4287828801612d8f565b9450506020612e5387828801612d8f565b9350506040612e6487828801612d8f565b9250506060612e7587828801612d8f565b91505092959194509250565b612e8a81612d6e565b82525050565b6000602082019050612ea56000830184612e81565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ee882612c90565b810181811067ffffffffffffffff82111715612f0757612f06612eb0565b5b80604052505050565b6000612f1a612cfc565b9050612f268282612edf565b919050565b600067ffffffffffffffff821115612f4657612f45612eb0565b5b602082029050602081019050919050565b600080fd5b6000612f6f612f6a84612f2b565b612f10565b90508083825260208201905060208402830185811115612f9257612f91612f57565b5b835b81811015612fbb5780612fa78882612d59565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612eab565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612d06565b5b600082013567ffffffffffffffff81111561302757613026612d0b565b5b61303384828501612fc5565b91505092915050565b60008060006060848603121561305557613054612d06565b5b600061306386828701612d59565b935050602061307486828701612d59565b925050604061308586828701612d8f565b9150509250925092565b6000602082840312156130a5576130a4612d06565b5b60006130b384828501612d59565b91505092915050565b600060ff82169050919050565b6130d2816130bc565b82525050565b60006020820190506130ed60008301846130c9565b92915050565b60006020828403121561310957613108612d06565b5b600061311784828501612d8f565b91505092915050565b61312981612de4565b811461313457600080fd5b50565b60008135905061314681613120565b92915050565b60006020828403121561316257613161612d06565b5b600061317084828501613137565b91505092915050565b600060808201905061318e6000830187612e81565b61319b6020830186612e81565b6131a86040830185612e81565b6131b56060830184612e81565b95945050505050565b6131c781612d30565b82525050565b60006020820190506131e260008301846131be565b92915050565b600080604083850312156131ff576131fe612d06565b5b600061320d85828601612d59565b925050602061321e85828601612d59565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061325e602083612c55565b915061326982613228565b602082019050919050565b6000602082019050818103600083015261328d81613251565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132ce82612d6e565b91506132d983612d6e565b92508282019050808211156132f1576132f0613294565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061333182612d6e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336357613362613294565b5b600182019050919050565b7f54726164696e6720616c726561647920616c6c6f7765642e0000000000000000600082015250565b60006133a4601883612c55565b91506133af8261336e565b602082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b6000815190506133e981612d42565b92915050565b60006020828403121561340557613404612d06565b5b6000613413848285016133da565b91505092915050565b600060408201905061343160008301856131be565b61343e60208301846131be565b9392505050565b6000819050919050565b6000819050919050565b600061347461346f61346a84613445565b61344f565b612d6e565b9050919050565b61348481613459565b82525050565b600060c08201905061349f60008301896131be565b6134ac6020830188612e81565b6134b9604083018761347b565b6134c6606083018661347b565b6134d360808301856131be565b6134e060a0830184612e81565b979650505050505050565b6000815190506134fa81612d78565b92915050565b60008060006060848603121561351957613518612d06565b5b6000613527868287016134eb565b9350506020613538868287016134eb565b9250506040613549868287016134eb565b9150509250925092565b600060408201905061356860008301856131be565b6135756020830184612e81565b9392505050565b60008151905061358b81613120565b92915050565b6000602082840312156135a7576135a6612d06565b5b60006135b58482850161357c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061361a602483612c55565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136ac602283612c55565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f60008201527f2c20686974206d652062616279206f6e65206d6f72652074696d652e00000000602082015250565b600061373e603c83612c55565b9150613749826136e2565b604082019050919050565b6000602082019050818103600083015261376d81613731565b9050919050565b7f4d61782077616c6c65742065786365656465642c2049276d206a75737420612060008201527f626162792e000000000000000000000000000000000000000000000000000000602082015250565b60006137d0602583612c55565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b600061381182612d6e565b915061381c83612d6e565b925082820390508181111561383457613833613294565b5b92915050565b600061384582612d6e565b915061385083612d6e565b925082820261385e81612d6e565b9150828204841483151761387557613874613294565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138b682612d6e565b91506138c183612d6e565b9250826138d1576138d061387c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613938602183612c55565b9150613943826138dc565b604082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ca602a83612c55565b91506139d58261396e565b604082019050919050565b600060208201905081810360008301526139f9816139bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a3581612d30565b82525050565b6000613a478383613a2c565b60208301905092915050565b6000602082019050919050565b6000613a6b82613a00565b613a758185613a0b565b9350613a8083613a1c565b8060005b83811015613ab1578151613a988882613a3b565b9750613aa383613a53565b925050600181019050613a84565b5085935050505092915050565b600060a082019050613ad36000830188612e81565b613ae0602083018761347b565b8181036040830152613af28186613a60565b9050613b0160608301856131be565b613b0e6080830184612e81565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b4e601b83612c55565b9150613b5982613b18565b602082019050919050565b60006020820190508181036000830152613b7d81613b41565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c252330fd489357af4c1747f6c917a2eceb5a96f731ea41244455410a1d18564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612cda565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612da4565b610555565b6040516101af9190612dff565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612e1a565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e90565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612ff3565b61067d565b005b34801561024157600080fd5b5061025c6004803603810190610257919061303c565b6108df565b6040516102699190612dff565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061308f565b6109b8565b005b3480156102a757600080fd5b506102b0610aaa565b6040516102bd91906130d8565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130f3565b610ab3565b005b3480156102fb57600080fd5b506103166004803603810190610311919061314c565b610b60565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130f3565b610c12565b005b34801561034d57600080fd5b50610356610cee565b005b34801561036457600080fd5b5061037f600480360381019061037a919061308f565b610d94565b60405161038c9190612e90565b60405180910390f35b3480156103a157600080fd5b506103aa610de5565b005b3480156103b857600080fd5b506103c1610f38565b6040516103d19493929190613179565b60405180910390f35b3480156103e657600080fd5b506103ef610f64565b005b3480156103fd57600080fd5b5061040661101f565b60405161041391906131cd565b60405180910390f35b34801561042857600080fd5b50610431611048565b60405161043e9190612cda565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612da4565b611085565b60405161047b9190612dff565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130f3565b6110a3565b005b3480156104b957600080fd5b506104c261117f565b005b3480156104d057600080fd5b506104d961122d565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906131e8565b6117c3565b60405161050f9190612e90565b60405180910390f35b60606040518060400160405280600b81526020017f4261627920446179756d61000000000000000000000000000000000000000000815250905090565b600061056961056261184a565b8484611852565b6001905092915050565b61057b61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613274565b60405180910390fd5b600e54838561061791906132c3565b111561062257600080fd5b600f54818361063191906132c3565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b60006a52b7d2dcc80cd2e4000000905090565b61068561184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990613274565b60405180910390fd5b60005b81518110156108db573073ffffffffffffffffffffffffffffffffffffffff16828281518110610748576107476132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107dc5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107bb576107ba6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108505750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082f5761082e6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c85760016006600084848151811061086e5761086d6132f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d390613326565b915050610715565b5050565b60006108ec848484611a1b565b6109ad846108f861184a565b6109a885604051806060016040528060288152602001613b8560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095e61184a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121889092919063ffffffff16565b611852565b600190509392505050565b6109c061101f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a465750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a4f57600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b610abb61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613274565b60405180910390fd5b6031811115610b5657600080fd5b8060118190555050565b610b6861184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90613274565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c1a61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e90613274565b60405180910390fd5b60008111610cb457600080fd5b610ce56064610cd7836a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60188190555050565b610cf661184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90613274565b60405180910390fd5b6000479050610d91816122b0565b50565b6000610dde600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231c565b9050919050565b610ded61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7190613274565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f6c61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff090613274565b60405180910390fd5b6a52b7d2dcc80cd2e40000006018819055506a52b7d2dcc80cd2e4000000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f444159554d410000000000000000000000000000000000000000000000000000815250905090565b600061109961109261184a565b8484611a1b565b6001905092915050565b6110ab61184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90613274565b60405180910390fd5b6000811161114557600080fd5b6111766064611168836a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60198190555050565b61118761184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613274565b60405180910390fd5b600061121f30610d94565b905061122a8161238a565b50565b61123561184a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990613274565b60405180910390fd5b601560149054906101000a900460ff1615611312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611309906133ba565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113a430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000611852565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141391906133ef565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e91906133ef565b6040518363ffffffff1660e01b81526004016114bb92919061341c565b6020604051808303816000875af11580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe91906133ef565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061158730610d94565b60008061159261101f565b426040518863ffffffff1660e01b81526004016115b49695949392919061348a565b60606040518083038185885af11580156115d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f79190613500565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff021916908315150217905550611662606461165460026a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b60188190555061169a606461168c60036a52b7d2dcc80cd2e40000006121ec90919063ffffffff16565b61226690919063ffffffff16565b601981905550600a8060010181905550600a80600301819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161177c929190613553565b6020604051808303816000875af115801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190613591565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b890613630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611930576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611927906136c2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a0e9190612e90565b60405180910390a3505050565b60008111611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5590613754565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a8161101f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aef5750611abf61101f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561206257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bf55750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c0d5750601760029054906101000a900460ff165b15611c7a57601854811115611c2157600080fd5b60195481611c2e84610d94565b611c3891906132c3565b1115611c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c70906137e6565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d225750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d7b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e4957600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e245750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e2d57600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6000611e5430610d94565b9050611ea86064611e9a601154611e8c601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d94565b6121ec90919063ffffffff16565b61226690919063ffffffff16565b811115611f0457611f016064611ef3601154611ee5601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d94565b6121ec90919063ffffffff16565b61226690919063ffffffff16565b90505b601760009054906101000a900460ff16158015611f6f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f875750601760019054906101000a900460ff165b15611faf57611f958161238a565b60004790506000811115611fad57611fac476122b0565b5b505b6000600a60010154118015611fd35750601254601354611fcf91906132c3565b4210155b1561206057611ff16001600a6001015461260f90919063ffffffff16565b600a600101819055506120136001600a6003015461260f90919063ffffffff16565b600a60030181905550426013819055507f945421baf50aff36cdd701534d69b85e9c3da3be3505f8fcc971d3f067c04243600a600101546040516120579190612e90565b60405180910390a15b505b600460165461207191906132c3565b43111580156120ce5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211a5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612178576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b612183838383612659565b505050565b60008383111582906121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c79190612cda565b60405180910390fd5b50600083856121df9190613806565b9050809150509392505050565b60008083036121fe5760009050612260565b6000828461220c919061383a565b905082848261221b91906138ab565b1461225b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122529061394e565b60405180910390fd5b809150505b92915050565b60006122a883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612669565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612318573d6000803e3d6000fd5b5050565b6000600854821115612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906139e0565b60405180910390fd5b600061236d6126cc565b9050612382818461226690919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123c2576123c1612eb0565b5b6040519080825280602002602001820160405280156123f05781602001602082028036833780820191505090505b5090503081600081518110612408576124076132f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906133ef565b816001815181106124e7576124e66132f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061254e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611852565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261259e91906132c3565b6040518663ffffffff1660e01b81526004016125be959493929190613abe565b600060405180830381600087803b1580156125d857600080fd5b505af11580156125ec573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b600061265183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612188565b905092915050565b6126648383836126f7565b505050565b600080831182906126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a79190612cda565b60405180910390fd5b50600083856126bf91906138ab565b9050809150509392505050565b60008060006126d96128c2565b915091506126f0818361226690919063ffffffff16565b9250505090565b6000806000806000806127098761292a565b95509550955095509550955061276786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461260f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127fc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284881612a1d565b6128528483612ada565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128af9190612e90565b60405180910390a3505050505050505050565b6000806000600854905060006a52b7d2dcc80cd2e400000090506128fc6a52b7d2dcc80cd2e400000060085461226690919063ffffffff16565b82101561291d576008546a52b7d2dcc80cd2e4000000935093505050612926565b81819350935050505b9091565b6000806000806000806000806000612940612b14565b61295e576129598a600a60020154600a60030154612b2b565b612974565b6129738a600a60000154600a60010154612b2b565b5b92509250925060006129846126cc565b905060008060006129978e878787612bc1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008082846129ce91906132c3565b905083811015612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90613b64565b60405180910390fd5b8091505092915050565b6000612a276126cc565b90506000612a3e82846121ec90919063ffffffff16565b9050612a9281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129bf90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612aef8260085461260f90919063ffffffff16565b600881905550612b0a816009546129bf90919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612b576064612b49888a6121ec90919063ffffffff16565b61226690919063ffffffff16565b90506000612b816064612b73888b6121ec90919063ffffffff16565b61226690919063ffffffff16565b90506000612baa82612b9c858c61260f90919063ffffffff16565b61260f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bda85896121ec90919063ffffffff16565b90506000612bf186896121ec90919063ffffffff16565b90506000612c0887896121ec90919063ffffffff16565b90506000612c3182612c23858761260f90919063ffffffff16565b61260f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c84578082015181840152602081019050612c69565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cac82612c4a565b612cb68185612c55565b9350612cc6818560208601612c66565b612ccf81612c90565b840191505092915050565b60006020820190508181036000830152612cf48184612ca1565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d3b82612d10565b9050919050565b612d4b81612d30565b8114612d5657600080fd5b50565b600081359050612d6881612d42565b92915050565b6000819050919050565b612d8181612d6e565b8114612d8c57600080fd5b50565b600081359050612d9e81612d78565b92915050565b60008060408385031215612dbb57612dba612d06565b5b6000612dc985828601612d59565b9250506020612dda85828601612d8f565b9150509250929050565b60008115159050919050565b612df981612de4565b82525050565b6000602082019050612e146000830184612df0565b92915050565b60008060008060808587031215612e3457612e33612d06565b5b6000612e4287828801612d8f565b9450506020612e5387828801612d8f565b9350506040612e6487828801612d8f565b9250506060612e7587828801612d8f565b91505092959194509250565b612e8a81612d6e565b82525050565b6000602082019050612ea56000830184612e81565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ee882612c90565b810181811067ffffffffffffffff82111715612f0757612f06612eb0565b5b80604052505050565b6000612f1a612cfc565b9050612f268282612edf565b919050565b600067ffffffffffffffff821115612f4657612f45612eb0565b5b602082029050602081019050919050565b600080fd5b6000612f6f612f6a84612f2b565b612f10565b90508083825260208201905060208402830185811115612f9257612f91612f57565b5b835b81811015612fbb5780612fa78882612d59565b845260208401935050602081019050612f94565b5050509392505050565b600082601f830112612fda57612fd9612eab565b5b8135612fea848260208601612f5c565b91505092915050565b60006020828403121561300957613008612d06565b5b600082013567ffffffffffffffff81111561302757613026612d0b565b5b61303384828501612fc5565b91505092915050565b60008060006060848603121561305557613054612d06565b5b600061306386828701612d59565b935050602061307486828701612d59565b925050604061308586828701612d8f565b9150509250925092565b6000602082840312156130a5576130a4612d06565b5b60006130b384828501612d59565b91505092915050565b600060ff82169050919050565b6130d2816130bc565b82525050565b60006020820190506130ed60008301846130c9565b92915050565b60006020828403121561310957613108612d06565b5b600061311784828501612d8f565b91505092915050565b61312981612de4565b811461313457600080fd5b50565b60008135905061314681613120565b92915050565b60006020828403121561316257613161612d06565b5b600061317084828501613137565b91505092915050565b600060808201905061318e6000830187612e81565b61319b6020830186612e81565b6131a86040830185612e81565b6131b56060830184612e81565b95945050505050565b6131c781612d30565b82525050565b60006020820190506131e260008301846131be565b92915050565b600080604083850312156131ff576131fe612d06565b5b600061320d85828601612d59565b925050602061321e85828601612d59565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061325e602083612c55565b915061326982613228565b602082019050919050565b6000602082019050818103600083015261328d81613251565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132ce82612d6e565b91506132d983612d6e565b92508282019050808211156132f1576132f0613294565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061333182612d6e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336357613362613294565b5b600182019050919050565b7f54726164696e6720616c726561647920616c6c6f7765642e0000000000000000600082015250565b60006133a4601883612c55565b91506133af8261336e565b602082019050919050565b600060208201905081810360008301526133d381613397565b9050919050565b6000815190506133e981612d42565b92915050565b60006020828403121561340557613404612d06565b5b6000613413848285016133da565b91505092915050565b600060408201905061343160008301856131be565b61343e60208301846131be565b9392505050565b6000819050919050565b6000819050919050565b600061347461346f61346a84613445565b61344f565b612d6e565b9050919050565b61348481613459565b82525050565b600060c08201905061349f60008301896131be565b6134ac6020830188612e81565b6134b9604083018761347b565b6134c6606083018661347b565b6134d360808301856131be565b6134e060a0830184612e81565b979650505050505050565b6000815190506134fa81612d78565b92915050565b60008060006060848603121561351957613518612d06565b5b6000613527868287016134eb565b9350506020613538868287016134eb565b9250506040613549868287016134eb565b9150509250925092565b600060408201905061356860008301856131be565b6135756020830184612e81565b9392505050565b60008151905061358b81613120565b92915050565b6000602082840312156135a7576135a6612d06565b5b60006135b58482850161357c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061361a602483612c55565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136ac602283612c55565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f60008201527f2c20686974206d652062616279206f6e65206d6f72652074696d652e00000000602082015250565b600061373e603c83612c55565b9150613749826136e2565b604082019050919050565b6000602082019050818103600083015261376d81613731565b9050919050565b7f4d61782077616c6c65742065786365656465642c2049276d206a75737420612060008201527f626162792e000000000000000000000000000000000000000000000000000000602082015250565b60006137d0602583612c55565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b600061381182612d6e565b915061381c83612d6e565b925082820390508181111561383457613833613294565b5b92915050565b600061384582612d6e565b915061385083612d6e565b925082820261385e81612d6e565b9150828204841483151761387557613874613294565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138b682612d6e565b91506138c183612d6e565b9250826138d1576138d061387c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613938602183612c55565b9150613943826138dc565b604082019050919050565b600060208201905081810360008301526139678161392b565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139ca602a83612c55565b91506139d58261396e565b604082019050919050565b600060208201905081810360008301526139f9816139bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a3581612d30565b82525050565b6000613a478383613a2c565b60208301905092915050565b6000602082019050919050565b6000613a6b82613a00565b613a758185613a0b565b9350613a8083613a1c565b8060005b83811015613ab1578151613a988882613a3b565b9750613aa383613a53565b925050600181019050613a84565b5085935050505092915050565b600060a082019050613ad36000830188612e81565b613ae0602083018761347b565b8181036040830152613af28186613a60565b9050613b0160608301856131be565b613b0e6080830184612e81565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b4e601b83612c55565b9150613b5982613b18565b602082019050919050565b60006020820190508181036000830152613b7d81613b41565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c252330fd489357af4c1747f6c917a2eceb5a96f731ea41244455410a1d18564736f6c63430008110033

Deployed Bytecode Sourcemap

3780:12857:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6003:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6855:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10993:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6280:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12999:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7024:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13307:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6189:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11729:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7345:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11383:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14708:153;;;;;;;;;;;;;:::i;:::-;;6383:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2859:148;;;;;;;;;;;;;:::i;:::-;;10810:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;10684:118;;;;;;;;;;;;;:::i;:::-;;2645:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6094:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6529:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11554;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14542:154;;;;;;;;;;;;;:::i;:::-;;11968:1019;;;;;;;;;;;;;:::i;:::-;;6704:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6003:83;6040:13;6073:5;;;;;;;;;;;;;;;;;6066:12;;6003:83;:::o;6855:161::-;6930:4;6947:39;6956:12;:10;:12::i;:::-;6970:7;6979:6;6947:8;:39::i;:::-;7004:4;6997:11;;6855:161;;;;:::o;10993:382::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11142:18:::1;;11131:7;11121;:17;;;;:::i;:::-;:39;;11113:48;;;::::0;::::1;;11203:19;;11191:8;11180;:19;;;;:::i;:::-;:42;;11172:51;;;::::0;::::1;;11251:7;11234:6;:14;;:24;;;;11286:7;11269:6;:14;;:24;;;;11322:8;11304:6;:15;;:26;;;;11359:8;11341:6;:15;;:26;;;;10993:382:::0;;;;:::o;6280:95::-;6333:7;4283:20;6353:14;;6280:95;:::o;12999:296::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13072:6:::1;13067:221;13088:5;:12;13084:1;:16;13067:221;;;13146:4;13126:25;;:5;13132:1;13126:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;13167:13;;;;;;;;;;;13155:25;;:5;13161:1;13155:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;13126:54;:94;;;;;13204:15;;;;;;;;;;;13184:36;;:5;13190:1;13184:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13126:94;13122:155;;;13257:4;13240;:14;13245:5;13251:1;13245:8;;;;;;;;:::i;:::-;;;;;;;;13240:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13122:155;13102:3;;;;;:::i;:::-;;;;13067:221;;;;12999:296:::0;:::o;7024:313::-;7122:4;7139:36;7149:6;7157:9;7168:6;7139:9;:36::i;:::-;7186:121;7195:6;7203:12;:10;:12::i;:::-;7217:89;7255:6;7217:89;;;;;;;;;;;;;;;;;:11;:19;7229:6;7217:19;;;;;;;;;;;;;;;:33;7237:12;:10;:12::i;:::-;7217:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7186:8;:121::i;:::-;7325:4;7318:11;;7024:313;;;;;:::o;13307:153::-;13381:7;:5;:7::i;:::-;13367:21;;:10;:21;;;:53;;;;13406:14;;;;;;;;;;;13392:28;;:10;:28;;;13367:53;13359:62;;;;;;13447:5;13432:4;:12;13437:6;13432:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13307:153;:::o;6189:83::-;6230:5;5064:2;6248:16;;6189:83;:::o;11729:117::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11809:2:::1;11803:4;:8;;11795:17;;;::::0;::::1;;11834:4;11823:8;:15;;;;11729:117:::0;:::o;7345:103::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7435:5:::1;7417:15;;:23;;;;;;;;;;;;;;;;;;7345:103:::0;:::o;11383:163::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11478:1:::1;11467:10;:12;11459:21;;;::::0;::::1;;11506:32;11534:3;11506:23;11518:10;4283:20;11506:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11491:12;:47;;;;11383:163:::0;:::o;14708:153::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14760:26:::1;14789:21;14760:50;;14821:32;14834:18;14821:12;:32::i;:::-;14749:112;14708:153::o:0;6383:138::-;6449:7;6476:37;6496:7;:16;6504:7;6496:16;;;;;;;;;;;;;;;;6476:19;:37::i;:::-;6469:44;;6383:138;;;:::o;2859:148::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2966:1:::1;2929:40;;2950:6;::::0;::::1;;;;;;;;2929:40;;;;;;;;;;;;2997:1;2980:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2859:148::o:0;10810:175::-;10857:7;10866;10875;10884;10912:6;:14;;;10928:6;:14;;;10944:6;:15;;;10961:6;:15;;;10904:73;;;;;;;;10810:175;;;;:::o;10684:118::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4283:20:::1;10737:12;:22;;;;4283:20;10770:14;:24;;;;10684:118::o:0;2645:79::-;2683:7;2710:6;;;;;;;;;;;2703:13;;2645:79;:::o;6094:87::-;6133:13;6166:7;;;;;;;;;;;;;;;;;6159:14;;6094:87;:::o;6529:167::-;6607:4;6624:42;6634:12;:10;:12::i;:::-;6648:9;6659:6;6624:9;:42::i;:::-;6684:4;6677:11;;6529:167;;;;:::o;11554:::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11651:1:::1;11640:10;:12;11632:21;;;::::0;::::1;;11681:32;11709:3;11681:23;11693:10;4283:20;11681:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11664:14;:49;;;;11554:167:::0;:::o;14542:154::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14594:23:::1;14620:24;14638:4;14620:9;:24::i;:::-;14594:50;;14655:33;14672:15;14655:16;:33::i;:::-;14583:113;14542:154::o:0;11968:1019::-;2782:12;:10;:12::i;:::-;2772:22;;:6;;;;;;;;;;:22;;;2764:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12032:11:::1;;;;;;;;;;;12031:12;12023:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12082:35;12139:42;12082:100;;12211:16;12193:15;;:34;;;;;;;;;;;;;;;;;;12238:58;12255:4;12270:15;;;;;;;;;;;4283:20;12238:8;:58::i;:::-;12341:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12323:56;;;12388:4;12395:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12323:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12307:13;;:112;;;;;;;;;;;;;;;;;;12430:15;;;;;;;;;;;:31;;;12469:21;12500:4;12506:24;12524:4;12506:9;:24::i;:::-;12531:1;12533::::0;12535:7:::1;:5;:7::i;:::-;12543:15;12430:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12584:4;12570:11;;:18;;;;;;;;;;;;;;;;;;12617:4;12599:15;;:22;;;;;;;;;;;;;;;;;;12647:23;12666:3;12647:14;12659:1;4283:20;12647:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12632:12;:38;;;;12698:23;12717:3;12698:14;12710:1;4283:20;12698:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12681:14;:40;;;;12749:2;12732:6:::0;:14:::1;;:19;;;;12780:2;12762:6:::0;:15:::1;;:20;;;;12807:4;12793:11;;:18;;;;;;;;;;;;;;;;;;12835:12;12822:10;:25;;;;12882:15;12858:21;:39;;;;12915:13;;;;;;;;;;;12908:29;;;12946:15;;;;;;;;;;;12964:14;12908:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12012:975;11968:1019::o:0;6704:143::-;6785:7;6812:11;:18;6824:5;6812:18;;;;;;;;;;;;;;;:27;6831:7;6812:27;;;;;;;;;;;;;;;;6805:34;;6704:143;;;;:::o;363:98::-;416:7;443:10;436:17;;363:98;:::o;7718:335::-;7828:1;7811:19;;:5;:19;;;7803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:1;7890:21;;:7;:21;;;7882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7991:6;7961:11;:18;7973:5;7961:18;;;;;;;;;;;;;;;:27;7980:7;7961:27;;;;;;;;;;;;;;;:36;;;;8029:7;8013:32;;8022:5;8013:32;;;8038:6;8013:32;;;;;;:::i;:::-;;;;;;;;7718:335;;;:::o;8061:2032::-;8158:1;8149:6;:10;8141:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8244:4;8235:6;;:13;;;;;;;;;;;;;;;;;;8273:7;:5;:7::i;:::-;8265:15;;:4;:15;;;;:32;;;;;8290:7;:5;:7::i;:::-;8284:13;;:2;:13;;;;8265:32;8261:1529;;;8328:13;;;;;;;;;;;8320:21;;:4;:21;;;:55;;;;;8359:15;;;;;;;;;;;8345:30;;:2;:30;;;;8320:55;:83;;;;;8381:18;:22;8400:2;8381:22;;;;;;;;;;;;;;;;;;;;;;;;;8379:24;8320:83;:102;;;;;8407:15;;;;;;;;;;;8320:102;8316:307;;;8485:12;;8475:6;:22;;8467:31;;;;;;8551:14;;8541:6;8525:13;8535:2;8525:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8517:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;8316:307;8659:15;;;;;;;;;;;8643:32;;:4;:32;;;;:62;;;;;8681:18;:24;8700:4;8681:24;;;;;;;;;;;;;;;;;;;;;;;;;8679:26;8643:62;:85;;;;;8715:13;;;;;;;;;;;8709:19;;:2;:19;;;8643:85;8639:191;;;8757:4;:10;8762:4;8757:10;;;;;;;;;;;;;;;;;;;;;;;;;8756:11;:24;;;;;8772:4;:8;8777:2;8772:8;;;;;;;;;;;;;;;;;;;;;;;;;8771:9;8756:24;8748:33;;;;;;8809:5;8800:6;;:14;;;;;;;;;;;;;;;;;;8639:191;8846:28;8877:24;8895:4;8877:9;:24::i;:::-;8846:55;;8942:47;8985:3;8942:38;8971:8;;8942:24;8952:13;;;;;;;;;;;8942:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;8919:20;:70;8916:180;;;9033:47;9076:3;9033:38;9062:8;;9033:24;9043:13;;;;;;;;;;;9033:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9010:70;;8916:180;9117:6;;;;;;;;;;;9116:7;:32;;;;;9135:13;;;;;;;;;;;9127:21;;:4;:21;;;;9116:32;:47;;;;;9152:11;;;;;;;;;;;9116:47;9112:318;;;9184:38;9201:20;9184:16;:38::i;:::-;9241:26;9270:21;9241:50;;9334:1;9313:18;:22;9310:105;;;9360:35;9373:21;9360:12;:35::i;:::-;9310:105;9165:265;9112:318;9467:1;9450:6;:14;;;:18;:87;;;;;9515:22;;9491:21;;:46;;;;:::i;:::-;9472:15;:65;;9450:87;9446:333;;;9575:21;9594:1;9575:6;:14;;;:18;;:21;;;;:::i;:::-;9558:6;:14;;:38;;;;9633:22;9653:1;9633:6;:15;;;:19;;:22;;;;:::i;:::-;9615:6;:15;;:40;;;;9698:15;9674:21;:39;;;;9737:26;9748:6;:14;;;9737:26;;;;;;:::i;:::-;;;;;;;;9446:333;8299:1491;8261:1529;9863:1;9850:10;;:14;;;;:::i;:::-;9833:12;:32;;:72;;;;;9892:13;;;;;;;;;;;9886:19;;:2;:19;;;;9833:72;:151;;;;;9941:42;9927:57;;:2;:57;;;;9833:151;9829:214;;;10027:4;10016;:8;10021:2;10016:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;9829:214;10055:30;10070:4;10075:2;10078:6;10055:14;:30::i;:::-;8061:2032;;;:::o;1500:190::-;1586:7;1619:1;1614;:6;;1622:12;1606:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1646:9;1662:1;1658;:5;;;;:::i;:::-;1646:17;;1681:1;1674:8;;;1500:190;;;;;:::o;1698:246::-;1756:7;1785:1;1780;:6;1776:47;;1810:1;1803:8;;;;1776:47;1833:9;1849:1;1845;:5;;;;:::i;:::-;1833:17;;1878:1;1873;1869;:5;;;;:::i;:::-;:10;1861:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1935:1;1928:8;;;1698:246;;;;;:::o;1952:132::-;2010:7;2037:39;2041:1;2044;2037:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2030:46;;1952:132;;;;:::o;11862:96::-;11919:14;;;;;;;;;;;:23;;:31;11943:6;11919:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11862:96;:::o;7456:254::-;7523:7;7562;;7551;:18;;7543:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7627:19;7650:10;:8;:10::i;:::-;7627:33;;7678:24;7690:11;7678:7;:11;;:24;;;;:::i;:::-;7671:31;;;7456:254;;;:::o;10101:488::-;5587:4;5578:6;;:13;;;;;;;;;;;;;;;;;;10179:21:::1;10217:1;10203:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10179:40;;10248:4;10230;10235:1;10230:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10274:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10264:4;10269:1;10264:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10307:62;10324:4;10339:15;;;;;;;;;;;10357:11;10307:8;:62::i;:::-;10380:15;;;;;;;;;;;:66;;;10461:11;10487:1;10503:4;10530;10568:2;10550:15;:20;;;;:::i;:::-;10380:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10168:421;5623:5:::0;5614:6;;:14;;;;;;;;;;;;;;;;;;10101:488;:::o;1356:136::-;1414:7;1441:43;1445:1;1448;1441:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1434:50;;1356:136;;;;:::o;13476:146::-;13570:44;13588:6;13596:9;13607:6;13570:17;:44::i;:::-;13476:146;;;:::o;2092:189::-;2178:7;2210:1;2206;:5;2213:12;2198:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2237:9;2253:1;2249;:5;;;;:::i;:::-;2237:17;;2272:1;2265:8;;;2092:189;;;;;:::o;16201:163::-;16242:7;16263:15;16280;16299:19;:17;:19::i;:::-;16262:56;;;;16336:20;16348:7;16336;:11;;:20;;;;:::i;:::-;16329:27;;;;16201:163;:::o;13630:488::-;13729:15;13746:23;13771:12;13785:23;13810:12;13824:13;13841:19;13852:7;13841:10;:19::i;:::-;13728:132;;;;;;;;;;;;13889:28;13909:7;13889;:15;13897:6;13889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13871:7;:15;13879:6;13871:15;;;;;;;;;;;;;;;:46;;;;13949:39;13972:15;13949:7;:18;13957:9;13949:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13928:7;:18;13936:9;13928:18;;;;;;;;;;;;;;;:60;;;;14000:16;14010:5;14000:9;:16::i;:::-;14027:23;14039:4;14045;14027:11;:23::i;:::-;14083:9;14066:44;;14075:6;14066:44;;;14094:15;14066:44;;;;;;:::i;:::-;;;;;;;;13717:401;;;;;;13630:488;;;:::o;16372:262::-;16422:7;16431;16451:15;16469:7;;16451:25;;16487:15;4283:20;16487:25;;16543:20;4283;16543:7;;:11;;:20;;;;:::i;:::-;16533:7;:30;16529:61;;;16573:7;;4283:20;16565:25;;;;;;;;16529:61;16609:7;16618;16601:25;;;;;;16372:262;;;:::o;14869:551::-;14928:7;14937;14946;14955;14964;14973;14994:23;15019:12;15033:13;15050:10;:8;:10::i;:::-;:122;;15118:54;15130:7;15139:6;:15;;;15156:6;:15;;;15118:11;:54::i;:::-;15050:122;;;15063:52;15075:7;15084:6;:14;;;15100:6;:14;;;15063:11;:52::i;:::-;15050:122;14993:179;;;;;;15183:19;15206:10;:8;:10::i;:::-;15183:33;;15228:15;15245:23;15270:12;15286:46;15298:7;15307:4;15313:5;15320:11;15286;:46::i;:::-;15227:105;;;;;;15351:7;15360:15;15377:4;15383:15;15400:4;15406:5;15343:69;;;;;;;;;;;;;;;;;;;14869:551;;;;;;;:::o;1169:179::-;1227:7;1247:9;1263:1;1259;:5;;;;:::i;:::-;1247:17;;1288:1;1283;:6;;1275:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1339:1;1332:8;;;1169:179;;;;:::o;14126:212::-;14179:19;14202:10;:8;:10::i;:::-;14179:33;;14223:13;14239:22;14249:11;14239:5;:9;;:22;;;;:::i;:::-;14223:38;;14297:33;14324:5;14297:7;:22;14313:4;14297:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14272:7;:22;14288:4;14272:22;;;;;;;;;;;;;;;:58;;;;14168:170;;14126:212;:::o;14346:147::-;14424:17;14436:4;14424:7;;:11;;:17;;;;:::i;:::-;14414:7;:27;;;;14465:20;14480:4;14465:10;;:14;;:20;;;;:::i;:::-;14452:10;:33;;;;14346:147;;:::o;10597:79::-;10639:4;10662:6;;;;;;;;;;;10655:13;;10597:79;:::o;15428:351::-;15521:7;15530;15539;15559:12;15574:28;15598:3;15574:19;15586:6;15574:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15559:43;;15613:13;15629:29;15654:3;15629:20;15641:7;15629;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15613:45;;15669:23;15695:28;15717:5;15695:17;15707:4;15695:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15669:54;;15742:15;15759:4;15765:5;15734:37;;;;;;;;;15428:351;;;;;;;:::o;15787:409::-;15897:7;15906;15915;15935:15;15953:24;15965:11;15953:7;:11;;:24;;;;:::i;:::-;15935:42;;15988:12;16003:21;16012:11;16003:4;:8;;:21;;;;:::i;:::-;15988:36;;16035:13;16051:22;16061:11;16051:5;:9;;:22;;;;:::i;:::-;16035:38;;16084:23;16110:28;16132:5;16110:17;16122:4;16110:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16084:54;;16157:7;16166:15;16183:4;16149:39;;;;;;;;;;15787: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:174::-;13050:26;13046:1;13038:6;13034:14;13027:50;12910:174;:::o;13090:366::-;13232:3;13253:67;13317:2;13312:3;13253:67;:::i;:::-;13246:74;;13329:93;13418:3;13329:93;:::i;:::-;13447:2;13442:3;13438:12;13431:19;;13090:366;;;:::o;13462:419::-;13628:4;13666:2;13655:9;13651:18;13643:26;;13715:9;13709:4;13705:20;13701:1;13690:9;13686:17;13679:47;13743:131;13869:4;13743:131;:::i;:::-;13735:139;;13462:419;;;:::o;13887:143::-;13944:5;13975:6;13969:13;13960:22;;13991:33;14018:5;13991:33;:::i;:::-;13887:143;;;;:::o;14036:351::-;14106:6;14155:2;14143:9;14134:7;14130:23;14126:32;14123:119;;;14161:79;;:::i;:::-;14123:119;14281:1;14306:64;14362:7;14353:6;14342:9;14338:22;14306:64;:::i;:::-;14296:74;;14252:128;14036:351;;;;:::o;14393:332::-;14514:4;14552:2;14541:9;14537:18;14529:26;;14565:71;14633:1;14622:9;14618:17;14609:6;14565:71;:::i;:::-;14646:72;14714:2;14703:9;14699:18;14690:6;14646:72;:::i;:::-;14393:332;;;;;:::o;14731:85::-;14776:7;14805:5;14794:16;;14731:85;;;:::o;14822:60::-;14850:3;14871:5;14864:12;;14822:60;;;:::o;14888:158::-;14946:9;14979:61;14997:42;15006:32;15032:5;15006:32;:::i;:::-;14997:42;:::i;:::-;14979:61;:::i;:::-;14966:74;;14888:158;;;:::o;15052:147::-;15147:45;15186:5;15147:45;:::i;:::-;15142:3;15135:58;15052:147;;:::o;15205:807::-;15454:4;15492:3;15481:9;15477:19;15469:27;;15506:71;15574:1;15563:9;15559:17;15550:6;15506:71;:::i;:::-;15587:72;15655:2;15644:9;15640:18;15631:6;15587:72;:::i;:::-;15669:80;15745:2;15734:9;15730:18;15721:6;15669:80;:::i;:::-;15759;15835:2;15824:9;15820:18;15811:6;15759:80;:::i;:::-;15849:73;15917:3;15906:9;15902:19;15893:6;15849:73;:::i;:::-;15932;16000:3;15989:9;15985:19;15976:6;15932:73;:::i;:::-;15205:807;;;;;;;;;:::o;16018:143::-;16075:5;16106:6;16100:13;16091:22;;16122:33;16149:5;16122:33;:::i;:::-;16018:143;;;;:::o;16167:663::-;16255:6;16263;16271;16320:2;16308:9;16299:7;16295:23;16291:32;16288:119;;;16326:79;;:::i;:::-;16288:119;16446:1;16471:64;16527:7;16518:6;16507:9;16503:22;16471:64;:::i;:::-;16461:74;;16417:128;16584:2;16610:64;16666:7;16657:6;16646:9;16642:22;16610:64;:::i;:::-;16600:74;;16555:129;16723:2;16749:64;16805:7;16796:6;16785:9;16781:22;16749:64;:::i;:::-;16739:74;;16694:129;16167:663;;;;;:::o;16836:332::-;16957:4;16995:2;16984:9;16980:18;16972:26;;17008:71;17076:1;17065:9;17061:17;17052:6;17008:71;:::i;:::-;17089:72;17157:2;17146:9;17142:18;17133:6;17089:72;:::i;:::-;16836:332;;;;;:::o;17174:137::-;17228:5;17259:6;17253:13;17244:22;;17275:30;17299:5;17275:30;:::i;:::-;17174:137;;;;:::o;17317:345::-;17384:6;17433:2;17421:9;17412:7;17408:23;17404:32;17401:119;;;17439:79;;:::i;:::-;17401:119;17559:1;17584:61;17637:7;17628:6;17617:9;17613:22;17584:61;:::i;:::-;17574:71;;17530:125;17317:345;;;;:::o;17668:223::-;17808:34;17804:1;17796:6;17792:14;17785:58;17877:6;17872:2;17864:6;17860:15;17853:31;17668:223;:::o;17897:366::-;18039:3;18060:67;18124:2;18119:3;18060:67;:::i;:::-;18053:74;;18136:93;18225:3;18136:93;:::i;:::-;18254:2;18249:3;18245:12;18238:19;;17897:366;;;:::o;18269:419::-;18435:4;18473:2;18462:9;18458:18;18450:26;;18522:9;18516:4;18512:20;18508:1;18497:9;18493:17;18486:47;18550:131;18676:4;18550:131;:::i;:::-;18542:139;;18269:419;;;:::o;18694:221::-;18834:34;18830:1;18822:6;18818:14;18811:58;18903:4;18898:2;18890:6;18886:15;18879:29;18694:221;:::o;18921:366::-;19063:3;19084:67;19148:2;19143:3;19084:67;:::i;:::-;19077:74;;19160:93;19249:3;19160:93;:::i;:::-;19278:2;19273:3;19269:12;19262:19;;18921:366;;;:::o;19293:419::-;19459:4;19497:2;19486:9;19482:18;19474:26;;19546:9;19540:4;19536:20;19532:1;19521:9;19517:17;19510:47;19574:131;19700:4;19574:131;:::i;:::-;19566:139;;19293:419;;;:::o;19718:247::-;19858:34;19854:1;19846:6;19842:14;19835:58;19927:30;19922:2;19914:6;19910:15;19903:55;19718:247;:::o;19971:366::-;20113:3;20134:67;20198:2;20193:3;20134:67;:::i;:::-;20127:74;;20210:93;20299:3;20210:93;:::i;:::-;20328:2;20323:3;20319:12;20312:19;;19971:366;;;:::o;20343:419::-;20509:4;20547:2;20536:9;20532:18;20524:26;;20596:9;20590:4;20586:20;20582:1;20571:9;20567:17;20560:47;20624:131;20750:4;20624:131;:::i;:::-;20616:139;;20343:419;;;:::o;20768:224::-;20908:34;20904:1;20896:6;20892:14;20885:58;20977:7;20972:2;20964:6;20960:15;20953:32;20768:224;:::o;20998:366::-;21140:3;21161:67;21225:2;21220:3;21161:67;:::i;:::-;21154:74;;21237:93;21326:3;21237:93;:::i;:::-;21355:2;21350:3;21346:12;21339:19;;20998:366;;;:::o;21370:419::-;21536:4;21574:2;21563:9;21559:18;21551:26;;21623:9;21617:4;21613:20;21609:1;21598:9;21594:17;21587:47;21651:131;21777:4;21651:131;:::i;:::-;21643:139;;21370:419;;;:::o;21795:194::-;21835:4;21855:20;21873:1;21855:20;:::i;:::-;21850:25;;21889:20;21907:1;21889:20;:::i;:::-;21884:25;;21933:1;21930;21926:9;21918:17;;21957:1;21951:4;21948:11;21945:37;;;21962:18;;:::i;:::-;21945:37;21795:194;;;;:::o;21995:410::-;22035:7;22058:20;22076:1;22058:20;:::i;:::-;22053:25;;22092:20;22110:1;22092:20;:::i;:::-;22087:25;;22147:1;22144;22140:9;22169:30;22187:11;22169:30;:::i;:::-;22158:41;;22348:1;22339:7;22335:15;22332:1;22329:22;22309:1;22302:9;22282:83;22259:139;;22378:18;;:::i;:::-;22259:139;22043:362;21995:410;;;;:::o;22411:180::-;22459:77;22456:1;22449:88;22556:4;22553:1;22546:15;22580:4;22577:1;22570:15;22597:185;22637:1;22654:20;22672:1;22654:20;:::i;:::-;22649:25;;22688:20;22706:1;22688:20;:::i;:::-;22683:25;;22727:1;22717:35;;22732:18;;:::i;:::-;22717:35;22774:1;22771;22767:9;22762:14;;22597:185;;;;:::o;22788:220::-;22928:34;22924:1;22916:6;22912:14;22905:58;22997:3;22992:2;22984:6;22980:15;22973:28;22788:220;:::o;23014:366::-;23156:3;23177:67;23241:2;23236:3;23177:67;:::i;:::-;23170:74;;23253:93;23342:3;23253:93;:::i;:::-;23371:2;23366:3;23362:12;23355:19;;23014:366;;;:::o;23386:419::-;23552:4;23590:2;23579:9;23575:18;23567:26;;23639:9;23633:4;23629:20;23625:1;23614:9;23610:17;23603:47;23667:131;23793:4;23667:131;:::i;:::-;23659:139;;23386:419;;;:::o;23811:229::-;23951:34;23947:1;23939:6;23935:14;23928:58;24020:12;24015:2;24007:6;24003:15;23996:37;23811:229;:::o;24046:366::-;24188:3;24209:67;24273:2;24268:3;24209:67;:::i;:::-;24202:74;;24285:93;24374:3;24285:93;:::i;:::-;24403:2;24398:3;24394:12;24387:19;;24046:366;;;:::o;24418:419::-;24584:4;24622:2;24611:9;24607:18;24599:26;;24671:9;24665:4;24661:20;24657:1;24646:9;24642:17;24635:47;24699:131;24825:4;24699:131;:::i;:::-;24691:139;;24418:419;;;:::o;24843:114::-;24910:6;24944:5;24938:12;24928:22;;24843:114;;;:::o;24963:184::-;25062:11;25096:6;25091:3;25084:19;25136:4;25131:3;25127:14;25112:29;;24963:184;;;;:::o;25153:132::-;25220:4;25243:3;25235:11;;25273:4;25268:3;25264:14;25256:22;;25153:132;;;:::o;25291:108::-;25368:24;25386:5;25368:24;:::i;:::-;25363:3;25356:37;25291:108;;:::o;25405:179::-;25474:10;25495:46;25537:3;25529:6;25495:46;:::i;:::-;25573:4;25568:3;25564:14;25550:28;;25405:179;;;;:::o;25590:113::-;25660:4;25692;25687:3;25683:14;25675:22;;25590:113;;;:::o;25739:732::-;25858:3;25887:54;25935:5;25887:54;:::i;:::-;25957:86;26036:6;26031:3;25957:86;:::i;:::-;25950:93;;26067:56;26117:5;26067:56;:::i;:::-;26146:7;26177:1;26162:284;26187:6;26184:1;26181:13;26162:284;;;26263:6;26257:13;26290:63;26349:3;26334:13;26290:63;:::i;:::-;26283:70;;26376:60;26429:6;26376:60;:::i;:::-;26366:70;;26222:224;26209:1;26206;26202:9;26197:14;;26162:284;;;26166:14;26462:3;26455:10;;25863:608;;;25739:732;;;;:::o;26477:831::-;26740:4;26778:3;26767:9;26763:19;26755:27;;26792:71;26860:1;26849:9;26845:17;26836:6;26792:71;:::i;:::-;26873:80;26949:2;26938:9;26934:18;26925:6;26873:80;:::i;:::-;27000:9;26994:4;26990:20;26985:2;26974:9;26970:18;26963:48;27028:108;27131:4;27122:6;27028:108;:::i;:::-;27020:116;;27146:72;27214:2;27203:9;27199:18;27190:6;27146:72;:::i;:::-;27228:73;27296:3;27285:9;27281:19;27272:6;27228:73;:::i;:::-;26477:831;;;;;;;;:::o;27314:177::-;27454:29;27450:1;27442:6;27438:14;27431:53;27314:177;:::o;27497:366::-;27639:3;27660:67;27724:2;27719:3;27660:67;:::i;:::-;27653:74;;27736:93;27825:3;27736:93;:::i;:::-;27854:2;27849:3;27845:12;27838:19;;27497:366;;;:::o;27869:419::-;28035:4;28073:2;28062:9;28058:18;28050:26;;28122:9;28116:4;28112:20;28108:1;28097:9;28093:17;28086:47;28150:131;28276:4;28150:131;:::i;:::-;28142:139;;27869:419;;;:::o

Swarm Source

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