ETH Price: $2,358.47 (-0.29%)

Token

Harmagedon (HARMA)
 

Overview

Max Total Supply

100,000,000 HARMA

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
slumdogmillionair.eth
Balance
0.000000001 HARMA

Value
$0.00
0xFC06c6c7eDbd7920Ce914eA2aB4b5a61C11b8B85
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:
Harmagedon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-18
*/

/*
 
TOKEN NAME: Harmagedon
Website: https://www.harmagedontoken.com/
Telegram: https://t.me/harmagedonportal

*/
 
 
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract Harmagedon is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
    // Token Details
    string private constant tokenName = "Harmagedon";
    string private constant tokenSymbol = "HARMA";
    uint8 private constant tokenDecimal = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _totalSupply = 100000000 * 10**9;
    uint256 private reflectionTotal = (MAX - (MAX % _totalSupply));
    uint256 private totalFee;
    uint256 private reflectionFeeOnBuy = 0;
    uint256 private feeBuy = 40;
    uint256 private reflectionFeeOnSell = 0;
    uint256 private feeSell = 40;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100) ;
    uint256 public _maxWalletSize = _totalSupply.mul(2).div(100) ;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;
 
    uint256 private reflectionFee = reflectionFeeOnSell;
    uint256 private _taxFee = feeSell;
 
    uint256 private _previousreflectionFee = reflectionFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xe1473D81b6C847aDfC838141c792Dcd04e39Bb8B);
    address payable private _marketingAddress = payable(0x5b1C437b485fDf6bcbF2b8d83780E59692473A69);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = reflectionTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }
 
    function name() public pure returns (string memory) {
        return tokenName;
    }
 
    function symbol() public pure returns (string memory) {
        return tokenSymbol;
    }
 
    function decimals() public pure returns (uint8) {
        return tokenDecimal;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= reflectionTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (reflectionFee == 0 && _taxFee == 0) return;
 
        _previousreflectionFee = reflectionFee;
        _previoustaxFee = _taxFee;
 
        reflectionFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        reflectionFee = _previousreflectionFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                reflectionFee = reflectionFeeOnBuy;
                _taxFee = feeBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                reflectionFee = reflectionFeeOnSell;
                _taxFee = feeSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        reflectionTotal = reflectionTotal.sub(rFee);
        totalFee = totalFee.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, reflectionFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 _reflectionFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(_reflectionFee).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 = reflectionTotal;
        uint256 tSupply = _totalSupply;
        if (rSupply < reflectionTotal.div(_totalSupply)) return (reflectionTotal, _totalSupply);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
     
        feeBuy = taxFeeOnBuy;
        feeSell = 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;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
 
}

Contract Security Audit

Contract ABI

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

