ETH Price: $3,599.27 (+9.03%)

Token

ChainElections (VOTE)
 

Overview

Max Total Supply

1,000,000 VOTE

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
10,968.754372 VOTE

Value
$0.00
0x33ae629fa7147d9ef54f23fc4821bbc3ba7cef59
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ChainElections

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-01
*/

/*
Community: https://t.me/chainelections

dApp: https://chainelections.org/

Whitepaper: https://whitepaper.chainelections.org/
*/

// SPDX-License-Identifier: MIT



pragma solidity ^0.8.16;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ChainElections is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "ChainElections";
    string private constant _symbol = "VOTE";
    uint8 private constant _decimals = 6;

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

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

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

    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 20000 * 10**6;
    uint256 public _maxWalletSize = 20000 * 10**6;
    uint256 public _swapTokensAtAmount = 2500 * 10**6;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('ChainElections')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingOpen = true;
        swapEnabled = true;
    }

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function changeFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

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

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

    function delMaxTx() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"delMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405264e8d4a51000600019620000199190620006f5565b6000196200002891906200075c565b600655600060085560196009556000600a556020600b55600a54600c55600b54600d55600c54600e55600d54600f5533601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506404a817c8006015556404a817c800601655639502f9006017553480156200015057600080fd5b506000620001636200068b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002186200068b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000322919062000801565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b0919062000801565b6040518363ffffffff1660e01b8152600401620003cf92919062000844565b6020604051808303816000875af1158015620003ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000415919062000801565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200046b6200069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006186200068b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef64e8d4a510006040516200067c919062000882565b60405180910390a3506200089f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200070282620006bc565b91506200070f83620006bc565b925082620007225762000721620006c6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200076982620006bc565b91506200077683620006bc565b92508282039050818111156200079157620007906200072d565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007c9826200079c565b9050919050565b620007db81620007bc565b8114620007e757600080fd5b50565b600081519050620007fb81620007d0565b92915050565b6000602082840312156200081a576200081962000797565b5b60006200082a84828501620007ea565b91505092915050565b6200083e81620007bc565b82525050565b60006040820190506200085b600083018562000833565b6200086a602083018462000833565b9392505050565b6200087c81620006bc565b82525050565b600060208201905062000899600083018462000871565b92915050565b613e0b80620008af6000396000f3fe6080604052600436106101c65760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063c492f04611610064578063c492f04614610603578063dd62ed3e1461062c578063ea1644d514610669578063f2fde38b14610692576101cd565b8063a9059cbb1461055d578063a90eab8c1461059a578063b1192e18146105c3578063c3c8cd80146105ec576101cd565b80638f9a55c0116100d15780638f9a55c0146104c757806395d89b41146104f257806398a5c3151461051d578063a011af6514610546576101cd565b80637d1db4a5146104345780637f2feddc1461045f5780638da5cb5b1461049c576101cd565b8063313ce567116101645780636fc3eaec1161013e5780636fc3eaec146103a057806370a08231146103b7578063715018a6146103f457806374010ece1461040b576101cd565b8063313ce5671461032157806349bd5a5e1461034c5780636d8aa8f814610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632a9b8072146102cd5780632fd689e3146102f6576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106bb565b6040516101f49190612bce565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612c8e565b6106f8565b6040516102319190612ce9565b60405180910390f35b34801561024657600080fd5b5061024f610716565b60405161025c9190612d63565b60405180910390f35b34801561027157600080fd5b5061027a61073c565b6040516102879190612d8d565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612da8565b610749565b6040516102c49190612ce9565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612e27565b610822565b005b34801561030257600080fd5b5061030b6108d3565b6040516103189190612d8d565b60405180910390f35b34801561032d57600080fd5b506103366108d9565b6040516103439190612e70565b60405180910390f35b34801561035857600080fd5b506103616108e2565b60405161036e9190612e9a565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612e27565b610908565b005b3480156103ac57600080fd5b506103b56109ba565b005b3480156103c357600080fd5b506103de60048036038101906103d99190612eb5565b610a8b565b6040516103eb9190612d8d565b60405180910390f35b34801561040057600080fd5b50610409610adc565b005b34801561041757600080fd5b50610432600480360381019061042d9190612ee2565b610c2f565b005b34801561044057600080fd5b50610449610cce565b6040516104569190612d8d565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190612eb5565b610cd4565b6040516104939190612d8d565b60405180910390f35b3480156104a857600080fd5b506104b1610cec565b6040516104be9190612e9a565b60405180910390f35b3480156104d357600080fd5b506104dc610d15565b6040516104e99190612d8d565b60405180910390f35b3480156104fe57600080fd5b50610507610d1b565b6040516105149190612bce565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612ee2565b610d58565b005b34801561055257600080fd5b5061055b610df7565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c8e565b610ea6565b6040516105919190612ce9565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612f71565b610ec4565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612fc4565b61114e565b005b3480156105f857600080fd5b50610601611205565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613090565b6112de565b005b34801561063857600080fd5b50610653600480360381019061064e91906130f0565b611418565b6040516106609190612d8d565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612ee2565b61149f565b005b34801561069e57600080fd5b506106b960048036038101906106b49190612eb5565b61153e565b005b60606040518060400160405280600e81526020017f436861696e456c656374696f6e73000000000000000000000000000000000000815250905090565b600061070c6107056116ff565b8484611707565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107568484846118d0565b610817846107626116ff565b61081285604051806060016040528060288152602001613dae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c86116ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120709092919063ffffffff16565b611707565b600190509392505050565b61082a6116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae9061317c565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109106116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109949061317c565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fb6116ff565b73ffffffffffffffffffffffffffffffffffffffff161480610a715750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a596116ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610a7a57600080fd5b6000479050610a88816120d4565b50565b6000610ad5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612140565b9050919050565b610ae46116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061317c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c376116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb9061317c565b60405180910390fd5b8060158190555050565b60155481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600481526020017f564f544500000000000000000000000000000000000000000000000000000000815250905090565b610d606116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49061317c565b60405180910390fd5b8060178190555050565b610dff6116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e839061317c565b60405180910390fd5b64e8d4a5100060158190555064e8d4a51000601681905550565b6000610eba610eb36116ff565b84846118d0565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600e81526020017f436861696e456c656374696f6e73000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001610f779594939291906131ab565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611003939291906131fe565b604051602081830303815290604052805190602001209050600082826040516020016110309291906132ad565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161106d94939291906132e4565b6020604051602081039080840390855afa15801561108f573d6000803e3d6000fd5b5050506020604051035190506110a3610cec565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613375565b60405180910390fd5b60016014806101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555050505050505050565b6111566116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da9061317c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112466116ff565b73ffffffffffffffffffffffffffffffffffffffff1614806112bc5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a46116ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6112c557600080fd5b60006112d030610a8b565b90506112db816121ae565b50565b6112e66116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061317c565b60405180910390fd5b60005b8383905081101561141257816005600086868581811061139957611398613395565b5b90506020020160208101906113ae9190612eb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061140a906133f3565b915050611376565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a76116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b9061317c565b60405180910390fd5b8060168190555050565b6115466116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca9061317c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611639906134ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d9061353f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906135d1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118c39190612d8d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a5906136f5565b60405180910390fd5b600081116119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890613787565b60405180910390fd5b6119f9610cec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a675750611a37610cec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6f5760148054906101000a900460ff16611af457611a86610cec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea90613819565b60405180910390fd5b5b601554811115611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613885565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be65760165481611b9b84610a8b565b611ba591906138a5565b10611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc9061394b565b60405180910390fd5b5b6000611bf130610a8b565b9050600060175482101590506015548210611c0c5760155491505b808015611c265750601460159054906101000a900460ff16155b8015611c805750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c985750601460169054906101000a900460ff165b8015611cee5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d445750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6c57611d52826121ae565b60004790506000811115611d6a57611d69476120d4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e165750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed7576000905061205e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f825750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9a57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120455750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205d57600a54600c81905550600b54600d819055505b5b61206a84848484612427565b50505050565b60008383111582906120b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120af9190612bce565b60405180910390fd5b50600083856120c7919061396b565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561213c573d6000803e3d6000fd5b5050565b6000600654821115612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90613a11565b60405180910390fd5b6000612191612454565b90506121a6818461247f90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121e6576121e5613a31565b5b6040519080825280602002602001820160405280156122145781602001602082028036833780820191505090505b509050308160008151811061222c5761222b613395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f79190613a75565b8160018151811061230b5761230a613395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061237230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611707565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123d6959493929190613b9b565b600060405180830381600087803b1580156123f057600080fd5b505af1158015612404573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80612435576124346124c9565b5b612440848484612506565b8061244e5761244d6126d1565b5b50505050565b60008060006124616126e5565b91509150612478818361247f90919063ffffffff16565b9250505090565b60006124c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273b565b905092915050565b6000600c541480156124dd57506000600d54145b61250457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125188761279e565b95509550955095509550955061257686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612657816128ae565b612661848361296b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126be9190612d8d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600064e8d4a51000905061271364e8d4a5100060065461247f90919063ffffffff16565b82101561272e5760065464e8d4a51000935093505050612737565b81819350935050505b9091565b60008083118290612782576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127799190612bce565b60405180910390fd5b50600083856127919190613c24565b9050809150509392505050565b60008060008060008060008060006127bb8a600c54600d546129a5565b92509250925060006127cb612454565b905060008060006127de8e878787612a3b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061284883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612070565b905092915050565b600080828461285f91906138a5565b9050838110156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613ca1565b60405180910390fd5b8091505092915050565b60006128b8612454565b905060006128cf8284612ac490919063ffffffff16565b905061292381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129808260065461280690919063ffffffff16565b60068190555061299b8160075461285090919063ffffffff16565b6007819055505050565b6000806000806129d160646129c3888a612ac490919063ffffffff16565b61247f90919063ffffffff16565b905060006129fb60646129ed888b612ac490919063ffffffff16565b61247f90919063ffffffff16565b90506000612a2482612a16858c61280690919063ffffffff16565b61280690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a548589612ac490919063ffffffff16565b90506000612a6b8689612ac490919063ffffffff16565b90506000612a828789612ac490919063ffffffff16565b90506000612aab82612a9d858761280690919063ffffffff16565b61280690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ad65760009050612b38565b60008284612ae49190613cc1565b9050828482612af39190613c24565b14612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90613d8d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b78578082015181840152602081019050612b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ba082612b3e565b612baa8185612b49565b9350612bba818560208601612b5a565b612bc381612b84565b840191505092915050565b60006020820190508181036000830152612be88184612b95565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2582612bfa565b9050919050565b612c3581612c1a565b8114612c4057600080fd5b50565b600081359050612c5281612c2c565b92915050565b6000819050919050565b612c6b81612c58565b8114612c7657600080fd5b50565b600081359050612c8881612c62565b92915050565b60008060408385031215612ca557612ca4612bf0565b5b6000612cb385828601612c43565b9250506020612cc485828601612c79565b9150509250929050565b60008115159050919050565b612ce381612cce565b82525050565b6000602082019050612cfe6000830184612cda565b92915050565b6000819050919050565b6000612d29612d24612d1f84612bfa565b612d04565b612bfa565b9050919050565b6000612d3b82612d0e565b9050919050565b6000612d4d82612d30565b9050919050565b612d5d81612d42565b82525050565b6000602082019050612d786000830184612d54565b92915050565b612d8781612c58565b82525050565b6000602082019050612da26000830184612d7e565b92915050565b600080600060608486031215612dc157612dc0612bf0565b5b6000612dcf86828701612c43565b9350506020612de086828701612c43565b9250506040612df186828701612c79565b9150509250925092565b612e0481612cce565b8114612e0f57600080fd5b50565b600081359050612e2181612dfb565b92915050565b600060208284031215612e3d57612e3c612bf0565b5b6000612e4b84828501612e12565b91505092915050565b600060ff82169050919050565b612e6a81612e54565b82525050565b6000602082019050612e856000830184612e61565b92915050565b612e9481612c1a565b82525050565b6000602082019050612eaf6000830184612e8b565b92915050565b600060208284031215612ecb57612eca612bf0565b5b6000612ed984828501612c43565b91505092915050565b600060208284031215612ef857612ef7612bf0565b5b6000612f0684828501612c79565b91505092915050565b612f1881612e54565b8114612f2357600080fd5b50565b600081359050612f3581612f0f565b92915050565b6000819050919050565b612f4e81612f3b565b8114612f5957600080fd5b50565b600081359050612f6b81612f45565b92915050565b600080600060608486031215612f8a57612f89612bf0565b5b6000612f9886828701612f26565b9350506020612fa986828701612f5c565b9250506040612fba86828701612f5c565b9150509250925092565b60008060008060808587031215612fde57612fdd612bf0565b5b6000612fec87828801612c79565b9450506020612ffd87828801612c79565b935050604061300e87828801612c79565b925050606061301f87828801612c79565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f8401126130505761304f61302b565b5b8235905067ffffffffffffffff81111561306d5761306c613030565b5b60208301915083602082028301111561308957613088613035565b5b9250929050565b6000806000604084860312156130a9576130a8612bf0565b5b600084013567ffffffffffffffff8111156130c7576130c6612bf5565b5b6130d38682870161303a565b935093505060206130e686828701612e12565b9150509250925092565b6000806040838503121561310757613106612bf0565b5b600061311585828601612c43565b925050602061312685828601612c43565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613166602083612b49565b915061317182613130565b602082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b6131a581612f3b565b82525050565b600060a0820190506131c0600083018861319c565b6131cd602083018761319c565b6131da604083018661319c565b6131e76060830185612d7e565b6131f46080830184612e8b565b9695505050505050565b6000606082019050613213600083018661319c565b613220602083018561319c565b61322d6040830184612d7e565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613276600283613235565b915061328182613240565b600282019050919050565b6000819050919050565b6132a76132a282612f3b565b61328c565b82525050565b60006132b882613269565b91506132c48285613296565b6020820191506132d48284613296565b6020820191508190509392505050565b60006080820190506132f9600083018761319c565b6133066020830186612e61565b613313604083018561319c565b613320606083018461319c565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061335f601183612b49565b915061336a82613329565b602082019050919050565b6000602082019050818103600083015261338e81613352565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133fe82612c58565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134305761342f6133c4565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613497602683612b49565b91506134a28261343b565b604082019050919050565b600060208201905081810360008301526134c68161348a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613529602483612b49565b9150613534826134cd565b604082019050919050565b600060208201905081810360008301526135588161351c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135bb602283612b49565b91506135c68261355f565b604082019050919050565b600060208201905081810360008301526135ea816135ae565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061364d602583612b49565b9150613658826135f1565b604082019050919050565b6000602082019050818103600083015261367c81613640565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136df602383612b49565b91506136ea82613683565b604082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613771602983612b49565b915061377c82613715565b604082019050919050565b600060208201905081810360008301526137a081613764565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613803603f83612b49565b915061380e826137a7565b604082019050919050565b60006020820190508181036000830152613832816137f6565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061386f601c83612b49565b915061387a82613839565b602082019050919050565b6000602082019050818103600083015261389e81613862565b9050919050565b60006138b082612c58565b91506138bb83612c58565b92508282019050808211156138d3576138d26133c4565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613935602383612b49565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b9050919050565b600061397682612c58565b915061398183612c58565b9250828203905081811115613999576139986133c4565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139fb602a83612b49565b9150613a068261399f565b604082019050919050565b60006020820190508181036000830152613a2a816139ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613a6f81612c2c565b92915050565b600060208284031215613a8b57613a8a612bf0565b5b6000613a9984828501613a60565b91505092915050565b6000819050919050565b6000613ac7613ac2613abd84613aa2565b612d04565b612c58565b9050919050565b613ad781613aac565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1281612c1a565b82525050565b6000613b248383613b09565b60208301905092915050565b6000602082019050919050565b6000613b4882613add565b613b528185613ae8565b9350613b5d83613af9565b8060005b83811015613b8e578151613b758882613b18565b9750613b8083613b30565b925050600181019050613b61565b5085935050505092915050565b600060a082019050613bb06000830188612d7e565b613bbd6020830187613ace565b8181036040830152613bcf8186613b3d565b9050613bde6060830185612e8b565b613beb6080830184612d7e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2f82612c58565b9150613c3a83612c58565b925082613c4a57613c49613bf5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c8b601b83612b49565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b6000613ccc82612c58565b9150613cd783612c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1057613d0f6133c4565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d77602183612b49565b9150613d8282613d1b565b604082019050919050565b60006020820190508181036000830152613da681613d6a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a9e14c6fd8effc71bd374b0144f5e4d0002886ca638fb10c7029ec1354bfb1ca64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063c492f04611610064578063c492f04614610603578063dd62ed3e1461062c578063ea1644d514610669578063f2fde38b14610692576101cd565b8063a9059cbb1461055d578063a90eab8c1461059a578063b1192e18146105c3578063c3c8cd80146105ec576101cd565b80638f9a55c0116100d15780638f9a55c0146104c757806395d89b41146104f257806398a5c3151461051d578063a011af6514610546576101cd565b80637d1db4a5146104345780637f2feddc1461045f5780638da5cb5b1461049c576101cd565b8063313ce567116101645780636fc3eaec1161013e5780636fc3eaec146103a057806370a08231146103b7578063715018a6146103f457806374010ece1461040b576101cd565b8063313ce5671461032157806349bd5a5e1461034c5780636d8aa8f814610377576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632a9b8072146102cd5780632fd689e3146102f6576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106bb565b6040516101f49190612bce565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612c8e565b6106f8565b6040516102319190612ce9565b60405180910390f35b34801561024657600080fd5b5061024f610716565b60405161025c9190612d63565b60405180910390f35b34801561027157600080fd5b5061027a61073c565b6040516102879190612d8d565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190612da8565b610749565b6040516102c49190612ce9565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612e27565b610822565b005b34801561030257600080fd5b5061030b6108d3565b6040516103189190612d8d565b60405180910390f35b34801561032d57600080fd5b506103366108d9565b6040516103439190612e70565b60405180910390f35b34801561035857600080fd5b506103616108e2565b60405161036e9190612e9a565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190612e27565b610908565b005b3480156103ac57600080fd5b506103b56109ba565b005b3480156103c357600080fd5b506103de60048036038101906103d99190612eb5565b610a8b565b6040516103eb9190612d8d565b60405180910390f35b34801561040057600080fd5b50610409610adc565b005b34801561041757600080fd5b50610432600480360381019061042d9190612ee2565b610c2f565b005b34801561044057600080fd5b50610449610cce565b6040516104569190612d8d565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190612eb5565b610cd4565b6040516104939190612d8d565b60405180910390f35b3480156104a857600080fd5b506104b1610cec565b6040516104be9190612e9a565b60405180910390f35b3480156104d357600080fd5b506104dc610d15565b6040516104e99190612d8d565b60405180910390f35b3480156104fe57600080fd5b50610507610d1b565b6040516105149190612bce565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612ee2565b610d58565b005b34801561055257600080fd5b5061055b610df7565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c8e565b610ea6565b6040516105919190612ce9565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612f71565b610ec4565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190612fc4565b61114e565b005b3480156105f857600080fd5b50610601611205565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613090565b6112de565b005b34801561063857600080fd5b50610653600480360381019061064e91906130f0565b611418565b6040516106609190612d8d565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612ee2565b61149f565b005b34801561069e57600080fd5b506106b960048036038101906106b49190612eb5565b61153e565b005b60606040518060400160405280600e81526020017f436861696e456c656374696f6e73000000000000000000000000000000000000815250905090565b600061070c6107056116ff565b8484611707565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600064e8d4a51000905090565b60006107568484846118d0565b610817846107626116ff565b61081285604051806060016040528060288152602001613dae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c86116ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120709092919063ffffffff16565b611707565b600190509392505050565b61082a6116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae9061317c565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60175481565b60006006905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109106116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109949061317c565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fb6116ff565b73ffffffffffffffffffffffffffffffffffffffff161480610a715750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a596116ff565b73ffffffffffffffffffffffffffffffffffffffff16145b610a7a57600080fd5b6000479050610a88816120d4565b50565b6000610ad5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612140565b9050919050565b610ae46116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061317c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c376116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb9061317c565b60405180910390fd5b8060158190555050565b60155481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600481526020017f564f544500000000000000000000000000000000000000000000000000000000815250905090565b610d606116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49061317c565b60405180910390fd5b8060178190555050565b610dff6116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e839061317c565b60405180910390fd5b64e8d4a5100060158190555064e8d4a51000601681905550565b6000610eba610eb36116ff565b84846118d0565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600e81526020017f436861696e456c656374696f6e73000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001610f779594939291906131ab565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611003939291906131fe565b604051602081830303815290604052805190602001209050600082826040516020016110309291906132ad565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161106d94939291906132e4565b6020604051602081039080840390855afa15801561108f573d6000803e3d6000fd5b5050506020604051035190506110a3610cec565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613375565b60405180910390fd5b60016014806101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555050505050505050565b6111566116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da9061317c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112466116ff565b73ffffffffffffffffffffffffffffffffffffffff1614806112bc5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a46116ff565b73ffffffffffffffffffffffffffffffffffffffff16145b6112c557600080fd5b60006112d030610a8b565b90506112db816121ae565b50565b6112e66116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a9061317c565b60405180910390fd5b60005b8383905081101561141257816005600086868581811061139957611398613395565b5b90506020020160208101906113ae9190612eb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061140a906133f3565b915050611376565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a76116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b9061317c565b60405180910390fd5b8060168190555050565b6115466116ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca9061317c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611639906134ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d9061353f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906135d1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118c39190612d8d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613663565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a5906136f5565b60405180910390fd5b600081116119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890613787565b60405180910390fd5b6119f9610cec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a675750611a37610cec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6f5760148054906101000a900460ff16611af457611a86610cec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea90613819565b60405180910390fd5b5b601554811115611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613885565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611be65760165481611b9b84610a8b565b611ba591906138a5565b10611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc9061394b565b60405180910390fd5b5b6000611bf130610a8b565b9050600060175482101590506015548210611c0c5760155491505b808015611c265750601460159054906101000a900460ff16155b8015611c805750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c985750601460169054906101000a900460ff165b8015611cee5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d445750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d6c57611d52826121ae565b60004790506000811115611d6a57611d69476120d4565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e165750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed7576000905061205e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f825750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9a57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120455750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205d57600a54600c81905550600b54600d819055505b5b61206a84848484612427565b50505050565b60008383111582906120b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120af9190612bce565b60405180910390fd5b50600083856120c7919061396b565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561213c573d6000803e3d6000fd5b5050565b6000600654821115612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90613a11565b60405180910390fd5b6000612191612454565b90506121a6818461247f90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121e6576121e5613a31565b5b6040519080825280602002602001820160405280156122145781602001602082028036833780820191505090505b509050308160008151811061222c5761222b613395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f79190613a75565b8160018151811061230b5761230a613395565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061237230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611707565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123d6959493929190613b9b565b600060405180830381600087803b1580156123f057600080fd5b505af1158015612404573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80612435576124346124c9565b5b612440848484612506565b8061244e5761244d6126d1565b5b50505050565b60008060006124616126e5565b91509150612478818361247f90919063ffffffff16565b9250505090565b60006124c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273b565b905092915050565b6000600c541480156124dd57506000600d54145b61250457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125188761279e565b95509550955095509550955061257686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612657816128ae565b612661848361296b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126be9190612d8d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600064e8d4a51000905061271364e8d4a5100060065461247f90919063ffffffff16565b82101561272e5760065464e8d4a51000935093505050612737565b81819350935050505b9091565b60008083118290612782576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127799190612bce565b60405180910390fd5b50600083856127919190613c24565b9050809150509392505050565b60008060008060008060008060006127bb8a600c54600d546129a5565b92509250925060006127cb612454565b905060008060006127de8e878787612a3b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061284883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612070565b905092915050565b600080828461285f91906138a5565b9050838110156128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613ca1565b60405180910390fd5b8091505092915050565b60006128b8612454565b905060006128cf8284612ac490919063ffffffff16565b905061292381600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129808260065461280690919063ffffffff16565b60068190555061299b8160075461285090919063ffffffff16565b6007819055505050565b6000806000806129d160646129c3888a612ac490919063ffffffff16565b61247f90919063ffffffff16565b905060006129fb60646129ed888b612ac490919063ffffffff16565b61247f90919063ffffffff16565b90506000612a2482612a16858c61280690919063ffffffff16565b61280690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a548589612ac490919063ffffffff16565b90506000612a6b8689612ac490919063ffffffff16565b90506000612a828789612ac490919063ffffffff16565b90506000612aab82612a9d858761280690919063ffffffff16565b61280690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612ad65760009050612b38565b60008284612ae49190613cc1565b9050828482612af39190613c24565b14612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90613d8d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b78578082015181840152602081019050612b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ba082612b3e565b612baa8185612b49565b9350612bba818560208601612b5a565b612bc381612b84565b840191505092915050565b60006020820190508181036000830152612be88184612b95565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2582612bfa565b9050919050565b612c3581612c1a565b8114612c4057600080fd5b50565b600081359050612c5281612c2c565b92915050565b6000819050919050565b612c6b81612c58565b8114612c7657600080fd5b50565b600081359050612c8881612c62565b92915050565b60008060408385031215612ca557612ca4612bf0565b5b6000612cb385828601612c43565b9250506020612cc485828601612c79565b9150509250929050565b60008115159050919050565b612ce381612cce565b82525050565b6000602082019050612cfe6000830184612cda565b92915050565b6000819050919050565b6000612d29612d24612d1f84612bfa565b612d04565b612bfa565b9050919050565b6000612d3b82612d0e565b9050919050565b6000612d4d82612d30565b9050919050565b612d5d81612d42565b82525050565b6000602082019050612d786000830184612d54565b92915050565b612d8781612c58565b82525050565b6000602082019050612da26000830184612d7e565b92915050565b600080600060608486031215612dc157612dc0612bf0565b5b6000612dcf86828701612c43565b9350506020612de086828701612c43565b9250506040612df186828701612c79565b9150509250925092565b612e0481612cce565b8114612e0f57600080fd5b50565b600081359050612e2181612dfb565b92915050565b600060208284031215612e3d57612e3c612bf0565b5b6000612e4b84828501612e12565b91505092915050565b600060ff82169050919050565b612e6a81612e54565b82525050565b6000602082019050612e856000830184612e61565b92915050565b612e9481612c1a565b82525050565b6000602082019050612eaf6000830184612e8b565b92915050565b600060208284031215612ecb57612eca612bf0565b5b6000612ed984828501612c43565b91505092915050565b600060208284031215612ef857612ef7612bf0565b5b6000612f0684828501612c79565b91505092915050565b612f1881612e54565b8114612f2357600080fd5b50565b600081359050612f3581612f0f565b92915050565b6000819050919050565b612f4e81612f3b565b8114612f5957600080fd5b50565b600081359050612f6b81612f45565b92915050565b600080600060608486031215612f8a57612f89612bf0565b5b6000612f9886828701612f26565b9350506020612fa986828701612f5c565b9250506040612fba86828701612f5c565b9150509250925092565b60008060008060808587031215612fde57612fdd612bf0565b5b6000612fec87828801612c79565b9450506020612ffd87828801612c79565b935050604061300e87828801612c79565b925050606061301f87828801612c79565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f8401126130505761304f61302b565b5b8235905067ffffffffffffffff81111561306d5761306c613030565b5b60208301915083602082028301111561308957613088613035565b5b9250929050565b6000806000604084860312156130a9576130a8612bf0565b5b600084013567ffffffffffffffff8111156130c7576130c6612bf5565b5b6130d38682870161303a565b935093505060206130e686828701612e12565b9150509250925092565b6000806040838503121561310757613106612bf0565b5b600061311585828601612c43565b925050602061312685828601612c43565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613166602083612b49565b915061317182613130565b602082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b6131a581612f3b565b82525050565b600060a0820190506131c0600083018861319c565b6131cd602083018761319c565b6131da604083018661319c565b6131e76060830185612d7e565b6131f46080830184612e8b565b9695505050505050565b6000606082019050613213600083018661319c565b613220602083018561319c565b61322d6040830184612d7e565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613276600283613235565b915061328182613240565b600282019050919050565b6000819050919050565b6132a76132a282612f3b565b61328c565b82525050565b60006132b882613269565b91506132c48285613296565b6020820191506132d48284613296565b6020820191508190509392505050565b60006080820190506132f9600083018761319c565b6133066020830186612e61565b613313604083018561319c565b613320606083018461319c565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061335f601183612b49565b915061336a82613329565b602082019050919050565b6000602082019050818103600083015261338e81613352565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133fe82612c58565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134305761342f6133c4565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613497602683612b49565b91506134a28261343b565b604082019050919050565b600060208201905081810360008301526134c68161348a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613529602483612b49565b9150613534826134cd565b604082019050919050565b600060208201905081810360008301526135588161351c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135bb602283612b49565b91506135c68261355f565b604082019050919050565b600060208201905081810360008301526135ea816135ae565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061364d602583612b49565b9150613658826135f1565b604082019050919050565b6000602082019050818103600083015261367c81613640565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136df602383612b49565b91506136ea82613683565b604082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613771602983612b49565b915061377c82613715565b604082019050919050565b600060208201905081810360008301526137a081613764565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613803603f83612b49565b915061380e826137a7565b604082019050919050565b60006020820190508181036000830152613832816137f6565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061386f601c83612b49565b915061387a82613839565b602082019050919050565b6000602082019050818103600083015261389e81613862565b9050919050565b60006138b082612c58565b91506138bb83612c58565b92508282019050808211156138d3576138d26133c4565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613935602383612b49565b9150613940826138d9565b604082019050919050565b6000602082019050818103600083015261396481613928565b9050919050565b600061397682612c58565b915061398183612c58565b9250828203905081811115613999576139986133c4565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139fb602a83612b49565b9150613a068261399f565b604082019050919050565b60006020820190508181036000830152613a2a816139ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613a6f81612c2c565b92915050565b600060208284031215613a8b57613a8a612bf0565b5b6000613a9984828501613a60565b91505092915050565b6000819050919050565b6000613ac7613ac2613abd84613aa2565b612d04565b612c58565b9050919050565b613ad781613aac565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1281612c1a565b82525050565b6000613b248383613b09565b60208301905092915050565b6000602082019050919050565b6000613b4882613add565b613b528185613ae8565b9350613b5d83613af9565b8060005b83811015613b8e578151613b758882613b18565b9750613b8083613b30565b925050600181019050613b61565b5085935050505092915050565b600060a082019050613bb06000830188612d7e565b613bbd6020830187613ace565b8181036040830152613bcf8186613b3d565b9050613bde6060830185612e8b565b613beb6080830184612d7e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2f82612c58565b9150613c3a83612c58565b925082613c4a57613c49613bf5565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c8b601b83612b49565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b6000613ccc82612c58565b9150613cd783612c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1057613d0f6133c4565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d77602183612b49565b9150613d8282613d1b565b604082019050919050565b60006020820190508181036000830152613da681613d6a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a9e14c6fd8effc71bd374b0144f5e4d0002886ca638fb10c7029ec1354bfb1ca64736f6c63430008100033

