ETH Price: $2,409.56 (+3.73%)
Gas: 7.67 Gwei

Token

SyncHub (SYNH)
 

Overview

Max Total Supply

100,000,000 SYNH

Holders

296 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
50,598.487794107 SYNH

Value
$0.00
0xb1ee30a94a3c25883ae1e49a0dab4d68d85041df
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

SyncHub is a revolutionary AI platform designed to empower users with advanced AI capabilities.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SyncHub

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-23
*/

/*
Website: https://synchub.ai
Docs: https://docs.synchub.ai
X: http://x.com/synchubai
Telegram : https://t.me/synchubai
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.20;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function owner() public view returns (address) {
        return _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;
    }
}

contract SyncHub is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _rOwned;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    uint8 private constant _decimals = 9;
    string private constant _name = "SyncHub";
    string private constant _symbol = "SYNH";

    uint256 private _rTotal = (MAX - (MAX % _totalSupply));
    uint256 private constant MAX = ~uint256(0);

    uint256 private _buyFee = 5;
    uint256 private _sellFee = 5;

    uint256 private _tempFeeStorage = _fee;
    uint256 private _fee = _sellFee;

    address payable private _treasuryAddress =
        payable(0xFa56b8Bbe53557Be2D733EDa0AF67Ccc9d030d16);

    bool private _maxTxn = false;
    bool private _maxWallet = false;

    uint256 private constant _totalSupply = 100_000_000 * 10**9;

    // Trade contstraints
    uint256 public _maxTradeValue = 1_000_000 * 10**9;
    uint256 public _maxTotalTradeValue = 1_000_000 * 10**9;

    uint256 public _minValueToSwap = 1000 * 10**9;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private instantFeeSwapEnabled = true;
    bool private swapping = false;
    bool private tradingAllowed;

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_treasuryAddress] = true;

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

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

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

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

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

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

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

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        return (_rTotal, _totalSupply);
    }

    function toggleinstantFeeSwapEnabled(bool _instantFeeSwapEnabled)
        public
        onlyOwner
    {
        instantFeeSwapEnabled = _instantFeeSwapEnabled;
    }

    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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function setTradingAllowed(bool _tradingAllowed) public onlyOwner {
        tradingAllowed = _tradingAllowed;
    }

    function dropFee() private {
        if (_fee == 0) return;

        _tempFeeStorage = _fee;

        _fee = 0;
    }

    function restoreFee() private {
        _fee = _tempFeeStorage;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingAllowed) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTradeValue, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxTotalTradeValue,
                    "Exceeds max hold balance"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool swapAllowed = contractTokenBalance >= _minValueToSwap;

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

            if (
                swapAllowed &&
                !swapping &&
                from != uniswapV2Pair &&
                instantFeeSwapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapForEther(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    transferEthToDev(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _fee = _buyFee;
            }

            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _fee = _sellFee;
            }
        }

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

    function swapForEther(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 transferEthToDev(uint256 amount) private {
        _treasuryAddress.transfer(amount);
    }

    function forceSwap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractETHBalance = address(this).balance;
        transferEthToDev(contractETHBalance);
    }

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

    function _transferWrapper(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 tTransferAmount,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _sendFeesToTeam(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getFeeValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, _fee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(
            tAmount,
            tTeam,
            currentRate
        );
        return (rAmount, rTransferAmount, tTransferAmount, tTeam);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) dropFee();
        _transferWrapper(sender, recipient, amount);
        if (!takeFee) restoreFee();
    }

    function manualSwap() external {
        require(_msgSender() == _treasuryAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapForEther(contractBalance);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function setMinValueToSwap(uint256 minSwappableAmount) public onlyOwner {
        _minValueToSwap = minSwappableAmount;
    }

    function updateFee(uint256 feeOnBuy, uint256 feeOnSell) public onlyOwner {
        require(
            feeOnBuy >= 0 && feeOnBuy <= 30,
            "Buy tax must be between 0% and 30%"
        );
        require(
            feeOnSell >= 0 && feeOnSell <= 30,
            "Sell tax must be between 0% and 30%"
        );

        _buyFee = feeOnBuy;
        _sellFee = feeOnSell;
    }

    // Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTradeValue = maxTxAmount;
    }

    // Set maximum holdings
    function setMaxTotalTradeValue(uint256 maxHoldSize) public onlyOwner {
        _maxTotalTradeValue = maxHoldSize;
    }

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTotalTradeValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTradeValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minValueToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","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":"maxHoldSize","type":"uint256"}],"name":"setMaxTotalTradeValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minSwappableAmount","type":"uint256"}],"name":"setMinValueToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingAllowed","type":"bool"}],"name":"setTradingAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_instantFeeSwapEnabled","type":"bool"}],"name":"toggleinstantFeeSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00005f196200001b919062000638565b5f196200002991906200069c565b6005556005600655600560075560095460085560075460095573fa56b8bbe53557be2d733eda0af67ccc9d030d16600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a60146101000a81548160ff0219169083151502179055505f600a60156101000a81548160ff02191690831515021790555066038d7ea4c68000600b5566038d7ea4c68000600c5564e8d4a51000600d556001600f60146101000a81548160ff0219169083151502179055505f600f60156101000a81548160ff0219169083151502179055503480156200012a575f80fd5b505f6200013c620005d460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060055460025f620001ee620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f391906200073b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000359573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200037f91906200073b565b6040518363ffffffff1660e01b81526004016200039e9291906200077c565b6020604051808303815f875af1158015620003bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e191906200073b565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f6200048a620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200055f620005d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620005c59190620007b8565b60405180910390a350620007d3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006448262000602565b9150620006518362000602565b9250826200066457620006636200060b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620006a88262000602565b9150620006b58362000602565b9250828203905081811115620006d057620006cf6200066f565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200070582620006da565b9050919050565b6200071781620006f9565b811462000722575f80fd5b50565b5f8151905062000735816200070c565b92915050565b5f60208284031215620007535762000752620006d6565b5b5f620007628482850162000725565b91505092915050565b6200077681620006f9565b82525050565b5f604082019050620007915f8301856200076b565b620007a060208301846200076b565b9392505050565b620007b28162000602565b82525050565b5f602082019050620007cd5f830184620007a7565b92915050565b61349580620007e15f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d057806397fc1cc711610089578063d02fc4c711610063578063d02fc4c71461053f578063dd62ed3e14610567578063df778d26146105a3578063f2fde38b146105b95761018b565b806397fc1cc7146104b1578063a9059cbb146104db578063c492f046146105175761018b565b806370a08231146103b9578063715018a6146103f557806374010ece1461040b57806381ceadd8146104335780638da5cb5b1461045d57806395d89b41146104875761018b565b80632676903f1161013d57806343f976ce1161011757806343f976ce1461032957806349bd5a5e1461035157806351bc3c851461037b57806366cd0c7b146103915761018b565b80632676903f146102af5780632740c197146102d7578063313ce567146102ff5761018b565b806301ac2aa31461018f57806306fdde03146101b9578063095ea7b3146101e35780631694505e1461021f57806318160ddd1461024957806323b872dd146102735761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b09190612520565b60405180910390f35b3480156101c4575f80fd5b506101cd6105e7565b6040516101da91906125c3565b60405180910390f35b3480156101ee575f80fd5b506102096004803603810190610204919061266f565b610624565b60405161021691906126c7565b60405180910390f35b34801561022a575f80fd5b50610233610641565b604051610240919061273b565b60405180910390f35b348015610254575f80fd5b5061025d610666565b60405161026a9190612520565b60405180910390f35b34801561027e575f80fd5b5061029960048036038101906102949190612754565b610675565b6040516102a691906126c7565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d091906127ce565b610749565b005b3480156102e2575f80fd5b506102fd60048036038101906102f891906127f9565b6107fa565b005b34801561030a575f80fd5b50610313610940565b6040516103209190612852565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906127ce565b610948565b005b34801561035c575f80fd5b506103656109f9565b604051610372919061287a565b60405180910390f35b348015610386575f80fd5b5061038f610a1e565b005b34801561039c575f80fd5b506103b760048036038101906103b29190612893565b610a95565b005b3480156103c4575f80fd5b506103df60048036038101906103da91906128be565b610b33565b6040516103ec9190612520565b60405180910390f35b348015610400575f80fd5b50610409610b81565b005b348015610416575f80fd5b50610431600480360381019061042c9190612893565b610ccf565b005b34801561043e575f80fd5b50610447610d6d565b6040516104549190612520565b60405180910390f35b348015610468575f80fd5b50610471610d73565b60405161047e919061287a565b60405180910390f35b348015610492575f80fd5b5061049b610d9a565b6040516104a891906125c3565b60405180910390f35b3480156104bc575f80fd5b506104c5610dd7565b6040516104d29190612520565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc919061266f565b610ddd565b60405161050e91906126c7565b60405180910390f35b348015610522575f80fd5b5061053d6004803603810190610538919061294a565b610dfa565b005b34801561054a575f80fd5b5061056560048036038101906105609190612893565b610f2f565b005b348015610572575f80fd5b5061058d600480360381019061058891906129a7565b610fcd565b60405161059a9190612520565b60405180910390f35b3480156105ae575f80fd5b506105b761104f565b005b3480156105c4575f80fd5b506105df60048036038101906105da91906128be565b6110be565b005b600b5481565b60606040518060400160405280600781526020017f53796e6348756200000000000000000000000000000000000000000000000000815250905090565b5f61063761063061127b565b8484611282565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610681848484611445565b61073e8461068d61127b565b6107398560405180606001604052806025815260200161343b6025913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106f061127b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb89092919063ffffffff16565b611282565b600190509392505050565b61075161127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d490612a2f565b60405180910390fd5b80600f60146101000a81548160ff02191690831515021790555050565b61080261127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088590612a2f565b60405180910390fd5b5f821015801561089f5750601e8211155b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612abd565b60405180910390fd5b5f81101580156108ef5750601e8111155b61092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612b4b565b60405180910390fd5b81600681905550806007819055505050565b5f6009905090565b61095061127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612a2f565b60405180910390fd5b80600f60166101000a81548160ff02191690831515021790555050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5e61127b565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d575f80fd5b5f610a8730610b33565b9050610a9281611c1a565b50565b610a9d61127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2090612a2f565b60405180910390fd5b80600c8190555050565b5f610b7a60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e85565b9050919050565b610b8961127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90612a2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cd761127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612a2f565b60405180910390fd5b80600b8190555050565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f53594e4800000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b5f610df0610de961127b565b8484611445565b6001905092915050565b610e0261127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8590612a2f565b60405180910390fd5b5f5b83839050811015610f29578160045f868685818110610eb257610eb1612b69565b5b9050602002016020810190610ec791906128be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f2190612bc3565b915050610e90565b50505050565b610f3761127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90612a2f565b60405180910390fd5b80600d8190555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108f61127b565b73ffffffffffffffffffffffffffffffffffffffff16146110ae575f80fd5b5f4790506110bb81611ef1565b50565b6110c661127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612a2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612c7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790612ce2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612d4a565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114389190612520565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612db2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890612e1a565b60405180910390fd5b5f8111611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90612e82565b60405180910390fd5b61156b610d73565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115d957506115a9610d73565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d757600f60169054906101000a900460ff16611668576115fa610d73565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f10565b60405180910390fd5b5b600b548111156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612f78565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461175957600c548161170e84610b33565b6117189190612f96565b10611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613013565b60405180910390fd5b5b5f61176330610b33565b90505f600d548210159050600b54821061177d57600b5491505b8080156117975750600f60159054906101000a900460ff16155b80156117f05750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118085750600f60149054906101000a900460ff165b801561185b575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118ae575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118d4576118bc82611c1a565b5f4790505f8111156118d2576118d147611ef1565b5b505b50505b5f6001905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611977575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a285750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a275750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a35575f9050611ba6565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ade5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aed576006546009819055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b965750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba5576007546009819055505b5b611bb284848484611f59565b50505050565b5f838311158290611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf691906125c3565b60405180910390fd5b505f8385611c0d9190613031565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c5157611c50613064565b5b604051908082528060200260200182016040528015611c7f5781602001602082028036833780820191505090505b50905030815f81518110611c9657611c95612b69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e91906130a5565b81600181518110611d7257611d71612b69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611dd830600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611282565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e3a9594939291906131c0565b5f604051808303815f87803b158015611e51575f80fd5b505af1158015611e63573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b5f600554821115611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290613288565b60405180910390fd5b5f611ed4611f86565b9050611ee98184611faf90919063ffffffff16565b915050919050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f55573d5f803e3d5ffd5b5050565b80611f6757611f66611ff8565b5b611f72848484612015565b80611f8057611f7f6121c3565b5b50505050565b5f805f611f916121ce565b91509150611fa88183611faf90919063ffffffff16565b9250505090565b5f611ff083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121e4565b905092915050565b5f6009540315612013576009546008819055505f6009819055505b565b5f805f8061202285612245565b935093509350935061207a8460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061210b8360025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d890919063ffffffff16565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061215581612335565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121b29190612520565b60405180910390a350505050505050565b600854600981905550565b5f8060055467016345785d8a0000915091509091565b5f808311829061222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222191906125c3565b60405180910390fd5b505f838561223891906132d3565b9050809150509392505050565b5f805f805f80612257876009546123ec565b915091505f612264611f86565b90505f806122738a858561243c565b9150915081818686985098509850985050505050509193509193565b5f6122d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bb8565b905092915050565b5f8082846122e69190612f96565b90508381101561232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061334d565b60405180910390fd5b8091505092915050565b5f61233e611f86565b90505f612354828461249190919063ffffffff16565b90506123a68160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f805f6124156064612407868861249190919063ffffffff16565b611faf90919063ffffffff16565b90505f61242b828761228f90919063ffffffff16565b905080829350935050509250929050565b5f805f612452848761249190919063ffffffff16565b90505f612468858761249190919063ffffffff16565b90505f61247e828461228f90919063ffffffff16565b9050828194509450505050935093915050565b5f8083036124a1575f9050612502565b5f82846124ae919061336b565b90508284826124bd91906132d3565b146124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f49061341c565b60405180910390fd5b809150505b92915050565b5f819050919050565b61251a81612508565b82525050565b5f6020820190506125335f830184612511565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612570578082015181840152602081019050612555565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61259582612539565b61259f8185612543565b93506125af818560208601612553565b6125b88161257b565b840191505092915050565b5f6020820190508181035f8301526125db818461258b565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612614826125eb565b9050919050565b6126248161260a565b811461262e575f80fd5b50565b5f8135905061263f8161261b565b92915050565b61264e81612508565b8114612658575f80fd5b50565b5f8135905061266981612645565b92915050565b5f8060408385031215612685576126846125e3565b5b5f61269285828601612631565b92505060206126a38582860161265b565b9150509250929050565b5f8115159050919050565b6126c1816126ad565b82525050565b5f6020820190506126da5f8301846126b8565b92915050565b5f819050919050565b5f6127036126fe6126f9846125eb565b6126e0565b6125eb565b9050919050565b5f612714826126e9565b9050919050565b5f6127258261270a565b9050919050565b6127358161271b565b82525050565b5f60208201905061274e5f83018461272c565b92915050565b5f805f6060848603121561276b5761276a6125e3565b5b5f61277886828701612631565b935050602061278986828701612631565b925050604061279a8682870161265b565b9150509250925092565b6127ad816126ad565b81146127b7575f80fd5b50565b5f813590506127c8816127a4565b92915050565b5f602082840312156127e3576127e26125e3565b5b5f6127f0848285016127ba565b91505092915050565b5f806040838503121561280f5761280e6125e3565b5b5f61281c8582860161265b565b925050602061282d8582860161265b565b9150509250929050565b5f60ff82169050919050565b61284c81612837565b82525050565b5f6020820190506128655f830184612843565b92915050565b6128748161260a565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f602082840312156128a8576128a76125e3565b5b5f6128b58482850161265b565b91505092915050565b5f602082840312156128d3576128d26125e3565b5b5f6128e084828501612631565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261290a576129096128e9565b5b8235905067ffffffffffffffff811115612927576129266128ed565b5b602083019150836020820283011115612943576129426128f1565b5b9250929050565b5f805f60408486031215612961576129606125e3565b5b5f84013567ffffffffffffffff81111561297e5761297d6125e7565b5b61298a868287016128f5565b9350935050602061299d868287016127ba565b9150509250925092565b5f80604083850312156129bd576129bc6125e3565b5b5f6129ca85828601612631565b92505060206129db85828601612631565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a19602083612543565b9150612a24826129e5565b602082019050919050565b5f6020820190508181035f830152612a4681612a0d565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420335f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f612aa7602283612543565b9150612ab282612a4d565b604082019050919050565b5f6020820190508181035f830152612ad481612a9b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3330250000000000000000000000000000000000000000000000000000000000602082015250565b5f612b35602383612543565b9150612b4082612adb565b604082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bcd82612508565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bff57612bfe612b96565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c64602683612543565b9150612c6f82612c0a565b604082019050919050565b5f6020820190508181035f830152612c9181612c58565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f612ccc601f83612543565b9150612cd782612c98565b602082019050919050565b5f6020820190508181035f830152612cf981612cc0565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f612d34601d83612543565b9150612d3f82612d00565b602082019050919050565b5f6020820190508181035f830152612d6181612d28565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f612d9c601f83612543565b9150612da782612d68565b602082019050919050565b5f6020820190508181035f830152612dc981612d90565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f612e04601d83612543565b9150612e0f82612dd0565b602082019050919050565b5f6020820190508181035f830152612e3181612df8565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f612e6c601b83612543565b9150612e7782612e38565b602082019050919050565b5f6020820190508181035f830152612e9981612e60565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f612efa602e83612543565b9150612f0582612ea0565b604082019050919050565b5f6020820190508181035f830152612f2781612eee565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f612f62601e83612543565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa082612508565b9150612fab83612508565b9250828201905080821115612fc357612fc2612b96565b5b92915050565b7f45786365656473206d617820686f6c642062616c616e636500000000000000005f82015250565b5f612ffd601883612543565b915061300882612fc9565b602082019050919050565b5f6020820190508181035f83015261302a81612ff1565b9050919050565b5f61303b82612508565b915061304683612508565b925082820390508181111561305e5761305d612b96565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061309f8161261b565b92915050565b5f602082840312156130ba576130b96125e3565b5b5f6130c784828501613091565b91505092915050565b5f819050919050565b5f6130f36130ee6130e9846130d0565b6126e0565b612508565b9050919050565b613103816130d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313b8161260a565b82525050565b5f61314c8383613132565b60208301905092915050565b5f602082019050919050565b5f61316e82613109565b6131788185613113565b935061318383613123565b805f5b838110156131b357815161319a8882613141565b97506131a583613158565b925050600181019050613186565b5085935050505092915050565b5f60a0820190506131d35f830188612511565b6131e060208301876130fa565b81810360408301526131f28186613164565b9050613201606083018561286b565b61320e6080830184612511565b9695505050505050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613272602c83612543565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132dd82612508565b91506132e883612508565b9250826132f8576132f76132a6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613337601b83612543565b915061334282613303565b602082019050919050565b5f6020820190508181035f8301526133648161332b565b9050919050565b5f61337582612508565b915061338083612508565b925082820261338e81612508565b915082820484148315176133a5576133a4612b96565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613406602183612543565b9150613411826133ac565b604082019050919050565b5f6020820190508181035f830152613433816133fa565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220be03a94f43ebc6aaf2f2518529f8f6340eafa417f7a7891648ba594a33b2bad864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d057806397fc1cc711610089578063d02fc4c711610063578063d02fc4c71461053f578063dd62ed3e14610567578063df778d26146105a3578063f2fde38b146105b95761018b565b806397fc1cc7146104b1578063a9059cbb146104db578063c492f046146105175761018b565b806370a08231146103b9578063715018a6146103f557806374010ece1461040b57806381ceadd8146104335780638da5cb5b1461045d57806395d89b41146104875761018b565b80632676903f1161013d57806343f976ce1161011757806343f976ce1461032957806349bd5a5e1461035157806351bc3c851461037b57806366cd0c7b146103915761018b565b80632676903f146102af5780632740c197146102d7578063313ce567146102ff5761018b565b806301ac2aa31461018f57806306fdde03146101b9578063095ea7b3146101e35780631694505e1461021f57806318160ddd1461024957806323b872dd146102735761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e1565b6040516101b09190612520565b60405180910390f35b3480156101c4575f80fd5b506101cd6105e7565b6040516101da91906125c3565b60405180910390f35b3480156101ee575f80fd5b506102096004803603810190610204919061266f565b610624565b60405161021691906126c7565b60405180910390f35b34801561022a575f80fd5b50610233610641565b604051610240919061273b565b60405180910390f35b348015610254575f80fd5b5061025d610666565b60405161026a9190612520565b60405180910390f35b34801561027e575f80fd5b5061029960048036038101906102949190612754565b610675565b6040516102a691906126c7565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d091906127ce565b610749565b005b3480156102e2575f80fd5b506102fd60048036038101906102f891906127f9565b6107fa565b005b34801561030a575f80fd5b50610313610940565b6040516103209190612852565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a91906127ce565b610948565b005b34801561035c575f80fd5b506103656109f9565b604051610372919061287a565b60405180910390f35b348015610386575f80fd5b5061038f610a1e565b005b34801561039c575f80fd5b506103b760048036038101906103b29190612893565b610a95565b005b3480156103c4575f80fd5b506103df60048036038101906103da91906128be565b610b33565b6040516103ec9190612520565b60405180910390f35b348015610400575f80fd5b50610409610b81565b005b348015610416575f80fd5b50610431600480360381019061042c9190612893565b610ccf565b005b34801561043e575f80fd5b50610447610d6d565b6040516104549190612520565b60405180910390f35b348015610468575f80fd5b50610471610d73565b60405161047e919061287a565b60405180910390f35b348015610492575f80fd5b5061049b610d9a565b6040516104a891906125c3565b60405180910390f35b3480156104bc575f80fd5b506104c5610dd7565b6040516104d29190612520565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc919061266f565b610ddd565b60405161050e91906126c7565b60405180910390f35b348015610522575f80fd5b5061053d6004803603810190610538919061294a565b610dfa565b005b34801561054a575f80fd5b5061056560048036038101906105609190612893565b610f2f565b005b348015610572575f80fd5b5061058d600480360381019061058891906129a7565b610fcd565b60405161059a9190612520565b60405180910390f35b3480156105ae575f80fd5b506105b761104f565b005b3480156105c4575f80fd5b506105df60048036038101906105da91906128be565b6110be565b005b600b5481565b60606040518060400160405280600781526020017f53796e6348756200000000000000000000000000000000000000000000000000815250905090565b5f61063761063061127b565b8484611282565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610681848484611445565b61073e8461068d61127b565b6107398560405180606001604052806025815260200161343b6025913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106f061127b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb89092919063ffffffff16565b611282565b600190509392505050565b61075161127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d490612a2f565b60405180910390fd5b80600f60146101000a81548160ff02191690831515021790555050565b61080261127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088590612a2f565b60405180910390fd5b5f821015801561089f5750601e8211155b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612abd565b60405180910390fd5b5f81101580156108ef5750601e8111155b61092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612b4b565b60405180910390fd5b81600681905550806007819055505050565b5f6009905090565b61095061127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612a2f565b60405180910390fd5b80600f60166101000a81548160ff02191690831515021790555050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5e61127b565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d575f80fd5b5f610a8730610b33565b9050610a9281611c1a565b50565b610a9d61127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2090612a2f565b60405180910390fd5b80600c8190555050565b5f610b7a60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e85565b9050919050565b610b8961127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90612a2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cd761127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612a2f565b60405180910390fd5b80600b8190555050565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f53594e4800000000000000000000000000000000000000000000000000000000815250905090565b600d5481565b5f610df0610de961127b565b8484611445565b6001905092915050565b610e0261127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8590612a2f565b60405180910390fd5b5f5b83839050811015610f29578160045f868685818110610eb257610eb1612b69565b5b9050602002016020810190610ec791906128be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610f2190612bc3565b915050610e90565b50505050565b610f3761127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90612a2f565b60405180910390fd5b80600d8190555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108f61127b565b73ffffffffffffffffffffffffffffffffffffffff16146110ae575f80fd5b5f4790506110bb81611ef1565b50565b6110c661127b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612a2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612c7a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790612ce2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612d4a565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114389190612520565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612db2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890612e1a565b60405180910390fd5b5f8111611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90612e82565b60405180910390fd5b61156b610d73565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115d957506115a9610d73565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118d757600f60169054906101000a900460ff16611668576115fa610d73565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612f10565b60405180910390fd5b5b600b548111156116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490612f78565b60405180910390fd5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461175957600c548161170e84610b33565b6117189190612f96565b10611758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174f90613013565b60405180910390fd5b5b5f61176330610b33565b90505f600d548210159050600b54821061177d57600b5491505b8080156117975750600f60159054906101000a900460ff16155b80156117f05750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118085750600f60149054906101000a900460ff165b801561185b575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118ae575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118d4576118bc82611c1a565b5f4790505f8111156118d2576118d147611ef1565b5b505b50505b5f6001905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611977575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a285750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a275750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a35575f9050611ba6565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ade5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aed576006546009819055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b965750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba5576007546009819055505b5b611bb284848484611f59565b50505050565b5f838311158290611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf691906125c3565b60405180910390fd5b505f8385611c0d9190613031565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c5157611c50613064565b5b604051908082528060200260200182016040528015611c7f5781602001602082028036833780820191505090505b50905030815f81518110611c9657611c95612b69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5e91906130a5565b81600181518110611d7257611d71612b69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611dd830600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611282565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e3a9594939291906131c0565b5f604051808303815f87803b158015611e51575f80fd5b505af1158015611e63573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b5f600554821115611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290613288565b60405180910390fd5b5f611ed4611f86565b9050611ee98184611faf90919063ffffffff16565b915050919050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f55573d5f803e3d5ffd5b5050565b80611f6757611f66611ff8565b5b611f72848484612015565b80611f8057611f7f6121c3565b5b50505050565b5f805f611f916121ce565b91509150611fa88183611faf90919063ffffffff16565b9250505090565b5f611ff083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121e4565b905092915050565b5f6009540315612013576009546008819055505f6009819055505b565b5f805f8061202285612245565b935093509350935061207a8460025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461228f90919063ffffffff16565b60025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061210b8360025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d890919063ffffffff16565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061215581612335565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121b29190612520565b60405180910390a350505050505050565b600854600981905550565b5f8060055467016345785d8a0000915091509091565b5f808311829061222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222191906125c3565b60405180910390fd5b505f838561223891906132d3565b9050809150509392505050565b5f805f805f80612257876009546123ec565b915091505f612264611f86565b90505f806122738a858561243c565b9150915081818686985098509850985050505050509193509193565b5f6122d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bb8565b905092915050565b5f8082846122e69190612f96565b90508381101561232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061334d565b60405180910390fd5b8091505092915050565b5f61233e611f86565b90505f612354828461249190919063ffffffff16565b90506123a68160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f805f6124156064612407868861249190919063ffffffff16565b611faf90919063ffffffff16565b90505f61242b828761228f90919063ffffffff16565b905080829350935050509250929050565b5f805f612452848761249190919063ffffffff16565b90505f612468858761249190919063ffffffff16565b90505f61247e828461228f90919063ffffffff16565b9050828194509450505050935093915050565b5f8083036124a1575f9050612502565b5f82846124ae919061336b565b90508284826124bd91906132d3565b146124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f49061341c565b60405180910390fd5b809150505b92915050565b5f819050919050565b61251a81612508565b82525050565b5f6020820190506125335f830184612511565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612570578082015181840152602081019050612555565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61259582612539565b61259f8185612543565b93506125af818560208601612553565b6125b88161257b565b840191505092915050565b5f6020820190508181035f8301526125db818461258b565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612614826125eb565b9050919050565b6126248161260a565b811461262e575f80fd5b50565b5f8135905061263f8161261b565b92915050565b61264e81612508565b8114612658575f80fd5b50565b5f8135905061266981612645565b92915050565b5f8060408385031215612685576126846125e3565b5b5f61269285828601612631565b92505060206126a38582860161265b565b9150509250929050565b5f8115159050919050565b6126c1816126ad565b82525050565b5f6020820190506126da5f8301846126b8565b92915050565b5f819050919050565b5f6127036126fe6126f9846125eb565b6126e0565b6125eb565b9050919050565b5f612714826126e9565b9050919050565b5f6127258261270a565b9050919050565b6127358161271b565b82525050565b5f60208201905061274e5f83018461272c565b92915050565b5f805f6060848603121561276b5761276a6125e3565b5b5f61277886828701612631565b935050602061278986828701612631565b925050604061279a8682870161265b565b9150509250925092565b6127ad816126ad565b81146127b7575f80fd5b50565b5f813590506127c8816127a4565b92915050565b5f602082840312156127e3576127e26125e3565b5b5f6127f0848285016127ba565b91505092915050565b5f806040838503121561280f5761280e6125e3565b5b5f61281c8582860161265b565b925050602061282d8582860161265b565b9150509250929050565b5f60ff82169050919050565b61284c81612837565b82525050565b5f6020820190506128655f830184612843565b92915050565b6128748161260a565b82525050565b5f60208201905061288d5f83018461286b565b92915050565b5f602082840312156128a8576128a76125e3565b5b5f6128b58482850161265b565b91505092915050565b5f602082840312156128d3576128d26125e3565b5b5f6128e084828501612631565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261290a576129096128e9565b5b8235905067ffffffffffffffff811115612927576129266128ed565b5b602083019150836020820283011115612943576129426128f1565b5b9250929050565b5f805f60408486031215612961576129606125e3565b5b5f84013567ffffffffffffffff81111561297e5761297d6125e7565b5b61298a868287016128f5565b9350935050602061299d868287016127ba565b9150509250925092565b5f80604083850312156129bd576129bc6125e3565b5b5f6129ca85828601612631565b92505060206129db85828601612631565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a19602083612543565b9150612a24826129e5565b602082019050919050565b5f6020820190508181035f830152612a4681612a0d565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e6420335f8201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b5f612aa7602283612543565b9150612ab282612a4d565b604082019050919050565b5f6020820190508181035f830152612ad481612a9b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e64205f8201527f3330250000000000000000000000000000000000000000000000000000000000602082015250565b5f612b35602383612543565b9150612b4082612adb565b604082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bcd82612508565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bff57612bfe612b96565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c64602683612543565b9150612c6f82612c0a565b604082019050919050565b5f6020820190508181035f830152612c9181612c58565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f2061646472657373005f82015250565b5f612ccc601f83612543565b9150612cd782612c98565b602082019050919050565b5f6020820190508181035f830152612cf981612cc0565b9050919050565b7f43616e277420617070726f766520746f207a65726f20616464726573730000005f82015250565b5f612d34601d83612543565b9150612d3f82612d00565b602082019050919050565b5f6020820190508181035f830152612d6181612d28565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f005f82015250565b5f612d9c601f83612543565b9150612da782612d68565b602082019050919050565b5f6020820190508181035f830152612dc981612d90565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f0000005f82015250565b5f612e04601d83612543565b9150612e0f82612dd0565b602082019050919050565b5f6020820190508181035f830152612e3181612df8565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f00000000005f82015250565b5f612e6c601b83612543565b9150612e7782612e38565b602082019050919050565b5f6020820190508181035f830152612e9981612e60565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f726520747261645f8201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b5f612efa602e83612543565b9150612f0582612ea0565b604082019050919050565b5f6020820190508181035f830152612f2781612eee565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d697400005f82015250565b5f612f62601e83612543565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa082612508565b9150612fab83612508565b9250828201905080821115612fc357612fc2612b96565b5b92915050565b7f45786365656473206d617820686f6c642062616c616e636500000000000000005f82015250565b5f612ffd601883612543565b915061300882612fc9565b602082019050919050565b5f6020820190508181035f83015261302a81612ff1565b9050919050565b5f61303b82612508565b915061304683612508565b925082820390508181111561305e5761305d612b96565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061309f8161261b565b92915050565b5f602082840312156130ba576130b96125e3565b5b5f6130c784828501613091565b91505092915050565b5f819050919050565b5f6130f36130ee6130e9846130d0565b6126e0565b612508565b9050919050565b613103816130d9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313b8161260a565b82525050565b5f61314c8383613132565b60208301905092915050565b5f602082019050919050565b5f61316e82613109565b6131788185613113565b935061318383613123565b805f5b838110156131b357815161319a8882613141565b97506131a583613158565b925050600181019050613186565b5085935050505092915050565b5f60a0820190506131d35f830188612511565b6131e060208301876130fa565b81810360408301526131f28186613164565b9050613201606083018561286b565b61320e6080830184612511565b9695505050505050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c5f8201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b5f613272602c83612543565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132dd82612508565b91506132e883612508565b9250826132f8576132f76132a6565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613337601b83612543565b915061334282613303565b602082019050919050565b5f6020820190508181035f8301526133648161332b565b9050919050565b5f61337582612508565b915061338083612508565b925082820261338e81612508565b915082820484148315176133a5576133a4612b96565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613406602183612543565b9150613411826133ac565b604082019050919050565b5f6020820190508181035f830152613433816133fa565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220be03a94f43ebc6aaf2f2518529f8f6340eafa417f7a7891648ba594a33b2bad864736f6c63430008140033

Deployed Bytecode Sourcemap

4283:11837:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5246:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6952:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7923:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5419:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14423:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7552:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15009:398;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6861:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8457:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5467:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14016:192;;;;;;;;;;;;;:::i;:::-;;15594:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6447:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3839:148;;;;;;;;;;;;;:::i;:::-;;15447:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5302:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3752:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7043:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5365:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14216:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6593:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14874:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7731:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12048:198;;;;;;;;;;;;;:::i;:::-;;3995:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5246:49;;;;:::o;6952:83::-;6989:13;7022:5;;;;;;;;;;;;;;;;;7015:12;;6952:83;:::o;7923:193::-;8025:4;8047:39;8056:12;:10;:12::i;:::-;8070:7;8079:6;8047:8;:39::i;:::-;8104:4;8097:11;;7923:193;;;;:::o;5419:41::-;;;;;;;;;;;;;:::o;6339:100::-;6392:7;5191:19;6412;;6339:100;:::o;14423:443::-;14555:4;14572:36;14582:6;14590:9;14601:6;14572:9;:36::i;:::-;14619:217;14642:6;14663:12;:10;:12::i;:::-;14690:135;14746:6;14690:135;;;;;;;;;;;;;;;;;:11;:19;14702:6;14690:19;;;;;;;;;;;;;;;:33;14710:12;:10;:12::i;:::-;14690:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;14619:8;:217::i;:::-;14854:4;14847:11;;14423:443;;;;;:::o;7552:171::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7693:22:::1;7669:21;;:46;;;;;;;;;;;;;;;;;;7552:171:::0;:::o;15009:398::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15127:1:::1;15115:8;:13;;:31;;;;;15144:2;15132:8;:14;;15115:31;15093:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;15254:1;15241:9;:14;;:33;;;;;15272:2;15259:9;:15;;15241:33;15219:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;15360:8;15350:7;:18;;;;15390:9;15379:8;:20;;;;15009:398:::0;;:::o;6861:83::-;6902:5;4591:1;6920:16;;6861:83;:::o;8457:117::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8551:15:::1;8534:14;;:32;;;;;;;;;;;;;;;;;;8457:117:::0;:::o;5467:28::-;;;;;;;;;;;;;:::o;14016:192::-;14082:16;;;;;;;;;;;14066:32;;:12;:10;:12::i;:::-;:32;;;14058:41;;;;;;14110:23;14136:24;14154:4;14136:9;:24::i;:::-;14110:50;;14171:29;14184:15;14171:12;:29::i;:::-;14047:161;14016:192::o;15594:121::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15696:11:::1;15674:19;:33;;;;15594:121:::0;:::o;6447:138::-;6513:7;6540:37;6560:7;:16;6568:7;6560:16;;;;;;;;;;;;;;;;6540:19;:37::i;:::-;6533:44;;6447:138;;;:::o;3839:148::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3946:1:::1;3909:40;;3930:6;::::0;::::1;;;;;;;;3909:40;;;;;;;;;;;;3977:1;3960:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3839:148::o:0;15447:110::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15538:11:::1;15521:14;:28;;;;15447:110:::0;:::o;5302:54::-;;;;:::o;3752:79::-;3790:7;3817:6;;;;;;;;;;;3810:13;;3752:79;:::o;7043:87::-;7082:13;7115:7;;;;;;;;;;;;;;;;;7108:14;;7043:87;:::o;5365:45::-;;;;:::o;14216:199::-;14321:4;14343:42;14353:12;:10;:12::i;:::-;14367:9;14378:6;14343:9;:42::i;:::-;14403:4;14396:11;;14216:199;;;;:::o;6593:260::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6736:9:::1;6731:115;6755:8;;:15;;6751:1;:19;6731:115;;;6826:8;6792:18;:31;6811:8;;6820:1;6811:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6792:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6772:3;;;;;:::i;:::-;;;;6731:115;;;;6593:260:::0;;;:::o;14874:127::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14975:18:::1;14957:15;:36;;;;14874:127:::0;:::o;7731:184::-;7848:7;7880:11;:18;7892:5;7880:18;;;;;;;;;;;;;;;:27;7899:7;7880:27;;;;;;;;;;;;;;;;7873:34;;7731:184;;;;:::o;12048:198::-;12113:16;;;;;;;;;;;12097:32;;:12;:10;:12::i;:::-;:32;;;12089:41;;;;;;12141:26;12170:21;12141:50;;12202:36;12219:18;12202:16;:36::i;:::-;12078:168;12048:198::o;3995:281::-;3675:12;:10;:12::i;:::-;3665:22;;:6;;;;;;;;;;:22;;;3657:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4118:1:::1;4098:22;;:8;:22;;::::0;4076:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4231:8;4202:38;;4223:6;::::0;::::1;;;;;;;;4202:38;;;;;;;;;;;;4260:8;4251:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3995:281:::0;:::o;984:98::-;1037:7;1064:10;1057:17;;984:98;:::o;8792:361::-;8936:1;8919:19;;:5;:19;;;8911:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9012:1;8993:21;;:7;:21;;;8985:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9091:6;9061:11;:18;9073:5;9061:18;;;;;;;;;;;;;;;:27;9080:7;9061:27;;;;;;;;;;;;;;;:36;;;;9129:7;9113:32;;9122:5;9113:32;;;9138:6;9113:32;;;;;;:::i;:::-;;;;;;;;8792:361;;;:::o;9161:2282::-;9299:1;9283:18;;:4;:18;;;9275:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9370:1;9356:16;;:2;:16;;;9348:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9434:1;9425:6;:10;9417:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;9492:7;:5;:7::i;:::-;9484:15;;:4;:15;;;;:32;;;;;9509:7;:5;:7::i;:::-;9503:13;;:2;:13;;;;9484:32;9480:1402;;;9571:14;;;;;;;;;;;9566:191;;9644:7;:5;:7::i;:::-;9636:15;;:4;:15;;;9606:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;9566:191;9791:14;;9781:6;:24;;9773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9867:13;;;;;;;;;;;9861:19;;:2;:19;;;9857:202;;9956:19;;9947:6;9931:13;9941:2;9931:9;:13::i;:::-;:22;;;;:::i;:::-;:44;9901:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;9857:202;10075:28;10106:24;10124:4;10106:9;:24::i;:::-;10075:55;;10145:16;10188:15;;10164:20;:39;;10145:58;;10248:14;;10224:20;:38;10220:116;;10306:14;;10283:37;;10220:116;10374:11;:41;;;;;10407:8;;;;;;;;;;;10406:9;10374:41;:83;;;;;10444:13;;;;;;;;;;;10436:21;;:4;:21;;;;10374:83;:125;;;;;10478:21;;;;;;;;;;;10374:125;:171;;;;;10521:18;:24;10540:4;10521:24;;;;;;;;;;;;;;;;;;;;;;;;;10520:25;10374:171;:215;;;;;10567:18;:22;10586:2;10567:22;;;;;;;;;;;;;;;;;;;;;;;;;10566:23;10374:215;10352:519;;;10624:34;10637:20;10624:12;:34::i;:::-;10677:26;10706:21;10677:50;;10771:1;10750:18;:22;10746:110;;;10797:39;10814:21;10797:16;:39::i;:::-;10746:110;10605:266;10352:519;9518:1364;;9480:1402;10894:12;10909:4;10894:19;;10945:18;:24;10964:4;10945:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10973:18;:22;10992:2;10973:22;;;;;;;;;;;;;;;;;;;;;;;;;10945:50;10944:115;;;;11022:13;;;;;;;;;;;11014:21;;:4;:21;;;;:44;;;;;11045:13;;;;;;;;;;;11039:19;;:2;:19;;;;11014:44;10944:115;10926:456;;;11096:5;11086:15;;10926:456;;;11146:13;;;;;;;;;;;11138:21;;:4;:21;;;:55;;;;;11177:15;;;;;;;;;;;11163:30;;:2;:30;;;;11138:55;11134:110;;;11221:7;;11214:4;:14;;;;11134:110;11270:13;;;;;;;;;;;11264:19;;:2;:19;;;:55;;;;;11303:15;;;;;;;;;;;11287:32;;:4;:32;;;;11264:55;11260:111;;;11347:8;;11340:4;:15;;;;11260:111;10926:456;11394:41;11409:4;11415:2;11419:6;11427:7;11394:14;:41::i;:::-;9264:2179;9161:2282;;;:::o;2477:224::-;2597:7;2630:1;2625;:6;;2633:12;2617:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2657:9;2673:1;2669;:5;;;;:::i;:::-;2657:17;;2692:1;2685:8;;;2477:224;;;;;:::o;11451:479::-;5669:4;5658:8;;:15;;;;;;;;;;;;;;;;;;11525:21:::1;11563:1;11549:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11525:40;;11594:4;11576;11581:1;11576:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11620:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11610:4;11615:1;11610:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11653:62;11670:4;11685:15;;;;;;;;;;;11703:11;11653:8;:62::i;:::-;11726:15;;;;;;;;;;;:66;;;11807:11;11833:1;11849:4;11876;11896:15;11726:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11514:416;5707:5:::0;5696:8;;:16;;;;;;;;;;;;;;;;;;11451:479;:::o;8124:325::-;8219:7;8277;;8266;:18;;8244:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;8367:19;8389:10;:8;:10::i;:::-;8367:32;;8417:24;8429:11;8417:7;:11;;:24;;;;:::i;:::-;8410:31;;;8124:325;;;:::o;11938:102::-;11999:16;;;;;;;;;;;:25;;:33;12025:6;11999:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11938:102;:::o;13735:273::-;13891:7;13886:23;;13900:9;:7;:9::i;:::-;13886:23;13920:43;13937:6;13945:9;13956:6;13920:16;:43::i;:::-;13979:7;13974:26;;13988:12;:10;:12::i;:::-;13974:26;13735:273;;;;:::o;12254:164::-;12296:7;12317:15;12334;12353:19;:17;:19::i;:::-;12316:56;;;;12390:20;12402:7;12390;:11;;:20;;;;:::i;:::-;12383:27;;;;12254:164;:::o;2709:132::-;2767:7;2794:39;2798:1;2801;2794:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2787:46;;2709:132;;;;:::o;8582:123::-;8632:1;8624:4;;:9;8620:22;8635:7;8620:22;8672:4;;8654:15;:22;;;;8696:1;8689:4;:8;;;;8582:123;:::o;12426:530::-;12572:15;12602:23;12640;12678:13;12705:22;12719:7;12705:13;:22::i;:::-;12557:170;;;;;;;;12756:28;12776:7;12756;:15;12764:6;12756:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12738:7;:15;12746:6;12738:15;;;;;;;;;;;;;;;:46;;;;12816:39;12839:15;12816:7;:18;12824:9;12816:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12795:7;:18;12803:9;12795:18;;;;;;;;;;;;;;;:60;;;;12866:22;12882:5;12866:15;:22::i;:::-;12921:9;12904:44;;12913:6;12904:44;;;12932:15;12904:44;;;;;;:::i;:::-;;;;;;;;12546:410;;;;12426:530;;;:::o;8713:71::-;8761:15;;8754:4;:22;;;;8713:71::o;7426:118::-;7477:7;7486;7514;;5191:19;7506:30;;;;7426:118;;:::o;2246:223::-;2366:7;2398:1;2394;:5;2401:12;2386:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2425:9;2441:1;2437;:5;;;;:::i;:::-;2425:17;;2460:1;2453:8;;;2246:223;;;;;:::o;13189:538::-;13292:7;13314;13336;13358;13394:23;13419:13;13436:26;13448:7;13457:4;;13436:11;:26::i;:::-;13393:69;;;;13473:19;13495:10;:8;:10::i;:::-;13473:32;;13517:15;13534:23;13561:90;13587:7;13609:5;13629:11;13561;:90::i;:::-;13516:135;;;;13670:7;13679:15;13696;13713:5;13662:57;;;;;;;;;;;;;13189:538;;;;;:::o;2102:136::-;2160:7;2187:43;2191:1;2194;2187:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2180:50;;2102:136;;;;:::o;1915:179::-;1973:7;1993:9;2009:1;2005;:5;;;;:::i;:::-;1993:17;;2034:1;2029;:6;;2021:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2085:1;2078:8;;;1915:179;;;;:::o;12964:217::-;13023:19;13045:10;:8;:10::i;:::-;13023:32;;13066:13;13082:22;13092:11;13082:5;:9;;:22;;;;:::i;:::-;13066:38;;13140:33;13167:5;13140:7;:22;13156:4;13140:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13115:7;:22;13131:4;13115:22;;;;;;;;;;;;;;;:58;;;;13012:169;;12964:217;:::o;7138:280::-;7238:7;7247;7272:13;7288:25;7309:3;7288:16;7300:3;7288:7;:11;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;7272:41;;7324:23;7350:18;7362:5;7350:7;:11;;:18;;;;:::i;:::-;7324:44;;7387:15;7404:5;7379:31;;;;;;7138:280;;;;;:::o;15723:357::-;15853:7;15862;15882:15;15900:24;15912:11;15900:7;:11;;:24;;;;:::i;:::-;15882:42;;15935:13;15951:22;15961:11;15951:5;:9;;:22;;;;:::i;:::-;15935:38;;15984:23;16010:18;16022:5;16010:7;:11;;:18;;;;:::i;:::-;15984:44;;16047:7;16056:15;16039:33;;;;;;;15723:357;;;;;;:::o;2849:246::-;2907:7;2936:1;2931;:6;2927:47;;2961:1;2954:8;;;;2927:47;2984:9;3000:1;2996;:5;;;;:::i;:::-;2984:17;;3029:1;3024;3020;:5;;;;:::i;:::-;:10;3012:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:1;3079:8;;;2849:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:151::-;4219:9;4252:37;4283:5;4252:37;:::i;:::-;4239:50;;4144:151;;;:::o;4301:181::-;4413:62;4469:5;4413:62;:::i;:::-;4408:3;4401:75;4301:181;;:::o;4488:272::-;4606:4;4644:2;4633:9;4629:18;4621:26;;4657:96;4750:1;4739:9;4735:17;4726:6;4657:96;:::i;:::-;4488:272;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:116::-;5461:21;5476:5;5461:21;:::i;:::-;5454:5;5451:32;5441:60;;5497:1;5494;5487:12;5441:60;5391:116;:::o;5513:133::-;5556:5;5594:6;5581:20;5572:29;;5610:30;5634:5;5610:30;:::i;:::-;5513:133;;;;:::o;5652:323::-;5708:6;5757:2;5745:9;5736:7;5732:23;5728:32;5725:119;;;5763:79;;:::i;:::-;5725:119;5883:1;5908:50;5950:7;5941:6;5930:9;5926:22;5908:50;:::i;:::-;5898:60;;5854:114;5652:323;;;;:::o;5981:474::-;6049:6;6057;6106:2;6094:9;6085:7;6081:23;6077:32;6074:119;;;6112:79;;:::i;:::-;6074:119;6232:1;6257:53;6302:7;6293:6;6282:9;6278:22;6257:53;:::i;:::-;6247:63;;6203:117;6359:2;6385:53;6430:7;6421:6;6410:9;6406:22;6385:53;:::i;:::-;6375:63;;6330:118;5981:474;;;;;:::o;6461:86::-;6496:7;6536:4;6529:5;6525:16;6514:27;;6461:86;;;:::o;6553:112::-;6636:22;6652:5;6636:22;:::i;:::-;6631:3;6624:35;6553:112;;:::o;6671:214::-;6760:4;6798:2;6787:9;6783:18;6775:26;;6811:67;6875:1;6864:9;6860:17;6851:6;6811:67;:::i;:::-;6671:214;;;;:::o;6891:118::-;6978:24;6996:5;6978:24;:::i;:::-;6973:3;6966:37;6891:118;;:::o;7015:222::-;7108:4;7146:2;7135:9;7131:18;7123:26;;7159:71;7227:1;7216:9;7212:17;7203:6;7159:71;:::i;:::-;7015:222;;;;:::o;7243:329::-;7302:6;7351:2;7339:9;7330:7;7326:23;7322:32;7319:119;;;7357:79;;:::i;:::-;7319:119;7477:1;7502:53;7547:7;7538:6;7527:9;7523:22;7502:53;:::i;:::-;7492:63;;7448:117;7243:329;;;;:::o;7578:::-;7637:6;7686:2;7674:9;7665:7;7661:23;7657:32;7654:119;;;7692:79;;:::i;:::-;7654:119;7812:1;7837:53;7882:7;7873:6;7862:9;7858:22;7837:53;:::i;:::-;7827:63;;7783:117;7578:329;;;;:::o;7913:117::-;8022:1;8019;8012:12;8036:117;8145:1;8142;8135:12;8159:117;8268:1;8265;8258:12;8299:568;8372:8;8382:6;8432:3;8425:4;8417:6;8413:17;8409:27;8399:122;;8440:79;;:::i;:::-;8399:122;8553:6;8540:20;8530:30;;8583:18;8575:6;8572:30;8569:117;;;8605:79;;:::i;:::-;8569:117;8719:4;8711:6;8707:17;8695:29;;8773:3;8765:4;8757:6;8753:17;8743:8;8739:32;8736:41;8733:128;;;8780:79;;:::i;:::-;8733:128;8299:568;;;;;:::o;8873:698::-;8965:6;8973;8981;9030:2;9018:9;9009:7;9005:23;9001:32;8998:119;;;9036:79;;:::i;:::-;8998:119;9184:1;9173:9;9169:17;9156:31;9214:18;9206:6;9203:30;9200:117;;;9236:79;;:::i;:::-;9200:117;9349:80;9421:7;9412:6;9401:9;9397:22;9349:80;:::i;:::-;9331:98;;;;9127:312;9478:2;9504:50;9546:7;9537:6;9526:9;9522:22;9504:50;:::i;:::-;9494:60;;9449:115;8873:698;;;;;:::o;9577:474::-;9645:6;9653;9702:2;9690:9;9681:7;9677:23;9673:32;9670:119;;;9708:79;;:::i;:::-;9670:119;9828:1;9853:53;9898:7;9889:6;9878:9;9874:22;9853:53;:::i;:::-;9843:63;;9799:117;9955:2;9981:53;10026:7;10017:6;10006:9;10002:22;9981:53;:::i;:::-;9971:63;;9926:118;9577:474;;;;;:::o;10057:182::-;10197:34;10193:1;10185:6;10181:14;10174:58;10057:182;:::o;10245:366::-;10387:3;10408:67;10472:2;10467:3;10408:67;:::i;:::-;10401:74;;10484:93;10573:3;10484:93;:::i;:::-;10602:2;10597:3;10593:12;10586:19;;10245:366;;;:::o;10617:419::-;10783:4;10821:2;10810:9;10806:18;10798:26;;10870:9;10864:4;10860:20;10856:1;10845:9;10841:17;10834:47;10898:131;11024:4;10898:131;:::i;:::-;10890:139;;10617:419;;;:::o;11042:221::-;11182:34;11178:1;11170:6;11166:14;11159:58;11251:4;11246:2;11238:6;11234:15;11227:29;11042:221;:::o;11269:366::-;11411:3;11432:67;11496:2;11491:3;11432:67;:::i;:::-;11425:74;;11508:93;11597:3;11508:93;:::i;:::-;11626:2;11621:3;11617:12;11610:19;;11269:366;;;:::o;11641:419::-;11807:4;11845:2;11834:9;11830:18;11822:26;;11894:9;11888:4;11884:20;11880:1;11869:9;11865:17;11858:47;11922:131;12048:4;11922:131;:::i;:::-;11914:139;;11641:419;;;:::o;12066:222::-;12206:34;12202:1;12194:6;12190:14;12183:58;12275:5;12270:2;12262:6;12258:15;12251:30;12066:222;:::o;12294:366::-;12436:3;12457:67;12521:2;12516:3;12457:67;:::i;:::-;12450:74;;12533:93;12622:3;12533:93;:::i;:::-;12651:2;12646:3;12642:12;12635:19;;12294:366;;;:::o;12666:419::-;12832:4;12870:2;12859:9;12855:18;12847:26;;12919:9;12913:4;12909:20;12905:1;12894:9;12890:17;12883:47;12947:131;13073:4;12947:131;:::i;:::-;12939:139;;12666:419;;;:::o;13091:180::-;13139:77;13136:1;13129:88;13236:4;13233:1;13226:15;13260:4;13257:1;13250:15;13277:180;13325:77;13322:1;13315:88;13422:4;13419:1;13412:15;13446:4;13443:1;13436:15;13463:233;13502:3;13525:24;13543:5;13525:24;:::i;:::-;13516:33;;13571:66;13564:5;13561:77;13558:103;;13641:18;;:::i;:::-;13558:103;13688:1;13681:5;13677:13;13670:20;;13463:233;;;:::o;13702:225::-;13842:34;13838:1;13830:6;13826:14;13819:58;13911:8;13906:2;13898:6;13894:15;13887:33;13702:225;:::o;13933:366::-;14075:3;14096:67;14160:2;14155:3;14096:67;:::i;:::-;14089:74;;14172:93;14261:3;14172:93;:::i;:::-;14290:2;14285:3;14281:12;14274:19;;13933:366;;;:::o;14305:419::-;14471:4;14509:2;14498:9;14494:18;14486:26;;14558:9;14552:4;14548:20;14544:1;14533:9;14529:17;14522:47;14586:131;14712:4;14586:131;:::i;:::-;14578:139;;14305:419;;;:::o;14730:181::-;14870:33;14866:1;14858:6;14854:14;14847:57;14730:181;:::o;14917:366::-;15059:3;15080:67;15144:2;15139:3;15080:67;:::i;:::-;15073:74;;15156:93;15245:3;15156:93;:::i;:::-;15274:2;15269:3;15265:12;15258:19;;14917:366;;;:::o;15289:419::-;15455:4;15493:2;15482:9;15478:18;15470:26;;15542:9;15536:4;15532:20;15528:1;15517:9;15513:17;15506:47;15570:131;15696:4;15570:131;:::i;:::-;15562:139;;15289:419;;;:::o;15714:179::-;15854:31;15850:1;15842:6;15838:14;15831:55;15714:179;:::o;15899:366::-;16041:3;16062:67;16126:2;16121:3;16062:67;:::i;:::-;16055:74;;16138:93;16227:3;16138:93;:::i;:::-;16256:2;16251:3;16247:12;16240:19;;15899:366;;;:::o;16271:419::-;16437:4;16475:2;16464:9;16460:18;16452:26;;16524:9;16518:4;16514:20;16510:1;16499:9;16495:17;16488:47;16552:131;16678:4;16552:131;:::i;:::-;16544:139;;16271:419;;;:::o;16696:181::-;16836:33;16832:1;16824:6;16820:14;16813:57;16696:181;:::o;16883:366::-;17025:3;17046:67;17110:2;17105:3;17046:67;:::i;:::-;17039:74;;17122:93;17211:3;17122:93;:::i;:::-;17240:2;17235:3;17231:12;17224:19;;16883:366;;;:::o;17255:419::-;17421:4;17459:2;17448:9;17444:18;17436:26;;17508:9;17502:4;17498:20;17494:1;17483:9;17479:17;17472:47;17536:131;17662:4;17536:131;:::i;:::-;17528:139;;17255:419;;;:::o;17680:179::-;17820:31;17816:1;17808:6;17804:14;17797:55;17680:179;:::o;17865:366::-;18007:3;18028:67;18092:2;18087:3;18028:67;:::i;:::-;18021:74;;18104:93;18193:3;18104:93;:::i;:::-;18222:2;18217:3;18213:12;18206:19;;17865:366;;;:::o;18237:419::-;18403:4;18441:2;18430:9;18426:18;18418:26;;18490:9;18484:4;18480:20;18476:1;18465:9;18461:17;18454:47;18518:131;18644:4;18518:131;:::i;:::-;18510:139;;18237:419;;;:::o;18662:177::-;18802:29;18798:1;18790:6;18786:14;18779:53;18662:177;:::o;18845:366::-;18987:3;19008:67;19072:2;19067:3;19008:67;:::i;:::-;19001:74;;19084:93;19173:3;19084:93;:::i;:::-;19202:2;19197:3;19193:12;19186:19;;18845:366;;;:::o;19217:419::-;19383:4;19421:2;19410:9;19406:18;19398:26;;19470:9;19464:4;19460:20;19456:1;19445:9;19441:17;19434:47;19498:131;19624:4;19498:131;:::i;:::-;19490:139;;19217:419;;;:::o;19642:233::-;19782:34;19778:1;19770:6;19766:14;19759:58;19851:16;19846:2;19838:6;19834:15;19827:41;19642:233;:::o;19881:366::-;20023:3;20044:67;20108:2;20103:3;20044:67;:::i;:::-;20037:74;;20120:93;20209:3;20120:93;:::i;:::-;20238:2;20233:3;20229:12;20222:19;;19881:366;;;:::o;20253:419::-;20419:4;20457:2;20446:9;20442:18;20434:26;;20506:9;20500:4;20496:20;20492:1;20481:9;20477:17;20470:47;20534:131;20660:4;20534:131;:::i;:::-;20526:139;;20253:419;;;:::o;20678:180::-;20818:32;20814:1;20806:6;20802:14;20795:56;20678:180;:::o;20864:366::-;21006:3;21027:67;21091:2;21086:3;21027:67;:::i;:::-;21020:74;;21103:93;21192:3;21103:93;:::i;:::-;21221:2;21216:3;21212:12;21205:19;;20864:366;;;:::o;21236:419::-;21402:4;21440:2;21429:9;21425:18;21417:26;;21489:9;21483:4;21479:20;21475:1;21464:9;21460:17;21453:47;21517:131;21643:4;21517:131;:::i;:::-;21509:139;;21236:419;;;:::o;21661:191::-;21701:3;21720:20;21738:1;21720:20;:::i;:::-;21715:25;;21754:20;21772:1;21754:20;:::i;:::-;21749:25;;21797:1;21794;21790:9;21783:16;;21818:3;21815:1;21812:10;21809:36;;;21825:18;;:::i;:::-;21809:36;21661:191;;;;:::o;21858:174::-;21998:26;21994:1;21986:6;21982:14;21975:50;21858:174;:::o;22038:366::-;22180:3;22201:67;22265:2;22260:3;22201:67;:::i;:::-;22194:74;;22277:93;22366:3;22277:93;:::i;:::-;22395:2;22390:3;22386:12;22379:19;;22038:366;;;:::o;22410:419::-;22576:4;22614:2;22603:9;22599:18;22591:26;;22663:9;22657:4;22653:20;22649:1;22638:9;22634:17;22627:47;22691:131;22817:4;22691:131;:::i;:::-;22683:139;;22410:419;;;:::o;22835:194::-;22875:4;22895:20;22913:1;22895:20;:::i;:::-;22890:25;;22929:20;22947:1;22929:20;:::i;:::-;22924:25;;22973:1;22970;22966:9;22958:17;;22997:1;22991:4;22988:11;22985:37;;;23002:18;;:::i;:::-;22985:37;22835:194;;;;:::o;23035:180::-;23083:77;23080:1;23073:88;23180:4;23177:1;23170:15;23204:4;23201:1;23194:15;23221:143;23278:5;23309:6;23303:13;23294:22;;23325:33;23352:5;23325:33;:::i;:::-;23221:143;;;;:::o;23370:351::-;23440:6;23489:2;23477:9;23468:7;23464:23;23460:32;23457:119;;;23495:79;;:::i;:::-;23457:119;23615:1;23640:64;23696:7;23687:6;23676:9;23672:22;23640:64;:::i;:::-;23630:74;;23586:128;23370:351;;;;:::o;23727:85::-;23772:7;23801:5;23790:16;;23727:85;;;:::o;23818:158::-;23876:9;23909:61;23927:42;23936:32;23962:5;23936:32;:::i;:::-;23927:42;:::i;:::-;23909:61;:::i;:::-;23896:74;;23818:158;;;:::o;23982:147::-;24077:45;24116:5;24077:45;:::i;:::-;24072:3;24065:58;23982:147;;:::o;24135:114::-;24202:6;24236:5;24230:12;24220:22;;24135:114;;;:::o;24255:184::-;24354:11;24388:6;24383:3;24376:19;24428:4;24423:3;24419:14;24404:29;;24255:184;;;;:::o;24445:132::-;24512:4;24535:3;24527:11;;24565:4;24560:3;24556:14;24548:22;;24445:132;;;:::o;24583:108::-;24660:24;24678:5;24660:24;:::i;:::-;24655:3;24648:37;24583:108;;:::o;24697:179::-;24766:10;24787:46;24829:3;24821:6;24787:46;:::i;:::-;24865:4;24860:3;24856:14;24842:28;;24697:179;;;;:::o;24882:113::-;24952:4;24984;24979:3;24975:14;24967:22;;24882:113;;;:::o;25031:732::-;25150:3;25179:54;25227:5;25179:54;:::i;:::-;25249:86;25328:6;25323:3;25249:86;:::i;:::-;25242:93;;25359:56;25409:5;25359:56;:::i;:::-;25438:7;25469:1;25454:284;25479:6;25476:1;25473:13;25454:284;;;25555:6;25549:13;25582:63;25641:3;25626:13;25582:63;:::i;:::-;25575:70;;25668:60;25721:6;25668:60;:::i;:::-;25658:70;;25514:224;25501:1;25498;25494:9;25489:14;;25454:284;;;25458:14;25754:3;25747:10;;25155:608;;;25031:732;;;;:::o;25769:831::-;26032:4;26070:3;26059:9;26055:19;26047:27;;26084:71;26152:1;26141:9;26137:17;26128:6;26084:71;:::i;:::-;26165:80;26241:2;26230:9;26226:18;26217:6;26165:80;:::i;:::-;26292:9;26286:4;26282:20;26277:2;26266:9;26262:18;26255:48;26320:108;26423:4;26414:6;26320:108;:::i;:::-;26312:116;;26438:72;26506:2;26495:9;26491:18;26482:6;26438:72;:::i;:::-;26520:73;26588:3;26577:9;26573:19;26564:6;26520:73;:::i;:::-;25769:831;;;;;;;;:::o;26606:231::-;26746:34;26742:1;26734:6;26730:14;26723:58;26815:14;26810:2;26802:6;26798:15;26791:39;26606:231;:::o;26843:366::-;26985:3;27006:67;27070:2;27065:3;27006:67;:::i;:::-;26999:74;;27082:93;27171:3;27082:93;:::i;:::-;27200:2;27195:3;27191:12;27184:19;;26843:366;;;:::o;27215:419::-;27381:4;27419:2;27408:9;27404:18;27396:26;;27468:9;27462:4;27458:20;27454:1;27443:9;27439:17;27432:47;27496:131;27622:4;27496:131;:::i;:::-;27488:139;;27215:419;;;:::o;27640:180::-;27688:77;27685:1;27678:88;27785:4;27782:1;27775:15;27809:4;27806:1;27799:15;27826:185;27866:1;27883:20;27901:1;27883:20;:::i;:::-;27878:25;;27917:20;27935:1;27917:20;:::i;:::-;27912:25;;27956:1;27946:35;;27961:18;;:::i;:::-;27946:35;28003:1;28000;27996:9;27991:14;;27826:185;;;;:::o;28017:177::-;28157:29;28153:1;28145:6;28141:14;28134:53;28017:177;:::o;28200:366::-;28342:3;28363:67;28427:2;28422:3;28363:67;:::i;:::-;28356:74;;28439:93;28528:3;28439:93;:::i;:::-;28557:2;28552:3;28548:12;28541:19;;28200:366;;;:::o;28572:419::-;28738:4;28776:2;28765:9;28761:18;28753:26;;28825:9;28819:4;28815:20;28811:1;28800:9;28796:17;28789:47;28853:131;28979:4;28853:131;:::i;:::-;28845:139;;28572:419;;;:::o;28997:410::-;29037:7;29060:20;29078:1;29060:20;:::i;:::-;29055:25;;29094:20;29112:1;29094:20;:::i;:::-;29089:25;;29149:1;29146;29142:9;29171:30;29189:11;29171:30;:::i;:::-;29160:41;;29350:1;29341:7;29337:15;29334:1;29331:22;29311:1;29304:9;29284:83;29261:139;;29380:18;;:::i;:::-;29261:139;29045:362;28997:410;;;;:::o;29413:220::-;29553:34;29549:1;29541:6;29537:14;29530:58;29622:3;29617:2;29609:6;29605:15;29598:28;29413:220;:::o;29639:366::-;29781:3;29802:67;29866:2;29861:3;29802:67;:::i;:::-;29795:74;;29878:93;29967:3;29878:93;:::i;:::-;29996:2;29991:3;29987:12;29980:19;;29639:366;;;:::o;30011:419::-;30177:4;30215:2;30204:9;30200:18;30192:26;;30264:9;30258:4;30254:20;30250:1;30239:9;30235:17;30228:47;30292:131;30418:4;30292:131;:::i;:::-;30284:139;;30011:419;;;:::o

Swarm Source

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