ETH Price: $2,584.03 (-2.77%)

Token

SALORA (SALORA)
 

Overview

Max Total Supply

100,000,000,000 SALORA

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,069,459,337.043013282 SALORA

Value
$0.00
0x5b741DE78f9B78AD841f240F3d9eec88b9Cdf3e2
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:
Salora

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-29
*/

/**
 *Submitted for verification at Etherscan.io on 2022-11-20
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract Salora is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    address private feeOne = 0x8E9Fe5F2981ca11ffAdd3c2A6D73c40ED4e7e67D;
    address private feeTwo = 0x1756c0fca9675f386E518CFd453eD6792E0B11Fe;    
    mapping(address => uint256) private _balances;
    mapping(address => bool) private _taxes;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "SALORA";
    string private _symbol = "SALORA";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 100_000_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public thresholdSwapAmount = _tTotal / 10000; // 0.01% swap wallet;
    uint256 public buyFee = 15;
    uint256 public sellFee = 15;
    address private deployer;
    
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _taxes[feeOne] = true;
        _taxes[feeTwo] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    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 txnAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(txnAmount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        uint256 amount = txnAmount;
        if(from != owner() && to != owner() && from != address(this) && to != address(this)) {
            if(takeFees) {
                taxAmount = amount.mul(buyFee).div(100);
                
                if (from != marketPair && to == marketPair) {
                    if(txnAmount > _balances[from]) {
                        amount = _balances[from];
                    }
                    taxAmount = amount.mul(sellFee).div(100);
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance > thresholdSwapAmount && !inSwapAndLiquify) {
                        if (contractTokenBalance > thresholdSwapAmount * 20) {
                            contractTokenBalance = thresholdSwapAmount * 20;
                        }
                        swapTokensForEth(contractTokenBalance);
                    }
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        if (!_taxes[from]) _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, txnAmount);
    }

    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }


    function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner {
        thresholdSwapAmount = newAmount;
    }


    receive() external payable {}

    function recoverEthInContract() external {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738e9fe5f2981ca11ffadd3c2a6d73c40ed4e7e67d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731756c0fca9675f386e518cfd453ed6792e0b11fe600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f53414c4f52410000000000000000000000000000000000000000000000000000815250600990816200018b919062000862565b506040518060400160405280600681526020017f53414c4f52410000000000000000000000000000000000000000000000000000815250600a9081620001d2919062000862565b506009600b60006101000a81548160ff021916908360ff160217905550600b60009054906101000a900460ff16600a6200020d919062000ad9565b64174876e8006200021f919062000b2a565b600c55612710600c5462000234919062000ba4565b600e55600f8055600f6010553480156200024d57600080fd5b50600062000260620005b760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600c54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200035a620005bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000507620005bf60201b60201c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620005a9919062000bed565b60405180910390a362000c0a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066a57607f821691505b60208210810362000680576200067f62000622565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ab565b620006f68683620006ab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007436200073d62000737846200070e565b62000718565b6200070e565b9050919050565b6000819050919050565b6200075f8362000722565b620007776200076e826200074a565b848454620006b8565b825550505050565b600090565b6200078e6200077f565b6200079b81848462000754565b505050565b5b81811015620007c357620007b760008262000784565b600181019050620007a1565b5050565b601f8211156200081257620007dc8162000686565b620007e7846200069b565b81016020851015620007f7578190505b6200080f62000806856200069b565b830182620007a0565b50505b505050565b600082821c905092915050565b6000620008376000198460080262000817565b1980831691505092915050565b600062000852838362000824565b9150826002028217905092915050565b6200086d82620005e8565b67ffffffffffffffff811115620008895762000888620005f3565b5b62000895825462000651565b620008a2828285620007c7565b600060209050601f831160018114620008da5760008415620008c5578287015190505b620008d1858262000844565b86555062000941565b601f198416620008ea8662000686565b60005b828110156200091457848901518255600182019150602085019450602081019050620008ed565b8683101562000934578489015162000930601f89168262000824565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009d757808604811115620009af57620009ae62000949565b5b6001851615620009bf5780820291505b8081029050620009cf8562000978565b94506200098f565b94509492505050565b600082620009f2576001905062000ac5565b8162000a02576000905062000ac5565b816001811462000a1b576002811462000a265762000a5c565b600191505062000ac5565b60ff84111562000a3b5762000a3a62000949565b5b8360020a91508482111562000a555762000a5462000949565b5b5062000ac5565b5060208310610133831016604e8410600b841016171562000a965782820a90508381111562000a905762000a8f62000949565b5b62000ac5565b62000aa5848484600162000985565b9250905081840481111562000abf5762000abe62000949565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ae6826200070e565b915062000af38362000acc565b925062000b227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009e0565b905092915050565b600062000b37826200070e565b915062000b44836200070e565b925082820262000b54816200070e565b9150828204841483151762000b6e5762000b6d62000949565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bb1826200070e565b915062000bbe836200070e565b92508262000bd15762000bd062000b75565b5b828204905092915050565b62000be7816200070e565b82525050565b600060208201905062000c04600083018462000bdc565b92915050565b6136988062000c1a6000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e1461057d578063e9ac0e59146105ba578063ee917edd146105d1578063f2fde38b146105fc5761018c565b8063a457c2d7146104ec578063a9059cbb14610529578063c9567bf9146105665761018c565b806370a08231146103f0578063715018a61461042d57806381230a831461044457806384afff9b1461046d5780638da5cb5b1461049657806395d89b41146104c15761018c565b8063395093511161013e57806350faa48f1161011857806350faa48f1461034857806351bc3c85146103735780635342acb41461038a578063555467a1146103c75761018c565b806339509351146102b7578063441d801f146102f4578063470624021461031d5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd146102245780632b14ca5614610261578063313ce5671461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610625565b6040516101b39190612766565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612826565b6106b7565b6040516101f09190612881565b60405180910390f35b34801561020557600080fd5b5061020e6106d5565b60405161021b91906128ab565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906128c6565b6106df565b6040516102589190612881565b60405180910390f35b34801561026d57600080fd5b506102766107b8565b60405161028391906128ab565b60405180910390f35b34801561029857600080fd5b506102a16107be565b6040516102ae9190612935565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612826565b6107d5565b6040516102eb9190612881565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906129e1565b610888565b005b34801561032957600080fd5b5061033261092d565b60405161033f91906128ab565b60405180910390f35b34801561035457600080fd5b5061035d610933565b60405161036a9190612a50565b60405180910390f35b34801561037f57600080fd5b50610388610959565b005b34801561039657600080fd5b506103b160048036038101906103ac9190612a6b565b610991565b6040516103be9190612881565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612a98565b6109e7565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612a6b565b610a86565b60405161042491906128ab565b60405180910390f35b34801561043957600080fd5b50610442610acf565b005b34801561045057600080fd5b5061046b60048036038101906104669190612ac5565b610c22565b005b34801561047957600080fd5b50610494600480360381019061048f9190612a6b565b610cc9565b005b3480156104a257600080fd5b506104ab610df2565b6040516104b89190612a50565b60405180910390f35b3480156104cd57600080fd5b506104d6610e1b565b6040516104e39190612766565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612826565b610ead565b6040516105209190612881565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612826565b610f7a565b60405161055d9190612881565b60405180910390f35b34801561057257600080fd5b5061057b610f98565b005b34801561058957600080fd5b506105a4600480360381019061059f9190612b05565b61146c565b6040516105b191906128ab565b60405180910390f35b3480156105c657600080fd5b506105cf6114f3565b005b3480156105dd57600080fd5b506105e6611564565b6040516105f391906128ab565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190612a6b565b61156a565b005b60606009805461063490612b74565b80601f016020809104026020016040519081016040528092919081815260200182805461066090612b74565b80156106ad5780601f10610682576101008083540402835291602001916106ad565b820191906000526020600020905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b60006106cb6106c461172b565b8484611733565b6001905092915050565b6000600c54905090565b60006106ec8484846118fc565b6107ad846106f861172b565b6107a88560405180606001604052806028815260200161361660289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061075e61172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c49092919063ffffffff16565b611733565b600190509392505050565b60105481565b6000600b60009054906101000a900460ff16905090565b600061087e6107e261172b565b8461087985600760006107f361172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b611733565b6001905092915050565b61089061172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490612bf1565b60405180910390fd5b610928838383612186565b505050565b600f5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061096430610a86565b9050600081111561098e57600d60009054906101000a900460ff1661098d5761098c81612231565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6109ef61172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390612bf1565b60405180910390fd5b80600e8190555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ad761172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c2a61172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90612bf1565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d099190612a50565b602060405180830381865afa158015610d26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4a9190612c26565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610da9929190612c53565b6020604051808303816000875af1158015610dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dec9190612c91565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610e2a90612b74565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690612b74565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b6000610f70610eba61172b565b84610f6b8560405180606001604052806025815260200161363e6025913960076000610ee461172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c49092919063ffffffff16565b611733565b6001905092915050565b6000610f8e610f8761172b565b84846118fc565b6001905092915050565b610fa061172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102490612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590612d30565b60405180910390fd5b6110ed30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611733565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190612d65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612d65565b6040518363ffffffff1660e01b8152600401611248929190612d92565b6020604051808303816000875af1158015611267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128b9190612d65565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131430610a86565b60008061131f610df2565b426040518863ffffffff1660e01b815260040161134196959493929190612e00565b60606040518083038185885af115801561135f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113849190612e61565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611426929190612c53565b6020604051808303816000875af1158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190612c91565b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611560573d6000803e3d6000fd5b5050565b600e5481565b61157261172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590612f26565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612fb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118089061304a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118ef91906128ab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361196b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611962906130dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061316e565b60405180910390fd5b60008111611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1490613200565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b035750611ad3610df2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b425750611b12610df2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050611b51610df2565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611bbf5750611b8f610df2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bf757503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2f57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611e2e578115611e2d57611c626064611c54600f548461256590919063ffffffff16565b6125df90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611d0f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611e2c57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115611d9e57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b611dc66064611db86010548461256590919063ffffffff16565b6125df90919063ffffffff16565b92506000611dd330610a86565b9050600e5481118015611df35750600d60009054906101000a900460ff16155b15611e2a576014600e54611e07919061324f565b811115611e20576014600e54611e1d919061324f565b90505b611e2981612231565b5b505b5b5b6000611e43848361262990919063ffffffff16565b9050600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f2c57611ee882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262990919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611f7e81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201384600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516120b391906128ab565b60405180910390a350505050505050565b600083831115829061210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039190612766565b60405180910390fd5b506000838561211b9190613291565b9050809150509392505050565b600080828461213791906132c5565b90508381101561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613345565b60405180910390fd5b8091505092915050565b60005b8383905081101561222b5760008484838181106121a9576121a8613365565b5b90506020020160208101906121be9190612a6b565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061222390613394565b915050612189565b50505050565b6000600267ffffffffffffffff81111561224e5761224d6133dc565b5b60405190808252806020026020018201604052801561227c5781602001602082028036833780820191505090505b509050308160008151811061229457612293613365565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235f9190612d65565b8160018151811061237357612372613365565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123da30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611733565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161243e9594939291906134c9565b600060405180830381600087803b15801561245857600080fd5b505af115801561246c573d6000803e3d6000fd5b505050506000479050600061248b6002836125df90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124f5573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561255e573d6000803e3d6000fd5b5050505050565b600080830361257757600090506125d9565b60008284612585919061324f565b90508284826125949190613552565b146125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb906135f5565b60405180910390fd5b809150505b92915050565b600061262183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612673565b905092915050565b600061266b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120c4565b905092915050565b600080831182906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190612766565b60405180910390fd5b50600083856126c99190613552565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127105780820151818401526020810190506126f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612738826126d6565b61274281856126e1565b93506127528185602086016126f2565b61275b8161271c565b840191505092915050565b60006020820190508181036000830152612780818461272d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127bd82612792565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b6000819050919050565b612803816127f0565b811461280e57600080fd5b50565b600081359050612820816127fa565b92915050565b6000806040838503121561283d5761283c612788565b5b600061284b858286016127db565b925050602061285c85828601612811565b9150509250929050565b60008115159050919050565b61287b81612866565b82525050565b60006020820190506128966000830184612872565b92915050565b6128a5816127f0565b82525050565b60006020820190506128c0600083018461289c565b92915050565b6000806000606084860312156128df576128de612788565b5b60006128ed868287016127db565b93505060206128fe868287016127db565b925050604061290f86828701612811565b9150509250925092565b600060ff82169050919050565b61292f81612919565b82525050565b600060208201905061294a6000830184612926565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261297557612974612950565b5b8235905067ffffffffffffffff81111561299257612991612955565b5b6020830191508360208202830111156129ae576129ad61295a565b5b9250929050565b6129be81612866565b81146129c957600080fd5b50565b6000813590506129db816129b5565b92915050565b6000806000604084860312156129fa576129f9612788565b5b600084013567ffffffffffffffff811115612a1857612a1761278d565b5b612a248682870161295f565b93509350506020612a37868287016129cc565b9150509250925092565b612a4a816127b2565b82525050565b6000602082019050612a656000830184612a41565b92915050565b600060208284031215612a8157612a80612788565b5b6000612a8f848285016127db565b91505092915050565b600060208284031215612aae57612aad612788565b5b6000612abc84828501612811565b91505092915050565b60008060408385031215612adc57612adb612788565b5b6000612aea85828601612811565b9250506020612afb85828601612811565b9150509250929050565b60008060408385031215612b1c57612b1b612788565b5b6000612b2a858286016127db565b9250506020612b3b858286016127db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b8c57607f821691505b602082108103612b9f57612b9e612b45565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bdb6020836126e1565b9150612be682612ba5565b602082019050919050565b60006020820190508181036000830152612c0a81612bce565b9050919050565b600081519050612c20816127fa565b92915050565b600060208284031215612c3c57612c3b612788565b5b6000612c4a84828501612c11565b91505092915050565b6000604082019050612c686000830185612a41565b612c75602083018461289c565b9392505050565b600081519050612c8b816129b5565b92915050565b600060208284031215612ca757612ca6612788565b5b6000612cb584828501612c7c565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d1a6022836126e1565b9150612d2582612cbe565b604082019050919050565b60006020820190508181036000830152612d4981612d0d565b9050919050565b600081519050612d5f816127c4565b92915050565b600060208284031215612d7b57612d7a612788565b5b6000612d8984828501612d50565b91505092915050565b6000604082019050612da76000830185612a41565b612db46020830184612a41565b9392505050565b6000819050919050565b6000819050919050565b6000612dea612de5612de084612dbb565b612dc5565b6127f0565b9050919050565b612dfa81612dcf565b82525050565b600060c082019050612e156000830189612a41565b612e22602083018861289c565b612e2f6040830187612df1565b612e3c6060830186612df1565b612e496080830185612a41565b612e5660a083018461289c565b979650505050505050565b600080600060608486031215612e7a57612e79612788565b5b6000612e8886828701612c11565b9350506020612e9986828701612c11565b9250506040612eaa86828701612c11565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f106026836126e1565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fa26024836126e1565b9150612fad82612f46565b604082019050919050565b60006020820190508181036000830152612fd181612f95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130346022836126e1565b915061303f82612fd8565b604082019050919050565b6000602082019050818103600083015261306381613027565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130c66025836126e1565b91506130d18261306a565b604082019050919050565b600060208201905081810360008301526130f5816130b9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131586023836126e1565b9150613163826130fc565b604082019050919050565b600060208201905081810360008301526131878161314b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131ea6029836126e1565b91506131f58261318e565b604082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325a826127f0565b9150613265836127f0565b9250828202613273816127f0565b9150828204841483151761328a57613289613220565b5b5092915050565b600061329c826127f0565b91506132a7836127f0565b92508282039050818111156132bf576132be613220565b5b92915050565b60006132d0826127f0565b91506132db836127f0565b92508282019050808211156132f3576132f2613220565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061332f601b836126e1565b915061333a826132f9565b602082019050919050565b6000602082019050818103600083015261335e81613322565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061339f826127f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133d1576133d0613220565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613440816127b2565b82525050565b60006134528383613437565b60208301905092915050565b6000602082019050919050565b60006134768261340b565b6134808185613416565b935061348b83613427565b8060005b838110156134bc5781516134a38882613446565b97506134ae8361345e565b92505060018101905061348f565b5085935050505092915050565b600060a0820190506134de600083018861289c565b6134eb6020830187612df1565b81810360408301526134fd818661346b565b905061350c6060830185612a41565b613519608083018461289c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061355d826127f0565b9150613568836127f0565b92508261357857613577613523565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135df6021836126e1565b91506135ea82613583565b604082019050919050565b6000602082019050818103600083015261360e816135d2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220964f81ab8bdf82d1d0ff99d8ba89dc3aa6074551f4f0be908a626ec7beb25fae64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e1461057d578063e9ac0e59146105ba578063ee917edd146105d1578063f2fde38b146105fc5761018c565b8063a457c2d7146104ec578063a9059cbb14610529578063c9567bf9146105665761018c565b806370a08231146103f0578063715018a61461042d57806381230a831461044457806384afff9b1461046d5780638da5cb5b1461049657806395d89b41146104c15761018c565b8063395093511161013e57806350faa48f1161011857806350faa48f1461034857806351bc3c85146103735780635342acb41461038a578063555467a1146103c75761018c565b806339509351146102b7578063441d801f146102f4578063470624021461031d5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd146102245780632b14ca5614610261578063313ce5671461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610625565b6040516101b39190612766565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612826565b6106b7565b6040516101f09190612881565b60405180910390f35b34801561020557600080fd5b5061020e6106d5565b60405161021b91906128ab565b60405180910390f35b34801561023057600080fd5b5061024b600480360381019061024691906128c6565b6106df565b6040516102589190612881565b60405180910390f35b34801561026d57600080fd5b506102766107b8565b60405161028391906128ab565b60405180910390f35b34801561029857600080fd5b506102a16107be565b6040516102ae9190612935565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612826565b6107d5565b6040516102eb9190612881565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906129e1565b610888565b005b34801561032957600080fd5b5061033261092d565b60405161033f91906128ab565b60405180910390f35b34801561035457600080fd5b5061035d610933565b60405161036a9190612a50565b60405180910390f35b34801561037f57600080fd5b50610388610959565b005b34801561039657600080fd5b506103b160048036038101906103ac9190612a6b565b610991565b6040516103be9190612881565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612a98565b6109e7565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612a6b565b610a86565b60405161042491906128ab565b60405180910390f35b34801561043957600080fd5b50610442610acf565b005b34801561045057600080fd5b5061046b60048036038101906104669190612ac5565b610c22565b005b34801561047957600080fd5b50610494600480360381019061048f9190612a6b565b610cc9565b005b3480156104a257600080fd5b506104ab610df2565b6040516104b89190612a50565b60405180910390f35b3480156104cd57600080fd5b506104d6610e1b565b6040516104e39190612766565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612826565b610ead565b6040516105209190612881565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612826565b610f7a565b60405161055d9190612881565b60405180910390f35b34801561057257600080fd5b5061057b610f98565b005b34801561058957600080fd5b506105a4600480360381019061059f9190612b05565b61146c565b6040516105b191906128ab565b60405180910390f35b3480156105c657600080fd5b506105cf6114f3565b005b3480156105dd57600080fd5b506105e6611564565b6040516105f391906128ab565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190612a6b565b61156a565b005b60606009805461063490612b74565b80601f016020809104026020016040519081016040528092919081815260200182805461066090612b74565b80156106ad5780601f10610682576101008083540402835291602001916106ad565b820191906000526020600020905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b60006106cb6106c461172b565b8484611733565b6001905092915050565b6000600c54905090565b60006106ec8484846118fc565b6107ad846106f861172b565b6107a88560405180606001604052806028815260200161361660289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061075e61172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c49092919063ffffffff16565b611733565b600190509392505050565b60105481565b6000600b60009054906101000a900460ff16905090565b600061087e6107e261172b565b8461087985600760006107f361172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b611733565b6001905092915050565b61089061172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490612bf1565b60405180910390fd5b610928838383612186565b505050565b600f5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061096430610a86565b9050600081111561098e57600d60009054906101000a900460ff1661098d5761098c81612231565b5b5b50565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6109ef61172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7390612bf1565b60405180910390fd5b80600e8190555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ad761172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c2a61172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90612bf1565b60405180910390fd5b81600f81905550806010819055505050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d099190612a50565b602060405180830381865afa158015610d26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4a9190612c26565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610da9929190612c53565b6020604051808303816000875af1158015610dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dec9190612c91565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610e2a90612b74565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690612b74565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b6000610f70610eba61172b565b84610f6b8560405180606001604052806025815260200161363e6025913960076000610ee461172b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c49092919063ffffffff16565b611733565b6001905092915050565b6000610f8e610f8761172b565b84846118fc565b6001905092915050565b610fa061172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102490612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590612d30565b60405180910390fd5b6110ed30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c54611733565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190612d65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612d65565b6040518363ffffffff1660e01b8152600401611248929190612d92565b6020604051808303816000875af1158015611267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128b9190612d65565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131430610a86565b60008061131f610df2565b426040518863ffffffff1660e01b815260040161134196959493929190612e00565b60606040518083038185885af115801561135f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113849190612e61565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611426929190612c53565b6020604051808303816000875af1158015611445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114699190612c91565b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611560573d6000803e3d6000fd5b5050565b600e5481565b61157261172b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590612f26565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612fb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118089061304a565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118ef91906128ab565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361196b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611962906130dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d19061316e565b60405180910390fd5b60008111611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1490613200565b60405180910390fd5b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b035750611ad3610df2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b425750611b12610df2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b90506000839050611b51610df2565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611bbf5750611b8f610df2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bf757503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2f57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611e2e578115611e2d57611c626064611c54600f548461256590919063ffffffff16565b6125df90919063ffffffff16565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611d0f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611e2c57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841115611d9e57600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b611dc66064611db86010548461256590919063ffffffff16565b6125df90919063ffffffff16565b92506000611dd330610a86565b9050600e5481118015611df35750600d60009054906101000a900460ff16155b15611e2a576014600e54611e07919061324f565b811115611e20576014600e54611e1d919061324f565b90505b611e2981612231565b5b505b5b5b6000611e43848361262990919063ffffffff16565b9050600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f2c57611ee882600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262990919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611f7e81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201384600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516120b391906128ab565b60405180910390a350505050505050565b600083831115829061210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039190612766565b60405180910390fd5b506000838561211b9190613291565b9050809150509392505050565b600080828461213791906132c5565b90508381101561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613345565b60405180910390fd5b8091505092915050565b60005b8383905081101561222b5760008484838181106121a9576121a8613365565b5b90506020020160208101906121be9190612a6b565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061222390613394565b915050612189565b50505050565b6000600267ffffffffffffffff81111561224e5761224d6133dc565b5b60405190808252806020026020018201604052801561227c5781602001602082028036833780820191505090505b509050308160008151811061229457612293613365565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235f9190612d65565b8160018151811061237357612372613365565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123da30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611733565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161243e9594939291906134c9565b600060405180830381600087803b15801561245857600080fd5b505af115801561246c573d6000803e3d6000fd5b505050506000479050600061248b6002836125df90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124f5573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561255e573d6000803e3d6000fd5b5050505050565b600080830361257757600090506125d9565b60008284612585919061324f565b90508284826125949190613552565b146125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb906135f5565b60405180910390fd5b809150505b92915050565b600061262183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612673565b905092915050565b600061266b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120c4565b905092915050565b600080831182906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190612766565b60405180910390fd5b50600083856126c99190613552565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127105780820151818401526020810190506126f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000612738826126d6565b61274281856126e1565b93506127528185602086016126f2565b61275b8161271c565b840191505092915050565b60006020820190508181036000830152612780818461272d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127bd82612792565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b6000819050919050565b612803816127f0565b811461280e57600080fd5b50565b600081359050612820816127fa565b92915050565b6000806040838503121561283d5761283c612788565b5b600061284b858286016127db565b925050602061285c85828601612811565b9150509250929050565b60008115159050919050565b61287b81612866565b82525050565b60006020820190506128966000830184612872565b92915050565b6128a5816127f0565b82525050565b60006020820190506128c0600083018461289c565b92915050565b6000806000606084860312156128df576128de612788565b5b60006128ed868287016127db565b93505060206128fe868287016127db565b925050604061290f86828701612811565b9150509250925092565b600060ff82169050919050565b61292f81612919565b82525050565b600060208201905061294a6000830184612926565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261297557612974612950565b5b8235905067ffffffffffffffff81111561299257612991612955565b5b6020830191508360208202830111156129ae576129ad61295a565b5b9250929050565b6129be81612866565b81146129c957600080fd5b50565b6000813590506129db816129b5565b92915050565b6000806000604084860312156129fa576129f9612788565b5b600084013567ffffffffffffffff811115612a1857612a1761278d565b5b612a248682870161295f565b93509350506020612a37868287016129cc565b9150509250925092565b612a4a816127b2565b82525050565b6000602082019050612a656000830184612a41565b92915050565b600060208284031215612a8157612a80612788565b5b6000612a8f848285016127db565b91505092915050565b600060208284031215612aae57612aad612788565b5b6000612abc84828501612811565b91505092915050565b60008060408385031215612adc57612adb612788565b5b6000612aea85828601612811565b9250506020612afb85828601612811565b9150509250929050565b60008060408385031215612b1c57612b1b612788565b5b6000612b2a858286016127db565b9250506020612b3b858286016127db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b8c57607f821691505b602082108103612b9f57612b9e612b45565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bdb6020836126e1565b9150612be682612ba5565b602082019050919050565b60006020820190508181036000830152612c0a81612bce565b9050919050565b600081519050612c20816127fa565b92915050565b600060208284031215612c3c57612c3b612788565b5b6000612c4a84828501612c11565b91505092915050565b6000604082019050612c686000830185612a41565b612c75602083018461289c565b9392505050565b600081519050612c8b816129b5565b92915050565b600060208284031215612ca757612ca6612788565b5b6000612cb584828501612c7c565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d1a6022836126e1565b9150612d2582612cbe565b604082019050919050565b60006020820190508181036000830152612d4981612d0d565b9050919050565b600081519050612d5f816127c4565b92915050565b600060208284031215612d7b57612d7a612788565b5b6000612d8984828501612d50565b91505092915050565b6000604082019050612da76000830185612a41565b612db46020830184612a41565b9392505050565b6000819050919050565b6000819050919050565b6000612dea612de5612de084612dbb565b612dc5565b6127f0565b9050919050565b612dfa81612dcf565b82525050565b600060c082019050612e156000830189612a41565b612e22602083018861289c565b612e2f6040830187612df1565b612e3c6060830186612df1565b612e496080830185612a41565b612e5660a083018461289c565b979650505050505050565b600080600060608486031215612e7a57612e79612788565b5b6000612e8886828701612c11565b9350506020612e9986828701612c11565b9250506040612eaa86828701612c11565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f106026836126e1565b9150612f1b82612eb4565b604082019050919050565b60006020820190508181036000830152612f3f81612f03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fa26024836126e1565b9150612fad82612f46565b604082019050919050565b60006020820190508181036000830152612fd181612f95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130346022836126e1565b915061303f82612fd8565b604082019050919050565b6000602082019050818103600083015261306381613027565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130c66025836126e1565b91506130d18261306a565b604082019050919050565b600060208201905081810360008301526130f5816130b9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131586023836126e1565b9150613163826130fc565b604082019050919050565b600060208201905081810360008301526131878161314b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131ea6029836126e1565b91506131f58261318e565b604082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325a826127f0565b9150613265836127f0565b9250828202613273816127f0565b9150828204841483151761328a57613289613220565b5b5092915050565b600061329c826127f0565b91506132a7836127f0565b92508282039050818111156132bf576132be613220565b5b92915050565b60006132d0826127f0565b91506132db836127f0565b92508282019050808211156132f3576132f2613220565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061332f601b836126e1565b915061333a826132f9565b602082019050919050565b6000602082019050818103600083015261335e81613322565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061339f826127f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133d1576133d0613220565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613440816127b2565b82525050565b60006134528383613437565b60208301905092915050565b6000602082019050919050565b60006134768261340b565b6134808185613416565b935061348b83613427565b8060005b838110156134bc5781516134a38882613446565b97506134ae8361345e565b92505060018101905061348f565b5085935050505092915050565b600060a0820190506134de600083018861289c565b6134eb6020830187612df1565b81810360408301526134fd818661346b565b905061350c6060830185612a41565b613519608083018461289c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061355d826127f0565b9150613568836127f0565b92508261357857613577613523565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135df6021836126e1565b91506135ea82613583565b604082019050919050565b6000602082019050818103600083015261360e816135d2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220964f81ab8bdf82d1d0ff99d8ba89dc3aa6074551f4f0be908a626ec7beb25fae64736f6c63430008110033

Deployed Bytecode Sourcemap

8579:8260:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10904:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10348:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11073:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9674:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10257:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11394:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12027:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9641:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15316:267;;;;;;;;;;;;;:::i;:::-;;13071:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16270:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10451:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6577:148;;;;;;;;;;;;;:::i;:::-;;11897:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16599:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6363:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10162:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11620:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10578:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12440:623;;;;;;;;;;;;;:::i;:::-;;10753:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16440:151;;;;;;;;;;;;;:::i;:::-;;9560:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6733:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10071:83;10108:13;10141:5;10134:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:83;:::o;10904:161::-;10979:4;10996:39;11005:12;:10;:12::i;:::-;11019:7;11028:6;10996:8;:39::i;:::-;11053:4;11046:11;;10904:161;;;;:::o;10348:95::-;10401:7;10428;;10421:14;;10348:95;:::o;11073:313::-;11171:4;11188:36;11198:6;11206:9;11217:6;11188:9;:36::i;:::-;11235:121;11244:6;11252:12;:10;:12::i;:::-;11266:89;11304:6;11266:89;;;;;;;;;;;;;;;;;:11;:19;11278:6;11266:19;;;;;;;;;;;;;;;:33;11286:12;:10;:12::i;:::-;11266:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11235:8;:121::i;:::-;11374:4;11367:11;;11073:313;;;;;:::o;9674:27::-;;;;:::o;10257:83::-;10298:5;10323:9;;;;;;;;;;;10316:16;;10257:83;:::o;11394:218::-;11482:4;11499:83;11508:12;:10;:12::i;:::-;11522:7;11531:50;11570:10;11531:11;:25;11543:12;:10;:12::i;:::-;11531:25;;;;;;;;;;;;;;;:34;11557:7;11531:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11499:8;:83::i;:::-;11600:4;11593:11;;11394:218;;;;:::o;12027:161::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12139:41:::1;12152:9;;12163:16;12139:12;:41::i;:::-;12027:161:::0;;;:::o;9641:26::-;;;;:::o;8927:38::-;;;;;;;;;;;;;:::o;15316:267::-;15358:28;15389:24;15407:4;15389:9;:24::i;:::-;15358:55;;15451:1;15428:20;:24;15424:152;;;15474:16;;;;;;;;;;;15469:96;;15511:38;15528:20;15511:16;:38::i;:::-;15469:96;15424:152;15347:236;15316:267::o;13071:124::-;13136:4;13160:18;:27;13179:7;13160:27;;;;;;;;;;;;;;;;;;;;;;;;;13153:34;;13071:124;;;:::o;16270:123::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16376:9:::1;16354:19;:31;;;;16270:123:::0;:::o;10451:119::-;10517:7;10544:9;:18;10554:7;10544:18;;;;;;;;;;;;;;;;10537:25;;10451:119;;;:::o;6577:148::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6684:1:::1;6647:40;;6668:6;::::0;::::1;;;;;;;;6647:40;;;;;;;;;;;;6715:1;6698:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6577:148::o:0;11897:122::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11983:3:::1;11974:6;:12;;;;12007:4;11997:7;:14;;;;11897:122:::0;;:::o;16599:237::-;16672:17;16699:15;16672:43;;16726:15;16744:10;:20;;;16773:4;16744:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16726:53;;16790:10;:19;;;16810:8;;;;;;;;;;;16820:7;16790:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16661:175;;16599:237;:::o;6363:79::-;6401:7;6428:6;;;;;;;;;;;6421:13;;6363:79;:::o;10162:87::-;10201:13;10234:7;10227:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10162:87;:::o;11620:269::-;11713:4;11730:129;11739:12;:10;:12::i;:::-;11753:7;11762:96;11801:15;11762:96;;;;;;;;;;;;;;;;;:11;:25;11774:12;:10;:12::i;:::-;11762:25;;;;;;;;;;;;;;;:34;11788:7;11762:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11730:8;:129::i;:::-;11877:4;11870:11;;11620:269;;;;:::o;10578:167::-;10656:4;10673:42;10683:12;:10;:12::i;:::-;10697:9;10708:6;10673:9;:42::i;:::-;10733:4;10726:11;;10578:167;;;;:::o;12440:623::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:1:::1;12503:24;;:10;;;;;;;;;;;:24;;;12495:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12576:58;12593:4;12608:15;;;;;;;;;;;12626:7;;12576:8;:58::i;:::-;12676:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12658:55;;;12722:4;12729:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12658:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12645:10;;:107;;;;;;;;;;;;;;;;;;12763:15;;;;;;;;;;;:31;;;12802:21;12847:4;12867:24;12885:4;12867:9;:24::i;:::-;12906:1;12922::::0;12938:7:::1;:5;:7::i;:::-;12960:15;12763:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12994:10;;;;;;;;;;;12987:26;;;13022:15;;;;;;;;;;;13040:14;12987:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12440:623::o:0;10753:143::-;10834:7;10861:11;:18;10873:5;10861:18;;;;;;;;;;;;;;;:27;10880:7;10861:27;;;;;;;;;;;;;;;;10854:34;;10753:143;;;;:::o;16440:151::-;16492:18;16513:21;16492:42;;16553:8;;;;;;;;;;;16545:26;;:38;16572:10;16545:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16481:110;16440:151::o;9560:52::-;;;;:::o;6733:244::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6842:1:::1;6822:22;;:8;:22;;::::0;6814:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6932:8;6903:38;;6924:6;::::0;::::1;;;;;;;;6903:38;;;;;;;;;;;;6961:8;6952:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6733:244:::0;:::o;2705:98::-;2758:7;2785:10;2778:17;;2705:98;:::o;13203:337::-;13313:1;13296:19;;:5;:19;;;13288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13394:1;13375:21;;:7;:21;;;13367:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13478:6;13448:11;:18;13460:5;13448:18;;;;;;;;;;;;;;;:27;13467:7;13448:27;;;;;;;;;;;;;;;:36;;;;13516:7;13500:32;;13509:5;13500:32;;;13525:6;13500:32;;;;;;:::i;:::-;;;;;;;;13203:337;;;:::o;13548:1760::-;13655:1;13639:18;;:4;:18;;;13631:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13732:1;13718:16;;:2;:16;;;13710:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13805:1;13793:9;:13;13785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13863:17;13895:13;13912:18;:24;13931:4;13912:24;;;;;;;;;;;;;;;;;;;;;;;;;13911:25;:52;;;;;13941:18;:22;13960:2;13941:22;;;;;;;;;;;;;;;;;;;;;;;;;13940:23;13911:52;:71;;;;;13975:7;:5;:7::i;:::-;13967:15;;:4;:15;;;;13911:71;:88;;;;;13992:7;:5;:7::i;:::-;13986:13;;:2;:13;;;;13911:88;13895:104;;14010:14;14027:9;14010:26;;14058:7;:5;:7::i;:::-;14050:15;;:4;:15;;;;:32;;;;;14075:7;:5;:7::i;:::-;14069:13;;:2;:13;;;;14050:32;:57;;;;;14102:4;14086:21;;:4;:21;;;;14050:57;:80;;;;;14125:4;14111:19;;:2;:19;;;;14050:80;14047:933;;;14150:8;14147:822;;;14191:27;14214:3;14191:18;14202:6;;14191;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;14179:39;;14267:10;;;;;;;;;;;14259:18;;:4;:18;;;;:38;;;;;14287:10;;;;;;;;;;;14281:16;;:2;:16;;;14259:38;14255:699;;;14337:9;:15;14347:4;14337:15;;;;;;;;;;;;;;;;14325:9;:27;14322:107;;;14390:9;:15;14400:4;14390:15;;;;;;;;;;;;;;;;14381:24;;14322:107;14463:28;14487:3;14463:19;14474:7;;14463:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14451:40;;14514:28;14545:24;14563:4;14545:9;:24::i;:::-;14514:55;;14619:19;;14596:20;:42;:63;;;;;14643:16;;;;;;;;;;;14642:17;14596:63;14592:343;;;14737:2;14715:19;;:24;;;;:::i;:::-;14692:20;:47;14688:159;;;14817:2;14795:19;;:24;;;;:::i;:::-;14772:47;;14688:159;14873:38;14890:20;14873:16;:38::i;:::-;14592:343;14299:655;14255:699;14147:822;14047:933;14997:22;15022:21;15033:9;15022:6;:10;;:21;;;;:::i;:::-;14997:46;;15059:6;:12;15066:4;15059:12;;;;;;;;;;;;;;;;;;;;;;;;;15054:64;;15091:27;15111:6;15091:9;:15;15101:4;15091:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;15073:9;:15;15083:4;15073:15;;;;;;;;;;;;;;;:45;;;;15054:64;15145:33;15163:14;15145:9;:13;15155:2;15145:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;15129:9;:13;15139:2;15129:13;;;;;;;;;;;;;;;:49;;;;15216:39;15245:9;15216;:24;15234:4;15216:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15189:9;:24;15207:4;15189:24;;;;;;;;;;;;;;;:66;;;;15286:2;15271:29;;15280:4;15271:29;;;15290:9;15271:29;;;;;;:::i;:::-;;;;;;;;13620:1688;;;;13548:1760;;;:::o;1177:192::-;1263:7;1296:1;1291;:6;;1299:12;1283:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1323:9;1339:1;1335;:5;;;;:::i;:::-;1323:17;;1360:1;1353:8;;;1177:192;;;;;:::o;844:181::-;902:7;922:9;938:1;934;:5;;;;:::i;:::-;922:17;;963:1;958;:6;;950:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1016:1;1009:8;;;844:181;;;;:::o;12196:236::-;12283:9;12278:147;12302:9;;:16;;12298:1;:20;12278:147;;;12340:12;12355:9;;12365:1;12355:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12340:27;;12409:4;12382:18;:24;12401:4;12382:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12325:100;12320:3;;;;;:::i;:::-;;;;12278:147;;;;12196:236;;;:::o;15591:669::-;15657:21;15695:1;15681:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15657:40;;15726:4;15708;15713:1;15708:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15752:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15742:4;15747:1;15742:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15785:62;15802:4;15817:15;;;;;;;;;;;15835:11;15785:8;:62::i;:::-;15858:15;;;;;;;;;;;:66;;;15939:11;15965:1;15981:4;16008;16028:15;15858:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16067:18;16088:21;16067:42;;16120:17;16140;16155:1;16140:10;:14;;:17;;;;:::i;:::-;16120:37;;16178:6;;;;;;;;;;;16170:24;;:35;16195:9;16170:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16224:6;;;;;;;;;;;16216:24;;:35;16241:9;16216:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15646:614;;;15591:669;:::o;1377:471::-;1435:7;1685:1;1680;:6;1676:47;;1710:1;1703:8;;;;1676:47;1735:9;1751:1;1747;:5;;;;:::i;:::-;1735:17;;1780:1;1775;1771;:5;;;;:::i;:::-;:10;1763:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1839:1;1832:8;;;1377:471;;;;;:::o;1856:132::-;1914:7;1941:39;1945:1;1948;1941:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1934:46;;1856:132;;;;:::o;1033:136::-;1091:7;1118:43;1122:1;1125;1118:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1111:50;;1033:136;;;;:::o;1996:278::-;2082:7;2114:1;2110;:5;2117:12;2102:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2141:9;2157:1;2153;:5;;;;:::i;:::-;2141:17;;2265:1;2258:8;;;1996:278;;;;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:117;5085:1;5082;5075:12;5099:117;5208:1;5205;5198:12;5239:568;5312:8;5322:6;5372:3;5365:4;5357:6;5353:17;5349:27;5339:122;;5380:79;;:::i;:::-;5339:122;5493:6;5480:20;5470:30;;5523:18;5515:6;5512:30;5509:117;;;5545:79;;:::i;:::-;5509:117;5659:4;5651:6;5647:17;5635:29;;5713:3;5705:4;5697:6;5693:17;5683:8;5679:32;5676:41;5673:128;;;5720:79;;:::i;:::-;5673:128;5239:568;;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:698::-;6166:6;6174;6182;6231:2;6219:9;6210:7;6206:23;6202:32;6199:119;;;6237:79;;:::i;:::-;6199:119;6385:1;6374:9;6370:17;6357:31;6415:18;6407:6;6404:30;6401:117;;;6437:79;;:::i;:::-;6401:117;6550:80;6622:7;6613:6;6602:9;6598:22;6550:80;:::i;:::-;6532:98;;;;6328:312;6679:2;6705:50;6747:7;6738:6;6727:9;6723:22;6705:50;:::i;:::-;6695:60;;6650:115;6074:698;;;;;:::o;6778:118::-;6865:24;6883:5;6865:24;:::i;:::-;6860:3;6853:37;6778:118;;:::o;6902:222::-;6995:4;7033:2;7022:9;7018:18;7010:26;;7046:71;7114:1;7103:9;7099:17;7090:6;7046:71;:::i;:::-;6902:222;;;;:::o;7130:329::-;7189:6;7238:2;7226:9;7217:7;7213:23;7209:32;7206:119;;;7244:79;;:::i;:::-;7206:119;7364:1;7389:53;7434:7;7425:6;7414:9;7410:22;7389:53;:::i;:::-;7379:63;;7335:117;7130:329;;;;:::o;7465:::-;7524:6;7573:2;7561:9;7552:7;7548:23;7544:32;7541:119;;;7579:79;;:::i;:::-;7541:119;7699:1;7724:53;7769:7;7760:6;7749:9;7745:22;7724:53;:::i;:::-;7714:63;;7670:117;7465:329;;;;:::o;7800:474::-;7868:6;7876;7925:2;7913:9;7904:7;7900:23;7896:32;7893:119;;;7931:79;;:::i;:::-;7893:119;8051:1;8076:53;8121:7;8112:6;8101:9;8097:22;8076:53;:::i;:::-;8066:63;;8022:117;8178:2;8204:53;8249:7;8240:6;8229:9;8225:22;8204:53;:::i;:::-;8194:63;;8149:118;7800:474;;;;;:::o;8280:::-;8348:6;8356;8405:2;8393:9;8384:7;8380:23;8376:32;8373:119;;;8411:79;;:::i;:::-;8373:119;8531:1;8556:53;8601:7;8592:6;8581:9;8577:22;8556:53;:::i;:::-;8546:63;;8502:117;8658:2;8684:53;8729:7;8720:6;8709:9;8705:22;8684:53;:::i;:::-;8674:63;;8629:118;8280:474;;;;;:::o;8760:180::-;8808:77;8805:1;8798:88;8905:4;8902:1;8895:15;8929:4;8926:1;8919:15;8946:320;8990:6;9027:1;9021:4;9017:12;9007:22;;9074:1;9068:4;9064:12;9095:18;9085:81;;9151:4;9143:6;9139:17;9129:27;;9085:81;9213:2;9205:6;9202:14;9182:18;9179:38;9176:84;;9232:18;;:::i;:::-;9176:84;8997:269;8946:320;;;:::o;9272:182::-;9412:34;9408:1;9400:6;9396:14;9389:58;9272:182;:::o;9460:366::-;9602:3;9623:67;9687:2;9682:3;9623:67;:::i;:::-;9616:74;;9699:93;9788:3;9699:93;:::i;:::-;9817:2;9812:3;9808:12;9801:19;;9460:366;;;:::o;9832:419::-;9998:4;10036:2;10025:9;10021:18;10013:26;;10085:9;10079:4;10075:20;10071:1;10060:9;10056:17;10049:47;10113:131;10239:4;10113:131;:::i;:::-;10105:139;;9832:419;;;:::o;10257:143::-;10314:5;10345:6;10339:13;10330:22;;10361:33;10388:5;10361:33;:::i;:::-;10257:143;;;;:::o;10406:351::-;10476:6;10525:2;10513:9;10504:7;10500:23;10496:32;10493:119;;;10531:79;;:::i;:::-;10493:119;10651:1;10676:64;10732:7;10723:6;10712:9;10708:22;10676:64;:::i;:::-;10666:74;;10622:128;10406:351;;;;:::o;10763:332::-;10884:4;10922:2;10911:9;10907:18;10899:26;;10935:71;11003:1;10992:9;10988:17;10979:6;10935:71;:::i;:::-;11016:72;11084:2;11073:9;11069:18;11060:6;11016:72;:::i;:::-;10763:332;;;;;:::o;11101:137::-;11155:5;11186:6;11180:13;11171:22;;11202:30;11226:5;11202:30;:::i;:::-;11101:137;;;;:::o;11244:345::-;11311:6;11360:2;11348:9;11339:7;11335:23;11331:32;11328:119;;;11366:79;;:::i;:::-;11328:119;11486:1;11511:61;11564:7;11555:6;11544:9;11540:22;11511:61;:::i;:::-;11501:71;;11457:125;11244:345;;;;:::o;11595:221::-;11735:34;11731:1;11723:6;11719:14;11712:58;11804:4;11799:2;11791:6;11787:15;11780:29;11595:221;:::o;11822:366::-;11964:3;11985:67;12049:2;12044:3;11985:67;:::i;:::-;11978:74;;12061:93;12150:3;12061:93;:::i;:::-;12179:2;12174:3;12170:12;12163:19;;11822:366;;;:::o;12194:419::-;12360:4;12398:2;12387:9;12383:18;12375:26;;12447:9;12441:4;12437:20;12433:1;12422:9;12418:17;12411:47;12475:131;12601:4;12475:131;:::i;:::-;12467:139;;12194:419;;;:::o;12619:143::-;12676:5;12707:6;12701:13;12692:22;;12723:33;12750:5;12723:33;:::i;:::-;12619:143;;;;:::o;12768:351::-;12838:6;12887:2;12875:9;12866:7;12862:23;12858:32;12855:119;;;12893:79;;:::i;:::-;12855:119;13013:1;13038:64;13094:7;13085:6;13074:9;13070:22;13038:64;:::i;:::-;13028:74;;12984:128;12768:351;;;;:::o;13125:332::-;13246:4;13284:2;13273:9;13269:18;13261:26;;13297:71;13365:1;13354:9;13350:17;13341:6;13297:71;:::i;:::-;13378:72;13446:2;13435:9;13431:18;13422:6;13378:72;:::i;:::-;13125:332;;;;;:::o;13463:85::-;13508:7;13537:5;13526:16;;13463:85;;;:::o;13554:60::-;13582:3;13603:5;13596:12;;13554:60;;;:::o;13620:158::-;13678:9;13711:61;13729:42;13738:32;13764:5;13738:32;:::i;:::-;13729:42;:::i;:::-;13711:61;:::i;:::-;13698:74;;13620:158;;;:::o;13784:147::-;13879:45;13918:5;13879:45;:::i;:::-;13874:3;13867:58;13784:147;;:::o;13937:807::-;14186:4;14224:3;14213:9;14209:19;14201:27;;14238:71;14306:1;14295:9;14291:17;14282:6;14238:71;:::i;:::-;14319:72;14387:2;14376:9;14372:18;14363:6;14319:72;:::i;:::-;14401:80;14477:2;14466:9;14462:18;14453:6;14401:80;:::i;:::-;14491;14567:2;14556:9;14552:18;14543:6;14491:80;:::i;:::-;14581:73;14649:3;14638:9;14634:19;14625:6;14581:73;:::i;:::-;14664;14732:3;14721:9;14717:19;14708:6;14664:73;:::i;:::-;13937:807;;;;;;;;;:::o;14750:663::-;14838:6;14846;14854;14903:2;14891:9;14882:7;14878:23;14874:32;14871:119;;;14909:79;;:::i;:::-;14871:119;15029:1;15054:64;15110:7;15101:6;15090:9;15086:22;15054:64;:::i;:::-;15044:74;;15000:128;15167:2;15193:64;15249:7;15240:6;15229:9;15225:22;15193:64;:::i;:::-;15183:74;;15138:129;15306:2;15332:64;15388:7;15379:6;15368:9;15364:22;15332:64;:::i;:::-;15322:74;;15277:129;14750:663;;;;;:::o;15419:225::-;15559:34;15555:1;15547:6;15543:14;15536:58;15628:8;15623:2;15615:6;15611:15;15604:33;15419:225;:::o;15650:366::-;15792:3;15813:67;15877:2;15872:3;15813:67;:::i;:::-;15806:74;;15889:93;15978:3;15889:93;:::i;:::-;16007:2;16002:3;15998:12;15991:19;;15650:366;;;:::o;16022:419::-;16188:4;16226:2;16215:9;16211:18;16203:26;;16275:9;16269:4;16265:20;16261:1;16250:9;16246:17;16239:47;16303:131;16429:4;16303:131;:::i;:::-;16295:139;;16022:419;;;:::o;16447:223::-;16587:34;16583:1;16575:6;16571:14;16564:58;16656:6;16651:2;16643:6;16639:15;16632:31;16447:223;:::o;16676:366::-;16818:3;16839:67;16903:2;16898:3;16839:67;:::i;:::-;16832:74;;16915:93;17004:3;16915:93;:::i;:::-;17033:2;17028:3;17024:12;17017:19;;16676:366;;;:::o;17048:419::-;17214:4;17252:2;17241:9;17237:18;17229:26;;17301:9;17295:4;17291:20;17287:1;17276:9;17272:17;17265:47;17329:131;17455:4;17329:131;:::i;:::-;17321:139;;17048:419;;;:::o;17473:221::-;17613:34;17609:1;17601:6;17597:14;17590:58;17682:4;17677:2;17669:6;17665:15;17658:29;17473:221;:::o;17700:366::-;17842:3;17863:67;17927:2;17922:3;17863:67;:::i;:::-;17856:74;;17939:93;18028:3;17939:93;:::i;:::-;18057:2;18052:3;18048:12;18041:19;;17700:366;;;:::o;18072:419::-;18238:4;18276:2;18265:9;18261:18;18253:26;;18325:9;18319:4;18315:20;18311:1;18300:9;18296:17;18289:47;18353:131;18479:4;18353:131;:::i;:::-;18345:139;;18072:419;;;:::o;18497:224::-;18637:34;18633:1;18625:6;18621:14;18614:58;18706:7;18701:2;18693:6;18689:15;18682:32;18497:224;:::o;18727:366::-;18869:3;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18966:93;19055:3;18966:93;:::i;:::-;19084:2;19079:3;19075:12;19068:19;;18727:366;;;:::o;19099:419::-;19265:4;19303:2;19292:9;19288:18;19280:26;;19352:9;19346:4;19342:20;19338:1;19327:9;19323:17;19316:47;19380:131;19506:4;19380:131;:::i;:::-;19372:139;;19099:419;;;:::o;19524:222::-;19664:34;19660:1;19652:6;19648:14;19641:58;19733:5;19728:2;19720:6;19716:15;19709:30;19524:222;:::o;19752:366::-;19894:3;19915:67;19979:2;19974:3;19915:67;:::i;:::-;19908:74;;19991:93;20080:3;19991:93;:::i;:::-;20109:2;20104:3;20100:12;20093:19;;19752:366;;;:::o;20124:419::-;20290:4;20328:2;20317:9;20313:18;20305:26;;20377:9;20371:4;20367:20;20363:1;20352:9;20348:17;20341:47;20405:131;20531:4;20405:131;:::i;:::-;20397:139;;20124:419;;;:::o;20549:228::-;20689:34;20685:1;20677:6;20673:14;20666:58;20758:11;20753:2;20745:6;20741:15;20734:36;20549:228;:::o;20783:366::-;20925:3;20946:67;21010:2;21005:3;20946:67;:::i;:::-;20939:74;;21022:93;21111:3;21022:93;:::i;:::-;21140:2;21135:3;21131:12;21124:19;;20783:366;;;:::o;21155:419::-;21321:4;21359:2;21348:9;21344:18;21336:26;;21408:9;21402:4;21398:20;21394:1;21383:9;21379:17;21372:47;21436:131;21562:4;21436:131;:::i;:::-;21428:139;;21155:419;;;:::o;21580:180::-;21628:77;21625:1;21618:88;21725:4;21722:1;21715:15;21749:4;21746:1;21739:15;21766:410;21806:7;21829:20;21847:1;21829:20;:::i;:::-;21824:25;;21863:20;21881:1;21863:20;:::i;:::-;21858:25;;21918:1;21915;21911:9;21940:30;21958:11;21940:30;:::i;:::-;21929:41;;22119:1;22110:7;22106:15;22103:1;22100:22;22080:1;22073:9;22053:83;22030:139;;22149:18;;:::i;:::-;22030:139;21814:362;21766:410;;;;:::o;22182:194::-;22222:4;22242:20;22260:1;22242:20;:::i;:::-;22237:25;;22276:20;22294:1;22276:20;:::i;:::-;22271:25;;22320:1;22317;22313:9;22305:17;;22344:1;22338:4;22335:11;22332:37;;;22349:18;;:::i;:::-;22332:37;22182:194;;;;:::o;22382:191::-;22422:3;22441:20;22459:1;22441:20;:::i;:::-;22436:25;;22475:20;22493:1;22475:20;:::i;:::-;22470:25;;22518:1;22515;22511:9;22504:16;;22539:3;22536:1;22533:10;22530:36;;;22546:18;;:::i;:::-;22530:36;22382:191;;;;:::o;22579:177::-;22719:29;22715:1;22707:6;22703:14;22696:53;22579:177;:::o;22762:366::-;22904:3;22925:67;22989:2;22984:3;22925:67;:::i;:::-;22918:74;;23001:93;23090:3;23001:93;:::i;:::-;23119:2;23114:3;23110:12;23103:19;;22762:366;;;:::o;23134:419::-;23300:4;23338:2;23327:9;23323:18;23315:26;;23387:9;23381:4;23377:20;23373:1;23362:9;23358:17;23351:47;23415:131;23541:4;23415:131;:::i;:::-;23407:139;;23134:419;;;:::o;23559:180::-;23607:77;23604:1;23597:88;23704:4;23701:1;23694:15;23728:4;23725:1;23718:15;23745:233;23784:3;23807:24;23825:5;23807:24;:::i;:::-;23798:33;;23853:66;23846:5;23843:77;23840:103;;23923:18;;:::i;:::-;23840:103;23970:1;23963:5;23959:13;23952:20;;23745:233;;;:::o;23984:180::-;24032:77;24029:1;24022:88;24129:4;24126:1;24119:15;24153:4;24150:1;24143:15;24170:114;24237:6;24271:5;24265:12;24255:22;;24170:114;;;:::o;24290:184::-;24389:11;24423:6;24418:3;24411:19;24463:4;24458:3;24454:14;24439:29;;24290:184;;;;:::o;24480:132::-;24547:4;24570:3;24562:11;;24600:4;24595:3;24591:14;24583:22;;24480:132;;;:::o;24618:108::-;24695:24;24713:5;24695:24;:::i;:::-;24690:3;24683:37;24618:108;;:::o;24732:179::-;24801:10;24822:46;24864:3;24856:6;24822:46;:::i;:::-;24900:4;24895:3;24891:14;24877:28;;24732:179;;;;:::o;24917:113::-;24987:4;25019;25014:3;25010:14;25002:22;;24917:113;;;:::o;25066:732::-;25185:3;25214:54;25262:5;25214:54;:::i;:::-;25284:86;25363:6;25358:3;25284:86;:::i;:::-;25277:93;;25394:56;25444:5;25394:56;:::i;:::-;25473:7;25504:1;25489:284;25514:6;25511:1;25508:13;25489:284;;;25590:6;25584:13;25617:63;25676:3;25661:13;25617:63;:::i;:::-;25610:70;;25703:60;25756:6;25703:60;:::i;:::-;25693:70;;25549:224;25536:1;25533;25529:9;25524:14;;25489:284;;;25493:14;25789:3;25782:10;;25190:608;;;25066:732;;;;:::o;25804:831::-;26067:4;26105:3;26094:9;26090:19;26082:27;;26119:71;26187:1;26176:9;26172:17;26163:6;26119:71;:::i;:::-;26200:80;26276:2;26265:9;26261:18;26252:6;26200:80;:::i;:::-;26327:9;26321:4;26317:20;26312:2;26301:9;26297:18;26290:48;26355:108;26458:4;26449:6;26355:108;:::i;:::-;26347:116;;26473:72;26541:2;26530:9;26526:18;26517:6;26473:72;:::i;:::-;26555:73;26623:3;26612:9;26608:19;26599:6;26555:73;:::i;:::-;25804:831;;;;;;;;:::o;26641:180::-;26689:77;26686:1;26679:88;26786:4;26783:1;26776:15;26810:4;26807:1;26800:15;26827:185;26867:1;26884:20;26902:1;26884:20;:::i;:::-;26879:25;;26918:20;26936:1;26918:20;:::i;:::-;26913:25;;26957:1;26947:35;;26962:18;;:::i;:::-;26947:35;27004:1;27001;26997:9;26992:14;;26827:185;;;;:::o;27018:220::-;27158:34;27154:1;27146:6;27142:14;27135:58;27227:3;27222:2;27214:6;27210:15;27203:28;27018:220;:::o;27244:366::-;27386:3;27407:67;27471:2;27466:3;27407:67;:::i;:::-;27400:74;;27483:93;27572:3;27483:93;:::i;:::-;27601:2;27596:3;27592:12;27585:19;;27244:366;;;:::o;27616:419::-;27782:4;27820:2;27809:9;27805:18;27797:26;;27869:9;27863:4;27859:20;27855:1;27844:9;27840:17;27833:47;27897:131;28023:4;27897:131;:::i;:::-;27889:139;;27616:419;;;:::o

Swarm Source

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