Deployed Bytecode Sourcemap

4209:14229:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6609:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7534:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5459:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6886:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7735:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13167:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5760:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6795:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5507:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17699:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13521:235;;;;;;;;;;;;;:::i;:::-;;6989:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1696:148;;;;;;;;;;;;;:::i;:::-;;17839:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5658:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1482:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5708:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6700:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17508:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18078:113;;;;;;;;;;;;;:::i;:::-;;7135:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12098:1061;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17162:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13277:236;;;;;;;;;;;;;:::i;:::-;;18199:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7342:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17955:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1852:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6609:83;6646:13;6679:5;;;;;;;;;;;;;;;;;6672:12;;6609:83;:::o;7534:193::-;7636:4;7658:39;7667:12;:10;:12::i;:::-;7681:7;7690:6;7658:8;:39::i;:::-;7715:4;7708:11;;7534:193;;;;:::o;5459:41::-;;;;;;;;;;;;;:::o;6886:95::-;6939:7;4768:15;6959:14;;6886:95;:::o;7735:446::-;7867:4;7884:36;7894:6;7902:9;7913:6;7884:9;:36::i;:::-;7931:220;7954:6;7975:12;:10;:12::i;:::-;8002:138;8058:6;8002:138;;;;;;;;;;;;;;;;;:11;:19;8014:6;8002:19;;;;;;;;;;;;;;;:33;8022:12;:10;:12::i;:::-;8002:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7931:8;:220::i;:::-;8169:4;8162:11;;7735:446;;;;;:::o;13167:102::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13249:12:::1;13235:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;13167:102:::0;:::o;5760:49::-;;;;:::o;6795:83::-;6836:5;4442:1;6854:16;;6795:83;:::o;5507:28::-;;;;;;;;;;;;;:::o;17699:101::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17780:12:::1;17766:11;;:26;;;;;;;;;;;;;;;;;;17699:101:::0;:::o;13521:235::-;13587:19;;;;;;;;;;;13571:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13626:17;;;;;;;;;;;13610:33;;:12;:10;:12::i;:::-;:33;;;13571:72;13563:81;;;;;;13655:26;13684:21;13655:50;;13716:32;13729:18;13716:12;:32::i;:::-;13552:204;13521:235::o;6989:138::-;7055:7;7082:37;7102:7;:16;7110:7;7102:16;;;;;;;;;;;;;;;;7082:19;:37::i;:::-;7075:44;;6989:138;;;:::o;1696:148::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1803:1:::1;1766:40;;1787:6;::::0;::::1;;;;;;;;1766:40;;;;;;;;;;;;1834:1;1817:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1696:148::o:0;17839:108::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17928:11:::1;17913:12;:26;;;;17839:108:::0;:::o;5658:43::-;;;;:::o;5265:::-;;;;;;;;;;;;;;;;;:::o;1482:79::-;1520:7;1547:6;;;;;;;;;;;1540:13;;1482:79;:::o;5708:45::-;;;;:::o;6700:87::-;6739:13;6772:7;;;;;;;;;;;;;;;;;6765:14;;6700:87;:::o;17508:139::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17621:18:::1;17599:19;:40;;;;17508:139:::0;:::o;18078:113::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4768:15:::1;18126:12;:22;;;;4768:15;18159:14;:24;;;;18078:113::o:0;7135:199::-;7240:4;7262:42;7272:12;:10;:12::i;:::-;7286:9;7297:6;7262:9;:42::i;:::-;7322:4;7315:11;;7135:199;;;;:::o;12098:1061::-;12182:18;12256:95;12380:23;;;;;;;;;;;;;;;;;12370:34;;;;;;12433:10;;;;;;;;;;;;;;;;;12423:21;;;;;;12463:13;12503:4;12227:296;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12203:331;;;;;;12182:352;;12547:18;12621:49;12699:23;;;;;;;;;;;;;;;;;12689:34;;;;;;12750:1;12592:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12568:210;;;;;;12547:231;;12791:14;12896:10;12925;12832:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12808:169;;;;;;12791:186;;12990:14;13007:26;13017:6;13025:1;13028;13031;13007:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12990:43;;13062:7;:5;:7::i;:::-;13052:17;;:6;:17;;;13044:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13118:4;13104:11;;:18;;;;;;;;;;;;;;;;;;13147:4;13133:11;;:18;;;;;;;;;;;;;;;;;;12171:988;;;;12098:1061;;;:::o;17162:294::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17316:13:::1;17299:14;:30;;;;17358:14;17340:15;:32;;;;17398:11;17383:12;:26;;;;17436:12;17420:13;:28;;;;17162:294:::0;;;;:::o;13277:236::-;13343:19;;;;;;;;;;;13327:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13382:17;;;;;;;;;;;13366:33;;:12;:10;:12::i;:::-;:33;;;13327:72;13319:81;;;;;;13411:23;13437:24;13455:4;13437:9;:24::i;:::-;13411:50;;13472:33;13489:15;13472:16;:33::i;:::-;13308:205;13277:236::o;18199:234::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18316:9:::1;18312:114;18335:8;;:15;;18331:1;:19;18312:114;;;18406:8;18372:18;:31;18391:8;;18400:1;18391:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18372:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18352:3;;;;;:::i;:::-;;;;18312:114;;;;18199:234:::0;;;:::o;7342:184::-;7459:7;7491:11;:18;7503:5;7491:18;;;;;;;;;;;;;;;:27;7510:7;7491:27;;;;;;;;;;;;;;;;7484:34;;7342:184;;;;:::o;17955:115::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18049:13:::1;18032:14;:30;;;;17955:115:::0;:::o;1852:244::-;1619:12;:10;:12::i;:::-;1609:22;;:6;;;;;;;;;;:22;;;1601:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1961:1:::1;1941:22;;:8;:22;;::::0;1933:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2051:8;2022:38;;2043:6;::::0;::::1;;;;;;;;2022:38;;;;;;;;;;;;2080:8;2071:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1852:244:::0;:::o;241:98::-;294:7;321:10;314:17;;241:98;:::o;8872:369::-;9016:1;8999:19;;:5;:19;;;8991:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9097:1;9078:21;;:7;:21;;;9070:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9179:6;9149:11;:18;9161:5;9149:18;;;;;;;;;;;;;;;:27;9168:7;9149:27;;;;;;;;;;;;;;;:36;;;;9217:7;9201:32;;9210:5;9201:32;;;9226:6;9201:32;;;;;;:::i;:::-;;;;;;;;8872:369;;;:::o;9249:2243::-;9387:1;9371:18;;:4;:18;;;9363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9464:1;9450:16;;:2;:16;;;9442:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9534:1;9525:6;:10;9517:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9606:7;:5;:7::i;:::-;9598:15;;:4;:15;;;;:32;;;;;9623:7;:5;:7::i;:::-;9617:13;;:2;:13;;;;9598:32;9594:1172;;;9687:11;;;;;;;;;;9682:144;;9735:7;:5;:7::i;:::-;9727:15;;:4;:15;;;9719:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9682:144;9860:12;;9850:6;:22;;9842:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9931:13;;;;;;;;;;;9925:19;;:2;:19;;;9922:146;;9998:14;;9989:6;9973:13;9983:2;9973:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9965:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9922:146;10084:28;10115:24;10133:4;10115:9;:24::i;:::-;10084:55;;10154:12;10193:19;;10169:20;:43;;10154:58;;10256:12;;10232:20;:36;10229:124;;10325:12;;10302:35;;10229:124;10373:7;:18;;;;;10385:6;;;;;;;;;;;10384:7;10373:18;:43;;;;;10403:13;;;;;;;;;;;10395:21;;:4;:21;;;;10373:43;:58;;;;;10420:11;;;;;;;;;;;10373:58;:87;;;;;10436:18;:24;10455:4;10436:24;;;;;;;;;;;;;;;;;;;;;;;;;10435:25;10373:87;:114;;;;;10465:18;:22;10484:2;10465:22;;;;;;;;;;;;;;;;;;;;;;;;;10464:23;10373:114;10369:386;;;10508:38;10525:20;10508:16;:38::i;:::-;10565:26;10594:21;10565:50;;10659:1;10638:18;:22;10634:106;;;10685:35;10698:21;10685:12;:35::i;:::-;10634:106;10489:266;10369:386;9632:1134;;9594:1172;10778:12;10793:4;10778:19;;10842:18;:24;10861:4;10842:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10870:18;:22;10889:2;10870:22;;;;;;;;;;;;;;;;;;;;;;;;;10842:50;10841:102;;;;10906:13;;;;;;;;;;;10898:21;;:4;:21;;;;:44;;;;;10929:13;;;;;;;;;;;10923:19;;:2;:19;;;;10898:44;10841:102;10837:594;;;10970:5;10960:15;;10837:594;;;11053:13;;;;;;;;;;;11045:21;;:4;:21;;;:55;;;;;11084:15;;;;;;;;;;;11070:30;;:2;:30;;;;11045:55;11042:162;;;11133:14;;11121:9;:26;;;;11176:12;;11166:7;:22;;;;11042:162;11263:13;;;;;;;;;;;11257:19;;:2;:19;;;:55;;;;;11296:15;;;;;;;;;;;11280:32;;:4;:32;;;;11257:55;11253:165;;;11345:15;;11333:9;:27;;;;11389:13;;11379:7;:23;;;;11253:165;10837:594;11443:41;11458:4;11464:2;11468:6;11476:7;11443:14;:41::i;:::-;9352:2140;9249:2243;;;:::o;2460:224::-;2580:7;2613:1;2608;:6;;2616:12;2600:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2640:9;2656:1;2652;:5;;;;:::i;:::-;2640:17;;2675:1;2668:8;;;2460:224;;;;;:::o;11991:99::-;12048:17;;;;;;;;;;;:26;;:34;12075:6;12048:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11991:99;:::o;8189:323::-;8284:7;8342;;8331;:18;;8309:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8430:19;8452:10;:8;:10::i;:::-;8430:32;;8480:24;8492:11;8480:7;:11;;:24;;;;:::i;:::-;8473:31;;;8189:323;;;:::o;11500:483::-;5912:4;5903:6;;:13;;;;;;;;;;;;;;;;;;11578:21:::1;11616:1;11602:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11578:40;;11647:4;11629;11634:1;11629:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11673:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11663:4;11668:1;11663:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11706:62;11723:4;11738:15;;;;;;;;;;;11756:11;11706:8;:62::i;:::-;11779:15;;;;;;;;;;;:66;;;11860:11;11886:1;11902:4;11929;11949:15;11779:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11567:416;5948:5:::0;5939:6;;:14;;;;;;;;;;;;;;;;;;11500:483;:::o;13764:282::-;13920:7;13915:28;;13929:14;:12;:14::i;:::-;13915:28;13954:44;13972:6;13980:9;13991:6;13954:17;:44::i;:::-;14014:7;14009:29;;14023:15;:13;:15::i;:::-;14009:29;13764:282;;;;:::o;16725:164::-;16767:7;16788:15;16805;16824:19;:17;:19::i;:::-;16787:56;;;;16861:20;16873:7;16861;:11;;:20;;;;:::i;:::-;16854:27;;;;16725:164;:::o;2946:132::-;3004:7;3031:39;3035:1;3038;3031:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3024:46;;2946:132;;;;:::o;8520:219::-;8580:1;8567:9;;:14;:30;;;;;8596:1;8585:7;;:12;8567:30;8599:7;8563:43;8638:9;;8618:17;:29;;;;8676:7;;8658:15;:25;;;;8708:1;8696:9;:13;;;;8730:1;8720:7;:11;;;;8520:219;:::o;14054:610::-;14201:15;14231:23;14269:12;14296:23;14334:12;14361:13;14388:19;14399:7;14388:10;:19::i;:::-;14186:221;;;;;;;;;;;;14436:28;14456:7;14436;:15;14444:6;14436:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14418:7;:15;14426:6;14418:15;;;;;;;;;;;;;;;:46;;;;14496:39;14519:15;14496:7;:18;14504:9;14496:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14475:7;:18;14483:9;14475:18;;;;;;;;;;;;;;;:60;;;;14546:16;14556:5;14546:9;:16::i;:::-;14573:23;14585:4;14591;14573:11;:23::i;:::-;14629:9;14612:44;;14621:6;14612:44;;;14640:15;14612:44;;;;;;:::i;:::-;;;;;;;;14175:489;;;;;;14054:610;;;:::o;8747:117::-;8803:17;;8791:9;:29;;;;8841:15;;8831:7;:25;;;;8747:117::o;16897:257::-;16948:7;16957;16977:15;16995:7;;16977:25;;17013:15;4768;17013:25;;17063:20;4768:15;17063:7;;:11;;:20;;;;:::i;:::-;17053:7;:30;17049:61;;;17093:7;;4768:15;17085:25;;;;;;;;17049:61;17129:7;17138;17121:25;;;;;;16897:257;;;:::o;3086:223::-;3206:7;3238:1;3234;:5;3241:12;3226:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3265:9;3281:1;3277;:5;;;;:::i;:::-;3265:17;;3300:1;3293:8;;;3086:223;;;;;:::o;15083:615::-;15183:7;15205;15227;15249;15271;15293;15329:23;15354:12;15368:13;15398:40;15410:7;15419:9;;15430:7;;15398:11;:40::i;:::-;15328:110;;;;;;15449:19;15471:10;:8;:10::i;:::-;15449:32;;15493:15;15510:23;15535:12;15564:46;15576:7;15585:4;15591:5;15598:11;15564;:46::i;:::-;15492:118;;;;;;15629:7;15638:15;15655:4;15661:15;15678:4;15684:5;15621:69;;;;;;;;;;;;;;;;;;;15083:615;;;;;;;:::o;2316:136::-;2374:7;2401:43;2405:1;2408;2401:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2394:50;;2316:136;;;;:::o;2129:179::-;2187:7;2207:9;2223:1;2219;:5;;;;:::i;:::-;2207:17;;2248:1;2243;:6;;2235:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2299:1;2292:8;;;2129:179;;;;:::o;14672:211::-;14725:19;14747:10;:8;:10::i;:::-;14725:32;;14768:13;14784:22;14794:11;14784:5;:9;;:22;;;;:::i;:::-;14768:38;;14842:33;14869:5;14842:7;:22;14858:4;14842:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14817:7;:22;14833:4;14817:22;;;;;;;;;;;;;;;:58;;;;14714:169;;14672:211;:::o;14891:147::-;14969:17;14981:4;14969:7;;:11;;:17;;;;:::i;:::-;14959:7;:27;;;;15010:20;15025:4;15010:10;;:14;;:20;;;;:::i;:::-;14997:10;:33;;;;14891:147;;:::o;15706:469::-;15875:7;15897;15919;15954:12;15969:30;15995:3;15969:21;15981:8;15969:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15954:45;;16010:13;16026:28;16050:3;16026:19;16038:6;16026:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16010:44;;16065:23;16091:28;16113:5;16091:17;16103:4;16091:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16065:54;;16138:15;16155:4;16161:5;16130:37;;;;;;;;;15706:469;;;;;;;:::o;16183:534::-;16377:7;16399;16421;16456:15;16474:24;16486:11;16474:7;:11;;:24;;;;:::i;:::-;16456:42;;16509:12;16524:21;16533:11;16524:4;:8;;:21;;;;:::i;:::-;16509:36;;16556:13;16572:22;16582:11;16572:5;:9;;:22;;;;:::i;:::-;16556:38;;16605:23;16631:28;16653:5;16631:17;16643:4;16631:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16605:54;;16678:7;16687:15;16704:4;16670:39;;;;;;;;;;16183:534;;;;;;;;:::o;2692:246::-;2750:7;2779:1;2774;:6;2770:47;;2804:1;2797:8;;;;2770:47;2827:9;2843:1;2839;:5;;;;:::i;:::-;2827:17;;2872:1;2867;2863;:5;;;;:::i;:::-;:10;2855:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2929:1;2922:8;;;2692:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:116::-;5466:21;5481:5;5466:21;:::i;:::-;5459:5;5456:32;5446:60;;5502:1;5499;5492:12;5446:60;5396:116;:::o;5518:133::-;5561:5;5599:6;5586:20;5577:29;;5615:30;5639:5;5615:30;:::i;:::-;5518:133;;;;:::o;5657:323::-;5713:6;5762:2;5750:9;5741:7;5737:23;5733:32;5730:119;;;5768:79;;:::i;:::-;5730:119;5888:1;5913:50;5955:7;5946:6;5935:9;5931:22;5913:50;:::i;:::-;5903:60;;5859:114;5657:323;;;;:::o;5986:86::-;6021:7;6061:4;6054:5;6050:16;6039:27;;5986:86;;;:::o;6078:112::-;6161:22;6177:5;6161:22;:::i;:::-;6156:3;6149:35;6078:112;;:::o;6196:214::-;6285:4;6323:2;6312:9;6308:18;6300:26;;6336:67;6400:1;6389:9;6385:17;6376:6;6336:67;:::i;:::-;6196:214;;;;:::o;6416:118::-;6503:24;6521:5;6503:24;:::i;:::-;6498:3;6491:37;6416:118;;:::o;6540:222::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6684:71;6752:1;6741:9;6737:17;6728:6;6684:71;:::i;:::-;6540:222;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:118::-;7509:22;7525:5;7509:22;:::i;:::-;7502:5;7499:33;7489:61;;7546:1;7543;7536:12;7489:61;7438:118;:::o;7562:135::-;7606:5;7644:6;7631:20;7622:29;;7660:31;7685:5;7660:31;:::i;:::-;7562:135;;;;:::o;7703:77::-;7740:7;7769:5;7758:16;;7703:77;;;:::o;7786:122::-;7859:24;7877:5;7859:24;:::i;:::-;7852:5;7849:35;7839:63;;7898:1;7895;7888:12;7839:63;7786:122;:::o;7914:139::-;7960:5;7998:6;7985:20;7976:29;;8014:33;8041:5;8014:33;:::i;:::-;7914:139;;;;:::o;8059:615::-;8134:6;8142;8150;8199:2;8187:9;8178:7;8174:23;8170:32;8167:119;;;8205:79;;:::i;:::-;8167:119;8325:1;8350:51;8393:7;8384:6;8373:9;8369:22;8350:51;:::i;:::-;8340:61;;8296:115;8450:2;8476:53;8521:7;8512:6;8501:9;8497:22;8476:53;:::i;:::-;8466:63;;8421:118;8578:2;8604:53;8649:7;8640:6;8629:9;8625:22;8604:53;:::i;:::-;8594:63;;8549:118;8059:615;;;;;:::o;8680:765::-;8766:6;8774;8782;8790;8839:3;8827:9;8818:7;8814:23;8810:33;8807:120;;;8846:79;;:::i;:::-;8807:120;8966:1;8991:53;9036:7;9027:6;9016:9;9012:22;8991:53;:::i;:::-;8981:63;;8937:117;9093:2;9119:53;9164:7;9155:6;9144:9;9140:22;9119:53;:::i;:::-;9109:63;;9064:118;9221:2;9247:53;9292:7;9283:6;9272:9;9268:22;9247:53;:::i;:::-;9237:63;;9192:118;9349:2;9375:53;9420:7;9411:6;9400:9;9396:22;9375:53;:::i;:::-;9365:63;;9320:118;8680:765;;;;;;;:::o;9451:117::-;9560:1;9557;9550:12;9574:117;9683:1;9680;9673:12;9697:117;9806:1;9803;9796:12;9837:568;9910:8;9920:6;9970:3;9963:4;9955:6;9951:17;9947:27;9937:122;;9978:79;;:::i;:::-;9937:122;10091:6;10078:20;10068:30;;10121:18;10113:6;10110:30;10107:117;;;10143:79;;:::i;:::-;10107:117;10257:4;10249:6;10245:17;10233:29;;10311:3;10303:4;10295:6;10291:17;10281:8;10277:32;10274:41;10271:128;;;10318:79;;:::i;:::-;10271:128;9837:568;;;;;:::o;10411:698::-;10503:6;10511;10519;10568:2;10556:9;10547:7;10543:23;10539:32;10536:119;;;10574:79;;:::i;:::-;10536:119;10722:1;10711:9;10707:17;10694:31;10752:18;10744:6;10741:30;10738:117;;;10774:79;;:::i;:::-;10738:117;10887:80;10959:7;10950:6;10939:9;10935:22;10887:80;:::i;:::-;10869:98;;;;10665:312;11016:2;11042:50;11084:7;11075:6;11064:9;11060:22;11042:50;:::i;:::-;11032:60;;10987:115;10411:698;;;;;:::o;11115:474::-;11183:6;11191;11240:2;11228:9;11219:7;11215:23;11211:32;11208:119;;;11246:79;;:::i;:::-;11208:119;11366:1;11391:53;11436:7;11427:6;11416:9;11412:22;11391:53;:::i;:::-;11381:63;;11337:117;11493:2;11519:53;11564:7;11555:6;11544:9;11540:22;11519:53;:::i;:::-;11509:63;;11464:118;11115:474;;;;;:::o;11595:182::-;11735:34;11731:1;11723:6;11719:14;11712:58;11595:182;:::o;11783:366::-;11925:3;11946:67;12010:2;12005:3;11946:67;:::i;:::-;11939:74;;12022:93;12111:3;12022:93;:::i;:::-;12140:2;12135:3;12131:12;12124:19;;11783:366;;;:::o;12155:419::-;12321:4;12359:2;12348:9;12344:18;12336:26;;12408:9;12402:4;12398:20;12394:1;12383:9;12379:17;12372:47;12436:131;12562:4;12436:131;:::i;:::-;12428:139;;12155:419;;;:::o;12580:118::-;12667:24;12685:5;12667:24;:::i;:::-;12662:3;12655:37;12580:118;;:::o;12704:664::-;12909:4;12947:3;12936:9;12932:19;12924:27;;12961:71;13029:1;13018:9;13014:17;13005:6;12961:71;:::i;:::-;13042:72;13110:2;13099:9;13095:18;13086:6;13042:72;:::i;:::-;13124;13192:2;13181:9;13177:18;13168:6;13124:72;:::i;:::-;13206;13274:2;13263:9;13259:18;13250:6;13206:72;:::i;:::-;13288:73;13356:3;13345:9;13341:19;13332:6;13288:73;:::i;:::-;12704:664;;;;;;;;:::o;13374:442::-;13523:4;13561:2;13550:9;13546:18;13538:26;;13574:71;13642:1;13631:9;13627:17;13618:6;13574:71;:::i;:::-;13655:72;13723:2;13712:9;13708:18;13699:6;13655:72;:::i;:::-;13737;13805:2;13794:9;13790:18;13781:6;13737:72;:::i;:::-;13374:442;;;;;;:::o;13822:148::-;13924:11;13961:3;13946:18;;13822:148;;;;:::o;13976:214::-;14116:66;14112:1;14104:6;14100:14;14093:90;13976:214;:::o;14196:400::-;14356:3;14377:84;14459:1;14454:3;14377:84;:::i;:::-;14370:91;;14470:93;14559:3;14470:93;:::i;:::-;14588:1;14583:3;14579:11;14572:18;;14196:400;;;:::o;14602:79::-;14641:7;14670:5;14659:16;;14602:79;;;:::o;14687:157::-;14792:45;14812:24;14830:5;14812:24;:::i;:::-;14792:45;:::i;:::-;14787:3;14780:58;14687:157;;:::o;14850:663::-;15091:3;15113:148;15257:3;15113:148;:::i;:::-;15106:155;;15271:75;15342:3;15333:6;15271:75;:::i;:::-;15371:2;15366:3;15362:12;15355:19;;15384:75;15455:3;15446:6;15384:75;:::i;:::-;15484:2;15479:3;15475:12;15468:19;;15504:3;15497:10;;14850:663;;;;;:::o;15519:545::-;15692:4;15730:3;15719:9;15715:19;15707:27;;15744:71;15812:1;15801:9;15797:17;15788:6;15744:71;:::i;:::-;15825:68;15889:2;15878:9;15874:18;15865:6;15825:68;:::i;:::-;15903:72;15971:2;15960:9;15956:18;15947:6;15903:72;:::i;:::-;15985;16053:2;16042:9;16038:18;16029:6;15985:72;:::i;:::-;15519:545;;;;;;;:::o;16070:167::-;16210:19;16206:1;16198:6;16194:14;16187:43;16070:167;:::o;16243:366::-;16385:3;16406:67;16470:2;16465:3;16406:67;:::i;:::-;16399:74;;16482:93;16571:3;16482:93;:::i;:::-;16600:2;16595:3;16591:12;16584:19;;16243:366;;;:::o;16615:419::-;16781:4;16819:2;16808:9;16804:18;16796:26;;16868:9;16862:4;16858:20;16854:1;16843:9;16839:17;16832:47;16896:131;17022:4;16896:131;:::i;:::-;16888:139;;16615:419;;;:::o;17040:180::-;17088:77;17085:1;17078:88;17185:4;17182:1;17175:15;17209:4;17206:1;17199:15;17226:180;17274:77;17271:1;17264:88;17371:4;17368:1;17361:15;17395:4;17392:1;17385:15;17412:233;17451:3;17474:24;17492:5;17474:24;:::i;:::-;17465:33;;17520:66;17513:5;17510:77;17507:103;;17590:18;;:::i;:::-;17507:103;17637:1;17630:5;17626:13;17619:20;;17412:233;;;:::o;17651:225::-;17791:34;17787:1;17779:6;17775:14;17768:58;17860:8;17855:2;17847:6;17843:15;17836:33;17651:225;:::o;17882:366::-;18024:3;18045:67;18109:2;18104:3;18045:67;:::i;:::-;18038:74;;18121:93;18210:3;18121:93;:::i;:::-;18239:2;18234:3;18230:12;18223:19;;17882:366;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18254:419;;;:::o;18679:223::-;18819:34;18815:1;18807:6;18803:14;18796:58;18888:6;18883:2;18875:6;18871:15;18864:31;18679:223;:::o;18908:366::-;19050:3;19071:67;19135:2;19130:3;19071:67;:::i;:::-;19064:74;;19147:93;19236:3;19147:93;:::i;:::-;19265:2;19260:3;19256:12;19249:19;;18908:366;;;:::o;19280:419::-;19446:4;19484:2;19473:9;19469:18;19461:26;;19533:9;19527:4;19523:20;19519:1;19508:9;19504:17;19497:47;19561:131;19687:4;19561:131;:::i;:::-;19553:139;;19280:419;;;:::o;19705:221::-;19845:34;19841:1;19833:6;19829:14;19822:58;19914:4;19909:2;19901:6;19897:15;19890:29;19705:221;:::o;19932:366::-;20074:3;20095:67;20159:2;20154:3;20095:67;:::i;:::-;20088:74;;20171:93;20260:3;20171:93;:::i;:::-;20289:2;20284:3;20280:12;20273:19;;19932:366;;;:::o;20304:419::-;20470:4;20508:2;20497:9;20493:18;20485:26;;20557:9;20551:4;20547:20;20543:1;20532:9;20528:17;20521:47;20585:131;20711:4;20585:131;:::i;:::-;20577:139;;20304:419;;;:::o;20729:224::-;20869:34;20865:1;20857:6;20853:14;20846:58;20938:7;20933:2;20925:6;20921:15;20914:32;20729:224;:::o;20959:366::-;21101:3;21122:67;21186:2;21181:3;21122:67;:::i;:::-;21115:74;;21198:93;21287:3;21198:93;:::i;:::-;21316:2;21311:3;21307:12;21300:19;;20959:366;;;:::o;21331:419::-;21497:4;21535:2;21524:9;21520:18;21512:26;;21584:9;21578:4;21574:20;21570:1;21559:9;21555:17;21548:47;21612:131;21738:4;21612:131;:::i;:::-;21604:139;;21331:419;;;:::o;21756:222::-;21896:34;21892:1;21884:6;21880:14;21873:58;21965:5;21960:2;21952:6;21948:15;21941:30;21756:222;:::o;21984:366::-;22126:3;22147:67;22211:2;22206:3;22147:67;:::i;:::-;22140:74;;22223:93;22312:3;22223:93;:::i;:::-;22341:2;22336:3;22332:12;22325:19;;21984:366;;;:::o;22356:419::-;22522:4;22560:2;22549:9;22545:18;22537:26;;22609:9;22603:4;22599:20;22595:1;22584:9;22580:17;22573:47;22637:131;22763:4;22637:131;:::i;:::-;22629:139;;22356:419;;;:::o;22781:228::-;22921:34;22917:1;22909:6;22905:14;22898:58;22990:11;22985:2;22977:6;22973:15;22966:36;22781:228;:::o;23015:366::-;23157:3;23178:67;23242:2;23237:3;23178:67;:::i;:::-;23171:74;;23254:93;23343:3;23254:93;:::i;:::-;23372:2;23367:3;23363:12;23356:19;;23015:366;;;:::o;23387:419::-;23553:4;23591:2;23580:9;23576:18;23568:26;;23640:9;23634:4;23630:20;23626:1;23615:9;23611:17;23604:47;23668:131;23794:4;23668:131;:::i;:::-;23660:139;;23387:419;;;:::o;23812:250::-;23952:34;23948:1;23940:6;23936:14;23929:58;24021:33;24016:2;24008:6;24004:15;23997:58;23812:250;:::o;24068:366::-;24210:3;24231:67;24295:2;24290:3;24231:67;:::i;:::-;24224:74;;24307:93;24396:3;24307:93;:::i;:::-;24425:2;24420:3;24416:12;24409:19;;24068:366;;;:::o;24440:419::-;24606:4;24644:2;24633:9;24629:18;24621:26;;24693:9;24687:4;24683:20;24679:1;24668:9;24664:17;24657:47;24721:131;24847:4;24721:131;:::i;:::-;24713:139;;24440:419;;;:::o;24865:178::-;25005:30;25001:1;24993:6;24989:14;24982:54;24865:178;:::o;25049:366::-;25191:3;25212:67;25276:2;25271:3;25212:67;:::i;:::-;25205:74;;25288:93;25377:3;25288:93;:::i;:::-;25406:2;25401:3;25397:12;25390:19;;25049:366;;;:::o;25421:419::-;25587:4;25625:2;25614:9;25610:18;25602:26;;25674:9;25668:4;25664:20;25660:1;25649:9;25645:17;25638:47;25702:131;25828:4;25702:131;:::i;:::-;25694:139;;25421:419;;;:::o;25846:191::-;25886:3;25905:20;25923:1;25905:20;:::i;:::-;25900:25;;25939:20;25957:1;25939:20;:::i;:::-;25934:25;;25982:1;25979;25975:9;25968:16;;26003:3;26000:1;25997:10;25994:36;;;26010:18;;:::i;:::-;25994:36;25846:191;;;;:::o;26043:222::-;26183:34;26179:1;26171:6;26167:14;26160:58;26252:5;26247:2;26239:6;26235:15;26228:30;26043:222;:::o;26271:366::-;26413:3;26434:67;26498:2;26493:3;26434:67;:::i;:::-;26427:74;;26510:93;26599:3;26510:93;:::i;:::-;26628:2;26623:3;26619:12;26612:19;;26271:366;;;:::o;26643:419::-;26809:4;26847:2;26836:9;26832:18;26824:26;;26896:9;26890:4;26886:20;26882:1;26871:9;26867:17;26860:47;26924:131;27050:4;26924:131;:::i;:::-;26916:139;;26643:419;;;:::o;27068:194::-;27108:4;27128:20;27146:1;27128:20;:::i;:::-;27123:25;;27162:20;27180:1;27162:20;:::i;:::-;27157:25;;27206:1;27203;27199:9;27191:17;;27230:1;27224:4;27221:11;27218:37;;;27235:18;;:::i;:::-;27218:37;27068:194;;;;:::o;27268:229::-;27408:34;27404:1;27396:6;27392:14;27385:58;27477:12;27472:2;27464:6;27460:15;27453:37;27268:229;:::o;27503:366::-;27645:3;27666:67;27730:2;27725:3;27666:67;:::i;:::-;27659:74;;27742:93;27831:3;27742:93;:::i;:::-;27860:2;27855:3;27851:12;27844:19;;27503:366;;;:::o;27875:419::-;28041:4;28079:2;28068:9;28064:18;28056:26;;28128:9;28122:4;28118:20;28114:1;28103:9;28099:17;28092:47;28156:131;28282:4;28156:131;:::i;:::-;28148:139;;27875:419;;;:::o;28300:180::-;28348:77;28345:1;28338:88;28445:4;28442:1;28435:15;28469:4;28466:1;28459:15;28486:143;28543:5;28574:6;28568:13;28559:22;;28590:33;28617:5;28590:33;:::i;:::-;28486:143;;;;:::o;28635:351::-;28705:6;28754:2;28742:9;28733:7;28729:23;28725:32;28722:119;;;28760:79;;:::i;:::-;28722:119;28880:1;28905:64;28961:7;28952:6;28941:9;28937:22;28905:64;:::i;:::-;28895:74;;28851:128;28635:351;;;;:::o;28992:85::-;29037:7;29066:5;29055:16;;28992:85;;;:::o;29083:158::-;29141:9;29174:61;29192:42;29201:32;29227:5;29201:32;:::i;:::-;29192:42;:::i;:::-;29174:61;:::i;:::-;29161:74;;29083:158;;;:::o;29247:147::-;29342:45;29381:5;29342:45;:::i;:::-;29337:3;29330:58;29247:147;;:::o;29400:114::-;29467:6;29501:5;29495:12;29485:22;;29400:114;;;:::o;29520:184::-;29619:11;29653:6;29648:3;29641:19;29693:4;29688:3;29684:14;29669:29;;29520:184;;;;:::o;29710:132::-;29777:4;29800:3;29792:11;;29830:4;29825:3;29821:14;29813:22;;29710:132;;;:::o;29848:108::-;29925:24;29943:5;29925:24;:::i;:::-;29920:3;29913:37;29848:108;;:::o;29962:179::-;30031:10;30052:46;30094:3;30086:6;30052:46;:::i;:::-;30130:4;30125:3;30121:14;30107:28;;29962:179;;;;:::o;30147:113::-;30217:4;30249;30244:3;30240:14;30232:22;;30147:113;;;:::o;30296:732::-;30415:3;30444:54;30492:5;30444:54;:::i;:::-;30514:86;30593:6;30588:3;30514:86;:::i;:::-;30507:93;;30624:56;30674:5;30624:56;:::i;:::-;30703:7;30734:1;30719:284;30744:6;30741:1;30738:13;30719:284;;;30820:6;30814:13;30847:63;30906:3;30891:13;30847:63;:::i;:::-;30840:70;;30933:60;30986:6;30933:60;:::i;:::-;30923:70;;30779:224;30766:1;30763;30759:9;30754:14;;30719:284;;;30723:14;31019:3;31012:10;;30420:608;;;30296:732;;;;:::o;31034:831::-;31297:4;31335:3;31324:9;31320:19;31312:27;;31349:71;31417:1;31406:9;31402:17;31393:6;31349:71;:::i;:::-;31430:80;31506:2;31495:9;31491:18;31482:6;31430:80;:::i;:::-;31557:9;31551:4;31547:20;31542:2;31531:9;31527:18;31520:48;31585:108;31688:4;31679:6;31585:108;:::i;:::-;31577:116;;31703:72;31771:2;31760:9;31756:18;31747:6;31703:72;:::i;:::-;31785:73;31853:3;31842:9;31838:19;31829:6;31785:73;:::i;:::-;31034:831;;;;;;;;:::o;31871:180::-;31919:77;31916:1;31909:88;32016:4;32013:1;32006:15;32040:4;32037:1;32030:15;32057:185;32097:1;32114:20;32132:1;32114:20;:::i;:::-;32109:25;;32148:20;32166:1;32148:20;:::i;:::-;32143:25;;32187:1;32177:35;;32192:18;;:::i;:::-;32177:35;32234:1;32231;32227:9;32222:14;;32057:185;;;;:::o;32248:177::-;32388:29;32384:1;32376:6;32372:14;32365:53;32248:177;:::o;32431:366::-;32573:3;32594:67;32658:2;32653:3;32594:67;:::i;:::-;32587:74;;32670:93;32759:3;32670:93;:::i;:::-;32788:2;32783:3;32779:12;32772:19;;32431:366;;;:::o;32803:419::-;32969:4;33007:2;32996:9;32992:18;32984:26;;33056:9;33050:4;33046:20;33042:1;33031:9;33027:17;33020:47;33084:131;33210:4;33084:131;:::i;:::-;33076:139;;32803:419;;;:::o;33228:348::-;33268:7;33291:20;33309:1;33291:20;:::i;:::-;33286:25;;33325:20;33343:1;33325:20;:::i;:::-;33320:25;;33513:1;33445:66;33441:74;33438:1;33435:81;33430:1;33423:9;33416:17;33412:105;33409:131;;;33520:18;;:::i;:::-;33409:131;33568:1;33565;33561:9;33550:20;;33228:348;;;;:::o;33582:220::-;33722:34;33718:1;33710:6;33706:14;33699:58;33791:3;33786:2;33778:6;33774:15;33767:28;33582:220;:::o;33808:366::-;33950:3;33971:67;34035:2;34030:3;33971:67;:::i;:::-;33964:74;;34047:93;34136:3;34047:93;:::i;:::-;34165:2;34160:3;34156:12;34149:19;;33808:366;;;:::o;34180:419::-;34346:4;34384:2;34373:9;34369:18;34361:26;;34433:9;34427:4;34423:20;34419:1;34408:9;34404:17;34397:47;34461:131;34587:4;34461:131;:::i;:::-;34453:139;;34180:419;;;:::o

Swarm Source

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