608060405267016345785d8a00006000196200001c9190620008d0565b6000196200002b919062000937565b600655600060085560286009556000600a556028600b556200007f60646200006b600267016345785d8a00006200072960201b6200164d1790919060201c565b620007ac60201b620016c71790919060201c565b600c55620000bf6064620000ab600267016345785d8a00006200072960201b6200164d1790919060201c565b620007ac60201b620016c71790919060201c565b600d5564e8d4a51000600e55600a54600f55600b54601055600f5460115560105460125573e1473d81b6c847adfc838141c792dcd04e39bb8b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b1c437b485fdf6bcbf2b8d83780e59692473a69601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860146101000a81548160ff0219169083151502179055506000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff021916908315150217905550348015620001eb57600080fd5b506000620001fe620007fe60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002b3620007fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd9190620009dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b9190620009dc565b6040518363ffffffff1660e01b81526004016200046a92919062000a1f565b6020604051808303816000875af11580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b09190620009dc565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620005066200080660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006b3620007fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200071a919062000a5d565b60405180910390a35062000c53565b60008083036200073d5760009050620007a6565b600082846200074d919062000a7a565b90508284826200075e919062000ac5565b14620007a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007989062000b84565b60405180910390fd5b809150505b92915050565b6000620007f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200082f60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000870919062000c2f565b60405180910390fd5b50600083856200088a919062000ac5565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008dd8262000897565b9150620008ea8362000897565b925082620008fd57620008fc620008a1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009448262000897565b9150620009518362000897565b92508282039050818111156200096c576200096b62000908565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009a48262000977565b9050919050565b620009b68162000997565b8114620009c257600080fd5b50565b600081519050620009d681620009ab565b92915050565b600060208284031215620009f557620009f462000972565b5b600062000a0584828501620009c5565b91505092915050565b62000a198162000997565b82525050565b600060408201905062000a36600083018562000a0e565b62000a45602083018462000a0e565b9392505050565b62000a578162000897565b82525050565b600060208201905062000a74600083018462000a4c565b92915050565b600062000a878262000897565b915062000a948362000897565b925082820262000aa48162000897565b9150828204841483151762000abe5762000abd62000908565b5b5092915050565b600062000ad28262000897565b915062000adf8362000897565b92508262000af25762000af1620008a1565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000b6c60218362000afd565b915062000b798262000b0e565b604082019050919050565b6000602082019050818103600083015262000b9f8162000b5d565b9050919050565b600081519050919050565b60005b8381101562000bd157808201518184015260208101905062000bb4565b60008484015250505050565b6000601f19601f8301169050919050565b600062000bfb8262000ba6565b62000c07818562000afd565b935062000c1981856020860162000bb1565b62000c248162000bdd565b840191505092915050565b6000602082019050818103600083015262000c4b818462000bee565b905092915050565b613d4e8062000c636000396000f3fe6080604052600436106101d05760003560e01c806374010ece116100f757806398a5c31511610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b806398a5c315146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f70ccf7146105235780638f9a55c01461054c57806395d89b4114610577576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b8063313ce5671161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b8063313ce5671461032b57806349bd5a5e1461035657806352f7c988146103815780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d45565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e0d565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e65565b61087b565b6040516102649190612ec0565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612f3a565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612f64565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f7f565b6108cf565b6040516102f79190612ec0565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190612f64565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d9190612fee565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613018565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613033565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613073565b610a84565b005b3480156103df57600080fd5b506103fa60048036038101906103f591906130cc565b610b74565b005b34801561040857600080fd5b50610411610c26565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613073565b610cf7565b6040516104479190612f64565b60405180910390f35b34801561045c57600080fd5b50610465610d48565b005b34801561047357600080fd5b5061048e600480360381019061048991906130f9565b610e9b565b005b34801561049c57600080fd5b506104a5610f3a565b6040516104b29190612f64565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613073565b610f40565b6040516104ef9190612f64565b60405180910390f35b34801561050457600080fd5b5061050d610f58565b60405161051a9190613018565b60405180910390f35b34801561052f57600080fd5b5061054a600480360381019061054591906130cc565b610f81565b005b34801561055857600080fd5b50610561611033565b60405161056e9190612f64565b60405180910390f35b34801561058357600080fd5b5061058c611039565b6040516105999190612e0d565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c491906130f9565b611076565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612e65565b611115565b6040516105ff9190612ec0565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613073565b611133565b60405161063c9190612ec0565b60405180910390f35b34801561065157600080fd5b5061065a611153565b005b34801561066857600080fd5b50610683600480360381019061067e9190613181565b61122c565b005b34801561069157600080fd5b506106ac60048036038101906106a791906131e1565b611366565b6040516106b99190612f64565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906130f9565b6113ed565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613073565b61148c565b005b61071c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a09061326d565b60405180910390fd5b60005b815181101561083a576001601360008484815181106107ce576107cd61328d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906132eb565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4861726d616765646f6e00000000000000000000000000000000000000000000815250905090565b600061088f610888611711565b8484611719565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc8484846118e2565b61099d846108e8611711565b61099885604051806060016040528060288152602001613cf160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e611711565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121679092919063ffffffff16565b611719565b600190509392505050565b600e5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e5611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a699061326d565b60405180910390fd5b8160098190555080600b819055505050565b610a8c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b109061326d565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b7c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c009061326d565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c67611711565b73ffffffffffffffffffffffffffffffffffffffff161480610cdd5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cc5611711565b73ffffffffffffffffffffffffffffffffffffffff16145b610ce657600080fd5b6000479050610cf4816121cb565b50565b6000610d41600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612237565b9050919050565b610d50611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ea3611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f279061326d565b60405180910390fd5b80600c8190555050565b600c5481565b60146020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f89611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061326d565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b600d5481565b60606040518060400160405280600581526020017f4841524d41000000000000000000000000000000000000000000000000000000815250905090565b61107e611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061326d565b60405180910390fd5b80600e8190555050565b6000611129611122611711565b84846118e2565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611194611711565b73ffffffffffffffffffffffffffffffffffffffff16148061120a5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f2611711565b73ffffffffffffffffffffffffffffffffffffffff16145b61121357600080fd5b600061121e30610cf7565b9050611229816122a5565b50565b611234611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b89061326d565b60405180910390fd5b60005b838390508110156113605781600560008686858181106112e7576112e661328d565b5b90506020020160208101906112fc9190613073565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611358906132eb565b9150506112c4565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113f5611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114799061326d565b60405180910390fd5b80600d8190555050565b611494611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115189061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906133a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361165f57600090506116c1565b6000828461166d91906133c5565b905082848261167c9190613436565b146116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d9565b60405180910390fd5b809150505b92915050565b600061170983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f9061356b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906135fd565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d59190612f64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611951576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119489061368f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b790613721565b60405180910390fd5b60008111611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa906137b3565b60405180910390fd5b611a0b610f58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a795750611a49610f58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e6657601860149054906101000a900460ff16611b0857611a9a610f58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90613845565b60405180910390fd5b5b600c54811115611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b44906138b1565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bf15750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613943565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cdd57600d5481611c9284610cf7565b611c9c9190613963565b10611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613a09565b60405180910390fd5b5b6000611ce830610cf7565b90506000600e548210159050600c548210611d0357600c5491505b808015611d1d5750601860159054906101000a900460ff16155b8015611d775750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8f5750601860169054906101000a900460ff165b8015611de55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e3b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e6357611e49826122a5565b60004790506000811115611e6157611e60476121cb565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f0d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fc05750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fbf5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fce5760009050612155565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120795750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561209157600854600f819055506009546010819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561213c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561215457600a54600f81905550600b546010819055505b5b61216184848484612581565b50505050565b60008383111582906121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a69190612e0d565b60405180910390fd5b50600083856121be9190613a29565b9050809150509392505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612233573d6000803e3d6000fd5b5050565b600060065482111561227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227590613acf565b60405180910390fd5b60006122886125ae565b905061229d81846116c790919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122dd576122dc612ba4565b5b60405190808252806020026020018201604052801561230b5781602001602082028036833780820191505090505b50905030816000815181106123235761232261328d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ee9190613b04565b816001815181106124025761240161328d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611719565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124cd959493929190613c2a565b600060405180830381600087803b1580156124e757600080fd5b505af11580156124fb573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b60008083118290612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255c9190612e0d565b60405180910390fd5b50600083856125749190613436565b9050809150509392505050565b8061258f5761258e6125d9565b5b61259a848484612616565b806125a8576125a76127e1565b5b50505050565b60008060006125bb6127f5565b915091506125d281836116c790919063ffffffff16565b9250505090565b6000600f541480156125ed57506000601054145b61261457600f546011819055506010546012819055506000600f8190555060006010819055505b565b60008060008060008061262887612854565b95509550955095509550955061268686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276781612964565b6127718483612a21565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127ce9190612f64565b60405180910390a3505050505050505050565b601154600f81905550601254601081905550565b60008060006006549050600067016345785d8a0000905061282967016345785d8a00006006546116c790919063ffffffff16565b8210156128475760065467016345785d8a0000935093505050612850565b81819350935050505b9091565b60008060008060008060008060006128718a600f54601054612a5b565b92509250925060006128816125ae565b905060008060006128948e878787612af1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612167565b905092915050565b60008082846129159190613963565b90508381101561295a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295190613cd0565b60405180910390fd5b8091505092915050565b600061296e6125ae565b90506000612985828461164d90919063ffffffff16565b90506129d981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a36826006546128bc90919063ffffffff16565b600681905550612a518160075461290690919063ffffffff16565b6007819055505050565b600080600080612a876064612a79888a61164d90919063ffffffff16565b6116c790919063ffffffff16565b90506000612ab16064612aa3888b61164d90919063ffffffff16565b6116c790919063ffffffff16565b90506000612ada82612acc858c6128bc90919063ffffffff16565b6128bc90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b0a858961164d90919063ffffffff16565b90506000612b21868961164d90919063ffffffff16565b90506000612b38878961164d90919063ffffffff16565b90506000612b6182612b5385876128bc90919063ffffffff16565b6128bc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bdc82612b93565b810181811067ffffffffffffffff82111715612bfb57612bfa612ba4565b5b80604052505050565b6000612c0e612b7a565b9050612c1a8282612bd3565b919050565b600067ffffffffffffffff821115612c3a57612c39612ba4565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7b82612c50565b9050919050565b612c8b81612c70565b8114612c9657600080fd5b50565b600081359050612ca881612c82565b92915050565b6000612cc1612cbc84612c1f565b612c04565b90508083825260208201905060208402830185811115612ce457612ce3612c4b565b5b835b81811015612d0d5780612cf98882612c99565b845260208401935050602081019050612ce6565b5050509392505050565b600082601f830112612d2c57612d2b612b8e565b5b8135612d3c848260208601612cae565b91505092915050565b600060208284031215612d5b57612d5a612b84565b5b600082013567ffffffffffffffff811115612d7957612d78612b89565b5b612d8584828501612d17565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dc8578082015181840152602081019050612dad565b60008484015250505050565b6000612ddf82612d8e565b612de98185612d99565b9350612df9818560208601612daa565b612e0281612b93565b840191505092915050565b60006020820190508181036000830152612e278184612dd4565b905092915050565b6000819050919050565b612e4281612e2f565b8114612e4d57600080fd5b50565b600081359050612e5f81612e39565b92915050565b60008060408385031215612e7c57612e7b612b84565b5b6000612e8a85828601612c99565b9250506020612e9b85828601612e50565b9150509250929050565b60008115159050919050565b612eba81612ea5565b82525050565b6000602082019050612ed56000830184612eb1565b92915050565b6000819050919050565b6000612f00612efb612ef684612c50565b612edb565b612c50565b9050919050565b6000612f1282612ee5565b9050919050565b6000612f2482612f07565b9050919050565b612f3481612f19565b82525050565b6000602082019050612f4f6000830184612f2b565b92915050565b612f5e81612e2f565b82525050565b6000602082019050612f796000830184612f55565b92915050565b600080600060608486031215612f9857612f97612b84565b5b6000612fa686828701612c99565b9350506020612fb786828701612c99565b9250506040612fc886828701612e50565b9150509250925092565b600060ff82169050919050565b612fe881612fd2565b82525050565b60006020820190506130036000830184612fdf565b92915050565b61301281612c70565b82525050565b600060208201905061302d6000830184613009565b92915050565b6000806040838503121561304a57613049612b84565b5b600061305885828601612e50565b925050602061306985828601612e50565b9150509250929050565b60006020828403121561308957613088612b84565b5b600061309784828501612c99565b91505092915050565b6130a981612ea5565b81146130b457600080fd5b50565b6000813590506130c6816130a0565b92915050565b6000602082840312156130e2576130e1612b84565b5b60006130f0848285016130b7565b91505092915050565b60006020828403121561310f5761310e612b84565b5b600061311d84828501612e50565b91505092915050565b600080fd5b60008083601f84011261314157613140612b8e565b5b8235905067ffffffffffffffff81111561315e5761315d613126565b5b60208301915083602082028301111561317a57613179612c4b565b5b9250929050565b60008060006040848603121561319a57613199612b84565b5b600084013567ffffffffffffffff8111156131b8576131b7612b89565b5b6131c48682870161312b565b935093505060206131d7868287016130b7565b9150509250925092565b600080604083850312156131f8576131f7612b84565b5b600061320685828601612c99565b925050602061321785828601612c99565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613257602083612d99565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f682612e2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613328576133276132bc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061338f602683612d99565b915061339a82613333565b604082019050919050565b600060208201905081810360008301526133be81613382565b9050919050565b60006133d082612e2f565b91506133db83612e2f565b92508282026133e981612e2f565b91508282048414831517613400576133ff6132bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344182612e2f565b915061344c83612e2f565b92508261345c5761345b613407565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c3602183612d99565b91506134ce82613467565b604082019050919050565b600060208201905081810360008301526134f2816134b6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613555602483612d99565b9150613560826134f9565b604082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e7602283612d99565b91506135f28261358b565b604082019050919050565b60006020820190508181036000830152613616816135da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613679602583612d99565b91506136848261361d565b604082019050919050565b600060208201905081810360008301526136a88161366c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061370b602383612d99565b9150613716826136af565b604082019050919050565b6000602082019050818103600083015261373a816136fe565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061379d602983612d99565b91506137a882613741565b604082019050919050565b600060208201905081810360008301526137cc81613790565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061382f603f83612d99565b915061383a826137d3565b604082019050919050565b6000602082019050818103600083015261385e81613822565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061389b601c83612d99565b91506138a682613865565b602082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061392d602383612d99565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b600061396e82612e2f565b915061397983612e2f565b9250828201905080821115613991576139906132bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139f3602383612d99565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000613a3482612e2f565b9150613a3f83612e2f565b9250828203905081811115613a5757613a566132bc565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ab9602a83612d99565b9150613ac482613a5d565b604082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b600081519050613afe81612c82565b92915050565b600060208284031215613b1a57613b19612b84565b5b6000613b2884828501613aef565b91505092915050565b6000819050919050565b6000613b56613b51613b4c84613b31565b612edb565b612e2f565b9050919050565b613b6681613b3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba181612c70565b82525050565b6000613bb38383613b98565b60208301905092915050565b6000602082019050919050565b6000613bd782613b6c565b613be18185613b77565b9350613bec83613b88565b8060005b83811015613c1d578151613c048882613ba7565b9750613c0f83613bbf565b925050600181019050613bf0565b5085935050505092915050565b600060a082019050613c3f6000830188612f55565b613c4c6020830187613b5d565b8181036040830152613c5e8186613bcc565b9050613c6d6060830185613009565b613c7a6080830184612f55565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cba601b83612d99565b9150613cc582613c84565b602082019050919050565b60006020820190508181036000830152613ce981613cad565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220074120c47eb87928797752704c187e0c55ab6140c6a958ff86e76978bac46ce564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806374010ece116100f757806398a5c31511610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b806398a5c315146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638da5cb5b116100d15780638da5cb5b146104f85780638f70ccf7146105235780638f9a55c01461054c57806395d89b4114610577576101d7565b806374010ece146104675780637d1db4a5146104905780637f2feddc146104bb576101d7565b8063313ce5671161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b8063313ce5671461032b57806349bd5a5e1461035657806352f7c988146103815780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d45565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e0d565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e65565b61087b565b6040516102649190612ec0565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612f3a565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612f64565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f7f565b6108cf565b6040516102f79190612ec0565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190612f64565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d9190612fee565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613018565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613033565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613073565b610a84565b005b3480156103df57600080fd5b506103fa60048036038101906103f591906130cc565b610b74565b005b34801561040857600080fd5b50610411610c26565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613073565b610cf7565b6040516104479190612f64565b60405180910390f35b34801561045c57600080fd5b50610465610d48565b005b34801561047357600080fd5b5061048e600480360381019061048991906130f9565b610e9b565b005b34801561049c57600080fd5b506104a5610f3a565b6040516104b29190612f64565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613073565b610f40565b6040516104ef9190612f64565b60405180910390f35b34801561050457600080fd5b5061050d610f58565b60405161051a9190613018565b60405180910390f35b34801561052f57600080fd5b5061054a600480360381019061054591906130cc565b610f81565b005b34801561055857600080fd5b50610561611033565b60405161056e9190612f64565b60405180910390f35b34801561058357600080fd5b5061058c611039565b6040516105999190612e0d565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c491906130f9565b611076565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612e65565b611115565b6040516105ff9190612ec0565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613073565b611133565b60405161063c9190612ec0565b60405180910390f35b34801561065157600080fd5b5061065a611153565b005b34801561066857600080fd5b50610683600480360381019061067e9190613181565b61122c565b005b34801561069157600080fd5b506106ac60048036038101906106a791906131e1565b611366565b6040516106b99190612f64565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906130f9565b6113ed565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613073565b61148c565b005b61071c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a09061326d565b60405180910390fd5b60005b815181101561083a576001601360008484815181106107ce576107cd61328d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906132eb565b9150506107ac565b5050565b60606040518060400160405280600a81526020017f4861726d616765646f6e00000000000000000000000000000000000000000000815250905090565b600061088f610888611711565b8484611719565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006108dc8484846118e2565b61099d846108e8611711565b61099885604051806060016040528060288152602001613cf160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e611711565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121679092919063ffffffff16565b611719565b600190509392505050565b600e5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e5611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a699061326d565b60405180910390fd5b8160098190555080600b819055505050565b610a8c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b109061326d565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b7c611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c009061326d565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c67611711565b73ffffffffffffffffffffffffffffffffffffffff161480610cdd5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cc5611711565b73ffffffffffffffffffffffffffffffffffffffff16145b610ce657600080fd5b6000479050610cf4816121cb565b50565b6000610d41600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612237565b9050919050565b610d50611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ea3611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f279061326d565b60405180910390fd5b80600c8190555050565b600c5481565b60146020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f89611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061326d565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b600d5481565b60606040518060400160405280600581526020017f4841524d41000000000000000000000000000000000000000000000000000000815250905090565b61107e611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111029061326d565b60405180910390fd5b80600e8190555050565b6000611129611122611711565b84846118e2565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611194611711565b73ffffffffffffffffffffffffffffffffffffffff16148061120a5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111f2611711565b73ffffffffffffffffffffffffffffffffffffffff16145b61121357600080fd5b600061121e30610cf7565b9050611229816122a5565b50565b611234611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b89061326d565b60405180910390fd5b60005b838390508110156113605781600560008686858181106112e7576112e661328d565b5b90506020020160208101906112fc9190613073565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611358906132eb565b9150506112c4565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113f5611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114799061326d565b60405180910390fd5b80600d8190555050565b611494611711565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611521576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115189061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906133a5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361165f57600090506116c1565b6000828461166d91906133c5565b905082848261167c9190613436565b146116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d9565b60405180910390fd5b809150505b92915050565b600061170983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061251e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f9061356b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906135fd565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d59190612f64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611951576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119489061368f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b790613721565b60405180910390fd5b60008111611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa906137b3565b60405180910390fd5b611a0b610f58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a795750611a49610f58565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e6657601860149054906101000a900460ff16611b0857611a9a610f58565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90613845565b60405180910390fd5b5b600c54811115611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b44906138b1565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bf15750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613943565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cdd57600d5481611c9284610cf7565b611c9c9190613963565b10611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613a09565b60405180910390fd5b5b6000611ce830610cf7565b90506000600e548210159050600c548210611d0357600c5491505b808015611d1d5750601860159054906101000a900460ff16155b8015611d775750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8f5750601860169054906101000a900460ff165b8015611de55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e3b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e6357611e49826122a5565b60004790506000811115611e6157611e60476121cb565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f0d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fc05750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fbf5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fce5760009050612155565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120795750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561209157600854600f819055506009546010819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561213c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561215457600a54600f81905550600b546010819055505b5b61216184848484612581565b50505050565b60008383111582906121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a69190612e0d565b60405180910390fd5b50600083856121be9190613a29565b9050809150509392505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612233573d6000803e3d6000fd5b5050565b600060065482111561227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227590613acf565b60405180910390fd5b60006122886125ae565b905061229d81846116c790919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122dd576122dc612ba4565b5b60405190808252806020026020018201604052801561230b5781602001602082028036833780820191505090505b50905030816000815181106123235761232261328d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ee9190613b04565b816001815181106124025761240161328d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611719565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124cd959493929190613c2a565b600060405180830381600087803b1580156124e757600080fd5b505af11580156124fb573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b60008083118290612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255c9190612e0d565b60405180910390fd5b50600083856125749190613436565b9050809150509392505050565b8061258f5761258e6125d9565b5b61259a848484612616565b806125a8576125a76127e1565b5b50505050565b60008060006125bb6127f5565b915091506125d281836116c790919063ffffffff16565b9250505090565b6000600f541480156125ed57506000601054145b61261457600f546011819055506010546012819055506000600f8190555060006010819055505b565b60008060008060008061262887612854565b95509550955095509550955061268686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061276781612964565b6127718483612a21565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127ce9190612f64565b60405180910390a3505050505050505050565b601154600f81905550601254601081905550565b60008060006006549050600067016345785d8a0000905061282967016345785d8a00006006546116c790919063ffffffff16565b8210156128475760065467016345785d8a0000935093505050612850565b81819350935050505b9091565b60008060008060008060008060006128718a600f54601054612a5b565b92509250925060006128816125ae565b905060008060006128948e878787612af1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612167565b905092915050565b60008082846129159190613963565b90508381101561295a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295190613cd0565b60405180910390fd5b8091505092915050565b600061296e6125ae565b90506000612985828461164d90919063ffffffff16565b90506129d981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461290690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a36826006546128bc90919063ffffffff16565b600681905550612a518160075461290690919063ffffffff16565b6007819055505050565b600080600080612a876064612a79888a61164d90919063ffffffff16565b6116c790919063ffffffff16565b90506000612ab16064612aa3888b61164d90919063ffffffff16565b6116c790919063ffffffff16565b90506000612ada82612acc858c6128bc90919063ffffffff16565b6128bc90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b0a858961164d90919063ffffffff16565b90506000612b21868961164d90919063ffffffff16565b90506000612b38878961164d90919063ffffffff16565b90506000612b6182612b5385876128bc90919063ffffffff16565b6128bc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bdc82612b93565b810181811067ffffffffffffffff82111715612bfb57612bfa612ba4565b5b80604052505050565b6000612c0e612b7a565b9050612c1a8282612bd3565b919050565b600067ffffffffffffffff821115612c3a57612c39612ba4565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c7b82612c50565b9050919050565b612c8b81612c70565b8114612c9657600080fd5b50565b600081359050612ca881612c82565b92915050565b6000612cc1612cbc84612c1f565b612c04565b90508083825260208201905060208402830185811115612ce457612ce3612c4b565b5b835b81811015612d0d5780612cf98882612c99565b845260208401935050602081019050612ce6565b5050509392505050565b600082601f830112612d2c57612d2b612b8e565b5b8135612d3c848260208601612cae565b91505092915050565b600060208284031215612d5b57612d5a612b84565b5b600082013567ffffffffffffffff811115612d7957612d78612b89565b5b612d8584828501612d17565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dc8578082015181840152602081019050612dad565b60008484015250505050565b6000612ddf82612d8e565b612de98185612d99565b9350612df9818560208601612daa565b612e0281612b93565b840191505092915050565b60006020820190508181036000830152612e278184612dd4565b905092915050565b6000819050919050565b612e4281612e2f565b8114612e4d57600080fd5b50565b600081359050612e5f81612e39565b92915050565b60008060408385031215612e7c57612e7b612b84565b5b6000612e8a85828601612c99565b9250506020612e9b85828601612e50565b9150509250929050565b60008115159050919050565b612eba81612ea5565b82525050565b6000602082019050612ed56000830184612eb1565b92915050565b6000819050919050565b6000612f00612efb612ef684612c50565b612edb565b612c50565b9050919050565b6000612f1282612ee5565b9050919050565b6000612f2482612f07565b9050919050565b612f3481612f19565b82525050565b6000602082019050612f4f6000830184612f2b565b92915050565b612f5e81612e2f565b82525050565b6000602082019050612f796000830184612f55565b92915050565b600080600060608486031215612f9857612f97612b84565b5b6000612fa686828701612c99565b9350506020612fb786828701612c99565b9250506040612fc886828701612e50565b9150509250925092565b600060ff82169050919050565b612fe881612fd2565b82525050565b60006020820190506130036000830184612fdf565b92915050565b61301281612c70565b82525050565b600060208201905061302d6000830184613009565b92915050565b6000806040838503121561304a57613049612b84565b5b600061305885828601612e50565b925050602061306985828601612e50565b9150509250929050565b60006020828403121561308957613088612b84565b5b600061309784828501612c99565b91505092915050565b6130a981612ea5565b81146130b457600080fd5b50565b6000813590506130c6816130a0565b92915050565b6000602082840312156130e2576130e1612b84565b5b60006130f0848285016130b7565b91505092915050565b60006020828403121561310f5761310e612b84565b5b600061311d84828501612e50565b91505092915050565b600080fd5b60008083601f84011261314157613140612b8e565b5b8235905067ffffffffffffffff81111561315e5761315d613126565b5b60208301915083602082028301111561317a57613179612c4b565b5b9250929050565b60008060006040848603121561319a57613199612b84565b5b600084013567ffffffffffffffff8111156131b8576131b7612b89565b5b6131c48682870161312b565b935093505060206131d7868287016130b7565b9150509250925092565b600080604083850312156131f8576131f7612b84565b5b600061320685828601612c99565b925050602061321785828601612c99565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613257602083612d99565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f682612e2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613328576133276132bc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061338f602683612d99565b915061339a82613333565b604082019050919050565b600060208201905081810360008301526133be81613382565b9050919050565b60006133d082612e2f565b91506133db83612e2f565b92508282026133e981612e2f565b91508282048414831517613400576133ff6132bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344182612e2f565b915061344c83612e2f565b92508261345c5761345b613407565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c3602183612d99565b91506134ce82613467565b604082019050919050565b600060208201905081810360008301526134f2816134b6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613555602483612d99565b9150613560826134f9565b604082019050919050565b6000602082019050818103600083015261358481613548565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e7602283612d99565b91506135f28261358b565b604082019050919050565b60006020820190508181036000830152613616816135da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613679602583612d99565b91506136848261361d565b604082019050919050565b600060208201905081810360008301526136a88161366c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061370b602383612d99565b9150613716826136af565b604082019050919050565b6000602082019050818103600083015261373a816136fe565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061379d602983612d99565b91506137a882613741565b604082019050919050565b600060208201905081810360008301526137cc81613790565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061382f603f83612d99565b915061383a826137d3565b604082019050919050565b6000602082019050818103600083015261385e81613822565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061389b601c83612d99565b91506138a682613865565b602082019050919050565b600060208201905081810360008301526138ca8161388e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061392d602383612d99565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b600061396e82612e2f565b915061397983612e2f565b9250828201905080821115613991576139906132bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139f3602383612d99565b91506139fe82613997565b604082019050919050565b60006020820190508181036000830152613a22816139e6565b9050919050565b6000613a3482612e2f565b9150613a3f83612e2f565b9250828203905081811115613a5757613a566132bc565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613ab9602a83612d99565b9150613ac482613a5d565b604082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b600081519050613afe81612c82565b92915050565b600060208284031215613b1a57613b19612b84565b5b6000613b2884828501613aef565b91505092915050565b6000819050919050565b6000613b56613b51613b4c84613b31565b612edb565b612e2f565b9050919050565b613b6681613b3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ba181612c70565b82525050565b6000613bb38383613b98565b60208301905092915050565b6000602082019050919050565b6000613bd782613b6c565b613be18185613b77565b9350613bec83613b88565b8060005b83811015613c1d578151613c048882613ba7565b9750613c0f83613bbf565b925050600181019050613bf0565b5085935050505092915050565b600060a082019050613c3f6000830188612f55565b613c4c6020830187613b5d565b8181036040830152613c5e8186613bcc565b9050613c6d6060830185613009565b613c7a6080830184612f55565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cba601b83612d99565b9150613cc582613c84565b602082019050919050565b60006020820190508181036000830152613ce981613cad565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220074120c47eb87928797752704c187e0c55ab6140c6a958ff86e76978bac46ce564736f6c63430008110033

