ETH Price: $2,982.89 (-4.77%)
Gas: 2 Gwei

Token

Robin Hood (RHOOD)
 

Overview

Max Total Supply

1,377,000 RHOOD

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,387.316983466 RHOOD

Value
$0.00
0xbdd1b0f9f428d3ba52674e6f3b8d88c03bf6c267
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:
RobinHoodToken

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

🏹🏹🏹 Robin Hood $RHOOD 🏹🏹🏹

$RHOOD token is a community-driven meme token, named after the legendary heroic outlaw Robin hood. 
Robin Hood robbed from the rich and gave to the poor. 
We aim to deliver trending meme token with great utility for the small holders. 

Our Staking platform will encourage holders to hold their tokens while enjoying the high APR.

3/3 buy and sell tax. After your purchase, next 2h you will have sliding decreasing sell tax (starts at 12, 15 min step until it reaches 3).

! NO BOTS ALLOWED !

🤳 https://twitter.com/RHOOD_token
🤳 https://t.me/RobinHood_token_portal
🌐 https://rhoodtoken.com/

*/

pragma solidity ^0.8.16;
// SPDX-License-Identifier: UNLICENSED
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

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

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

    Taxes private _taxes = Taxes(0,3,0,3);
    uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2;
    uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2;
    uint256 private startSellFee = 12;
    uint256 private finalSellFee = 3;
    uint256 private taxSubstractFrequency = 15 minutes;

    address payable private _feeAddrWallet;
    uint256 private _feeRate = 20;
    
    string private constant _name = "Robin Hood";
    string private constant _symbol = "RHOOD";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private tradingOpen;
    uint256 launchedAt;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(amount > 0, "Amount cannot be zero.");

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

            if (!_isBuy(from)) {
                if (_buyMap[tx.origin] != 0) {
                    uint256 taxSubstract = (block.timestamp - _buyMap[tx.origin]) / taxSubstractFrequency;
                    if (taxSubstract > startSellFee - finalSellFee) {
                        taxSubstract = startSellFee - finalSellFee;
                    }
                    _taxes.sellFee2 = startSellFee - taxSubstract;
                } else {
                    _taxes.sellFee2 = startSellFee;
                }
                _buyMap[tx.origin] == 0;
            } else {
                if (_buyMap[to] == 0) {
                    _buyMap[to] = block.timestamp;
                }
            }

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

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

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

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

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

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

        _tokenTransfer(from,to,amount);
    }

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

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

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

    function getYourCurrentFees() public view returns (uint256) {
        return getAddressesCurrentFees(_msgSender());
    }

    function getAddressesCurrentFees(address addr) public view returns (uint256) {
        require(_buyMap[addr] != 0, "This address didn't buy any tokens or it has already sold them.");
        uint256 taxSubstract = (block.timestamp - _buyMap[addr]) / taxSubstractFrequency;
        if (taxSubstract > startSellFee - finalSellFee) {
            taxSubstract = startSellFee - finalSellFee;
        }
        return startSellFee - taxSubstract;
    }

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

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

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

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

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

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

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

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

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

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _isBuy(_msgSender()) ? _getTValues(tAmount, _taxes.buyFee1, _taxes.buyFee2) : _getTValues(tAmount, _taxes.sellFee1, _taxes.sellFee2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

    function _isBuy(address _sender) private view returns (bool) {
        return _sender == uniswapV2Pair;
    }

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

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

Contract Security Audit

Contract ABI

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

60806040526604e45fcbdb10006000196200001b9190620004bf565b6000196200002a919062000526565b60095560405180608001604052806000815260200160038152602001600081526020016003815250600b600082015181600001556020820151816001015560408201518160020155606082015181600301555050600b60010154600b6000015462000096919062000561565b600f55600b60030154600b60020154620000b1919062000561565b601055600c601155600360125561038460135560146015556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff0219169083151502179055506604e45fcbdb1000601a556604e45fcbdb1000601b553480156200013d57600080fd5b506000620001506200045560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073fcf72b595689d6c58307660dc9246bf61c822d17601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600260006200025a6200045560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000620002ae6200045d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003e16200045560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6604e45fcbdb1000604051620004479190620005ad565b60405180910390a3620005ca565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004cc8262000486565b9150620004d98362000486565b925082620004ec57620004eb62000490565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005338262000486565b9150620005408362000486565b92508282039050818111156200055b576200055a620004f7565b5b92915050565b60006200056e8262000486565b91506200057b8362000486565b9250828201905080821115620005965762000595620004f7565b5b92915050565b620005a78162000486565b82525050565b6000602082019050620005c460008301846200059c565b92915050565b61403e80620005da6000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063a9059cbb1161008a578063b87f137a11610064578063b87f137a14610512578063c3c8cd801461053b578063c9567bf914610552578063dd62ed3e1461056957610171565b8063a9059cbb1461046d578063ad19b1f2146104aa578063afb4a3f5146104e757610171565b806370a082311461037e578063715018a6146103bb57806371908a03146103d2578063751039fc146104005780638da5cb5b1461041757806395d89b411461044257610171565b8063273123b711610123578063273123b714610298578063313ce567146102c157806345596e2e146102ec5780635932ead114610315578063677daa571461033e5780636fc3eaec1461036757610171565b806306fdde0314610176578063095ea7b3146101a157806317e1df5b146101de57806318160ddd1461020757806321bbcbb11461023257806323b872dd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a6565b6040516101989190613000565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906130ca565b6105e3565b6040516101d59190613125565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190613140565b610601565b005b34801561021357600080fd5b5061021c6106f8565b60405161022991906131b6565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190613319565b610707565b005b34801561026757600080fd5b50610282600480360381019061027d9190613362565b610969565b60405161028f9190613125565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906133b5565b610a42565b005b3480156102cd57600080fd5b506102d6610b6a565b6040516102e391906133fe565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190613419565b610b73565b005b34801561032157600080fd5b5061033c60048036038101906103379190613472565b610c20565b005b34801561034a57600080fd5b5061036560048036038101906103609190613419565b610cd2565b005b34801561037357600080fd5b5061037c610daa565b005b34801561038a57600080fd5b506103a560048036038101906103a091906133b5565b610e50565b6040516103b291906131b6565b60405180910390f35b3480156103c757600080fd5b506103d0610ea1565b005b3480156103de57600080fd5b506103e7610ff4565b6040516103f7949392919061349f565b60405180910390f35b34801561040c57600080fd5b50610415611020565b005b34801561042357600080fd5b5061042c6110d3565b60405161043991906134f3565b60405180910390f35b34801561044e57600080fd5b506104576110fc565b6040516104649190613000565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f91906130ca565b611139565b6040516104a19190613125565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc91906133b5565b611157565b6040516104de91906131b6565b60405180910390f35b3480156104f357600080fd5b506104fc611276565b60405161050991906131b6565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613419565b61128d565b005b34801561054757600080fd5b50610550611365565b005b34801561055e57600080fd5b50610567611413565b005b34801561057557600080fd5b50610590600480360381019061058b919061350e565b611982565b60405161059d91906131b6565b60405180910390f35b60606040518060400160405280600a81526020017f526f62696e20486f6f6400000000000000000000000000000000000000000000815250905090565b60006105f76105f0611a09565b8484611a11565b6001905092915050565b610609611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d9061359a565b60405180910390fd5b600f5483856106a591906135e9565b11156106b057600080fd5b60105481836106bf91906135e9565b11156106ca57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b60006604e45fcbdb1000905090565b61070f611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061359a565b60405180910390fd5b60005b8151811015610965573073ffffffffffffffffffffffffffffffffffffffff168282815181106107d2576107d161361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156108665750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108455761084461361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108b9576108b861361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610952576001600760008484815181106108f8576108f761361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061095d9061364c565b91505061079f565b5050565b6000610976848484611bda565b610a3784610982611a09565b610a3285604051806060016040528060288152602001613fe160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e8611a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246f9092919063ffffffff16565b611a11565b600190509392505050565b610a4a6110d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ad05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906136e0565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b7b611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff9061359a565b60405180910390fd5b6031811115610c1657600080fd5b8060158190555050565b610c28611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061359a565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610cda611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e9061359a565b60405180910390fd5b60008111610d7457600080fd5b610da16064610d93836604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601a8190555050565b610db2611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e369061359a565b60405180910390fd5b6000479050610e4d81612597565b50565b6000610e9a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612603565b9050919050565b610ea9611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061359a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b611028611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061359a565b60405180910390fd5b6604e45fcbdb1000601a819055506604e45fcbdb1000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f52484f4f44000000000000000000000000000000000000000000000000000000815250905090565b600061114d611146611a09565b8484611bda565b6001905092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190613772565b60405180910390fd5b6000601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261122a9190613792565b61123491906137f5565b90506012546011546112469190613792565b8111156112605760125460115461125d9190613792565b90505b8060115461126e9190613792565b915050919050565b6000611288611283611a09565b611157565b905090565b611295611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113199061359a565b60405180910390fd5b6000811161132f57600080fd5b61135c606461134e836604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601b8190555050565b61136d611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f19061359a565b60405180910390fd5b600061140530610e50565b905061141081612671565b50565b61141b611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f9061359a565b60405180910390fd5b601760149054906101000a900460ff16156114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613872565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061158630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166604e45fcbdb1000611a11565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f591906138a7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906138a7565b6040518363ffffffff1660e01b815260040161169d9291906138d4565b6020604051808303816000875af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e091906138a7565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061176930610e50565b6000806117746110d3565b426040518863ffffffff1660e01b815260040161179696959493929190613942565b60606040518083038185885af11580156117b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117d991906139b8565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff021916908315150217905550611840606461183260036604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601a81905550611874606461186660036604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161193b929190613a0b565b6020604051808303816000875af115801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190613a49565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7790613ae8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613b7a565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bcd91906131b6565b60405180910390a3505050565b60008111611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490613be6565b60405180910390fd5b611c256110d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c935750611c636110d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561245f57611ca1836128f6565b611de4576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d8f576000601354600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611d3c9190613792565b611d4691906137f5565b9050601254601154611d589190613792565b811115611d7257601254601154611d6f9190613792565b90505b80601154611d809190613792565b600b6003018190555050611d9c565b601154600b600301819055505b6000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205050611e71565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e705742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f725750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f8a5750601960029054906101000a900460ff165b1561202d57601a54811115611fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcb90613c52565b60405180910390fd5b601b5481611fe184610e50565b611feb91906135e9565b111561202c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202390613cbe565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120d55750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561212e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156121e157600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121e057600080fd5b5b60016018546121f091906135e9565b431115801561224d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122995750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122f7576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061230230610e50565b9050612356606461234860155461233a601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e50565b6124d390919063ffffffff16565b61254d90919063ffffffff16565b8111156123b2576123af60646123a1601554612393601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e50565b6124d390919063ffffffff16565b61254d90919063ffffffff16565b90505b601960009054906101000a900460ff1615801561241d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124355750601960019054906101000a900460ff165b1561245d5761244381612671565b6000479050600081111561245b5761245a47612597565b5b505b505b61246a838383612950565b505050565b60008383111582906124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae9190613000565b60405180910390fd5b50600083856124c69190613792565b9050809150509392505050565b60008083036124e55760009050612547565b600082846124f39190613cde565b905082848261250291906137f5565b14612542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253990613daa565b60405180910390fd5b809150505b92915050565b600061258f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612960565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ff573d6000803e3d6000fd5b5050565b600060095482111561264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190613e3c565b60405180910390fd5b60006126546129c3565b9050612669818461254d90919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126a9576126a86131d6565b5b6040519080825280602002602001820160405280156126d75781602001602082028036833780820191505090505b50905030816000815181106126ef576126ee61361d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ba91906138a7565b816001815181106127ce576127cd61361d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283530601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a11565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261288591906135e9565b6040518663ffffffff1660e01b81526004016128a5959493929190613f1a565b600060405180830381600087803b1580156128bf57600080fd5b505af11580156128d3573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61295b8383836129ee565b505050565b600080831182906129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e9190613000565b60405180910390fd5b50600083856129b691906137f5565b9050809150509392505050565b60008060006129d0612bb9565b915091506129e7818361254d90919063ffffffff16565b9250505090565b600080600080600080612a0087612c15565b955095509550955095509550612a5e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cb290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612af385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b3f81612d5a565b612b498483612e17565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ba691906131b6565b60405180910390a3505050505050505050565b6000806000600954905060006604e45fcbdb10009050612beb6604e45fcbdb100060095461254d90919063ffffffff16565b821015612c08576009546604e45fcbdb1000935093505050612c11565b81819350935050505b9091565b6000806000806000806000806000612c33612c2e611a09565b6128f6565b612c5157612c4c8a600b60020154600b60030154612e51565b612c67565b612c668a600b60000154600b60010154612e51565b5b9250925092506000612c776129c3565b90506000806000612c8a8e878787612ee7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cf483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246f565b905092915050565b6000808284612d0b91906135e9565b905083811015612d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4790613fc0565b60405180910390fd5b8091505092915050565b6000612d646129c3565b90506000612d7b82846124d390919063ffffffff16565b9050612dcf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e2c82600954612cb290919063ffffffff16565b600981905550612e4781600a54612cfc90919063ffffffff16565b600a819055505050565b600080600080612e7d6064612e6f888a6124d390919063ffffffff16565b61254d90919063ffffffff16565b90506000612ea76064612e99888b6124d390919063ffffffff16565b61254d90919063ffffffff16565b90506000612ed082612ec2858c612cb290919063ffffffff16565b612cb290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f0085896124d390919063ffffffff16565b90506000612f1786896124d390919063ffffffff16565b90506000612f2e87896124d390919063ffffffff16565b90506000612f5782612f498587612cb290919063ffffffff16565b612cb290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612faa578082015181840152602081019050612f8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fd282612f70565b612fdc8185612f7b565b9350612fec818560208601612f8c565b612ff581612fb6565b840191505092915050565b6000602082019050818103600083015261301a8184612fc7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061306182613036565b9050919050565b61307181613056565b811461307c57600080fd5b50565b60008135905061308e81613068565b92915050565b6000819050919050565b6130a781613094565b81146130b257600080fd5b50565b6000813590506130c48161309e565b92915050565b600080604083850312156130e1576130e061302c565b5b60006130ef8582860161307f565b9250506020613100858286016130b5565b9150509250929050565b60008115159050919050565b61311f8161310a565b82525050565b600060208201905061313a6000830184613116565b92915050565b6000806000806080858703121561315a5761315961302c565b5b6000613168878288016130b5565b9450506020613179878288016130b5565b935050604061318a878288016130b5565b925050606061319b878288016130b5565b91505092959194509250565b6131b081613094565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61320e82612fb6565b810181811067ffffffffffffffff8211171561322d5761322c6131d6565b5b80604052505050565b6000613240613022565b905061324c8282613205565b919050565b600067ffffffffffffffff82111561326c5761326b6131d6565b5b602082029050602081019050919050565b600080fd5b600061329561329084613251565b613236565b905080838252602082019050602084028301858111156132b8576132b761327d565b5b835b818110156132e157806132cd888261307f565b8452602084019350506020810190506132ba565b5050509392505050565b600082601f830112613300576132ff6131d1565b5b8135613310848260208601613282565b91505092915050565b60006020828403121561332f5761332e61302c565b5b600082013567ffffffffffffffff81111561334d5761334c613031565b5b613359848285016132eb565b91505092915050565b60008060006060848603121561337b5761337a61302c565b5b60006133898682870161307f565b935050602061339a8682870161307f565b92505060406133ab868287016130b5565b9150509250925092565b6000602082840312156133cb576133ca61302c565b5b60006133d98482850161307f565b91505092915050565b600060ff82169050919050565b6133f8816133e2565b82525050565b600060208201905061341360008301846133ef565b92915050565b60006020828403121561342f5761342e61302c565b5b600061343d848285016130b5565b91505092915050565b61344f8161310a565b811461345a57600080fd5b50565b60008135905061346c81613446565b92915050565b6000602082840312156134885761348761302c565b5b60006134968482850161345d565b91505092915050565b60006080820190506134b460008301876131a7565b6134c160208301866131a7565b6134ce60408301856131a7565b6134db60608301846131a7565b95945050505050565b6134ed81613056565b82525050565b600060208201905061350860008301846134e4565b92915050565b600080604083850312156135255761352461302c565b5b60006135338582860161307f565b92505060206135448582860161307f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613584602083612f7b565b915061358f8261354e565b602082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135f482613094565b91506135ff83613094565b9250828201905080821115613617576136166135ba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061365782613094565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613689576136886135ba565b5b600182019050919050565b7f4e6f7420617574686f7269736564000000000000000000000000000000000000600082015250565b60006136ca600e83612f7b565b91506136d582613694565b602082019050919050565b600060208201905081810360008301526136f9816136bd565b9050919050565b7f546869732061646472657373206469646e27742062757920616e7920746f6b6560008201527f6e73206f722069742068617320616c726561647920736f6c64207468656d2e00602082015250565b600061375c603f83612f7b565b915061376782613700565b604082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b600061379d82613094565b91506137a883613094565b92508282039050818111156137c0576137bf6135ba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061380082613094565b915061380b83613094565b92508261381b5761381a6137c6565b5b828204905092915050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b600061385c601583612f7b565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b6000815190506138a181613068565b92915050565b6000602082840312156138bd576138bc61302c565b5b60006138cb84828501613892565b91505092915050565b60006040820190506138e960008301856134e4565b6138f660208301846134e4565b9392505050565b6000819050919050565b6000819050919050565b600061392c613927613922846138fd565b613907565b613094565b9050919050565b61393c81613911565b82525050565b600060c08201905061395760008301896134e4565b61396460208301886131a7565b6139716040830187613933565b61397e6060830186613933565b61398b60808301856134e4565b61399860a08301846131a7565b979650505050505050565b6000815190506139b28161309e565b92915050565b6000806000606084860312156139d1576139d061302c565b5b60006139df868287016139a3565b93505060206139f0868287016139a3565b9250506040613a01868287016139a3565b9150509250925092565b6000604082019050613a2060008301856134e4565b613a2d60208301846131a7565b9392505050565b600081519050613a4381613446565b92915050565b600060208284031215613a5f57613a5e61302c565b5b6000613a6d84828501613a34565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602483612f7b565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b64602283612f7b565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613bd0601683612f7b565b9150613bdb82613b9a565b602082019050919050565b60006020820190508181036000830152613bff81613bc3565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613c3c601983612f7b565b9150613c4782613c06565b602082019050919050565b60006020820190508181036000830152613c6b81613c2f565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b6000613ca8601483612f7b565b9150613cb382613c72565b602082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b6000613ce982613094565b9150613cf483613094565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d2d57613d2c6135ba565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d94602183612f7b565b9150613d9f82613d38565b604082019050919050565b60006020820190508181036000830152613dc381613d87565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613e26602a83612f7b565b9150613e3182613dca565b604082019050919050565b60006020820190508181036000830152613e5581613e19565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e9181613056565b82525050565b6000613ea38383613e88565b60208301905092915050565b6000602082019050919050565b6000613ec782613e5c565b613ed18185613e67565b9350613edc83613e78565b8060005b83811015613f0d578151613ef48882613e97565b9750613eff83613eaf565b925050600181019050613ee0565b5085935050505092915050565b600060a082019050613f2f60008301886131a7565b613f3c6020830187613933565b8181036040830152613f4e8186613ebc565b9050613f5d60608301856134e4565b613f6a60808301846131a7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613faa601b83612f7b565b9150613fb582613f74565b602082019050919050565b60006020820190508181036000830152613fd981613f9d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122083cb2e7717f73a139012d420b6ad2b23f45abdaa0ad77265faf96531b9405e4264736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063a9059cbb1161008a578063b87f137a11610064578063b87f137a14610512578063c3c8cd801461053b578063c9567bf914610552578063dd62ed3e1461056957610171565b8063a9059cbb1461046d578063ad19b1f2146104aa578063afb4a3f5146104e757610171565b806370a082311461037e578063715018a6146103bb57806371908a03146103d2578063751039fc146104005780638da5cb5b1461041757806395d89b411461044257610171565b8063273123b711610123578063273123b714610298578063313ce567146102c157806345596e2e146102ec5780635932ead114610315578063677daa571461033e5780636fc3eaec1461036757610171565b806306fdde0314610176578063095ea7b3146101a157806317e1df5b146101de57806318160ddd1461020757806321bbcbb11461023257806323b872dd1461025b57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a6565b6040516101989190613000565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906130ca565b6105e3565b6040516101d59190613125565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190613140565b610601565b005b34801561021357600080fd5b5061021c6106f8565b60405161022991906131b6565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190613319565b610707565b005b34801561026757600080fd5b50610282600480360381019061027d9190613362565b610969565b60405161028f9190613125565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906133b5565b610a42565b005b3480156102cd57600080fd5b506102d6610b6a565b6040516102e391906133fe565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190613419565b610b73565b005b34801561032157600080fd5b5061033c60048036038101906103379190613472565b610c20565b005b34801561034a57600080fd5b5061036560048036038101906103609190613419565b610cd2565b005b34801561037357600080fd5b5061037c610daa565b005b34801561038a57600080fd5b506103a560048036038101906103a091906133b5565b610e50565b6040516103b291906131b6565b60405180910390f35b3480156103c757600080fd5b506103d0610ea1565b005b3480156103de57600080fd5b506103e7610ff4565b6040516103f7949392919061349f565b60405180910390f35b34801561040c57600080fd5b50610415611020565b005b34801561042357600080fd5b5061042c6110d3565b60405161043991906134f3565b60405180910390f35b34801561044e57600080fd5b506104576110fc565b6040516104649190613000565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f91906130ca565b611139565b6040516104a19190613125565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc91906133b5565b611157565b6040516104de91906131b6565b60405180910390f35b3480156104f357600080fd5b506104fc611276565b60405161050991906131b6565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613419565b61128d565b005b34801561054757600080fd5b50610550611365565b005b34801561055e57600080fd5b50610567611413565b005b34801561057557600080fd5b50610590600480360381019061058b919061350e565b611982565b60405161059d91906131b6565b60405180910390f35b60606040518060400160405280600a81526020017f526f62696e20486f6f6400000000000000000000000000000000000000000000815250905090565b60006105f76105f0611a09565b8484611a11565b6001905092915050565b610609611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d9061359a565b60405180910390fd5b600f5483856106a591906135e9565b11156106b057600080fd5b60105481836106bf91906135e9565b11156106ca57600080fd5b83600b6000018190555082600b6001018190555081600b6002018190555080600b6003018190555050505050565b60006604e45fcbdb1000905090565b61070f611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061359a565b60405180910390fd5b60005b8151811015610965573073ffffffffffffffffffffffffffffffffffffffff168282815181106107d2576107d161361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156108665750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108455761084461361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106108b9576108b861361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610952576001600760008484815181106108f8576108f761361d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061095d9061364c565b91505061079f565b5050565b6000610976848484611bda565b610a3784610982611a09565b610a3285604051806060016040528060288152602001613fe160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109e8611a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246f9092919063ffffffff16565b611a11565b600190509392505050565b610a4a6110d3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ad05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906136e0565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b7b611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff9061359a565b60405180910390fd5b6031811115610c1657600080fd5b8060158190555050565b610c28611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061359a565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610cda611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e9061359a565b60405180910390fd5b60008111610d7457600080fd5b610da16064610d93836604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601a8190555050565b610db2611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e369061359a565b60405180910390fd5b6000479050610e4d81612597565b50565b6000610e9a600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612603565b9050919050565b610ea9611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061359a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600b60000154600b60010154600b60020154600b60030154935093509350935090919293565b611028611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061359a565b60405180910390fd5b6604e45fcbdb1000601a819055506604e45fcbdb1000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f52484f4f44000000000000000000000000000000000000000000000000000000815250905090565b600061114d611146611a09565b8484611bda565b6001905092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190613772565b60405180910390fd5b6000601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544261122a9190613792565b61123491906137f5565b90506012546011546112469190613792565b8111156112605760125460115461125d9190613792565b90505b8060115461126e9190613792565b915050919050565b6000611288611283611a09565b611157565b905090565b611295611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611322576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113199061359a565b60405180910390fd5b6000811161132f57600080fd5b61135c606461134e836604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601b8190555050565b61136d611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f19061359a565b60405180910390fd5b600061140530610e50565b905061141081612671565b50565b61141b611a09565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f9061359a565b60405180910390fd5b601760149054906101000a900460ff16156114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613872565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061158630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166604e45fcbdb1000611a11565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f591906138a7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906138a7565b6040518363ffffffff1660e01b815260040161169d9291906138d4565b6020604051808303816000875af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e091906138a7565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061176930610e50565b6000806117746110d3565b426040518863ffffffff1660e01b815260040161179696959493929190613942565b60606040518083038185885af11580156117b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117d991906139b8565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff021916908315150217905550611840606461183260036604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601a81905550611874606461186660036604e45fcbdb10006124d390919063ffffffff16565b61254d90919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161193b929190613a0b565b6020604051808303816000875af115801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190613a49565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7790613ae8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613b7a565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bcd91906131b6565b60405180910390a3505050565b60008111611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490613be6565b60405180910390fd5b611c256110d3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c935750611c636110d3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561245f57611ca1836128f6565b611de4576000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611d8f576000601354600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611d3c9190613792565b611d4691906137f5565b9050601254601154611d589190613792565b811115611d7257601254601154611d6f9190613792565b90505b80601154611d809190613792565b600b6003018190555050611d9c565b601154600b600301819055505b6000600460003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205050611e71565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e705742600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f725750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f8a5750601960029054906101000a900460ff165b1561202d57601a54811115611fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcb90613c52565b60405180910390fd5b601b5481611fe184610e50565b611feb91906135e9565b111561202c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202390613cbe565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120d55750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561212e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156121e157600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121e057600080fd5b5b60016018546121f091906135e9565b431115801561224d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122995750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122f7576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061230230610e50565b9050612356606461234860155461233a601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e50565b6124d390919063ffffffff16565b61254d90919063ffffffff16565b8111156123b2576123af60646123a1601554612393601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e50565b6124d390919063ffffffff16565b61254d90919063ffffffff16565b90505b601960009054906101000a900460ff1615801561241d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124355750601960019054906101000a900460ff165b1561245d5761244381612671565b6000479050600081111561245b5761245a47612597565b5b505b505b61246a838383612950565b505050565b60008383111582906124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae9190613000565b60405180910390fd5b50600083856124c69190613792565b9050809150509392505050565b60008083036124e55760009050612547565b600082846124f39190613cde565b905082848261250291906137f5565b14612542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253990613daa565b60405180910390fd5b809150505b92915050565b600061258f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612960565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ff573d6000803e3d6000fd5b5050565b600060095482111561264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190613e3c565b60405180910390fd5b60006126546129c3565b9050612669818461254d90919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126a9576126a86131d6565b5b6040519080825280602002602001820160405280156126d75781602001602082028036833780820191505090505b50905030816000815181106126ef576126ee61361d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ba91906138a7565b816001815181106127ce576127cd61361d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283530601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a11565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261288591906135e9565b6040518663ffffffff1660e01b81526004016128a5959493929190613f1a565b600060405180830381600087803b1580156128bf57600080fd5b505af11580156128d3573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61295b8383836129ee565b505050565b600080831182906129a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e9190613000565b60405180910390fd5b50600083856129b691906137f5565b9050809150509392505050565b60008060006129d0612bb9565b915091506129e7818361254d90919063ffffffff16565b9250505090565b600080600080600080612a0087612c15565b955095509550955095509550612a5e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cb290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612af385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b3f81612d5a565b612b498483612e17565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612ba691906131b6565b60405180910390a3505050505050505050565b6000806000600954905060006604e45fcbdb10009050612beb6604e45fcbdb100060095461254d90919063ffffffff16565b821015612c08576009546604e45fcbdb1000935093505050612c11565b81819350935050505b9091565b6000806000806000806000806000612c33612c2e611a09565b6128f6565b612c5157612c4c8a600b60020154600b60030154612e51565b612c67565b612c668a600b60000154600b60010154612e51565b5b9250925092506000612c776129c3565b90506000806000612c8a8e878787612ee7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cf483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246f565b905092915050565b6000808284612d0b91906135e9565b905083811015612d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4790613fc0565b60405180910390fd5b8091505092915050565b6000612d646129c3565b90506000612d7b82846124d390919063ffffffff16565b9050612dcf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e2c82600954612cb290919063ffffffff16565b600981905550612e4781600a54612cfc90919063ffffffff16565b600a819055505050565b600080600080612e7d6064612e6f888a6124d390919063ffffffff16565b61254d90919063ffffffff16565b90506000612ea76064612e99888b6124d390919063ffffffff16565b61254d90919063ffffffff16565b90506000612ed082612ec2858c612cb290919063ffffffff16565b612cb290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f0085896124d390919063ffffffff16565b90506000612f1786896124d390919063ffffffff16565b90506000612f2e87896124d390919063ffffffff16565b90506000612f5782612f498587612cb290919063ffffffff16565b612cb290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612faa578082015181840152602081019050612f8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fd282612f70565b612fdc8185612f7b565b9350612fec818560208601612f8c565b612ff581612fb6565b840191505092915050565b6000602082019050818103600083015261301a8184612fc7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061306182613036565b9050919050565b61307181613056565b811461307c57600080fd5b50565b60008135905061308e81613068565b92915050565b6000819050919050565b6130a781613094565b81146130b257600080fd5b50565b6000813590506130c48161309e565b92915050565b600080604083850312156130e1576130e061302c565b5b60006130ef8582860161307f565b9250506020613100858286016130b5565b9150509250929050565b60008115159050919050565b61311f8161310a565b82525050565b600060208201905061313a6000830184613116565b92915050565b6000806000806080858703121561315a5761315961302c565b5b6000613168878288016130b5565b9450506020613179878288016130b5565b935050604061318a878288016130b5565b925050606061319b878288016130b5565b91505092959194509250565b6131b081613094565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61320e82612fb6565b810181811067ffffffffffffffff8211171561322d5761322c6131d6565b5b80604052505050565b6000613240613022565b905061324c8282613205565b919050565b600067ffffffffffffffff82111561326c5761326b6131d6565b5b602082029050602081019050919050565b600080fd5b600061329561329084613251565b613236565b905080838252602082019050602084028301858111156132b8576132b761327d565b5b835b818110156132e157806132cd888261307f565b8452602084019350506020810190506132ba565b5050509392505050565b600082601f830112613300576132ff6131d1565b5b8135613310848260208601613282565b91505092915050565b60006020828403121561332f5761332e61302c565b5b600082013567ffffffffffffffff81111561334d5761334c613031565b5b613359848285016132eb565b91505092915050565b60008060006060848603121561337b5761337a61302c565b5b60006133898682870161307f565b935050602061339a8682870161307f565b92505060406133ab868287016130b5565b9150509250925092565b6000602082840312156133cb576133ca61302c565b5b60006133d98482850161307f565b91505092915050565b600060ff82169050919050565b6133f8816133e2565b82525050565b600060208201905061341360008301846133ef565b92915050565b60006020828403121561342f5761342e61302c565b5b600061343d848285016130b5565b91505092915050565b61344f8161310a565b811461345a57600080fd5b50565b60008135905061346c81613446565b92915050565b6000602082840312156134885761348761302c565b5b60006134968482850161345d565b91505092915050565b60006080820190506134b460008301876131a7565b6134c160208301866131a7565b6134ce60408301856131a7565b6134db60608301846131a7565b95945050505050565b6134ed81613056565b82525050565b600060208201905061350860008301846134e4565b92915050565b600080604083850312156135255761352461302c565b5b60006135338582860161307f565b92505060206135448582860161307f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613584602083612f7b565b915061358f8261354e565b602082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135f482613094565b91506135ff83613094565b9250828201905080821115613617576136166135ba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061365782613094565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613689576136886135ba565b5b600182019050919050565b7f4e6f7420617574686f7269736564000000000000000000000000000000000000600082015250565b60006136ca600e83612f7b565b91506136d582613694565b602082019050919050565b600060208201905081810360008301526136f9816136bd565b9050919050565b7f546869732061646472657373206469646e27742062757920616e7920746f6b6560008201527f6e73206f722069742068617320616c726561647920736f6c64207468656d2e00602082015250565b600061375c603f83612f7b565b915061376782613700565b604082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b600061379d82613094565b91506137a883613094565b92508282039050818111156137c0576137bf6135ba565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061380082613094565b915061380b83613094565b92508261381b5761381a6137c6565b5b828204905092915050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b600061385c601583612f7b565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b6000815190506138a181613068565b92915050565b6000602082840312156138bd576138bc61302c565b5b60006138cb84828501613892565b91505092915050565b60006040820190506138e960008301856134e4565b6138f660208301846134e4565b9392505050565b6000819050919050565b6000819050919050565b600061392c613927613922846138fd565b613907565b613094565b9050919050565b61393c81613911565b82525050565b600060c08201905061395760008301896134e4565b61396460208301886131a7565b6139716040830187613933565b61397e6060830186613933565b61398b60808301856134e4565b61399860a08301846131a7565b979650505050505050565b6000815190506139b28161309e565b92915050565b6000806000606084860312156139d1576139d061302c565b5b60006139df868287016139a3565b93505060206139f0868287016139a3565b9250506040613a01868287016139a3565b9150509250925092565b6000604082019050613a2060008301856134e4565b613a2d60208301846131a7565b9392505050565b600081519050613a4381613446565b92915050565b600060208284031215613a5f57613a5e61302c565b5b6000613a6d84828501613a34565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602483612f7b565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b64602283612f7b565b9150613b6f82613b08565b604082019050919050565b60006020820190508181036000830152613b9381613b57565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613bd0601683612f7b565b9150613bdb82613b9a565b602082019050919050565b60006020820190508181036000830152613bff81613bc3565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613c3c601983612f7b565b9150613c4782613c06565b602082019050919050565b60006020820190508181036000830152613c6b81613c2f565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b6000613ca8601483612f7b565b9150613cb382613c72565b602082019050919050565b60006020820190508181036000830152613cd781613c9b565b9050919050565b6000613ce982613094565b9150613cf483613094565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d2d57613d2c6135ba565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d94602183612f7b565b9150613d9f82613d38565b604082019050919050565b60006020820190508181036000830152613dc381613d87565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613e26602a83612f7b565b9150613e3182613dca565b604082019050919050565b60006020820190508181036000830152613e5581613e19565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e9181613056565b82525050565b6000613ea38383613e88565b60208301905092915050565b6000602082019050919050565b6000613ec782613e5c565b613ed18185613e67565b9350613edc83613e78565b8060005b83811015613f0d578151613ef48882613e97565b9750613eff83613eaf565b925050600181019050613ee0565b5085935050505092915050565b600060a082019050613f2f60008301886131a7565b613f3c6020830187613933565b8181036040830152613f4e8186613ebc565b9050613f5d60608301856134e4565b613f6a60808301846131a7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613faa601b83612f7b565b9150613fb582613f74565b602082019050919050565b60006020820190508181036000830152613fd981613f9d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122083cb2e7717f73a139012d420b6ad2b23f45abdaa0ad77265faf96531b9405e4264736f6c63430008100033

Deployed Bytecode Sourcemap

4193:13766:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6477:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7329:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12283:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6754:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14176:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7498:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14484:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6663:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13019:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7819:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12673:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15901:153;;;;;;;;;;;;;:::i;:::-;;6857:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3272:148;;;;;;;;;;;;;:::i;:::-;;11508:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;11382:118;;;;;;;;;;;;;:::i;:::-;;3058:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6568:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7003:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11822:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11691:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12844:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15735:154;;;;;;;;;;;;;:::i;:::-;;13258:906;;;;;;;;;;;;;:::i;:::-;;7178:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6477:83;6514:13;6547:5;;;;;;;;;;;;;;;;;6540:12;;6477:83;:::o;7329:161::-;7404:4;7421:39;7430:12;:10;:12::i;:::-;7444:7;7453:6;7421:8;:39::i;:::-;7478:4;7471:11;;7329:161;;;;:::o;12283:382::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12432:18:::1;;12421:7;12411;:17;;;;:::i;:::-;:39;;12403:48;;;::::0;::::1;;12493:19;;12481:8;12470;:19;;;;:::i;:::-;:42;;12462:51;;;::::0;::::1;;12541:7;12524:6;:14;;:24;;;;12576:7;12559:6;:14;;:24;;;;12612:8;12594:6;:15;;:26;;;;12649:8;12631:6;:15;;:26;;;;12283:382:::0;;;;:::o;6754:95::-;6807:7;4751:20;6827:14;;6754:95;:::o;14176:296::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14249:6:::1;14244:221;14265:5;:12;14261:1;:16;14244:221;;;14323:4;14303:25;;:5;14309:1;14303:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;14344:13;;;;;;;;;;;14332:25;;:5;14338:1;14332:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;14303:54;:94;;;;;14381:15;;;;;;;;;;;14361:36;;:5;14367:1;14361:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;14303:94;14299:155;;;14434:4;14417;:14;14422:5;14428:1;14422:8;;;;;;;;:::i;:::-;;;;;;;;14417:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14299:155;14279:3;;;;;:::i;:::-;;;;14244:221;;;;14176:296:::0;:::o;7498:313::-;7596:4;7613:36;7623:6;7631:9;7642:6;7613:9;:36::i;:::-;7660:121;7669:6;7677:12;:10;:12::i;:::-;7691:89;7729:6;7691:89;;;;;;;;;;;;;;;;;:11;:19;7703:6;7691:19;;;;;;;;;;;;;;;:33;7711:12;:10;:12::i;:::-;7691:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7660:8;:121::i;:::-;7799:4;7792:11;;7498:313;;;;;:::o;14484:169::-;14556:7;:5;:7::i;:::-;14542:21;;:10;:21;;;:53;;;;14581:14;;;;;;;;;;;14567:28;;:10;:28;;;14542:53;14534:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;14640:5;14625:4;:12;14630:6;14625:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14484:169;:::o;6663:83::-;6704:5;5564:1;6722:16;;6663:83;:::o;13019:117::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13099:2:::1;13093:4;:8;;13085:17;;;::::0;::::1;;13124:4;13113:8;:15;;;;13019:117:::0;:::o;7819:103::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:5:::1;7891:15;;:23;;;;;;;;;;;;;;;;;;7819:103:::0;:::o;12673:163::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12768:1:::1;12757:10;:12;12749:21;;;::::0;::::1;;12796:32;12824:3;12796:23;12808:10;4751:20;12796:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;12781:12;:47;;;;12673:163:::0;:::o;15901:153::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15953:26:::1;15982:21;15953:50;;16014:32;16027:18;16014:12;:32::i;:::-;15942:112;15901:153::o:0;6857:138::-;6923:7;6950:37;6970:7;:16;6978:7;6970:16;;;;;;;;;;;;;;;;6950:19;:37::i;:::-;6943:44;;6857:138;;;:::o;3272:148::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3379:1:::1;3342:40;;3363:6;::::0;::::1;;;;;;;;3342:40;;;;;;;;;;;;3410:1;3393:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3272:148::o:0;11508:175::-;11555:7;11564;11573;11582;11610:6;:14;;;11626:6;:14;;;11642:6;:15;;;11659:6;:15;;;11602:73;;;;;;;;11508:175;;;;:::o;11382:118::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4751:20:::1;11435:12;:22;;;;4751:20;11468:14;:24;;;;11382:118::o:0;3058:79::-;3096:7;3123:6;;;;;;;;;;;3116:13;;3058:79;:::o;6568:87::-;6607:13;6640:7;;;;;;;;;;;;;;;;;6633:14;;6568:87;:::o;7003:167::-;7081:4;7098:42;7108:12;:10;:12::i;:::-;7122:9;7133:6;7098:9;:42::i;:::-;7158:4;7151:11;;7003:167;;;;:::o;11822:453::-;11890:7;11935:1;11918:7;:13;11926:4;11918:13;;;;;;;;;;;;;;;;:18;11910:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;12015:20;12074:21;;12057:7;:13;12065:4;12057:13;;;;;;;;;;;;;;;;12039:15;:31;;;;:::i;:::-;12038:57;;;;:::i;:::-;12015:80;;12140:12;;12125;;:27;;;;:::i;:::-;12110:12;:42;12106:117;;;12199:12;;12184;;:27;;;;:::i;:::-;12169:42;;12106:117;12255:12;12240;;:27;;;;:::i;:::-;12233:34;;;11822:453;;;:::o;11691:123::-;11742:7;11769:37;11793:12;:10;:12::i;:::-;11769:23;:37::i;:::-;11762:44;;11691:123;:::o;12844:167::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12941:1:::1;12930:10;:12;12922:21;;;::::0;::::1;;12971:32;12999:3;12971:23;12983:10;4751:20;12971:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;12954:14;:49;;;;12844:167:::0;:::o;15735:154::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15787:23:::1;15813:24;15831:4;15813:9;:24::i;:::-;15787:50;;15848:33;15865:15;15848:16;:33::i;:::-;15776:113;15735:154::o:0;13258:906::-;3195:12;:10;:12::i;:::-;3185:22;;:6;;;;;;;;;;:22;;;3177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13322:11:::1;;;;;;;;;;;13321:12;13313:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13370:35;13427:42;13370:100;;13499:16;13481:15;;:34;;;;;;;;;;;;;;;;;;13526:58;13543:4;13558:15;;;;;;;;;;;4751:20;13526:8;:58::i;:::-;13629:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13611:56;;;13676:4;13683:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13611:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13595:13;;:112;;;;;;;;;;;;;;;;;;13718:15;;;;;;;;;;;:31;;;13757:21;13788:4;13794:24;13812:4;13794:9;:24::i;:::-;13819:1;13821::::0;13823:7:::1;:5;:7::i;:::-;13831:15;13718:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13872:4;13858:11;;:18;;;;;;;;;;;;;;;;;;13905:4;13887:15;;:22;;;;;;;;;;;;;;;;;;13935:23;13954:3;13935:14;13947:1;4751:20;13935:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13920:12;:38;;;;13986:23;14005:3;13986:14;13998:1;4751:20;13986:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13969:14;:40;;;;14034:4;14020:11;;:18;;;;;;;;;;;;;;;;;;14062:12;14049:10;:25;;;;14092:13;;;;;;;;;;;14085:29;;;14123:15;;;;;;;;;;;14141:14;14085:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13302:862;13258:906::o:0;7178:143::-;7259:7;7286:11;:18;7298:5;7286:18;;;;;;;;;;;;;;;:27;7305:7;7286:27;;;;;;;;;;;;;;;;7279:34;;7178:143;;;;:::o;776:98::-;829:7;856:10;849:17;;776:98;:::o;8192:335::-;8302:1;8285:19;;:5;:19;;;8277:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8383:1;8364:21;;:7;:21;;;8356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8465:6;8435:11;:18;8447:5;8435:18;;;;;;;;;;;;;;;:27;8454:7;8435:27;;;;;;;;;;;;;;;:36;;;;8503:7;8487:32;;8496:5;8487:32;;;8512:6;8487:32;;;;;;:::i;:::-;;;;;;;;8192:335;;;:::o;8535:2343::-;8632:1;8623:6;:10;8615:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8685:7;:5;:7::i;:::-;8677:15;;:4;:15;;;;:32;;;;;8702:7;:5;:7::i;:::-;8696:13;;:2;:13;;;;8677:32;8673:2155;;;8733:12;8740:4;8733:6;:12::i;:::-;8728:696;;8792:1;8770:7;:18;8778:9;8770:18;;;;;;;;;;;;;;;;:23;8766:467;;8818:20;8882:21;;8860:7;:18;8868:9;8860:18;;;;;;;;;;;;;;;;8842:15;:36;;;;:::i;:::-;8841:62;;;;:::i;:::-;8818:85;;8960:12;;8945;;:27;;;;:::i;:::-;8930:12;:42;8926:141;;;9031:12;;9016;;:27;;;;:::i;:::-;9001:42;;8926:141;9122:12;9107;;:27;;;;:::i;:::-;9089:6;:15;;:45;;;;8795:359;8766:467;;;9201:12;;9183:6;:15;;:30;;;;8766:467;9273:1;9251:7;:18;9259:9;9251:18;;;;;;;;;;;;;;;;:23;8728:696;;;9334:1;9319:7;:11;9327:2;9319:11;;;;;;;;;;;;;;;;:16;9315:94;;9374:15;9360:7;:11;9368:2;9360:11;;;;;;;;;;;;;;;:29;;;;9315:94;8728:696;9452:13;;;;;;;;;;;9444:21;;:4;:21;;;:55;;;;;9483:15;;;;;;;;;;;9469:30;;:2;:30;;;;9444:55;:83;;;;;9505:18;:22;9524:2;9505:22;;;;;;;;;;;;;;;;;;;;;;;;;9503:24;9444:83;:102;;;;;9531:15;;;;;;;;;;;9444:102;9440:319;;;9609:12;;9599:6;:22;;9591:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:14;;9694:6;9678:13;9688:2;9678:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9670:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9440:319;9795:15;;;;;;;;;;;9779:32;;:4;:32;;;;:62;;;;;9817:18;:24;9836:4;9817:24;;;;;;;;;;;;;;;;;;;;;;;;;9815:26;9779:62;:85;;;;;9851:13;;;;;;;;;;;9845:19;;:2;:19;;;9779:85;9775:158;;;9893:4;:10;9898:4;9893:10;;;;;;;;;;;;;;;;;;;;;;;;;9892:11;:24;;;;;9908:4;:8;9913:2;9908:8;;;;;;;;;;;;;;;;;;;;;;;;;9907:9;9892:24;9884:33;;;;;;9775:158;10014:1;10001:10;;:14;;;;:::i;:::-;9984:12;:32;;:77;;;;;10048:13;;;;;;;;;;;10042:19;;:2;:19;;;;9984:77;:160;;;;;10101:42;10087:57;;:2;:57;;;;9984:160;9980:235;;;10195:4;10184;:8;10189:2;10184:8;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;9980:235;10231:28;10262:24;10280:4;10262:9;:24::i;:::-;10231:55;;10327:47;10370:3;10327:38;10356:8;;10327:24;10337:13;;;;;;;;;;;10327:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10304:20;:70;10301:180;;;10418:47;10461:3;10418:38;10447:8;;10418:24;10428:13;;;;;;;;;;;10418:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10395:70;;10301:180;10502:6;;;;;;;;;;;10501:7;:32;;;;;10520:13;;;;;;;;;;;10512:21;;:4;:21;;;;10501:32;:47;;;;;10537:11;;;;;;;;;;;10501:47;10497:320;;;10571:38;10588:20;10571:16;:38::i;:::-;10628:26;10657:21;10628:50;;10721:1;10700:18;:22;10697:105;;;10747:35;10760:21;10747:12;:35::i;:::-;10697:105;10550:267;10497:320;8711:2117;8673:2155;10840:30;10855:4;10860:2;10863:6;10840:14;:30::i;:::-;8535:2343;;;:::o;1913:190::-;1999:7;2032:1;2027;:6;;2035:12;2019:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2059:9;2075:1;2071;:5;;;;:::i;:::-;2059:17;;2094:1;2087:8;;;1913:190;;;;;:::o;2111:246::-;2169:7;2198:1;2193;:6;2189:47;;2223:1;2216:8;;;;2189:47;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2291:1;2286;2282;:5;;;;:::i;:::-;:10;2274:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2348:1;2341:8;;;2111:246;;;;;:::o;2365:132::-;2423:7;2450:39;2454:1;2457;2450:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2443:46;;2365:132;;;;:::o;13152:96::-;13209:14;;;;;;;;;;;:23;;:31;13233:6;13209:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13152:96;:::o;7930:254::-;7997:7;8036;;8025;:18;;8017:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8101:19;8124:10;:8;:10::i;:::-;8101:33;;8152:24;8164:11;8152:7;:11;;:24;;;;:::i;:::-;8145:31;;;7930:254;;;:::o;10886:488::-;6061:4;6052:6;;:13;;;;;;;;;;;;;;;;;;10964:21:::1;11002:1;10988:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10964:40;;11033:4;11015;11020:1;11015:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11059:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11049:4;11054:1;11049:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11092:62;11109:4;11124:15;;;;;;;;;;;11142:11;11092:8;:62::i;:::-;11165:15;;;;;;;;;;;:66;;;11246:11;11272:1;11288:4;11315;11353:2;11335:15;:20;;;;:::i;:::-;11165:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10953:421;6097:5:::0;6088:6;;:14;;;;;;;;;;;;;;;;;;10886:488;:::o;17407:111::-;17462:4;17497:13;;;;;;;;;;;17486:24;;:7;:24;;;17479:31;;17407:111;;;:::o;14669:146::-;14763:44;14781:6;14789:9;14800:6;14763:17;:44::i;:::-;14669:146;;;:::o;2505:189::-;2591:7;2623:1;2619;:5;2626:12;2611:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2650:9;2666:1;2662;:5;;;;:::i;:::-;2650:17;;2685:1;2678:8;;;2505:189;;;;;:::o;17523:163::-;17564:7;17585:15;17602;17621:19;:17;:19::i;:::-;17584:56;;;;17658:20;17670:7;17658;:11;;:20;;;;:::i;:::-;17651:27;;;;17523:163;:::o;14823:488::-;14922:15;14939:23;14964:12;14978:23;15003:12;15017:13;15034:19;15045:7;15034:10;:19::i;:::-;14921:132;;;;;;;;;;;;15082:28;15102:7;15082;:15;15090:6;15082:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15064:7;:15;15072:6;15064:15;;;;;;;;;;;;;;;:46;;;;15142:39;15165:15;15142:7;:18;15150:9;15142:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15121:7;:18;15129:9;15121:18;;;;;;;;;;;;;;;:60;;;;15193:16;15203:5;15193:9;:16::i;:::-;15220:23;15232:4;15238;15220:11;:23::i;:::-;15276:9;15259:44;;15268:6;15259:44;;;15287:15;15259:44;;;;;;:::i;:::-;;;;;;;;14910:401;;;;;;14823:488;;;:::o;17694:262::-;17744:7;17753;17773:15;17791:7;;17773:25;;17809:15;4751:20;17809:25;;17865:20;4751;17865:7;;:11;;:20;;;;:::i;:::-;17855:7;:30;17851:61;;;17895:7;;4751:20;17887:25;;;;;;;;17851:61;17931:7;17940;17923:25;;;;;;17694:262;;;:::o;16062:561::-;16121:7;16130;16139;16148;16157;16166;16187:23;16212:12;16226:13;16243:20;16250:12;:10;:12::i;:::-;16243:6;:20::i;:::-;:132;;16321:54;16333:7;16342:6;:15;;;16359:6;:15;;;16321:11;:54::i;:::-;16243:132;;;16266:52;16278:7;16287:6;:14;;;16303:6;:14;;;16266:11;:52::i;:::-;16243:132;16186:189;;;;;;16386:19;16409:10;:8;:10::i;:::-;16386:33;;16431:15;16448:23;16473:12;16489:46;16501:7;16510:4;16516:5;16523:11;16489;:46::i;:::-;16430:105;;;;;;16554:7;16563:15;16580:4;16586:15;16603:4;16609:5;16546:69;;;;;;;;;;;;;;;;;;;16062:561;;;;;;;:::o;1769:136::-;1827:7;1854:43;1858:1;1861;1854:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1847:50;;1769:136;;;;:::o;1582:179::-;1640:7;1660:9;1676:1;1672;:5;;;;:::i;:::-;1660:17;;1701:1;1696;:6;;1688:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1752:1;1745:8;;;1582:179;;;;:::o;15319:212::-;15372:19;15395:10;:8;:10::i;:::-;15372:33;;15416:13;15432:22;15442:11;15432:5;:9;;:22;;;;:::i;:::-;15416:38;;15490:33;15517:5;15490:7;:22;15506:4;15490:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15465:7;:22;15481:4;15465:22;;;;;;;;;;;;;;;:58;;;;15361:170;;15319:212;:::o;15539:147::-;15617:17;15629:4;15617:7;;:11;;:17;;;;:::i;:::-;15607:7;:27;;;;15658:20;15673:4;15658:10;;:14;;:20;;;;:::i;:::-;15645:10;:33;;;;15539:147;;:::o;16631:351::-;16724:7;16733;16742;16762:12;16777:28;16801:3;16777:19;16789:6;16777:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16762:43;;16816:13;16832:29;16857:3;16832:20;16844:7;16832;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16816:45;;16872:23;16898:28;16920:5;16898:17;16910:4;16898:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16872:54;;16945:15;16962:4;16968:5;16937:37;;;;;;;;;16631:351;;;;;;;:::o;16990:409::-;17100:7;17109;17118;17138:15;17156:24;17168:11;17156:7;:11;;:24;;;;:::i;:::-;17138:42;;17191:12;17206:21;17215:11;17206:4;:8;;:21;;;;:::i;:::-;17191:36;;17238:13;17254:22;17264:11;17254:5;:9;;:22;;;;:::i;:::-;17238:38;;17287:23;17313:28;17335:5;17313:17;17325:4;17313:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17287:54;;17360:7;17369:15;17386:4;17352:39;;;;;;;;;;16990:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:765::-;3532:6;3540;3548;3556;3605:3;3593:9;3584:7;3580:23;3576:33;3573:120;;;3612:79;;:::i;:::-;3573:120;3732:1;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3703:117;3859:2;3885:53;3930:7;3921:6;3910:9;3906:22;3885:53;:::i;:::-;3875:63;;3830:118;3987:2;4013:53;4058:7;4049:6;4038:9;4034:22;4013:53;:::i;:::-;4003:63;;3958:118;4115:2;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4086:118;3446:765;;;;;;;:::o;4217:118::-;4304:24;4322:5;4304:24;:::i;:::-;4299:3;4292:37;4217:118;;:::o;4341:222::-;4434:4;4472:2;4461:9;4457:18;4449:26;;4485:71;4553:1;4542:9;4538:17;4529:6;4485:71;:::i;:::-;4341:222;;;;:::o;4569:117::-;4678:1;4675;4668:12;4692:180;4740:77;4737:1;4730:88;4837:4;4834:1;4827:15;4861:4;4858:1;4851:15;4878:281;4961:27;4983:4;4961:27;:::i;:::-;4953:6;4949:40;5091:6;5079:10;5076:22;5055:18;5043:10;5040:34;5037:62;5034:88;;;5102:18;;:::i;:::-;5034:88;5142:10;5138:2;5131:22;4921:238;4878:281;;:::o;5165:129::-;5199:6;5226:20;;:::i;:::-;5216:30;;5255:33;5283:4;5275:6;5255:33;:::i;:::-;5165:129;;;:::o;5300:311::-;5377:4;5467:18;5459:6;5456:30;5453:56;;;5489:18;;:::i;:::-;5453:56;5539:4;5531:6;5527:17;5519:25;;5599:4;5593;5589:15;5581:23;;5300:311;;;:::o;5617:117::-;5726:1;5723;5716:12;5757:710;5853:5;5878:81;5894:64;5951:6;5894:64;:::i;:::-;5878:81;:::i;:::-;5869:90;;5979:5;6008:6;6001:5;5994:21;6042:4;6035:5;6031:16;6024:23;;6095:4;6087:6;6083:17;6075:6;6071:30;6124:3;6116:6;6113:15;6110:122;;;6143:79;;:::i;:::-;6110:122;6258:6;6241:220;6275:6;6270:3;6267:15;6241:220;;;6350:3;6379:37;6412:3;6400:10;6379:37;:::i;:::-;6374:3;6367:50;6446:4;6441:3;6437:14;6430:21;;6317:144;6301:4;6296:3;6292:14;6285:21;;6241:220;;;6245:21;5859:608;;5757:710;;;;;:::o;6490:370::-;6561:5;6610:3;6603:4;6595:6;6591:17;6587:27;6577:122;;6618:79;;:::i;:::-;6577:122;6735:6;6722:20;6760:94;6850:3;6842:6;6835:4;6827:6;6823:17;6760:94;:::i;:::-;6751:103;;6567:293;6490:370;;;;:::o;6866:539::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7153:1;7142:9;7138:17;7125:31;7183:18;7175:6;7172:30;7169:117;;;7205:79;;:::i;:::-;7169:117;7310:78;7380:7;7371:6;7360:9;7356:22;7310:78;:::i;:::-;7300:88;;7096:302;6866:539;;;;:::o;7411:619::-;7488:6;7496;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7934:2;7960:53;8005:7;7996:6;7985:9;7981:22;7960:53;:::i;:::-;7950:63;;7905:118;7411:619;;;;;:::o;8036:329::-;8095:6;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8036:329;;;;:::o;8371:86::-;8406:7;8446:4;8439:5;8435:16;8424:27;;8371:86;;;:::o;8463:112::-;8546:22;8562:5;8546:22;:::i;:::-;8541:3;8534:35;8463:112;;:::o;8581:214::-;8670:4;8708:2;8697:9;8693:18;8685:26;;8721:67;8785:1;8774:9;8770:17;8761:6;8721:67;:::i;:::-;8581:214;;;;:::o;8801:329::-;8860:6;8909:2;8897:9;8888:7;8884:23;8880:32;8877:119;;;8915:79;;:::i;:::-;8877:119;9035:1;9060:53;9105:7;9096:6;9085:9;9081:22;9060:53;:::i;:::-;9050:63;;9006:117;8801:329;;;;:::o;9136:116::-;9206:21;9221:5;9206:21;:::i;:::-;9199:5;9196:32;9186:60;;9242:1;9239;9232:12;9186:60;9136:116;:::o;9258:133::-;9301:5;9339:6;9326:20;9317:29;;9355:30;9379:5;9355:30;:::i;:::-;9258:133;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:553::-;9903:4;9941:3;9930:9;9926:19;9918:27;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;10036:72;10104:2;10093:9;10089:18;10080:6;10036:72;:::i;:::-;10118;10186:2;10175:9;10171:18;10162:6;10118:72;:::i;:::-;10200;10268:2;10257:9;10253:18;10244:6;10200:72;:::i;:::-;9726:553;;;;;;;:::o;10285:118::-;10372:24;10390:5;10372:24;:::i;:::-;10367:3;10360:37;10285:118;;:::o;10409:222::-;10502:4;10540:2;10529:9;10525:18;10517:26;;10553:71;10621:1;10610:9;10606:17;10597:6;10553:71;:::i;:::-;10409:222;;;;:::o;10637:474::-;10705:6;10713;10762:2;10750:9;10741:7;10737:23;10733:32;10730:119;;;10768:79;;:::i;:::-;10730:119;10888:1;10913:53;10958:7;10949:6;10938:9;10934:22;10913:53;:::i;:::-;10903:63;;10859:117;11015:2;11041:53;11086:7;11077:6;11066:9;11062:22;11041:53;:::i;:::-;11031:63;;10986:118;10637:474;;;;;:::o;11117:182::-;11257:34;11253:1;11245:6;11241:14;11234:58;11117:182;:::o;11305:366::-;11447:3;11468:67;11532:2;11527:3;11468:67;:::i;:::-;11461:74;;11544:93;11633:3;11544:93;:::i;:::-;11662:2;11657:3;11653:12;11646:19;;11305:366;;;:::o;11677:419::-;11843:4;11881:2;11870:9;11866:18;11858:26;;11930:9;11924:4;11920:20;11916:1;11905:9;11901:17;11894:47;11958:131;12084:4;11958:131;:::i;:::-;11950:139;;11677:419;;;:::o;12102:180::-;12150:77;12147:1;12140:88;12247:4;12244:1;12237:15;12271:4;12268:1;12261:15;12288:191;12328:3;12347:20;12365:1;12347:20;:::i;:::-;12342:25;;12381:20;12399:1;12381:20;:::i;:::-;12376:25;;12424:1;12421;12417:9;12410:16;;12445:3;12442:1;12439:10;12436:36;;;12452:18;;:::i;:::-;12436:36;12288:191;;;;:::o;12485:180::-;12533:77;12530:1;12523:88;12630:4;12627:1;12620:15;12654:4;12651:1;12644:15;12671:233;12710:3;12733:24;12751:5;12733:24;:::i;:::-;12724:33;;12779:66;12772:5;12769:77;12766:103;;12849:18;;:::i;:::-;12766:103;12896:1;12889:5;12885:13;12878:20;;12671:233;;;:::o;12910:164::-;13050:16;13046:1;13038:6;13034:14;13027:40;12910:164;:::o;13080:366::-;13222:3;13243:67;13307:2;13302:3;13243:67;:::i;:::-;13236:74;;13319:93;13408:3;13319:93;:::i;:::-;13437:2;13432:3;13428:12;13421:19;;13080:366;;;:::o;13452:419::-;13618:4;13656:2;13645:9;13641:18;13633:26;;13705:9;13699:4;13695:20;13691:1;13680:9;13676:17;13669:47;13733:131;13859:4;13733:131;:::i;:::-;13725:139;;13452:419;;;:::o;13877:250::-;14017:34;14013:1;14005:6;14001:14;13994:58;14086:33;14081:2;14073:6;14069:15;14062:58;13877:250;:::o;14133:366::-;14275:3;14296:67;14360:2;14355:3;14296:67;:::i;:::-;14289:74;;14372:93;14461:3;14372:93;:::i;:::-;14490:2;14485:3;14481:12;14474:19;;14133:366;;;:::o;14505:419::-;14671:4;14709:2;14698:9;14694:18;14686:26;;14758:9;14752:4;14748:20;14744:1;14733:9;14729:17;14722:47;14786:131;14912:4;14786:131;:::i;:::-;14778:139;;14505:419;;;:::o;14930:194::-;14970:4;14990:20;15008:1;14990:20;:::i;:::-;14985:25;;15024:20;15042:1;15024:20;:::i;:::-;15019:25;;15068:1;15065;15061:9;15053:17;;15092:1;15086:4;15083:11;15080:37;;;15097:18;;:::i;:::-;15080:37;14930:194;;;;:::o;15130:180::-;15178:77;15175:1;15168:88;15275:4;15272:1;15265:15;15299:4;15296:1;15289:15;15316:185;15356:1;15373:20;15391:1;15373:20;:::i;:::-;15368:25;;15407:20;15425:1;15407:20;:::i;:::-;15402:25;;15446:1;15436:35;;15451:18;;:::i;:::-;15436:35;15493:1;15490;15486:9;15481:14;;15316:185;;;;:::o;15507:171::-;15647:23;15643:1;15635:6;15631:14;15624:47;15507:171;:::o;15684:366::-;15826:3;15847:67;15911:2;15906:3;15847:67;:::i;:::-;15840:74;;15923:93;16012:3;15923:93;:::i;:::-;16041:2;16036:3;16032:12;16025:19;;15684:366;;;:::o;16056:419::-;16222:4;16260:2;16249:9;16245:18;16237:26;;16309:9;16303:4;16299:20;16295:1;16284:9;16280:17;16273:47;16337:131;16463:4;16337:131;:::i;:::-;16329:139;;16056:419;;;:::o;16481:143::-;16538:5;16569:6;16563:13;16554:22;;16585:33;16612:5;16585:33;:::i;:::-;16481:143;;;;:::o;16630:351::-;16700:6;16749:2;16737:9;16728:7;16724:23;16720:32;16717:119;;;16755:79;;:::i;:::-;16717:119;16875:1;16900:64;16956:7;16947:6;16936:9;16932:22;16900:64;:::i;:::-;16890:74;;16846:128;16630:351;;;;:::o;16987:332::-;17108:4;17146:2;17135:9;17131:18;17123:26;;17159:71;17227:1;17216:9;17212:17;17203:6;17159:71;:::i;:::-;17240:72;17308:2;17297:9;17293:18;17284:6;17240:72;:::i;:::-;16987:332;;;;;:::o;17325:85::-;17370:7;17399:5;17388:16;;17325:85;;;:::o;17416:60::-;17444:3;17465:5;17458:12;;17416:60;;;:::o;17482:158::-;17540:9;17573:61;17591:42;17600:32;17626:5;17600:32;:::i;:::-;17591:42;:::i;:::-;17573:61;:::i;:::-;17560:74;;17482:158;;;:::o;17646:147::-;17741:45;17780:5;17741:45;:::i;:::-;17736:3;17729:58;17646:147;;:::o;17799:807::-;18048:4;18086:3;18075:9;18071:19;18063:27;;18100:71;18168:1;18157:9;18153:17;18144:6;18100:71;:::i;:::-;18181:72;18249:2;18238:9;18234:18;18225:6;18181:72;:::i;:::-;18263:80;18339:2;18328:9;18324:18;18315:6;18263:80;:::i;:::-;18353;18429:2;18418:9;18414:18;18405:6;18353:80;:::i;:::-;18443:73;18511:3;18500:9;18496:19;18487:6;18443:73;:::i;:::-;18526;18594:3;18583:9;18579:19;18570:6;18526:73;:::i;:::-;17799:807;;;;;;;;;:::o;18612:143::-;18669:5;18700:6;18694:13;18685:22;;18716:33;18743:5;18716:33;:::i;:::-;18612:143;;;;:::o;18761:663::-;18849:6;18857;18865;18914:2;18902:9;18893:7;18889:23;18885:32;18882:119;;;18920:79;;:::i;:::-;18882:119;19040:1;19065:64;19121:7;19112:6;19101:9;19097:22;19065:64;:::i;:::-;19055:74;;19011:128;19178:2;19204:64;19260:7;19251:6;19240:9;19236:22;19204:64;:::i;:::-;19194:74;;19149:129;19317:2;19343:64;19399:7;19390:6;19379:9;19375:22;19343:64;:::i;:::-;19333:74;;19288:129;18761:663;;;;;:::o;19430:332::-;19551:4;19589:2;19578:9;19574:18;19566:26;;19602:71;19670:1;19659:9;19655:17;19646:6;19602:71;:::i;:::-;19683:72;19751:2;19740:9;19736:18;19727:6;19683:72;:::i;:::-;19430:332;;;;;:::o;19768:137::-;19822:5;19853:6;19847:13;19838:22;;19869:30;19893:5;19869:30;:::i;:::-;19768:137;;;;:::o;19911:345::-;19978:6;20027:2;20015:9;20006:7;20002:23;19998:32;19995:119;;;20033:79;;:::i;:::-;19995:119;20153:1;20178:61;20231:7;20222:6;20211:9;20207:22;20178:61;:::i;:::-;20168:71;;20124:125;19911:345;;;;:::o;20262:223::-;20402:34;20398:1;20390:6;20386:14;20379:58;20471:6;20466:2;20458:6;20454:15;20447:31;20262:223;:::o;20491:366::-;20633:3;20654:67;20718:2;20713:3;20654:67;:::i;:::-;20647:74;;20730:93;20819:3;20730:93;:::i;:::-;20848:2;20843:3;20839:12;20832:19;;20491:366;;;:::o;20863:419::-;21029:4;21067:2;21056:9;21052:18;21044:26;;21116:9;21110:4;21106:20;21102:1;21091:9;21087:17;21080:47;21144:131;21270:4;21144:131;:::i;:::-;21136:139;;20863:419;;;:::o;21288:221::-;21428:34;21424:1;21416:6;21412:14;21405:58;21497:4;21492:2;21484:6;21480:15;21473:29;21288:221;:::o;21515:366::-;21657:3;21678:67;21742:2;21737:3;21678:67;:::i;:::-;21671:74;;21754:93;21843:3;21754:93;:::i;:::-;21872:2;21867:3;21863:12;21856:19;;21515:366;;;:::o;21887:419::-;22053:4;22091:2;22080:9;22076:18;22068:26;;22140:9;22134:4;22130:20;22126:1;22115:9;22111:17;22104:47;22168:131;22294:4;22168:131;:::i;:::-;22160:139;;21887:419;;;:::o;22312:172::-;22452:24;22448:1;22440:6;22436:14;22429:48;22312:172;:::o;22490:366::-;22632:3;22653:67;22717:2;22712:3;22653:67;:::i;:::-;22646:74;;22729:93;22818:3;22729:93;:::i;:::-;22847:2;22842:3;22838:12;22831:19;;22490:366;;;:::o;22862:419::-;23028:4;23066:2;23055:9;23051:18;23043:26;;23115:9;23109:4;23105:20;23101:1;23090:9;23086:17;23079:47;23143:131;23269:4;23143:131;:::i;:::-;23135:139;;22862:419;;;:::o;23287:175::-;23427:27;23423:1;23415:6;23411:14;23404:51;23287:175;:::o;23468:366::-;23610:3;23631:67;23695:2;23690:3;23631:67;:::i;:::-;23624:74;;23707:93;23796:3;23707:93;:::i;:::-;23825:2;23820:3;23816:12;23809:19;;23468:366;;;:::o;23840:419::-;24006:4;24044:2;24033:9;24029:18;24021:26;;24093:9;24087:4;24083:20;24079:1;24068:9;24064:17;24057:47;24121:131;24247:4;24121:131;:::i;:::-;24113:139;;23840:419;;;:::o;24265:170::-;24405:22;24401:1;24393:6;24389:14;24382:46;24265:170;:::o;24441:366::-;24583:3;24604:67;24668:2;24663:3;24604:67;:::i;:::-;24597:74;;24680:93;24769:3;24680:93;:::i;:::-;24798:2;24793:3;24789:12;24782:19;;24441:366;;;:::o;24813:419::-;24979:4;25017:2;25006:9;25002:18;24994:26;;25066:9;25060:4;25056:20;25052:1;25041:9;25037:17;25030:47;25094:131;25220:4;25094:131;:::i;:::-;25086:139;;24813:419;;;:::o;25238:348::-;25278:7;25301:20;25319:1;25301:20;:::i;:::-;25296:25;;25335:20;25353:1;25335:20;:::i;:::-;25330:25;;25523:1;25455:66;25451:74;25448:1;25445:81;25440:1;25433:9;25426:17;25422:105;25419:131;;;25530:18;;:::i;:::-;25419:131;25578:1;25575;25571:9;25560:20;;25238:348;;;;:::o;25592:220::-;25732:34;25728:1;25720:6;25716:14;25709:58;25801:3;25796:2;25788:6;25784:15;25777:28;25592:220;:::o;25818:366::-;25960:3;25981:67;26045:2;26040:3;25981:67;:::i;:::-;25974:74;;26057:93;26146:3;26057:93;:::i;:::-;26175:2;26170:3;26166:12;26159:19;;25818:366;;;:::o;26190:419::-;26356:4;26394:2;26383:9;26379:18;26371:26;;26443:9;26437:4;26433:20;26429:1;26418:9;26414:17;26407:47;26471:131;26597:4;26471:131;:::i;:::-;26463:139;;26190:419;;;:::o;26615:229::-;26755:34;26751:1;26743:6;26739:14;26732:58;26824:12;26819:2;26811:6;26807:15;26800:37;26615:229;:::o;26850:366::-;26992:3;27013:67;27077:2;27072:3;27013:67;:::i;:::-;27006:74;;27089:93;27178:3;27089:93;:::i;:::-;27207:2;27202:3;27198:12;27191:19;;26850:366;;;:::o;27222:419::-;27388:4;27426:2;27415:9;27411:18;27403:26;;27475:9;27469:4;27465:20;27461:1;27450:9;27446:17;27439:47;27503:131;27629:4;27503:131;:::i;:::-;27495:139;;27222:419;;;:::o;27647:114::-;27714:6;27748:5;27742:12;27732:22;;27647:114;;;:::o;27767:184::-;27866:11;27900:6;27895:3;27888:19;27940:4;27935:3;27931:14;27916:29;;27767:184;;;;:::o;27957:132::-;28024:4;28047:3;28039:11;;28077:4;28072:3;28068:14;28060:22;;27957:132;;;:::o;28095:108::-;28172:24;28190:5;28172:24;:::i;:::-;28167:3;28160:37;28095:108;;:::o;28209:179::-;28278:10;28299:46;28341:3;28333:6;28299:46;:::i;:::-;28377:4;28372:3;28368:14;28354:28;;28209:179;;;;:::o;28394:113::-;28464:4;28496;28491:3;28487:14;28479:22;;28394:113;;;:::o;28543:732::-;28662:3;28691:54;28739:5;28691:54;:::i;:::-;28761:86;28840:6;28835:3;28761:86;:::i;:::-;28754:93;;28871:56;28921:5;28871:56;:::i;:::-;28950:7;28981:1;28966:284;28991:6;28988:1;28985:13;28966:284;;;29067:6;29061:13;29094:63;29153:3;29138:13;29094:63;:::i;:::-;29087:70;;29180:60;29233:6;29180:60;:::i;:::-;29170:70;;29026:224;29013:1;29010;29006:9;29001:14;;28966:284;;;28970:14;29266:3;29259:10;;28667:608;;;28543:732;;;;:::o;29281:831::-;29544:4;29582:3;29571:9;29567:19;29559:27;;29596:71;29664:1;29653:9;29649:17;29640:6;29596:71;:::i;:::-;29677:80;29753:2;29742:9;29738:18;29729:6;29677:80;:::i;:::-;29804:9;29798:4;29794:20;29789:2;29778:9;29774:18;29767:48;29832:108;29935:4;29926:6;29832:108;:::i;:::-;29824:116;;29950:72;30018:2;30007:9;30003:18;29994:6;29950:72;:::i;:::-;30032:73;30100:3;30089:9;30085:19;30076:6;30032:73;:::i;:::-;29281:831;;;;;;;;:::o;30118:177::-;30258:29;30254:1;30246:6;30242:14;30235:53;30118:177;:::o;30301:366::-;30443:3;30464:67;30528:2;30523:3;30464:67;:::i;:::-;30457:74;;30540:93;30629:3;30540:93;:::i;:::-;30658:2;30653:3;30649:12;30642:19;;30301:366;;;:::o;30673:419::-;30839:4;30877:2;30866:9;30862:18;30854:26;;30926:9;30920:4;30916:20;30912:1;30901:9;30897:17;30890:47;30954:131;31080:4;30954:131;:::i;:::-;30946:139;;30673:419;;;:::o

Swarm Source

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