ETH Price: $2,489.33 (-1.36%)

Token

Azure Dragon (SEIRYU)
 

Overview

Max Total Supply

1,000,000,000 SEIRYU

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.945983034 SEIRYU

Value
$0.00
0x811d77b93746E93d06b774B0B1FF2De1d7b2c229
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:
Seiryu

Compiler Version
v0.8.9+commit.e5eed63a

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-26
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract Seiryu is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Azure Dragon";
    string private constant _symbol = "SEIRYU";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xAd309451FE7D3CD6FB9CD66f8103d534Ba2a062e);
    address payable private _marketingAddress = payable(0xAd309451FE7D3CD6FB9CD66f8103d534Ba2a062e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true; 
    bool private inSwap = true;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 1000000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

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

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200075b565b6000196200002b9190620007c2565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573ad309451fe7d3cd6fb9cd66f8103d534ba2a062e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ad309451fe7d3cd6fb9cd66f8103d534ba2a062e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550670de0b6b3a764000060165566470de4df82000060175566038d7ea4c680006018553480156200018357600080fd5b50600062000196620006f160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024b620006f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032a57600080fd5b505afa1580156200033f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000365919062000867565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c857600080fd5b505afa158015620003dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000403919062000867565b6040518363ffffffff1660e01b815260040162000422929190620008aa565b602060405180830381600087803b1580156200043d57600080fd5b505af115801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000867565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004ce620006f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067b620006f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e29190620008e8565b60405180910390a35062000905565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007688262000722565b9150620007758362000722565b9250826200078857620007876200072c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cf8262000722565b9150620007dc8362000722565b925082821015620007f257620007f162000793565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082f8262000802565b9050919050565b620008418162000822565b81146200084d57600080fd5b50565b600081519050620008618162000836565b92915050565b60006020828403121562000880576200087f620007fd565b5b6000620008908482850162000850565b91505092915050565b620008a48162000822565b82525050565b6000604082019050620008c1600083018562000899565b620008d0602083018462000899565b9392505050565b620008e28162000722565b82525050565b6000602082019050620008ff6000830184620008d7565b92915050565b613bbb80620009156000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f4578063dd62ed3e1461061d578063ea1644d51461065a578063f2fde38b14610683576101c1565b8063a9059cbb14610563578063bfd79284146105a0578063c3c8cd80146105dd576101c1565b80638f70ccf7116100c65780638f70ccf7146104bb5780638f9a55c0146104e457806395d89b411461050f57806398a5c3151461053a576101c1565b80637d1db4a5146104285780637f2feddc146104535780638da5cb5b14610490576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612bae565b6106ac565b005b3480156101fb57600080fd5b506102046107d6565b6040516102119190612c7f565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cd7565b610813565b60405161024e9190612d32565b60405180910390f35b34801561026357600080fd5b5061026c610831565b6040516102799190612dac565b60405180910390f35b34801561028e57600080fd5b50610297610857565b6040516102a49190612dd6565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612df1565b610867565b6040516102e19190612d32565b60405180910390f35b3480156102f657600080fd5b506102ff610940565b60405161030c9190612dd6565b60405180910390f35b34801561032157600080fd5b5061032a610946565b6040516103379190612e60565b60405180910390f35b34801561034c57600080fd5b5061035561094f565b6040516103629190612e8a565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612ea5565b610975565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612efe565b610a65565b005b3480156103c957600080fd5b506103d2610b17565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612ea5565b610be8565b6040516104089190612dd6565b60405180910390f35b34801561041d57600080fd5b50610426610c39565b005b34801561043457600080fd5b5061043d610d8c565b60405161044a9190612dd6565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612ea5565b610d92565b6040516104879190612dd6565b60405180910390f35b34801561049c57600080fd5b506104a5610daa565b6040516104b29190612e8a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190612efe565b610dd3565b005b3480156104f057600080fd5b506104f9610e85565b6040516105069190612dd6565b60405180910390f35b34801561051b57600080fd5b50610524610e8b565b6040516105319190612c7f565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612f2b565b610ec8565b005b34801561056f57600080fd5b5061058a60048036038101906105859190612cd7565b610f67565b6040516105979190612d32565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612ea5565b610f85565b6040516105d49190612d32565b60405180910390f35b3480156105e957600080fd5b506105f2610fa5565b005b34801561060057600080fd5b5061061b60048036038101906106169190612fb3565b61107e565b005b34801561062957600080fd5b50610644600480360381019061063f9190613013565b6111b8565b6040516106519190612dd6565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190612f2b565b61123f565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190612ea5565b6112de565b005b6106b46114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107389061309f565b60405180910390fd5b60005b81518110156107d257600160106000848481518110610766576107656130bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ca9061311d565b915050610744565b5050565b60606040518060400160405280600c81526020017f417a75726520447261676f6e0000000000000000000000000000000000000000815250905090565b60006108276108206114a0565b84846114a8565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610874848484611673565b610935846108806114a0565b61093085604051806060016040528060288152602001613b5e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e66114a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef89092919063ffffffff16565b6114a8565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61097d6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a019061309f565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a6d6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061309f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b586114a0565b73ffffffffffffffffffffffffffffffffffffffff161480610bce5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb66114a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610bd757600080fd5b6000479050610be581611f5c565b50565b6000610c32600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc8565b9050919050565b610c416114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc59061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ddb6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f9061309f565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f5345495259550000000000000000000000000000000000000000000000000000815250905090565b610ed06114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f549061309f565b60405180910390fd5b8060188190555050565b6000610f7b610f746114a0565b8484611673565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe66114a0565b73ffffffffffffffffffffffffffffffffffffffff16148061105c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110446114a0565b73ffffffffffffffffffffffffffffffffffffffff16145b61106557600080fd5b600061107030610be8565b905061107b81612036565b50565b6110866114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a9061309f565b60405180910390fd5b60005b838390508110156111b2578160056000868685818110611139576111386130bf565b5b905060200201602081019061114e9190612ea5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111aa9061311d565b915050611116565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112476114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb9061309f565b60405180910390fd5b8060178190555050565b6112e66114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906131d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f9061326a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f906132fc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116669190612dd6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061338e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613420565b60405180910390fd5b60008111611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906134b2565b60405180910390fd5b61179e610daa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180c57506117dc610daa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf757601560149054906101000a900460ff1661189b5761182d610daa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190613544565b60405180910390fd5b5b6016548111156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906135b0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119845750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba90613642565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a705760175481611a2584610be8565b611a2f9190613662565b10611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a669061372a565b60405180910390fd5b5b6000611a7b30610be8565b9050600060185482101590506016548210611a965760165491505b808015611aae575060158054906101000a900460ff16155b8015611b085750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b205750601560169054906101000a900460ff165b8015611b765750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcc5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bf457611bda82612036565b60004790506000811115611bf257611bf147611f5c565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c9e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d515750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d505750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5f5760009050611ee6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e0a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2257600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ecd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee557600a54600c81905550600b54600d819055505b5b611ef2848484846122bc565b50505050565b6000838311158290611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f379190612c7f565b60405180910390fd5b5060008385611f4f919061374a565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fc4573d6000803e3d6000fd5b5050565b600060065482111561200f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612006906137f0565b60405180910390fd5b60006120196122e9565b905061202e818461231490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561206d5761206c612a0d565b5b60405190808252806020026020018201604052801561209b5781602001602082028036833780820191505090505b50905030816000815181106120b3576120b26130bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215557600080fd5b505afa158015612169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218d9190613825565b816001815181106121a1576121a06130bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a8565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161226c95949392919061394b565b600060405180830381600087803b15801561228657600080fd5b505af115801561229a573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806122ca576122c961235e565b5b6122d58484846123a1565b806122e3576122e261256c565b5b50505050565b60008060006122f6612580565b9150915061230d818361231490919063ffffffff16565b9250505090565b600061235683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125df565b905092915050565b6000600c5414801561237257506000600d54145b1561237c5761239f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806123b387612642565b95509550955095509550955061241186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f281612752565b6124fc848361280f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125599190612dd6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506125b4670de0b6b3a764000060065461231490919063ffffffff16565b8210156125d257600654670de0b6b3a76400009350935050506125db565b81819350935050505b9091565b60008083118290612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9190612c7f565b60405180910390fd5b506000838561263591906139d4565b9050809150509392505050565b600080600080600080600080600061265f8a600c54600d54612849565b925092509250600061266f6122e9565b905060008060006126828e8787876128df565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef8565b905092915050565b60008082846127039190613662565b905083811015612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f90613a51565b60405180910390fd5b8091505092915050565b600061275c6122e9565b90506000612773828461296890919063ffffffff16565b90506127c781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612824826006546126aa90919063ffffffff16565b60068190555061283f816007546126f490919063ffffffff16565b6007819055505050565b6000806000806128756064612867888a61296890919063ffffffff16565b61231490919063ffffffff16565b9050600061289f6064612891888b61296890919063ffffffff16565b61231490919063ffffffff16565b905060006128c8826128ba858c6126aa90919063ffffffff16565b6126aa90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128f8858961296890919063ffffffff16565b9050600061290f868961296890919063ffffffff16565b90506000612926878961296890919063ffffffff16565b9050600061294f8261294185876126aa90919063ffffffff16565b6126aa90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561297b57600090506129dd565b600082846129899190613a71565b905082848261299891906139d4565b146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90613b3d565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a45826129fc565b810181811067ffffffffffffffff82111715612a6457612a63612a0d565b5b80604052505050565b6000612a776129e3565b9050612a838282612a3c565b919050565b600067ffffffffffffffff821115612aa357612aa2612a0d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ae482612ab9565b9050919050565b612af481612ad9565b8114612aff57600080fd5b50565b600081359050612b1181612aeb565b92915050565b6000612b2a612b2584612a88565b612a6d565b90508083825260208201905060208402830185811115612b4d57612b4c612ab4565b5b835b81811015612b765780612b628882612b02565b845260208401935050602081019050612b4f565b5050509392505050565b600082601f830112612b9557612b946129f7565b5b8135612ba5848260208601612b17565b91505092915050565b600060208284031215612bc457612bc36129ed565b5b600082013567ffffffffffffffff811115612be257612be16129f2565b5b612bee84828501612b80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c31578082015181840152602081019050612c16565b83811115612c40576000848401525b50505050565b6000612c5182612bf7565b612c5b8185612c02565b9350612c6b818560208601612c13565b612c74816129fc565b840191505092915050565b60006020820190508181036000830152612c998184612c46565b905092915050565b6000819050919050565b612cb481612ca1565b8114612cbf57600080fd5b50565b600081359050612cd181612cab565b92915050565b60008060408385031215612cee57612ced6129ed565b5b6000612cfc85828601612b02565b9250506020612d0d85828601612cc2565b9150509250929050565b60008115159050919050565b612d2c81612d17565b82525050565b6000602082019050612d476000830184612d23565b92915050565b6000819050919050565b6000612d72612d6d612d6884612ab9565b612d4d565b612ab9565b9050919050565b6000612d8482612d57565b9050919050565b6000612d9682612d79565b9050919050565b612da681612d8b565b82525050565b6000602082019050612dc16000830184612d9d565b92915050565b612dd081612ca1565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600080600060608486031215612e0a57612e096129ed565b5b6000612e1886828701612b02565b9350506020612e2986828701612b02565b9250506040612e3a86828701612cc2565b9150509250925092565b600060ff82169050919050565b612e5a81612e44565b82525050565b6000602082019050612e756000830184612e51565b92915050565b612e8481612ad9565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b600060208284031215612ebb57612eba6129ed565b5b6000612ec984828501612b02565b91505092915050565b612edb81612d17565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b600060208284031215612f1457612f136129ed565b5b6000612f2284828501612ee9565b91505092915050565b600060208284031215612f4157612f406129ed565b5b6000612f4f84828501612cc2565b91505092915050565b600080fd5b60008083601f840112612f7357612f726129f7565b5b8235905067ffffffffffffffff811115612f9057612f8f612f58565b5b602083019150836020820283011115612fac57612fab612ab4565b5b9250929050565b600080600060408486031215612fcc57612fcb6129ed565b5b600084013567ffffffffffffffff811115612fea57612fe96129f2565b5b612ff686828701612f5d565b9350935050602061300986828701612ee9565b9150509250925092565b6000806040838503121561302a576130296129ed565b5b600061303885828601612b02565b925050602061304985828601612b02565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613089602083612c02565b915061309482613053565b602082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312882612ca1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561315b5761315a6130ee565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131c2602683612c02565b91506131cd82613166565b604082019050919050565b600060208201905081810360008301526131f1816131b5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613254602483612c02565b915061325f826131f8565b604082019050919050565b6000602082019050818103600083015261328381613247565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132e6602283612c02565b91506132f18261328a565b604082019050919050565b60006020820190508181036000830152613315816132d9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613378602583612c02565b91506133838261331c565b604082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340a602383612c02565b9150613415826133ae565b604082019050919050565b60006020820190508181036000830152613439816133fd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061349c602983612c02565b91506134a782613440565b604082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061352e603f83612c02565b9150613539826134d2565b604082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061359a601c83612c02565b91506135a582613564565b602082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061362c602383612c02565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b600061366d82612ca1565b915061367883612ca1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136ad576136ac6130ee565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613714602383612c02565b915061371f826136b8565b604082019050919050565b6000602082019050818103600083015261374381613707565b9050919050565b600061375582612ca1565b915061376083612ca1565b925082821015613773576137726130ee565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137da602a83612c02565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b9050919050565b60008151905061381f81612aeb565b92915050565b60006020828403121561383b5761383a6129ed565b5b600061384984828501613810565b91505092915050565b6000819050919050565b600061387761387261386d84613852565b612d4d565b612ca1565b9050919050565b6138878161385c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c281612ad9565b82525050565b60006138d483836138b9565b60208301905092915050565b6000602082019050919050565b60006138f88261388d565b6139028185613898565b935061390d836138a9565b8060005b8381101561393e57815161392588826138c8565b9750613930836138e0565b925050600181019050613911565b5085935050505092915050565b600060a0820190506139606000830188612dc7565b61396d602083018761387e565b818103604083015261397f81866138ed565b905061398e6060830185612e7b565b61399b6080830184612dc7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139df82612ca1565b91506139ea83612ca1565b9250826139fa576139f96139a5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a3b601b83612c02565b9150613a4682613a05565b602082019050919050565b60006020820190508181036000830152613a6a81613a2e565b9050919050565b6000613a7c82612ca1565b9150613a8783612ca1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ac057613abf6130ee565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b27602183612c02565b9150613b3282613acb565b604082019050919050565b60006020820190508181036000830152613b5681613b1a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ca70110572d4445ec81d9eab8b65dc7b79a475234fbbe14b90da0d72fed1564664736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063c492f04611610064578063c492f046146105f4578063dd62ed3e1461061d578063ea1644d51461065a578063f2fde38b14610683576101c1565b8063a9059cbb14610563578063bfd79284146105a0578063c3c8cd80146105dd576101c1565b80638f70ccf7116100c65780638f70ccf7146104bb5780638f9a55c0146104e457806395d89b411461050f57806398a5c3151461053a576101c1565b80637d1db4a5146104285780637f2feddc146104535780638da5cb5b14610490576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612bae565b6106ac565b005b3480156101fb57600080fd5b506102046107d6565b6040516102119190612c7f565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cd7565b610813565b60405161024e9190612d32565b60405180910390f35b34801561026357600080fd5b5061026c610831565b6040516102799190612dac565b60405180910390f35b34801561028e57600080fd5b50610297610857565b6040516102a49190612dd6565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612df1565b610867565b6040516102e19190612d32565b60405180910390f35b3480156102f657600080fd5b506102ff610940565b60405161030c9190612dd6565b60405180910390f35b34801561032157600080fd5b5061032a610946565b6040516103379190612e60565b60405180910390f35b34801561034c57600080fd5b5061035561094f565b6040516103629190612e8a565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612ea5565b610975565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612efe565b610a65565b005b3480156103c957600080fd5b506103d2610b17565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612ea5565b610be8565b6040516104089190612dd6565b60405180910390f35b34801561041d57600080fd5b50610426610c39565b005b34801561043457600080fd5b5061043d610d8c565b60405161044a9190612dd6565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612ea5565b610d92565b6040516104879190612dd6565b60405180910390f35b34801561049c57600080fd5b506104a5610daa565b6040516104b29190612e8a565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190612efe565b610dd3565b005b3480156104f057600080fd5b506104f9610e85565b6040516105069190612dd6565b60405180910390f35b34801561051b57600080fd5b50610524610e8b565b6040516105319190612c7f565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c9190612f2b565b610ec8565b005b34801561056f57600080fd5b5061058a60048036038101906105859190612cd7565b610f67565b6040516105979190612d32565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612ea5565b610f85565b6040516105d49190612d32565b60405180910390f35b3480156105e957600080fd5b506105f2610fa5565b005b34801561060057600080fd5b5061061b60048036038101906106169190612fb3565b61107e565b005b34801561062957600080fd5b50610644600480360381019061063f9190613013565b6111b8565b6040516106519190612dd6565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190612f2b565b61123f565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190612ea5565b6112de565b005b6106b46114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107389061309f565b60405180910390fd5b60005b81518110156107d257600160106000848481518110610766576107656130bf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ca9061311d565b915050610744565b5050565b60606040518060400160405280600c81526020017f417a75726520447261676f6e0000000000000000000000000000000000000000815250905090565b60006108276108206114a0565b84846114a8565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610874848484611673565b610935846108806114a0565b61093085604051806060016040528060288152602001613b5e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108e66114a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef89092919063ffffffff16565b6114a8565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61097d6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a019061309f565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a6d6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061309f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b586114a0565b73ffffffffffffffffffffffffffffffffffffffff161480610bce5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb66114a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610bd757600080fd5b6000479050610be581611f5c565b50565b6000610c32600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc8565b9050919050565b610c416114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc59061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ddb6114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f9061309f565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f5345495259550000000000000000000000000000000000000000000000000000815250905090565b610ed06114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f549061309f565b60405180910390fd5b8060188190555050565b6000610f7b610f746114a0565b8484611673565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe66114a0565b73ffffffffffffffffffffffffffffffffffffffff16148061105c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110446114a0565b73ffffffffffffffffffffffffffffffffffffffff16145b61106557600080fd5b600061107030610be8565b905061107b81612036565b50565b6110866114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a9061309f565b60405180910390fd5b60005b838390508110156111b2578160056000868685818110611139576111386130bf565b5b905060200201602081019061114e9190612ea5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111aa9061311d565b915050611116565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112476114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cb9061309f565b60405180910390fd5b8060178190555050565b6112e66114a0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906131d8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f9061326a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f906132fc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116669190612dd6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061338e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613420565b60405180910390fd5b60008111611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906134b2565b60405180910390fd5b61179e610daa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180c57506117dc610daa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf757601560149054906101000a900460ff1661189b5761182d610daa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190613544565b60405180910390fd5b5b6016548111156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906135b0565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119845750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba90613642565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a705760175481611a2584610be8565b611a2f9190613662565b10611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a669061372a565b60405180910390fd5b5b6000611a7b30610be8565b9050600060185482101590506016548210611a965760165491505b808015611aae575060158054906101000a900460ff16155b8015611b085750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b205750601560169054906101000a900460ff165b8015611b765750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcc5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bf457611bda82612036565b60004790506000811115611bf257611bf147611f5c565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c9e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d515750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d505750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d5f5760009050611ee6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e0a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2257600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ecd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee557600a54600c81905550600b54600d819055505b5b611ef2848484846122bc565b50505050565b6000838311158290611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f379190612c7f565b60405180910390fd5b5060008385611f4f919061374a565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fc4573d6000803e3d6000fd5b5050565b600060065482111561200f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612006906137f0565b60405180910390fd5b60006120196122e9565b905061202e818461231490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561206d5761206c612a0d565b5b60405190808252806020026020018201604052801561209b5781602001602082028036833780820191505090505b50905030816000815181106120b3576120b26130bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215557600080fd5b505afa158015612169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218d9190613825565b816001815181106121a1576121a06130bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a8565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161226c95949392919061394b565b600060405180830381600087803b15801561228657600080fd5b505af115801561229a573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806122ca576122c961235e565b5b6122d58484846123a1565b806122e3576122e261256c565b5b50505050565b60008060006122f6612580565b9150915061230d818361231490919063ffffffff16565b9250505090565b600061235683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125df565b905092915050565b6000600c5414801561237257506000600d54145b1561237c5761239f565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806123b387612642565b95509550955095509550955061241186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f281612752565b6124fc848361280f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125599190612dd6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506125b4670de0b6b3a764000060065461231490919063ffffffff16565b8210156125d257600654670de0b6b3a76400009350935050506125db565b81819350935050505b9091565b60008083118290612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9190612c7f565b60405180910390fd5b506000838561263591906139d4565b9050809150509392505050565b600080600080600080600080600061265f8a600c54600d54612849565b925092509250600061266f6122e9565b905060008060006126828e8787876128df565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef8565b905092915050565b60008082846127039190613662565b905083811015612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f90613a51565b60405180910390fd5b8091505092915050565b600061275c6122e9565b90506000612773828461296890919063ffffffff16565b90506127c781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612824826006546126aa90919063ffffffff16565b60068190555061283f816007546126f490919063ffffffff16565b6007819055505050565b6000806000806128756064612867888a61296890919063ffffffff16565b61231490919063ffffffff16565b9050600061289f6064612891888b61296890919063ffffffff16565b61231490919063ffffffff16565b905060006128c8826128ba858c6126aa90919063ffffffff16565b6126aa90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128f8858961296890919063ffffffff16565b9050600061290f868961296890919063ffffffff16565b90506000612926878961296890919063ffffffff16565b9050600061294f8261294185876126aa90919063ffffffff16565b6126aa90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561297b57600090506129dd565b600082846129899190613a71565b905082848261299891906139d4565b146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90613b3d565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a45826129fc565b810181811067ffffffffffffffff82111715612a6457612a63612a0d565b5b80604052505050565b6000612a776129e3565b9050612a838282612a3c565b919050565b600067ffffffffffffffff821115612aa357612aa2612a0d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ae482612ab9565b9050919050565b612af481612ad9565b8114612aff57600080fd5b50565b600081359050612b1181612aeb565b92915050565b6000612b2a612b2584612a88565b612a6d565b90508083825260208201905060208402830185811115612b4d57612b4c612ab4565b5b835b81811015612b765780612b628882612b02565b845260208401935050602081019050612b4f565b5050509392505050565b600082601f830112612b9557612b946129f7565b5b8135612ba5848260208601612b17565b91505092915050565b600060208284031215612bc457612bc36129ed565b5b600082013567ffffffffffffffff811115612be257612be16129f2565b5b612bee84828501612b80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c31578082015181840152602081019050612c16565b83811115612c40576000848401525b50505050565b6000612c5182612bf7565b612c5b8185612c02565b9350612c6b818560208601612c13565b612c74816129fc565b840191505092915050565b60006020820190508181036000830152612c998184612c46565b905092915050565b6000819050919050565b612cb481612ca1565b8114612cbf57600080fd5b50565b600081359050612cd181612cab565b92915050565b60008060408385031215612cee57612ced6129ed565b5b6000612cfc85828601612b02565b9250506020612d0d85828601612cc2565b9150509250929050565b60008115159050919050565b612d2c81612d17565b82525050565b6000602082019050612d476000830184612d23565b92915050565b6000819050919050565b6000612d72612d6d612d6884612ab9565b612d4d565b612ab9565b9050919050565b6000612d8482612d57565b9050919050565b6000612d9682612d79565b9050919050565b612da681612d8b565b82525050565b6000602082019050612dc16000830184612d9d565b92915050565b612dd081612ca1565b82525050565b6000602082019050612deb6000830184612dc7565b92915050565b600080600060608486031215612e0a57612e096129ed565b5b6000612e1886828701612b02565b9350506020612e2986828701612b02565b9250506040612e3a86828701612cc2565b9150509250925092565b600060ff82169050919050565b612e5a81612e44565b82525050565b6000602082019050612e756000830184612e51565b92915050565b612e8481612ad9565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b600060208284031215612ebb57612eba6129ed565b5b6000612ec984828501612b02565b91505092915050565b612edb81612d17565b8114612ee657600080fd5b50565b600081359050612ef881612ed2565b92915050565b600060208284031215612f1457612f136129ed565b5b6000612f2284828501612ee9565b91505092915050565b600060208284031215612f4157612f406129ed565b5b6000612f4f84828501612cc2565b91505092915050565b600080fd5b60008083601f840112612f7357612f726129f7565b5b8235905067ffffffffffffffff811115612f9057612f8f612f58565b5b602083019150836020820283011115612fac57612fab612ab4565b5b9250929050565b600080600060408486031215612fcc57612fcb6129ed565b5b600084013567ffffffffffffffff811115612fea57612fe96129f2565b5b612ff686828701612f5d565b9350935050602061300986828701612ee9565b9150509250925092565b6000806040838503121561302a576130296129ed565b5b600061303885828601612b02565b925050602061304985828601612b02565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613089602083612c02565b915061309482613053565b602082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312882612ca1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561315b5761315a6130ee565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131c2602683612c02565b91506131cd82613166565b604082019050919050565b600060208201905081810360008301526131f1816131b5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613254602483612c02565b915061325f826131f8565b604082019050919050565b6000602082019050818103600083015261328381613247565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132e6602283612c02565b91506132f18261328a565b604082019050919050565b60006020820190508181036000830152613315816132d9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613378602583612c02565b91506133838261331c565b604082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061340a602383612c02565b9150613415826133ae565b604082019050919050565b60006020820190508181036000830152613439816133fd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061349c602983612c02565b91506134a782613440565b604082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061352e603f83612c02565b9150613539826134d2565b604082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061359a601c83612c02565b91506135a582613564565b602082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061362c602383612c02565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b600061366d82612ca1565b915061367883612ca1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136ad576136ac6130ee565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613714602383612c02565b915061371f826136b8565b604082019050919050565b6000602082019050818103600083015261374381613707565b9050919050565b600061375582612ca1565b915061376083612ca1565b925082821015613773576137726130ee565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006137da602a83612c02565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b9050919050565b60008151905061381f81612aeb565b92915050565b60006020828403121561383b5761383a6129ed565b5b600061384984828501613810565b91505092915050565b6000819050919050565b600061387761387261386d84613852565b612d4d565b612ca1565b9050919050565b6138878161385c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c281612ad9565b82525050565b60006138d483836138b9565b60208301905092915050565b6000602082019050919050565b60006138f88261388d565b6139028185613898565b935061390d836138a9565b8060005b8381101561393e57815161392588826138c8565b9750613930836138e0565b925050600181019050613911565b5085935050505092915050565b600060a0820190506139606000830188612dc7565b61396d602083018761387e565b818103604083015261397f81866138ed565b905061398e6060830185612e7b565b61399b6080830184612dc7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139df82612ca1565b91506139ea83612ca1565b9250826139fa576139f96139a5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a3b601b83612c02565b9150613a4682613a05565b602082019050919050565b60006020820190508181036000830152613a6a81613a2e565b9050919050565b6000613a7c82612ca1565b9150613a8783612ca1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ac057613abf6130ee565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b27602183612c02565b9150613b3282613acb565b604082019050919050565b60006020820190508181036000830152613b5681613b1a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ca70110572d4445ec81d9eab8b65dc7b79a475234fbbe14b90da0d72fed1564664736f6c63430008090033

Deployed Bytecode Sourcemap

4068:13059:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12746:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6574:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7499:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6851:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7700:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5720:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6760:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12923:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16656:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12503:235;;;;;;;;;;;;;:::i;:::-;;6954:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;5610:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5155:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12150:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5665:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6665:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16465:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7100:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5117:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12259:236;;;;;;;;;;;;;:::i;:::-;;16888:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7307:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16765:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12746:169;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12822:9:::1;12817:91;12841:5;:12;12837:1;:16;12817:91;;;12892:4;12875;:14;12880:5;12886:1;12880:8;;;;;;;;:::i;:::-;;;;;;;;12875:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12855:3;;;;;:::i;:::-;;;;12817:91;;;;12746:169:::0;:::o;6574:83::-;6611:13;6644:5;;;;;;;;;;;;;;;;;6637:12;;6574:83;:::o;7499:193::-;7601:4;7623:39;7632:12;:10;:12::i;:::-;7646:7;7655:6;7623:8;:39::i;:::-;7680:4;7673:11;;7499:193;;;;:::o;5413:41::-;;;;;;;;;;;;;:::o;6851:95::-;6904:7;4619:18;6924:14;;6851:95;:::o;7700:446::-;7832:4;7849:36;7859:6;7867:9;7878:6;7849:9;:36::i;:::-;7896:220;7919:6;7940:12;:10;:12::i;:::-;7967:138;8023:6;7967:138;;;;;;;;;;;;;;;;;:11;:19;7979:6;7967:19;;;;;;;;;;;;;;;:33;7987:12;:10;:12::i;:::-;7967:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7896:8;:220::i;:::-;8134:4;8127:11;;7700:446;;;;;:::o;5720:52::-;;;;:::o;6760:83::-;6801:5;4293:1;6819:16;;6760:83;:::o;5461:28::-;;;;;;;;;;;;;:::o;12923:92::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13002:5:::1;12987:4;:12;12992:6;12987:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12923:92:::0;:::o;16656:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16737:12:::1;16723:11;;:26;;;;;;;;;;;;;;;;;;16656:101:::0;:::o;12503:235::-;12569:19;;;;;;;;;;;12553:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12608:17;;;;;;;;;;;12592:33;;:12;:10;:12::i;:::-;:33;;;12553:72;12545:81;;;;;;12637:26;12666:21;12637:50;;12698:32;12711:18;12698:12;:32::i;:::-;12534:204;12503:235::o;6954:138::-;7020:7;7047:37;7067:7;:16;7075:7;7067:16;;;;;;;;;;;;;;;;7047:19;:37::i;:::-;7040:44;;6954:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;5610:48::-;;;;:::o;5155:43::-;;;;;;;;;;;;;;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;12150:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12231:12:::1;12217:11;;:26;;;;;;;;;;;;;;;;;;12150:101:::0;:::o;5665:48::-;;;;:::o;6665:87::-;6704:13;6737:7;;;;;;;;;;;;;;;;;6730:14;;6665:87;:::o;16465:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16578:18:::1;16556:19;:40;;;;16465:139:::0;:::o;7100:199::-;7205:4;7227:42;7237:12;:10;:12::i;:::-;7251:9;7262:6;7227:9;:42::i;:::-;7287:4;7280:11;;7100:199;;;;:::o;5117:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12259:236::-;12325:19;;;;;;;;;;;12309:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12364:17;;;;;;;;;;;12348:33;;:12;:10;:12::i;:::-;:33;;;12309:72;12301:81;;;;;;12393:23;12419:24;12437:4;12419:9;:24::i;:::-;12393:50;;12454:33;12471:15;12454:16;:33::i;:::-;12290:205;12259:236::o;16888:234::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17005:9:::1;17001:114;17024:8;;:15;;17020:1;:19;17001:114;;;17095:8;17061:18;:31;17080:8;;17089:1;17080:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17061:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17041:3;;;;;:::i;:::-;;;;17001:114;;;;16888:234:::0;;;:::o;7307:184::-;7424:7;7456:11;:18;7468:5;7456:18;;;;;;;;;;;;;;;:27;7475:7;7456:27;;;;;;;;;;;;;;;;7449:34;;7307:184;;;;:::o;16765:115::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16859:13:::1;16842:14;:30;;;;16765:115:::0;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8837:369::-;8981:1;8964:19;;:5;:19;;;;8956:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9062:1;9043:21;;:7;:21;;;;9035:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9144:6;9114:11;:18;9126:5;9114:18;;;;;;;;;;;;;;;:27;9133:7;9114:27;;;;;;;;;;;;;;;:36;;;;9182:7;9166:32;;9175:5;9166:32;;;9191:6;9166:32;;;;;;:::i;:::-;;;;;;;;8837:369;;;:::o;9214:2330::-;9352:1;9336:18;;:4;:18;;;;9328:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9429:1;9415:16;;:2;:16;;;;9407:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:1;9490:6;:10;9482:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9571:7;:5;:7::i;:::-;9563:15;;:4;:15;;;;:32;;;;;9588:7;:5;:7::i;:::-;9582:13;;:2;:13;;;;9563:32;9559:1259;;;9652:11;;;;;;;;;;;9647:144;;9700:7;:5;:7::i;:::-;9692:15;;:4;:15;;;9684:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9647:144;9825:12;;9815:6;:22;;9807:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9894:4;:10;9899:4;9894:10;;;;;;;;;;;;;;;;;;;;;;;;;9893:11;:24;;;;;9909:4;:8;9914:2;9909:8;;;;;;;;;;;;;;;;;;;;;;;;;9908:9;9893:24;9885:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9983:13;;;;;;;;;;;9977:19;;:2;:19;;;9974:146;;10050:14;;10041:6;10025:13;10035:2;10025:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10017:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9974:146;10136:28;10167:24;10185:4;10167:9;:24::i;:::-;10136:55;;10206:12;10245:19;;10221:20;:43;;10206:58;;10308:12;;10284:20;:36;10281:124;;10377:12;;10354:35;;10281:124;10425:7;:18;;;;;10437:6;;;;;;;;;;10436:7;10425:18;:43;;;;;10455:13;;;;;;;;;;;10447:21;;:4;:21;;;;10425:43;:58;;;;;10472:11;;;;;;;;;;;10425:58;:87;;;;;10488:18;:24;10507:4;10488:24;;;;;;;;;;;;;;;;;;;;;;;;;10487:25;10425:87;:114;;;;;10517:18;:22;10536:2;10517:22;;;;;;;;;;;;;;;;;;;;;;;;;10516:23;10425:114;10421:386;;;10560:38;10577:20;10560:16;:38::i;:::-;10617:26;10646:21;10617:50;;10711:1;10690:18;:22;10686:106;;;10737:35;10750:21;10737:12;:35::i;:::-;10686:106;10541:266;10421:386;9597:1221;;9559:1259;10830:12;10845:4;10830:19;;10894:18;:24;10913:4;10894:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10922:18;:22;10941:2;10922:22;;;;;;;;;;;;;;;;;;;;;;;;;10894:50;10893:102;;;;10958:13;;;;;;;;;;;10950:21;;:4;:21;;;;:44;;;;;10981:13;;;;;;;;;;;10975:19;;:2;:19;;;;10950:44;10893:102;10889:594;;;11022:5;11012:15;;10889:594;;;11105:13;;;;;;;;;;;11097:21;;:4;:21;;;:55;;;;;11136:15;;;;;;;;;;;11122:30;;:2;:30;;;;11097:55;11094:162;;;11185:14;;11173:9;:26;;;;11228:12;;11218:7;:22;;;;11094:162;11315:13;;;;;;;;;;;11309:19;;:2;:19;;;:55;;;;;11348:15;;;;;;;;;;;11332:32;;:4;:32;;;;11309:55;11305:165;;;11397:15;;11385:9;:27;;;;11441:13;;11431:7;:23;;;;11305:165;10889:594;11495:41;11510:4;11516:2;11520:6;11528:7;11495:14;:41::i;:::-;9317:2227;9214:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;12043:99::-;12100:17;;;;;;;;;;;:26;;:34;12127:6;12100:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12043:99;:::o;8154:323::-;8249:7;8307;;8296;:18;;8274:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8395:19;8417:10;:8;:10::i;:::-;8395:32;;8445:24;8457:11;8445:7;:11;;:24;;;;:::i;:::-;8438:31;;;8154:323;;;:::o;11552:483::-;5875:4;5866:6;;:13;;;;;;;;;;;;;;;;;;11630:21:::1;11668:1;11654:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11630:40;;11699:4;11681;11686:1;11681:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11725:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11715:4;11720:1;11715:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11758:62;11775:4;11790:15;;;;;;;;;;;11808:11;11758:8;:62::i;:::-;11831:15;;;;;;;;;;;:66;;;11912:11;11938:1;11954:4;11981;12001:15;11831:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11619:416;5911:5:::0;5902:6;;:14;;;;;;;;;;;;;;;;;;11552:483;:::o;13023:282::-;13179:7;13174:28;;13188:14;:12;:14::i;:::-;13174:28;13213:44;13231:6;13239:9;13250:6;13213:17;:44::i;:::-;13273:7;13268:29;;13282:15;:13;:15::i;:::-;13268:29;13023:282;;;;:::o;15984:164::-;16026:7;16047:15;16064;16083:19;:17;:19::i;:::-;16046:56;;;;16120:20;16132:7;16120;:11;;:20;;;;:::i;:::-;16113:27;;;;15984:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8485:219::-;8545:1;8532:9;;:14;:30;;;;;8561:1;8550:7;;:12;8532:30;8528:43;;;8564:7;;8528:43;8603:9;;8583:17;:29;;;;8641:7;;8623:15;:25;;;;8673:1;8661:9;:13;;;;8695:1;8685:7;:11;;;;8485:219;:::o;13313:610::-;13460:15;13490:23;13528:12;13555:23;13593:12;13620:13;13647:19;13658:7;13647:10;:19::i;:::-;13445:221;;;;;;;;;;;;13695:28;13715:7;13695;:15;13703:6;13695:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13677:7;:15;13685:6;13677:15;;;;;;;;;;;;;;;:46;;;;13755:39;13778:15;13755:7;:18;13763:9;13755:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13734:7;:18;13742:9;13734:18;;;;;;;;;;;;;;;:60;;;;13805:16;13815:5;13805:9;:16::i;:::-;13832:23;13844:4;13850;13832:11;:23::i;:::-;13888:9;13871:44;;13880:6;13871:44;;;13899:15;13871:44;;;;;;:::i;:::-;;;;;;;;13434:489;;;;;;13313:610;;;:::o;8712:117::-;8768:17;;8756:9;:29;;;;8806:15;;8796:7;:25;;;;8712:117::o;16156:257::-;16207:7;16216;16236:15;16254:7;;16236:25;;16272:15;4619:18;16272:25;;16322:20;4619:18;16322:7;;:11;;:20;;;;:::i;:::-;16312:7;:30;16308:61;;;16352:7;;4619:18;16344:25;;;;;;;;16308:61;16388:7;16397;16380:25;;;;;;16156:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14342:615::-;14442:7;14464;14486;14508;14530;14552;14588:23;14613:12;14627:13;14657:40;14669:7;14678:9;;14689:7;;14657:11;:40::i;:::-;14587:110;;;;;;14708:19;14730:10;:8;:10::i;:::-;14708:32;;14752:15;14769:23;14794:12;14823:46;14835:7;14844:4;14850:5;14857:11;14823;:46::i;:::-;14751:118;;;;;;14888:7;14897:15;14914:4;14920:15;14937:4;14943:5;14880:69;;;;;;;;;;;;;;;;;;;14342:615;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;13931:211::-;13984:19;14006:10;:8;:10::i;:::-;13984:32;;14027:13;14043:22;14053:11;14043:5;:9;;:22;;;;:::i;:::-;14027:38;;14101:33;14128:5;14101:7;:22;14117:4;14101:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14076:7;:22;14092:4;14076:22;;;;;;;;;;;;;;;:58;;;;13973:169;;13931:211;:::o;14150:147::-;14228:17;14240:4;14228:7;;:11;;:17;;;;:::i;:::-;14218:7;:27;;;;14269:20;14284:4;14269:10;;:14;;:20;;;;:::i;:::-;14256:10;:33;;;;14150:147;;:::o;14965:469::-;15134:7;15156;15178;15213:12;15228:30;15254:3;15228:21;15240:8;15228:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15213:45;;15269:13;15285:28;15309:3;15285:19;15297:6;15285:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15269:44;;15324:23;15350:28;15372:5;15350:17;15362:4;15350:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15324:54;;15397:15;15414:4;15420:5;15389:37;;;;;;;;;14965:469;;;;;;;:::o;15442:534::-;15636:7;15658;15680;15715:15;15733:24;15745:11;15733:7;:11;;:24;;;;:::i;:::-;15715:42;;15768:12;15783:21;15792:11;15783:4;:8;;:21;;;;:::i;:::-;15768:36;;15815:13;15831:22;15841:11;15831:5;:9;;:22;;;;:::i;:::-;15815:38;;15864:23;15890:28;15912:5;15890:17;15902:4;15890:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15864:54;;15937:7;15946:15;15963:4;15929:39;;;;;;;;;;15442:534;;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:117::-;10437:1;10434;10427:12;10468:568;10541:8;10551:6;10601:3;10594:4;10586:6;10582:17;10578:27;10568:122;;10609:79;;:::i;:::-;10568:122;10722:6;10709:20;10699:30;;10752:18;10744:6;10741:30;10738:117;;;10774:79;;:::i;:::-;10738:117;10888:4;10880:6;10876:17;10864:29;;10942:3;10934:4;10926:6;10922:17;10912:8;10908:32;10905:41;10902:128;;;10949:79;;:::i;:::-;10902:128;10468:568;;;;;:::o;11042:698::-;11134:6;11142;11150;11199:2;11187:9;11178:7;11174:23;11170:32;11167:119;;;11205:79;;:::i;:::-;11167:119;11353:1;11342:9;11338:17;11325:31;11383:18;11375:6;11372:30;11369:117;;;11405:79;;:::i;:::-;11369:117;11518:80;11590:7;11581:6;11570:9;11566:22;11518:80;:::i;:::-;11500:98;;;;11296:312;11647:2;11673:50;11715:7;11706:6;11695:9;11691:22;11673:50;:::i;:::-;11663:60;;11618:115;11042:698;;;;;:::o;11746:474::-;11814:6;11822;11871:2;11859:9;11850:7;11846:23;11842:32;11839:119;;;11877:79;;:::i;:::-;11839:119;11997:1;12022:53;12067:7;12058:6;12047:9;12043:22;12022:53;:::i;:::-;12012:63;;11968:117;12124:2;12150:53;12195:7;12186:6;12175:9;12171:22;12150:53;:::i;:::-;12140:63;;12095:118;11746:474;;;;;:::o;12226:182::-;12366:34;12362:1;12354:6;12350:14;12343:58;12226:182;:::o;12414:366::-;12556:3;12577:67;12641:2;12636:3;12577:67;:::i;:::-;12570:74;;12653:93;12742:3;12653:93;:::i;:::-;12771:2;12766:3;12762:12;12755:19;;12414:366;;;:::o;12786:419::-;12952:4;12990:2;12979:9;12975:18;12967:26;;13039:9;13033:4;13029:20;13025:1;13014:9;13010:17;13003:47;13067:131;13193:4;13067:131;:::i;:::-;13059:139;;12786:419;;;:::o;13211:180::-;13259:77;13256:1;13249:88;13356:4;13353:1;13346:15;13380:4;13377:1;13370:15;13397:180;13445:77;13442:1;13435:88;13542:4;13539:1;13532:15;13566:4;13563:1;13556:15;13583:233;13622:3;13645:24;13663:5;13645:24;:::i;:::-;13636:33;;13691:66;13684:5;13681:77;13678:103;;;13761:18;;:::i;:::-;13678:103;13808:1;13801:5;13797:13;13790:20;;13583:233;;;:::o;13822:225::-;13962:34;13958:1;13950:6;13946:14;13939:58;14031:8;14026:2;14018:6;14014:15;14007:33;13822:225;:::o;14053:366::-;14195:3;14216:67;14280:2;14275:3;14216:67;:::i;:::-;14209:74;;14292:93;14381:3;14292:93;:::i;:::-;14410:2;14405:3;14401:12;14394:19;;14053:366;;;:::o;14425:419::-;14591:4;14629:2;14618:9;14614:18;14606:26;;14678:9;14672:4;14668:20;14664:1;14653:9;14649:17;14642:47;14706:131;14832:4;14706:131;:::i;:::-;14698:139;;14425:419;;;:::o;14850:223::-;14990:34;14986:1;14978:6;14974:14;14967:58;15059:6;15054:2;15046:6;15042:15;15035:31;14850:223;:::o;15079:366::-;15221:3;15242:67;15306:2;15301:3;15242:67;:::i;:::-;15235:74;;15318:93;15407:3;15318:93;:::i;:::-;15436:2;15431:3;15427:12;15420:19;;15079:366;;;:::o;15451:419::-;15617:4;15655:2;15644:9;15640:18;15632:26;;15704:9;15698:4;15694:20;15690:1;15679:9;15675:17;15668:47;15732:131;15858:4;15732:131;:::i;:::-;15724:139;;15451:419;;;:::o;15876:221::-;16016:34;16012:1;16004:6;16000:14;15993:58;16085:4;16080:2;16072:6;16068:15;16061:29;15876:221;:::o;16103:366::-;16245:3;16266:67;16330:2;16325:3;16266:67;:::i;:::-;16259:74;;16342:93;16431:3;16342:93;:::i;:::-;16460:2;16455:3;16451:12;16444:19;;16103:366;;;:::o;16475:419::-;16641:4;16679:2;16668:9;16664:18;16656:26;;16728:9;16722:4;16718:20;16714:1;16703:9;16699:17;16692:47;16756:131;16882:4;16756:131;:::i;:::-;16748:139;;16475:419;;;:::o;16900:224::-;17040:34;17036:1;17028:6;17024:14;17017:58;17109:7;17104:2;17096:6;17092:15;17085:32;16900:224;:::o;17130:366::-;17272:3;17293:67;17357:2;17352:3;17293:67;:::i;:::-;17286:74;;17369:93;17458:3;17369:93;:::i;:::-;17487:2;17482:3;17478:12;17471:19;;17130:366;;;:::o;17502:419::-;17668:4;17706:2;17695:9;17691:18;17683:26;;17755:9;17749:4;17745:20;17741:1;17730:9;17726:17;17719:47;17783:131;17909:4;17783:131;:::i;:::-;17775:139;;17502:419;;;:::o;17927:222::-;18067:34;18063:1;18055:6;18051:14;18044:58;18136:5;18131:2;18123:6;18119:15;18112:30;17927:222;:::o;18155:366::-;18297:3;18318:67;18382:2;18377:3;18318:67;:::i;:::-;18311:74;;18394:93;18483:3;18394:93;:::i;:::-;18512:2;18507:3;18503:12;18496:19;;18155:366;;;:::o;18527:419::-;18693:4;18731:2;18720:9;18716:18;18708:26;;18780:9;18774:4;18770:20;18766:1;18755:9;18751:17;18744:47;18808:131;18934:4;18808:131;:::i;:::-;18800:139;;18527:419;;;:::o;18952:228::-;19092:34;19088:1;19080:6;19076:14;19069:58;19161:11;19156:2;19148:6;19144:15;19137:36;18952:228;:::o;19186:366::-;19328:3;19349:67;19413:2;19408:3;19349:67;:::i;:::-;19342:74;;19425:93;19514:3;19425:93;:::i;:::-;19543:2;19538:3;19534:12;19527:19;;19186:366;;;:::o;19558:419::-;19724:4;19762:2;19751:9;19747:18;19739:26;;19811:9;19805:4;19801:20;19797:1;19786:9;19782:17;19775:47;19839:131;19965:4;19839:131;:::i;:::-;19831:139;;19558:419;;;:::o;19983:250::-;20123:34;20119:1;20111:6;20107:14;20100:58;20192:33;20187:2;20179:6;20175:15;20168:58;19983:250;:::o;20239:366::-;20381:3;20402:67;20466:2;20461:3;20402:67;:::i;:::-;20395:74;;20478:93;20567:3;20478:93;:::i;:::-;20596:2;20591:3;20587:12;20580:19;;20239:366;;;:::o;20611:419::-;20777:4;20815:2;20804:9;20800:18;20792:26;;20864:9;20858:4;20854:20;20850:1;20839:9;20835:17;20828:47;20892:131;21018:4;20892:131;:::i;:::-;20884:139;;20611:419;;;:::o;21036:178::-;21176:30;21172:1;21164:6;21160:14;21153:54;21036:178;:::o;21220:366::-;21362:3;21383:67;21447:2;21442:3;21383:67;:::i;:::-;21376:74;;21459:93;21548:3;21459:93;:::i;:::-;21577:2;21572:3;21568:12;21561:19;;21220:366;;;:::o;21592:419::-;21758:4;21796:2;21785:9;21781:18;21773:26;;21845:9;21839:4;21835:20;21831:1;21820:9;21816:17;21809:47;21873:131;21999:4;21873:131;:::i;:::-;21865:139;;21592:419;;;:::o;22017:222::-;22157:34;22153:1;22145:6;22141:14;22134:58;22226:5;22221:2;22213:6;22209:15;22202:30;22017:222;:::o;22245:366::-;22387:3;22408:67;22472:2;22467:3;22408:67;:::i;:::-;22401:74;;22484:93;22573:3;22484:93;:::i;:::-;22602:2;22597:3;22593:12;22586:19;;22245:366;;;:::o;22617:419::-;22783:4;22821:2;22810:9;22806:18;22798:26;;22870:9;22864:4;22860:20;22856:1;22845:9;22841:17;22834:47;22898:131;23024:4;22898:131;:::i;:::-;22890:139;;22617:419;;;:::o;23042:305::-;23082:3;23101:20;23119:1;23101:20;:::i;:::-;23096:25;;23135:20;23153:1;23135:20;:::i;:::-;23130:25;;23289:1;23221:66;23217:74;23214:1;23211:81;23208:107;;;23295:18;;:::i;:::-;23208:107;23339:1;23336;23332:9;23325:16;;23042:305;;;;:::o;23353:222::-;23493:34;23489:1;23481:6;23477:14;23470:58;23562:5;23557:2;23549:6;23545:15;23538:30;23353:222;:::o;23581:366::-;23723:3;23744:67;23808:2;23803:3;23744:67;:::i;:::-;23737:74;;23820:93;23909:3;23820:93;:::i;:::-;23938:2;23933:3;23929:12;23922:19;;23581:366;;;:::o;23953:419::-;24119:4;24157:2;24146:9;24142:18;24134:26;;24206:9;24200:4;24196:20;24192:1;24181:9;24177:17;24170:47;24234:131;24360:4;24234:131;:::i;:::-;24226:139;;23953:419;;;:::o;24378:191::-;24418:4;24438:20;24456:1;24438:20;:::i;:::-;24433:25;;24472:20;24490:1;24472:20;:::i;:::-;24467:25;;24511:1;24508;24505:8;24502:34;;;24516:18;;:::i;:::-;24502:34;24561:1;24558;24554:9;24546:17;;24378:191;;;;:::o;24575:229::-;24715:34;24711:1;24703:6;24699:14;24692:58;24784:12;24779:2;24771:6;24767:15;24760:37;24575:229;:::o;24810:366::-;24952:3;24973:67;25037:2;25032:3;24973:67;:::i;:::-;24966:74;;25049:93;25138:3;25049:93;:::i;:::-;25167:2;25162:3;25158:12;25151:19;;24810:366;;;:::o;25182:419::-;25348:4;25386:2;25375:9;25371:18;25363:26;;25435:9;25429:4;25425:20;25421:1;25410:9;25406:17;25399:47;25463:131;25589:4;25463:131;:::i;:::-;25455:139;;25182:419;;;:::o;25607:143::-;25664:5;25695:6;25689:13;25680:22;;25711:33;25738:5;25711:33;:::i;:::-;25607:143;;;;:::o;25756:351::-;25826:6;25875:2;25863:9;25854:7;25850:23;25846:32;25843:119;;;25881:79;;:::i;:::-;25843:119;26001:1;26026:64;26082:7;26073:6;26062:9;26058:22;26026:64;:::i;:::-;26016:74;;25972:128;25756:351;;;;:::o;26113:85::-;26158:7;26187:5;26176:16;;26113:85;;;:::o;26204:158::-;26262:9;26295:61;26313:42;26322:32;26348:5;26322:32;:::i;:::-;26313:42;:::i;:::-;26295:61;:::i;:::-;26282:74;;26204:158;;;:::o;26368:147::-;26463:45;26502:5;26463:45;:::i;:::-;26458:3;26451:58;26368:147;;:::o;26521:114::-;26588:6;26622:5;26616:12;26606:22;;26521:114;;;:::o;26641:184::-;26740:11;26774:6;26769:3;26762:19;26814:4;26809:3;26805:14;26790:29;;26641:184;;;;:::o;26831:132::-;26898:4;26921:3;26913:11;;26951:4;26946:3;26942:14;26934:22;;26831:132;;;:::o;26969:108::-;27046:24;27064:5;27046:24;:::i;:::-;27041:3;27034:37;26969:108;;:::o;27083:179::-;27152:10;27173:46;27215:3;27207:6;27173:46;:::i;:::-;27251:4;27246:3;27242:14;27228:28;;27083:179;;;;:::o;27268:113::-;27338:4;27370;27365:3;27361:14;27353:22;;27268:113;;;:::o;27417:732::-;27536:3;27565:54;27613:5;27565:54;:::i;:::-;27635:86;27714:6;27709:3;27635:86;:::i;:::-;27628:93;;27745:56;27795:5;27745:56;:::i;:::-;27824:7;27855:1;27840:284;27865:6;27862:1;27859:13;27840:284;;;27941:6;27935:13;27968:63;28027:3;28012:13;27968:63;:::i;:::-;27961:70;;28054:60;28107:6;28054:60;:::i;:::-;28044:70;;27900:224;27887:1;27884;27880:9;27875:14;;27840:284;;;27844:14;28140:3;28133:10;;27541:608;;;27417:732;;;;:::o;28155:831::-;28418:4;28456:3;28445:9;28441:19;28433:27;;28470:71;28538:1;28527:9;28523:17;28514:6;28470:71;:::i;:::-;28551:80;28627:2;28616:9;28612:18;28603:6;28551:80;:::i;:::-;28678:9;28672:4;28668:20;28663:2;28652:9;28648:18;28641:48;28706:108;28809:4;28800:6;28706:108;:::i;:::-;28698:116;;28824:72;28892:2;28881:9;28877:18;28868:6;28824:72;:::i;:::-;28906:73;28974:3;28963:9;28959:19;28950:6;28906:73;:::i;:::-;28155:831;;;;;;;;:::o;28992:180::-;29040:77;29037:1;29030:88;29137:4;29134:1;29127:15;29161:4;29158:1;29151:15;29178:185;29218:1;29235:20;29253:1;29235:20;:::i;:::-;29230:25;;29269:20;29287:1;29269:20;:::i;:::-;29264:25;;29308:1;29298:35;;29313:18;;:::i;:::-;29298:35;29355:1;29352;29348:9;29343:14;;29178:185;;;;:::o;29369:177::-;29509:29;29505:1;29497:6;29493:14;29486:53;29369:177;:::o;29552:366::-;29694:3;29715:67;29779:2;29774:3;29715:67;:::i;:::-;29708:74;;29791:93;29880:3;29791:93;:::i;:::-;29909:2;29904:3;29900:12;29893:19;;29552:366;;;:::o;29924:419::-;30090:4;30128:2;30117:9;30113:18;30105:26;;30177:9;30171:4;30167:20;30163:1;30152:9;30148:17;30141:47;30205:131;30331:4;30205:131;:::i;:::-;30197:139;;29924:419;;;:::o;30349:348::-;30389:7;30412:20;30430:1;30412:20;:::i;:::-;30407:25;;30446:20;30464:1;30446:20;:::i;:::-;30441:25;;30634:1;30566:66;30562:74;30559:1;30556:81;30551:1;30544:9;30537:17;30533:105;30530:131;;;30641:18;;:::i;:::-;30530:131;30689:1;30686;30682:9;30671:20;;30349:348;;;;:::o;30703:220::-;30843:34;30839:1;30831:6;30827:14;30820:58;30912:3;30907:2;30899:6;30895:15;30888:28;30703:220;:::o;30929:366::-;31071:3;31092:67;31156:2;31151:3;31092:67;:::i;:::-;31085:74;;31168:93;31257:3;31168:93;:::i;:::-;31286:2;31281:3;31277:12;31270:19;;30929:366;;;:::o;31301:419::-;31467:4;31505:2;31494:9;31490:18;31482:26;;31554:9;31548:4;31544:20;31540:1;31529:9;31525:17;31518:47;31582:131;31708:4;31582:131;:::i;:::-;31574:139;;31301:419;;;:::o

Swarm Source

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