Deployed Bytecode Sourcemap

4222:13627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6813:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7761:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7104:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7963:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5232:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5849:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16827:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13251:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17227:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12829:235;;;;;;;;;;;;;:::i;:::-;;7213:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1695:148;;;;;;;;;;;;;:::i;:::-;;17368:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5098:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5542:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1479:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12474:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5164:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6909:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17035:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7360:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5504:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12584:236;;;;;;;;;;;;;:::i;:::-;;17609:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7568:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17485:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1852:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13073:169;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13149:9:::1;13144:91;13168:5;:12;13164:1;:16;13144:91;;;13219:4;13202;:14;13207:5;13213:1;13207:8;;;;;;;;:::i;:::-;;;;;;;;13202:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13182:3;;;;;:::i;:::-;;;;13144:91;;;;13073:169:::0;:::o;6813:87::-;6850:13;6883:9;;;;;;;;;;;;;;;;;6876:16;;6813:87;:::o;7761:193::-;7863:4;7885:39;7894:12;:10;:12::i;:::-;7908:7;7917:6;7885:8;:39::i;:::-;7942:4;7935:11;;7761:193;;;;:::o;5801:41::-;;;;;;;;;;;;;:::o;7104:100::-;7157:7;4812:17;7177:19;;7104:100;:::o;7963:446::-;8095:4;8112:36;8122:6;8130:9;8141:6;8112:9;:36::i;:::-;8159:220;8182:6;8203:12;:10;:12::i;:::-;8230:138;8286:6;8230:138;;;;;;;;;;;;;;;;;:11;:19;8242:6;8230:19;;;;;;;;;;;;;;;:33;8250:12;:10;:12::i;:::-;8230:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8159:8;:220::i;:::-;8397:4;8390:11;;7963:446;;;;;:::o;5232:49::-;;;;:::o;7009:86::-;7050:5;4480:1;7068:19;;7009:86;:::o;5849:28::-;;;;;;;;;;;;;:::o;16827:155::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16930:11:::1;16921:6;:20;;;;16962:12;16952:7;:22;;;;16827:155:::0;;:::o;13251:92::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13330:5:::1;13315:4;:12;13320:6;13315:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13251:92:::0;:::o;17227:101::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17308:12:::1;17294:11;;:26;;;;;;;;;;;;;;;;;;17227:101:::0;:::o;12829:235::-;12895:19;;;;;;;;;;;12879:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12934:17;;;;;;;;;;;12918:33;;:12;:10;:12::i;:::-;:33;;;12879:72;12871:81;;;;;;12963:26;12992:21;12963:50;;13024:32;13037:18;13024:12;:32::i;:::-;12860:204;12829:235::o;7213:138::-;7279:7;7306:37;7326:7;:16;7334:7;7326:16;;;;;;;;;;;;;;;;7306:19;:37::i;:::-;7299:44;;7213:138;;;:::o;1695:148::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1802:1:::1;1765:40;;1786:6;::::0;::::1;;;;;;;;1765:40;;;;;;;;;;;;1833:1;1816:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1695:148::o:0;17368:108::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:11:::1;17442:12;:26;;;;17368:108:::0;:::o;5098:58::-;;;;:::o;5542:43::-;;;;;;;;;;;;;;;;;:::o;1479:79::-;1517:7;1544:6;;;;;;;;;;;1537:13;;1479:79;:::o;12474:101::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12555:12:::1;12541:11;;:26;;;;;;;;;;;;;;;;;;12474:101:::0;:::o;5164:60::-;;;;:::o;6909:91::-;6948:13;6981:11;;;;;;;;;;;;;;;;;6974:18;;6909:91;:::o;17035:139::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17148:18:::1;17126:19;:40;;;;17035:139:::0;:::o;7360:199::-;7465:4;7487:42;7497:12;:10;:12::i;:::-;7511:9;7522:6;7487:9;:42::i;:::-;7547:4;7540:11;;7360:199;;;;:::o;5504:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12584:236::-;12650:19;;;;;;;;;;;12634:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12689:17;;;;;;;;;;;12673:33;;:12;:10;:12::i;:::-;:33;;;12634:72;12626:81;;;;;;12718:23;12744:24;12762:4;12744:9;:24::i;:::-;12718:50;;12779:33;12796:15;12779:16;:33::i;:::-;12615:205;12584:236::o;17609:234::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17726:9:::1;17722:114;17745:8;;:15;;17741:1;:19;17722:114;;;17816:8;17782:18;:31;17801:8;;17810:1;17801:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17782:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17762:3;;;;;:::i;:::-;;;;17722:114;;;;17609:234:::0;;;:::o;7568:184::-;7685:7;7717:11;:18;7729:5;7717:18;;;;;;;;;;;;;;;:27;7736:7;7717:27;;;;;;;;;;;;;;;;7710:34;;7568:184;;;;:::o;17485:115::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17579:13:::1;17562:14;:30;;;;17485:115:::0;:::o;1852:244::-;1617:12;:10;:12::i;:::-;1607:22;;:6;;;;;;;;;;:22;;;1599:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1961:1:::1;1941:22;;:8;:22;;::::0;1933:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2051:8;2022:38;;2043:6;::::0;::::1;;;;;;;;2022:38;;;;;;;;;;;;2080:8;2071:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1852:244:::0;:::o;2697:246::-;2755:7;2784:1;2779;:6;2775:47;;2809:1;2802:8;;;;2775:47;2832:9;2848:1;2844;:5;;;;:::i;:::-;2832:17;;2877:1;2872;2868;:5;;;;:::i;:::-;:10;2860:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2934:1;2927:8;;;2697:246;;;;;:::o;2952:132::-;3010:7;3037:39;3041:1;3044;3037:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3030:46;;2952:132;;;;:::o;228:98::-;281:7;308:10;301:17;;228:98;:::o;9140:369::-;9284:1;9267:19;;:5;:19;;;9259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9365:1;9346:21;;:7;:21;;;9338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9447:6;9417:11;:18;9429:5;9417:18;;;;;;;;;;;;;;;:27;9436:7;9417:27;;;;;;;;;;;;;;;:36;;;;9485:7;9469:32;;9478:5;9469:32;;;9494:6;9469:32;;;;;;:::i;:::-;;;;;;;;9140:369;;;:::o;9518:2347::-;9656:1;9640:18;;:4;:18;;;9632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9733:1;9719:16;;:2;:16;;;9711:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9803:1;9794:6;:10;9786:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9876:7;:5;:7::i;:::-;9868:15;;:4;:15;;;;:32;;;;;9893:7;:5;:7::i;:::-;9887:13;;:2;:13;;;;9868:32;9864:1265;;;9958:11;;;;;;;;;;;9953:144;;10006:7;:5;:7::i;:::-;9998:15;;:4;:15;;;9990:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9953:144;10132:12;;10122:6;:22;;10114:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10201:4;:10;10206:4;10201:10;;;;;;;;;;;;;;;;;;;;;;;;;10200:11;:24;;;;;10216:4;:8;10221:2;10216:8;;;;;;;;;;;;;;;;;;;;;;;;;10215:9;10200:24;10192:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10291:13;;;;;;;;;;;10285:19;;:2;:19;;;10282:146;;10358:14;;10349:6;10333:13;10343:2;10333:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10325:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10282:146;10445:28;10476:24;10494:4;10476:9;:24::i;:::-;10445:55;;10515:12;10554:19;;10530:20;:43;;10515:58;;10618:12;;10594:20;:36;10591:124;;10687:12;;10664:35;;10591:124;10736:7;:18;;;;;10748:6;;;;;;;;;;;10747:7;10736:18;:43;;;;;10766:13;;;;;;;;;;;10758:21;;:4;:21;;;;10736:43;:58;;;;;10783:11;;;;;;;;;;;10736:58;:87;;;;;10799:18;:24;10818:4;10799:24;;;;;;;;;;;;;;;;;;;;;;;;;10798:25;10736:87;:114;;;;;10828:18;:22;10847:2;10828:22;;;;;;;;;;;;;;;;;;;;;;;;;10827:23;10736:114;10732:386;;;10871:38;10888:20;10871:16;:38::i;:::-;10928:26;10957:21;10928:50;;11022:1;11001:18;:22;10997:106;;;11048:35;11061:21;11048:12;:35::i;:::-;10997:106;10852:266;10732:386;9902:1227;;9864:1265;11142:12;11157:4;11142:19;;11207:18;:24;11226:4;11207:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11235:18;:22;11254:2;11235:22;;;;;;;;;;;;;;;;;;;;;;;;;11207:50;11206:102;;;;11271:13;;;;;;;;;;;11263:21;;:4;:21;;;;:44;;;;;11294:13;;;;;;;;;;;11288:19;;:2;:19;;;;11263:44;11206:102;11202:601;;;11335:5;11325:15;;11202:601;;;11419:13;;;;;;;;;;;11411:21;;:4;:21;;;:55;;;;;11450:15;;;;;;;;;;;11436:30;;:2;:30;;;;11411:55;11408:164;;;11503:18;;11487:13;:34;;;;11550:6;;11540:7;:16;;;;11408:164;11632:13;;;;;;;;;;;11626:19;;:2;:19;;;:55;;;;;11665:15;;;;;;;;;;;11649:32;;:4;:32;;;;11626:55;11622:167;;;11718:19;;11702:13;:35;;;;11766:7;;11756;:17;;;;11622:167;11202:601;11816:41;11831:4;11837:2;11841:6;11849:7;11816:14;:41::i;:::-;9621:2244;9518:2347;;;:::o;2464:224::-;2584:7;2617:1;2612;:6;;2620:12;2604:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2644:9;2660:1;2656;:5;;;;:::i;:::-;2644:17;;2679:1;2672:8;;;2464:224;;;;;:::o;12366:99::-;12423:17;;;;;;;;;;;:26;;:34;12450:6;12423:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12366:99;:::o;8418:331::-;8513:7;8571:15;;8560:7;:26;;8538:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;8667:19;8689:10;:8;:10::i;:::-;8667:32;;8717:24;8729:11;8717:7;:11;;:24;;;;:::i;:::-;8710:31;;;8418:331;;;:::o;11874:483::-;6097:4;6088:6;;:13;;;;;;;;;;;;;;;;;;11952:21:::1;11990:1;11976:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11952:40;;12021:4;12003;12008:1;12003:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12047:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12037:4;12042:1;12037:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12080:62;12097:4;12112:15;;;;;;;;;;;12130:11;12080:8;:62::i;:::-;12153:15;;;;;;;;;;;:66;;;12234:11;12260:1;12276:4;12303;12323:15;12153:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11941:416;6133:5:::0;6124:6;;:14;;;;;;;;;;;;;;;;;;11874:483;:::o;3093:223::-;3213:7;3245:1;3241;:5;3248:12;3233:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3272:9;3288:1;3284;:5;;;;:::i;:::-;3272:17;;3307:1;3300:8;;;3093:223;;;;;:::o;13352:282::-;13508:7;13503:28;;13517:14;:12;:14::i;:::-;13503:28;13542:44;13560:6;13568:9;13579:6;13542:17;:44::i;:::-;13602:7;13597:29;;13611:15;:13;:15::i;:::-;13597:29;13352:282;;;;:::o;16349:164::-;16391:7;16412:15;16429;16448:19;:17;:19::i;:::-;16411:56;;;;16485:20;16497:7;16485;:11;;:20;;;;:::i;:::-;16478:27;;;;16349:164;:::o;8758:238::-;8822:1;8805:13;;:18;:34;;;;;8838:1;8827:7;;:12;8805:34;8841:7;8801:47;8886:13;;8861:22;:38;;;;8928:7;;8910:15;:25;;;;8965:1;8949:13;:17;;;;8987:1;8977:7;:11;;;;8758:238;:::o;13643:610::-;13790:15;13820:23;13858:12;13885:23;13923:12;13950:13;13977:19;13988:7;13977:10;:19::i;:::-;13775:221;;;;;;;;;;;;14025:28;14045:7;14025;:15;14033:6;14025:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14007:7;:15;14015:6;14007:15;;;;;;;;;;;;;;;:46;;;;14085:39;14108:15;14085:7;:18;14093:9;14085:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14064:7;:18;14072:9;14064:18;;;;;;;;;;;;;;;:60;;;;14135:16;14145:5;14135:9;:16::i;:::-;14162:23;14174:4;14180;14162:11;:23::i;:::-;14218:9;14201:44;;14210:6;14201:44;;;14229:15;14201:44;;;;;;:::i;:::-;;;;;;;;13764:489;;;;;;13643:610;;;:::o;9005:126::-;9065:22;;9049:13;:38;;;;9108:15;;9098:7;:25;;;;9005:126::o;16522:296::-;16573:7;16582;16602:15;16620;;16602:33;;16646:15;4812:17;16646:30;;16701:33;4812:17;16701:15;;:19;;:33;;;;:::i;:::-;16691:7;:43;16687:87;;;16744:15;;4812:17;16736:38;;;;;;;;16687:87;16793:7;16802;16785:25;;;;;;16522:296;;;:::o;14688:619::-;14788:7;14810;14832;14854;14876;14898;14934:23;14959:12;14973:13;15003:44;15015:7;15024:13;;15039:7;;15003:11;:44::i;:::-;14933:114;;;;;;15058:19;15080:10;:8;:10::i;:::-;15058:32;;15102:15;15119:23;15144:12;15173:46;15185:7;15194:4;15200:5;15207:11;15173;:46::i;:::-;15101:118;;;;;;15238:7;15247:15;15264:4;15270:15;15287:4;15293:5;15230:69;;;;;;;;;;;;;;;;;;;14688:619;;;;;;;:::o;2319:136::-;2377:7;2404:43;2408:1;2411;2404:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2397:50;;2319:136;;;;:::o;2131:179::-;2189:7;2209:9;2225:1;2221;:5;;;;:::i;:::-;2209:17;;2250:1;2245;:6;;2237:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2301:1;2294:8;;;2131:179;;;;:::o;14262:211::-;14315:19;14337:10;:8;:10::i;:::-;14315:32;;14358:13;14374:22;14384:11;14374:5;:9;;:22;;;;:::i;:::-;14358:38;;14432:33;14459:5;14432:7;:22;14448:4;14432:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14407:7;:22;14423:4;14407:22;;;;;;;;;;;;;;;:58;;;;14304:169;;14262:211;:::o;14482:159::-;14568:25;14588:4;14568:15;;:19;;:25;;;;:::i;:::-;14550:15;:43;;;;14615:18;14628:4;14615:8;;:12;;:18;;;;:::i;:::-;14604:8;:29;;;;14482:159;;:::o;15316:481::-;15491:7;15513;15535;15570:12;15585:36;15617:3;15585:27;15597:14;15585:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;15570:51;;15632:13;15648:28;15672:3;15648:19;15660:6;15648:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15632:44;;15687:23;15713:28;15735:5;15713:17;15725:4;15713:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15687:54;;15760:15;15777:4;15783:5;15752:37;;;;;;;;;15316:481;;;;;;;:::o;15806:534::-;16000:7;16022;16044;16079:15;16097:24;16109:11;16097:7;:11;;:24;;;;:::i;:::-;16079:42;;16132:12;16147:21;16156:11;16147:4;:8;;:21;;;;:::i;:::-;16132:36;;16179:13;16195:22;16205:11;16195:5;:9;;:22;;;;:::i;:::-;16179:38;;16228:23;16254:28;16276:5;16254:17;16266:4;16254:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16228:54;;16301:7;16310:15;16327:4;16293:39;;;;;;;;;;15806:534;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:474::-;9088:6;9096;9145:2;9133:9;9124:7;9120:23;9116:32;9113:119;;;9151:79;;:::i;:::-;9113:119;9271:1;9296:53;9341:7;9332:6;9321:9;9317:22;9296:53;:::i;:::-;9286:63;;9242:117;9398:2;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9369:118;9020:474;;;;;:::o;9500:329::-;9559:6;9608:2;9596:9;9587:7;9583:23;9579:32;9576:119;;;9614:79;;:::i;:::-;9576:119;9734:1;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9705:117;9500:329;;;;:::o;9835:116::-;9905:21;9920:5;9905:21;:::i;:::-;9898:5;9895:32;9885:60;;9941:1;9938;9931:12;9885:60;9835:116;:::o;9957:133::-;10000:5;10038:6;10025:20;10016:29;;10054:30;10078:5;10054:30;:::i;:::-;9957:133;;;;:::o;10096:323::-;10152:6;10201:2;10189:9;10180:7;10176:23;10172:32;10169:119;;;10207:79;;:::i;:::-;10169:119;10327:1;10352:50;10394:7;10385:6;10374:9;10370:22;10352:50;:::i;:::-;10342:60;;10298:114;10096:323;;;;:::o;10425:329::-;10484:6;10533:2;10521:9;10512:7;10508:23;10504:32;10501:119;;;10539:79;;:::i;:::-;10501:119;10659:1;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10630:117;10425:329;;;;:::o;10760:117::-;10869:1;10866;10859:12;10900:568;10973:8;10983:6;11033:3;11026:4;11018:6;11014:17;11010:27;11000:122;;11041:79;;:::i;:::-;11000:122;11154:6;11141:20;11131:30;;11184:18;11176:6;11173:30;11170:117;;;11206:79;;:::i;:::-;11170:117;11320:4;11312:6;11308:17;11296:29;;11374:3;11366:4;11358:6;11354:17;11344:8;11340:32;11337:41;11334:128;;;11381:79;;:::i;:::-;11334:128;10900:568;;;;;:::o;11474:698::-;11566:6;11574;11582;11631:2;11619:9;11610:7;11606:23;11602:32;11599:119;;;11637:79;;:::i;:::-;11599:119;11785:1;11774:9;11770:17;11757:31;11815:18;11807:6;11804:30;11801:117;;;11837:79;;:::i;:::-;11801:117;11950:80;12022:7;12013:6;12002:9;11998:22;11950:80;:::i;:::-;11932:98;;;;11728:312;12079:2;12105:50;12147:7;12138:6;12127:9;12123:22;12105:50;:::i;:::-;12095:60;;12050:115;11474:698;;;;;:::o;12178:474::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:182::-;12798:34;12794:1;12786:6;12782:14;12775:58;12658:182;:::o;12846:366::-;12988:3;13009:67;13073:2;13068:3;13009:67;:::i;:::-;13002:74;;13085:93;13174:3;13085:93;:::i;:::-;13203:2;13198:3;13194:12;13187:19;;12846:366;;;:::o;13218:419::-;13384:4;13422:2;13411:9;13407:18;13399:26;;13471:9;13465:4;13461:20;13457:1;13446:9;13442:17;13435:47;13499:131;13625:4;13499:131;:::i;:::-;13491:139;;13218:419;;;:::o;13643:180::-;13691:77;13688:1;13681:88;13788:4;13785:1;13778:15;13812:4;13809:1;13802:15;13829:180;13877:77;13874:1;13867:88;13974:4;13971:1;13964:15;13998:4;13995:1;13988:15;14015:233;14054:3;14077:24;14095:5;14077:24;:::i;:::-;14068:33;;14123:66;14116:5;14113:77;14110:103;;14193:18;;:::i;:::-;14110:103;14240:1;14233:5;14229:13;14222:20;;14015:233;;;:::o;14254:225::-;14394:34;14390:1;14382:6;14378:14;14371:58;14463:8;14458:2;14450:6;14446:15;14439:33;14254:225;:::o;14485:366::-;14627:3;14648:67;14712:2;14707:3;14648:67;:::i;:::-;14641:74;;14724:93;14813:3;14724:93;:::i;:::-;14842:2;14837:3;14833:12;14826:19;;14485:366;;;:::o;14857:419::-;15023:4;15061:2;15050:9;15046:18;15038:26;;15110:9;15104:4;15100:20;15096:1;15085:9;15081:17;15074:47;15138:131;15264:4;15138:131;:::i;:::-;15130:139;;14857:419;;;:::o;15282:410::-;15322:7;15345:20;15363:1;15345:20;:::i;:::-;15340:25;;15379:20;15397:1;15379:20;:::i;:::-;15374:25;;15434:1;15431;15427:9;15456:30;15474:11;15456:30;:::i;:::-;15445:41;;15635:1;15626:7;15622:15;15619:1;15616:22;15596:1;15589:9;15569:83;15546:139;;15665:18;;:::i;:::-;15546:139;15330:362;15282:410;;;;:::o;15698:180::-;15746:77;15743:1;15736:88;15843:4;15840:1;15833:15;15867:4;15864:1;15857:15;15884:185;15924:1;15941:20;15959:1;15941:20;:::i;:::-;15936:25;;15975:20;15993:1;15975:20;:::i;:::-;15970:25;;16014:1;16004:35;;16019:18;;:::i;:::-;16004:35;16061:1;16058;16054:9;16049:14;;15884:185;;;;:::o;16075:220::-;16215:34;16211:1;16203:6;16199:14;16192:58;16284:3;16279:2;16271:6;16267:15;16260:28;16075:220;:::o;16301:366::-;16443:3;16464:67;16528:2;16523:3;16464:67;:::i;:::-;16457:74;;16540:93;16629:3;16540:93;:::i;:::-;16658:2;16653:3;16649:12;16642:19;;16301:366;;;:::o;16673:419::-;16839:4;16877:2;16866:9;16862:18;16854:26;;16926:9;16920:4;16916:20;16912:1;16901:9;16897:17;16890:47;16954:131;17080:4;16954:131;:::i;:::-;16946:139;;16673:419;;;:::o;17098:223::-;17238:34;17234:1;17226:6;17222:14;17215:58;17307:6;17302:2;17294:6;17290:15;17283:31;17098:223;:::o;17327:366::-;17469:3;17490:67;17554:2;17549:3;17490:67;:::i;:::-;17483:74;;17566:93;17655:3;17566:93;:::i;:::-;17684:2;17679:3;17675:12;17668:19;;17327:366;;;:::o;17699:419::-;17865:4;17903:2;17892:9;17888:18;17880:26;;17952:9;17946:4;17942:20;17938:1;17927:9;17923:17;17916:47;17980:131;18106:4;17980:131;:::i;:::-;17972:139;;17699:419;;;:::o;18124:221::-;18264:34;18260:1;18252:6;18248:14;18241:58;18333:4;18328:2;18320:6;18316:15;18309:29;18124:221;:::o;18351:366::-;18493:3;18514:67;18578:2;18573:3;18514:67;:::i;:::-;18507:74;;18590:93;18679:3;18590:93;:::i;:::-;18708:2;18703:3;18699:12;18692:19;;18351:366;;;:::o;18723:419::-;18889:4;18927:2;18916:9;18912:18;18904:26;;18976:9;18970:4;18966:20;18962:1;18951:9;18947:17;18940:47;19004:131;19130:4;19004:131;:::i;:::-;18996:139;;18723:419;;;:::o;19148:224::-;19288:34;19284:1;19276:6;19272:14;19265:58;19357:7;19352:2;19344:6;19340:15;19333:32;19148:224;:::o;19378:366::-;19520:3;19541:67;19605:2;19600:3;19541:67;:::i;:::-;19534:74;;19617:93;19706:3;19617:93;:::i;:::-;19735:2;19730:3;19726:12;19719:19;;19378:366;;;:::o;19750:419::-;19916:4;19954:2;19943:9;19939:18;19931:26;;20003:9;19997:4;19993:20;19989:1;19978:9;19974:17;19967:47;20031:131;20157:4;20031:131;:::i;:::-;20023:139;;19750:419;;;:::o;20175:222::-;20315:34;20311:1;20303:6;20299:14;20292:58;20384:5;20379:2;20371:6;20367:15;20360:30;20175:222;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20403:366;;;:::o;20775:419::-;20941:4;20979:2;20968:9;20964:18;20956:26;;21028:9;21022:4;21018:20;21014:1;21003:9;20999:17;20992:47;21056:131;21182:4;21056:131;:::i;:::-;21048:139;;20775:419;;;:::o;21200:228::-;21340:34;21336:1;21328:6;21324:14;21317:58;21409:11;21404:2;21396:6;21392:15;21385:36;21200:228;:::o;21434:366::-;21576:3;21597:67;21661:2;21656:3;21597:67;:::i;:::-;21590:74;;21673:93;21762:3;21673:93;:::i;:::-;21791:2;21786:3;21782:12;21775:19;;21434:366;;;:::o;21806:419::-;21972:4;22010:2;21999:9;21995:18;21987:26;;22059:9;22053:4;22049:20;22045:1;22034:9;22030:17;22023:47;22087:131;22213:4;22087:131;:::i;:::-;22079:139;;21806:419;;;:::o;22231:250::-;22371:34;22367:1;22359:6;22355:14;22348:58;22440:33;22435:2;22427:6;22423:15;22416:58;22231:250;:::o;22487:366::-;22629:3;22650:67;22714:2;22709:3;22650:67;:::i;:::-;22643:74;;22726:93;22815:3;22726:93;:::i;:::-;22844:2;22839:3;22835:12;22828:19;;22487:366;;;:::o;22859:419::-;23025:4;23063:2;23052:9;23048:18;23040:26;;23112:9;23106:4;23102:20;23098:1;23087:9;23083:17;23076:47;23140:131;23266:4;23140:131;:::i;:::-;23132:139;;22859:419;;;:::o;23284:178::-;23424:30;23420:1;23412:6;23408:14;23401:54;23284:178;:::o;23468:366::-;23610:3;23631:67;23695:2;23690:3;23631:67;:::i;:::-;23624:74;;23707:93;23796:3;23707:93;:::i;:::-;23825:2;23820:3;23816:12;23809:19;;23468:366;;;:::o;23840:419::-;24006:4;24044:2;24033:9;24029:18;24021:26;;24093:9;24087:4;24083:20;24079:1;24068:9;24064:17;24057:47;24121:131;24247:4;24121:131;:::i;:::-;24113:139;;23840:419;;;:::o;24265:222::-;24405:34;24401:1;24393:6;24389:14;24382:58;24474:5;24469:2;24461:6;24457:15;24450:30;24265:222;:::o;24493:366::-;24635:3;24656:67;24720:2;24715:3;24656:67;:::i;:::-;24649:74;;24732:93;24821:3;24732:93;:::i;:::-;24850:2;24845:3;24841:12;24834:19;;24493:366;;;:::o;24865:419::-;25031:4;25069:2;25058:9;25054:18;25046:26;;25118:9;25112:4;25108:20;25104:1;25093:9;25089:17;25082:47;25146:131;25272:4;25146:131;:::i;:::-;25138:139;;24865:419;;;:::o;25290:191::-;25330:3;25349:20;25367:1;25349:20;:::i;:::-;25344:25;;25383:20;25401:1;25383:20;:::i;:::-;25378:25;;25426:1;25423;25419:9;25412:16;;25447:3;25444:1;25441:10;25438:36;;;25454:18;;:::i;:::-;25438:36;25290:191;;;;:::o;25487:222::-;25627:34;25623:1;25615:6;25611:14;25604:58;25696:5;25691:2;25683:6;25679:15;25672:30;25487:222;:::o;25715:366::-;25857:3;25878:67;25942:2;25937:3;25878:67;:::i;:::-;25871:74;;25954:93;26043:3;25954:93;:::i;:::-;26072:2;26067:3;26063:12;26056:19;;25715:366;;;:::o;26087:419::-;26253:4;26291:2;26280:9;26276:18;26268:26;;26340:9;26334:4;26330:20;26326:1;26315:9;26311:17;26304:47;26368:131;26494:4;26368:131;:::i;:::-;26360:139;;26087:419;;;:::o;26512:194::-;26552:4;26572:20;26590:1;26572:20;:::i;:::-;26567:25;;26606:20;26624:1;26606:20;:::i;:::-;26601:25;;26650:1;26647;26643:9;26635:17;;26674:1;26668:4;26665:11;26662:37;;;26679:18;;:::i;:::-;26662:37;26512:194;;;;:::o;26712:229::-;26852:34;26848:1;26840:6;26836:14;26829:58;26921:12;26916:2;26908:6;26904:15;26897:37;26712:229;:::o;26947:366::-;27089:3;27110:67;27174:2;27169:3;27110:67;:::i;:::-;27103:74;;27186:93;27275:3;27186:93;:::i;:::-;27304:2;27299:3;27295:12;27288:19;;26947:366;;;:::o;27319:419::-;27485:4;27523:2;27512:9;27508:18;27500:26;;27572:9;27566:4;27562:20;27558:1;27547:9;27543:17;27536:47;27600:131;27726:4;27600:131;:::i;:::-;27592:139;;27319:419;;;:::o;27744:143::-;27801:5;27832:6;27826:13;27817:22;;27848:33;27875:5;27848:33;:::i;:::-;27744:143;;;;:::o;27893:351::-;27963:6;28012:2;28000:9;27991:7;27987:23;27983:32;27980:119;;;28018:79;;:::i;:::-;27980:119;28138:1;28163:64;28219:7;28210:6;28199:9;28195:22;28163:64;:::i;:::-;28153:74;;28109:128;27893:351;;;;:::o;28250:85::-;28295:7;28324:5;28313:16;;28250:85;;;:::o;28341:158::-;28399:9;28432:61;28450:42;28459:32;28485:5;28459:32;:::i;:::-;28450:42;:::i;:::-;28432:61;:::i;:::-;28419:74;;28341:158;;;:::o;28505:147::-;28600:45;28639:5;28600:45;:::i;:::-;28595:3;28588:58;28505:147;;:::o;28658:114::-;28725:6;28759:5;28753:12;28743:22;;28658:114;;;:::o;28778:184::-;28877:11;28911:6;28906:3;28899:19;28951:4;28946:3;28942:14;28927:29;;28778:184;;;;:::o;28968:132::-;29035:4;29058:3;29050:11;;29088:4;29083:3;29079:14;29071:22;;28968:132;;;:::o;29106:108::-;29183:24;29201:5;29183:24;:::i;:::-;29178:3;29171:37;29106:108;;:::o;29220:179::-;29289:10;29310:46;29352:3;29344:6;29310:46;:::i;:::-;29388:4;29383:3;29379:14;29365:28;;29220:179;;;;:::o;29405:113::-;29475:4;29507;29502:3;29498:14;29490:22;;29405:113;;;:::o;29554:732::-;29673:3;29702:54;29750:5;29702:54;:::i;:::-;29772:86;29851:6;29846:3;29772:86;:::i;:::-;29765:93;;29882:56;29932:5;29882:56;:::i;:::-;29961:7;29992:1;29977:284;30002:6;29999:1;29996:13;29977:284;;;30078:6;30072:13;30105:63;30164:3;30149:13;30105:63;:::i;:::-;30098:70;;30191:60;30244:6;30191:60;:::i;:::-;30181:70;;30037:224;30024:1;30021;30017:9;30012:14;;29977:284;;;29981:14;30277:3;30270:10;;29678:608;;;29554:732;;;;:::o;30292:831::-;30555:4;30593:3;30582:9;30578:19;30570:27;;30607:71;30675:1;30664:9;30660:17;30651:6;30607:71;:::i;:::-;30688:80;30764:2;30753:9;30749:18;30740:6;30688:80;:::i;:::-;30815:9;30809:4;30805:20;30800:2;30789:9;30785:18;30778:48;30843:108;30946:4;30937:6;30843:108;:::i;:::-;30835:116;;30961:72;31029:2;31018:9;31014:18;31005:6;30961:72;:::i;:::-;31043:73;31111:3;31100:9;31096:19;31087:6;31043:73;:::i;:::-;30292:831;;;;;;;;:::o;31129:177::-;31269:29;31265:1;31257:6;31253:14;31246:53;31129:177;:::o;31312:366::-;31454:3;31475:67;31539:2;31534:3;31475:67;:::i;:::-;31468:74;;31551:93;31640:3;31551:93;:::i;:::-;31669:2;31664:3;31660:12;31653:19;;31312:366;;;:::o;31684:419::-;31850:4;31888:2;31877:9;31873:18;31865:26;;31937:9;31931:4;31927:20;31923:1;31912:9;31908:17;31901:47;31965:131;32091:4;31965:131;:::i;:::-;31957:139;;31684:419;;;:::o

Swarm Source

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