ETH Price: $3,386.69 (-1.48%)
Gas: 2 Gwei

Token

Grim Reaper (GRIM)
 

Overview

Max Total Supply

100,000,000 GRIM

Holders

587

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,067,283.91500052 GRIM

Value
$0.00
0x64e2cb68977f36d2431a01e932bd68291e555ccc
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:
GrimReaper

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-29
*/

//SPDX-License-Identifier: MIT
/**
https://t.me/GrimReaperCoin
**/

pragma solidity ^0.8.12;

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

interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
	) external;
	function factory() external pure returns (address);
	function WETH() external pure returns (address);
	function addLiquidityETH(
		address token,
		uint amountTokenDesired,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline
	) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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

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

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

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

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

}


contract GrimReaper is Context, IERC20, Ownable {
	using SafeMath for uint256;
	mapping (address => uint256) private _balance;
	mapping (address => mapping (address => uint256)) private _allowances;
	mapping (address => bool) private _isExcludedFromFee;
	mapping(address => bool) public bots;

	uint256 private _tTotal = 100000000 * 10**8;
    uint256 private _contractAutoLpLimitToken = 1000000000000000000;

	uint256 private _taxFee;
    uint256 private _buyTaxMarketing = 8;
    uint256 private _sellTaxMarketing = 3;
    uint256 private _autoLpFee = 3;
    uint256 private _LpPercentBase100 = 35;
	address payable private _taxWallet;
    address payable private _contractPayment;
	uint256 private _maxTxAmount;
	uint256 private _maxWallet;

	string private constant _name = "Grim Reaper";
	string private constant _symbol = "GRIM";
	uint8 private constant _decimals = 8;

	IUniswapV2Router02 private _uniswap;
	address private _pair;
	bool private _canTrade;
	bool private _inSwap = false;
	bool private _swapEnabled = false;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 coinReceived,
        uint256 tokensIntoLiqudity
    );

	modifier lockTheSwap {
		_inSwap = true;
		_;
		_inSwap = false;
	}
    
	constructor () {
		_taxWallet = payable(_msgSender());
        _contractPayment = payable(address(this));

		_taxFee = _buyTaxMarketing + _autoLpFee;
		_uniswap = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

		_isExcludedFromFee[address(this)] = true;
		_isExcludedFromFee[_taxWallet] = true;
        _maxTxAmount = _tTotal.mul(2).div(10**2);
	    _maxWallet = _tTotal.mul(4).div(10**2);

		_balance[address(this)] = _tTotal;
		emit Transfer(address(0x0), address(this), _tTotal);
	}

	function maxTxAmount() public view returns (uint256){
		return _maxTxAmount;
	}

	function maxWallet() public view returns (uint256){
		return _maxWallet;
	}

    function isInSwap() public view returns (bool) {
        return _inSwap;
    }

    function isSwapEnabled() public view returns (bool) {
        return _swapEnabled;
    }

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

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

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

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setSellMarketingTax(uint256 taxFee) external onlyOwner() {
        _sellTaxMarketing = taxFee;
    }

    function setBuyMarketingTax(uint256 taxFee) external onlyOwner() {
        _buyTaxMarketing = taxFee;
    }

    function setAutoLpFee(uint256 taxFee) external onlyOwner() {
        _autoLpFee = taxFee;
    }

    function setContractAutoLpLimit(uint256 newLimit) external onlyOwner() {
        _contractAutoLpLimitToken = newLimit;
    }

	function balanceOf(address account) public view override returns (uint256) {
		return _balance[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 _approve(address owner, address spender, uint256 amount) private {
		require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}

	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
		require(amount > 0, "Transfer amount must be greater than zero");
		require(!bots[from] && !bots[to], "This account is blacklisted");

		if (from != owner() && to != owner()) {
			if (from == _pair && to != address(_uniswap) && ! _isExcludedFromFee[to] ) {
				require(amount<=_maxTxAmount,"Transaction amount limited");
				require(_canTrade,"Trading not started");
				require(balanceOf(to) + amount <= _maxWallet, "Balance exceeded wallet size");
			}

            if (from == _pair) {
                _taxFee = buyTax();
            } else {
                _taxFee = sellTax();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(!_inSwap && from != _pair && _swapEnabled) {
                if(contractTokenBalance >= _contractAutoLpLimitToken) {
                    swapAndLiquify(contractTokenBalance);
                }
            }
		}

		_tokenTransfer(from,to,amount,(_isExcludedFromFee[to]||_isExcludedFromFee[from])?0:_taxFee);
	}

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLpTokenBalance = contractTokenBalance.mul(_LpPercentBase100).div(10**2);
        uint256 marketingAmount = contractTokenBalance.sub(autoLpTokenBalance);

        uint256 half = autoLpTokenBalance.div(2);
        uint256 otherHalf = autoLpTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);

        addLiquidityAuto(newBalance, otherHalf);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);

        swapTokensForEth(marketingAmount);
        sendETHToFee(marketingAmount);
    }

    function buyTax() private view returns (uint256) {
        return (_autoLpFee + _buyTaxMarketing);
    }

    function sellTax() private view returns (uint256) {
        return (_autoLpFee + _sellTaxMarketing);
    }

	function setMaxTx(uint256 amount) public onlyOwner{
		require(amount>_maxTxAmount);
		_maxTxAmount=amount;
	}

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

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

	function createPair() external onlyOwner {
		require(!_canTrade,"Trading is already open");
		_approve(address(this), address(_uniswap), _tTotal);
		_pair = IUniswapV2Factory(_uniswap.factory()).createPair(address(this), _uniswap.WETH());
		IERC20(_pair).approve(address(_uniswap), type(uint).max);
	}

	function addLiquidityInitial() external onlyOwner{
		_uniswap.addLiquidityETH{value: address(this).balance} (
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

		_swapEnabled = true;
	}

    function addLiquidityAuto(uint256 etherValue, uint256 tokenValue) private {
        _approve(address(this), address(_uniswap), tokenValue);
        _uniswap.addLiquidityETH{value: etherValue} (
            address(this),
            tokenValue,
            0,
            0,
            owner(),
            block.timestamp
        );

        _swapEnabled = true;
    }

	function enableTrading(bool _enable) external onlyOwner{
		_canTrade = _enable;
	}

	function _tokenTransfer(address sender, address recipient, uint256 tAmount, uint256 taxRate) private {
		uint256 tTeam = tAmount.mul(taxRate).div(100);
		uint256 tTransferAmount = tAmount.sub(tTeam);

		_balance[sender] = _balance[sender].sub(tAmount);
		_balance[recipient] = _balance[recipient].add(tTransferAmount);
		_balance[address(this)] = _balance[address(this)].add(tTeam);
		emit Transfer(sender, recipient, tTransferAmount);
	}

	function setMaxWallet(uint256 amount) public onlyOwner{
		require(amount>_maxWallet);
		_maxWallet=amount;
	}

	receive() external payable {}

	function blockBots(address[] memory bots_) public onlyOwner  {for (uint256 i = 0; i < bots_.length; i++) {bots[bots_[i]] = true;}}
	function unblockBot(address notbot) public onlyOwner {
			bots[notbot] = false;
	}

	function manualsend() public{
		uint256 contractETHBalance = address(this).balance;
		sendETHToFee(contractETHBalance);
	}

    function airdropOldHolders(address[] memory recipients, uint256[] memory amounts) public onlyOwner {
        for(uint256 i = 0; i < recipients.length; i++) {
            _balance[recipients[i]] = amounts[i] * 10**8;
            emit Transfer(address(this), recipients[i], amounts[i] * 10**8);
        }
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidityInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropOldHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setAutoLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setBuyMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setContractAutoLpLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setSellMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc10000600655670de0b6b3a764000060075560086009556003600a556003600b556023600c556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055503480156200007257600080fd5b506000620000856200042360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001336200042360201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600954620001c69190620005a1565b600881905550737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200032a60646200031660026006546200042b60201b62001c031790919060201c565b620004ae60201b62001c7d1790919060201c565b600f819055506200036760646200035360046006546200042b60201b62001c031790919060201c565b620004ae60201b62001c7d1790919060201c565b601081905550600654600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200041591906200060f565b60405180910390a362000854565b600033905090565b60008083036200043f5760009050620004a8565b600082846200044f91906200062c565b9050828482620004609190620006bc565b14620004a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049a906200077b565b60405180910390fd5b809150505b92915050565b6000620004f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200050060201b60201c565b905092915050565b600080831182906200054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000541919062000830565b60405180910390fd5b50600083856200055b9190620006bc565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005ae8262000568565b9150620005bb8362000568565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f357620005f262000572565b5b828201905092915050565b620006098162000568565b82525050565b6000602082019050620006266000830184620005fe565b92915050565b6000620006398262000568565b9150620006468362000568565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000682576200068162000572565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006c98262000568565b9150620006d68362000568565b925082620006e957620006e86200068d565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000763602183620006f4565b9150620007708262000705565b604082019050919050565b60006020820190508181036000830152620007968162000754565b9050919050565b600081519050919050565b60005b83811015620007c8578082015181840152602081019050620007ab565b83811115620007d8576000848401525b50505050565b6000601f19601f8301169050919050565b6000620007fc826200079d565b620008088185620006f4565b93506200081a818560208601620007a8565b6200082581620007de565b840191505092915050565b600060208201905081810360008301526200084c8184620007ef565b905092915050565b61402380620008646000396000f3fe6080604052600436106101e65760003560e01c8063715018a611610102578063bc33718211610095578063e350779711610064578063e3507797146106ae578063ea2f0b37146106d7578063f275f64b14610700578063f8b45b0514610729576101ed565b8063bc337182146105e0578063bfd7928414610609578063cc99689914610646578063dd62ed3e14610671576101ed565b80638da5cb5b116100d15780638da5cb5b1461053657806395d89b41146105615780639e78fb4f1461058c578063a9059cbb146105a3576101ed565b8063715018a6146104b45780637b41192a146104cb578063818a7def146104f45780638c0b5e221461050b576101ed565b8063351a964d1161017a57806363148a501161014957806363148a501461040e5780636b999053146104375780636fc3eaec1461046057806370a0823114610477576101ed565b8063351a964d146103685780634263ec3314610393578063437823ec146103bc5780635d0044ca146103e5576101ed565b806318160ddd116101b657806318160ddd146102ac5780631d60c2b0146102d757806323b872dd14610300578063313ce5671461033d576101ed565b8062b8cf2a146101f2578063061c82d01461021b57806306fdde0314610244578063095ea7b31461026f576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612f9d565b610754565b005b34801561022757600080fd5b50610242600480360381019061023d919061301c565b61087e565b005b34801561025057600080fd5b5061025961091d565b60405161026691906130d1565b60405180910390f35b34801561027b57600080fd5b50610296600480360381019061029191906130f3565b61095a565b6040516102a3919061314e565b60405180910390f35b3480156102b857600080fd5b506102c1610978565b6040516102ce9190613178565b60405180910390f35b3480156102e357600080fd5b506102fe60048036038101906102f9919061301c565b610982565b005b34801561030c57600080fd5b5061032760048036038101906103229190613193565b610a21565b604051610334919061314e565b60405180910390f35b34801561034957600080fd5b50610352610afa565b60405161035f9190613202565b60405180910390f35b34801561037457600080fd5b5061037d610b03565b60405161038a919061314e565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b5919061301c565b610b1a565b005b3480156103c857600080fd5b506103e360048036038101906103de919061321d565b610bb9565b005b3480156103f157600080fd5b5061040c6004803603810190610407919061301c565b610ca9565b005b34801561041a57600080fd5b506104356004803603810190610430919061330d565b610d56565b005b34801561044357600080fd5b5061045e6004803603810190610459919061321d565b610f3e565b005b34801561046c57600080fd5b5061047561102e565b005b34801561048357600080fd5b5061049e6004803603810190610499919061321d565b61103f565b6040516104ab9190613178565b60405180910390f35b3480156104c057600080fd5b506104c9611088565b005b3480156104d757600080fd5b506104f260048036038101906104ed919061301c565b6111db565b005b34801561050057600080fd5b5061050961127a565b005b34801561051757600080fd5b506105206113e8565b60405161052d9190613178565b60405180910390f35b34801561054257600080fd5b5061054b6113f2565b6040516105589190613394565b60405180910390f35b34801561056d57600080fd5b5061057661141b565b60405161058391906130d1565b60405180910390f35b34801561059857600080fd5b506105a1611458565b005b3480156105af57600080fd5b506105ca60048036038101906105c591906130f3565b61182f565b6040516105d7919061314e565b60405180910390f35b3480156105ec57600080fd5b506106076004803603810190610602919061301c565b61184d565b005b34801561061557600080fd5b50610630600480360381019061062b919061321d565b6118fa565b60405161063d919061314e565b60405180910390f35b34801561065257600080fd5b5061065b61191a565b604051610668919061314e565b60405180910390f35b34801561067d57600080fd5b50610698600480360381019061069391906133af565b611931565b6040516106a59190613178565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d0919061301c565b6119b8565b005b3480156106e357600080fd5b506106fe60048036038101906106f9919061321d565b611a57565b005b34801561070c57600080fd5b506107276004803603810190610722919061341b565b611b47565b005b34801561073557600080fd5b5061073e611bf9565b60405161074b9190613178565b60405180910390f35b61075c611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e090613494565b60405180910390fd5b60005b815181101561087a5760016005600084848151811061080e5761080d6134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061087290613512565b9150506107ec565b5050565b610886611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90613494565b60405180910390fd5b8060088190555050565b60606040518060400160405280600b81526020017f4772696d20526561706572000000000000000000000000000000000000000000815250905090565b600061096e610967611cc7565b8484611ccf565b6001905092915050565b6000600654905090565b61098a611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90613494565b60405180910390fd5b80600a8190555050565b6000610a2e848484611e98565b610aef84610a3a611cc7565b610aea85604051806060016040528060288152602001613fc660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aa0611cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ec9092919063ffffffff16565b611ccf565b600190509392505050565b60006008905090565b6000601260169054906101000a900460ff16905090565b610b22611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690613494565b60405180910390fd5b8060098190555050565b610bc1611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590613494565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cb1611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590613494565b60405180910390fd5b6010548111610d4c57600080fd5b8060108190555050565b610d5e611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290613494565b60405180910390fd5b60005b8251811015610f39576305f5e100828281518110610e0f57610e0e6134b4565b5b6020026020010151610e21919061355a565b60026000858481518110610e3857610e376134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110610e9157610e906134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100858581518110610eff57610efe6134b4565b5b6020026020010151610f11919061355a565b604051610f1e9190613178565b60405180910390a38080610f3190613512565b915050610dee565b505050565b610f46611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613494565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600047905061103c81612550565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611090611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613494565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111e3611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790613494565b60405180910390fd5b80600b8190555050565b611282611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690613494565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113583061103f565b6000806113636113f2565b426040518863ffffffff1660e01b8152600401611385969594939291906135f9565b60606040518083038185885af11580156113a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113c8919061366f565b5050506001601260166101000a81548160ff021916908315150217905550565b6000600f54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4752494d00000000000000000000000000000000000000000000000000000000815250905090565b611460611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613494565b60405180910390fd5b601260149054906101000a900460ff161561153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115349061370e565b60405180910390fd5b61156c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190613743565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190613743565b6040518363ffffffff1660e01b81526004016116c7929190613770565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190613743565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117e9929190613799565b6020604051808303816000875af1158015611808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182c91906137d7565b50565b600061184361183c611cc7565b8484611e98565b6001905092915050565b611855611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990613494565b60405180910390fd5b600f5481116118f057600080fd5b80600f8190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000601260159054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119c0611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490613494565b60405180910390fd5b8060078190555050565b611a5f611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613494565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b4f611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613494565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b6000601054905090565b6000808303611c155760009050611c77565b60008284611c23919061355a565b9050828482611c329190613833565b14611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c69906138d6565b60405180910390fd5b809150505b92915050565b6000611cbf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125bc565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613968565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da4906139fa565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e8b9190613178565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe90613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90613b1e565b60405180910390fd5b60008111611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090613bb0565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561205d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209390613c1c565b60405180910390fd5b6120a46113f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211257506120e26113f2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561242c57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121c25750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122185750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230a57600f54811115612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990613c88565b60405180910390fd5b601260149054906101000a900460ff166122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a890613cf4565b60405180910390fd5b601054816122be8461103f565b6122c89190613d14565b1115612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090613db6565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123725761236761261f565b600881905550612381565b61237a612636565b6008819055505b600061238c3061103f565b9050601260159054906101000a900460ff161580156123f95750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124115750601260169054906101000a900460ff165b1561242a576007548110612429576124288161264d565b5b5b505b6124e7838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124df576008546124e2565b60005b61277a565b505050565b6000838311158290612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b91906130d1565b60405180910390fd5b50600083856125439190613dd6565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125b8573d6000803e3d6000fd5b5050565b60008083118290612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa91906130d1565b60405180910390fd5b50600083856126129190613833565b9050809150509392505050565b6000600954600b546126319190613d14565b905090565b6000600a54600b546126489190613d14565b905090565b6001601260156101000a81548160ff02191690831515021790555060006126926064612684600c5485611c0390919063ffffffff16565b611c7d90919063ffffffff16565b905060006126a982846129e790919063ffffffff16565b905060006126c1600284611c7d90919063ffffffff16565b905060006126d882856129e790919063ffffffff16565b905060004790506126e883612a31565b60006126fd82476129e790919063ffffffff16565b90506127098184612c74565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161273c93929190613e0a565b60405180910390a161274d85612a31565b61275685612550565b5050505050506000601260156101000a81548160ff02191690831515021790555050565b60006127a260646127948486611c0390919063ffffffff16565b611c7d90919063ffffffff16565b905060006127b982856129e790919063ffffffff16565b905061280d84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e790919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a281600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293782600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129d79190613178565b60405180910390a3505050505050565b6000612a2983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124ec565b905092915050565b6000600267ffffffffffffffff811115612a4e57612a4d612dfc565b5b604051908082528060200260200182016040528015612a7c5781602001602082028036833780820191505090505b5090503081600081518110612a9457612a936134b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5f9190613743565b81600181518110612b7357612b726134b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bda30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c3e959493929190613eff565b600060405180830381600087803b158015612c5857600080fd5b505af1158015612c6c573d6000803e3d6000fd5b505050505050565b612ca130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833084600080612ced6113f2565b426040518863ffffffff1660e01b8152600401612d0f969594939291906135f9565b60606040518083038185885af1158015612d2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d52919061366f565b5050506001601260166101000a81548160ff0219169083151502179055505050565b6000808284612d839190613d14565b905083811015612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf90613fa5565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e3482612deb565b810181811067ffffffffffffffff82111715612e5357612e52612dfc565b5b80604052505050565b6000612e66612dd2565b9050612e728282612e2b565b919050565b600067ffffffffffffffff821115612e9257612e91612dfc565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed382612ea8565b9050919050565b612ee381612ec8565b8114612eee57600080fd5b50565b600081359050612f0081612eda565b92915050565b6000612f19612f1484612e77565b612e5c565b90508083825260208201905060208402830185811115612f3c57612f3b612ea3565b5b835b81811015612f655780612f518882612ef1565b845260208401935050602081019050612f3e565b5050509392505050565b600082601f830112612f8457612f83612de6565b5b8135612f94848260208601612f06565b91505092915050565b600060208284031215612fb357612fb2612ddc565b5b600082013567ffffffffffffffff811115612fd157612fd0612de1565b5b612fdd84828501612f6f565b91505092915050565b6000819050919050565b612ff981612fe6565b811461300457600080fd5b50565b60008135905061301681612ff0565b92915050565b60006020828403121561303257613031612ddc565b5b600061304084828501613007565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613083578082015181840152602081019050613068565b83811115613092576000848401525b50505050565b60006130a382613049565b6130ad8185613054565b93506130bd818560208601613065565b6130c681612deb565b840191505092915050565b600060208201905081810360008301526130eb8184613098565b905092915050565b6000806040838503121561310a57613109612ddc565b5b600061311885828601612ef1565b925050602061312985828601613007565b9150509250929050565b60008115159050919050565b61314881613133565b82525050565b6000602082019050613163600083018461313f565b92915050565b61317281612fe6565b82525050565b600060208201905061318d6000830184613169565b92915050565b6000806000606084860312156131ac576131ab612ddc565b5b60006131ba86828701612ef1565b93505060206131cb86828701612ef1565b92505060406131dc86828701613007565b9150509250925092565b600060ff82169050919050565b6131fc816131e6565b82525050565b600060208201905061321760008301846131f3565b92915050565b60006020828403121561323357613232612ddc565b5b600061324184828501612ef1565b91505092915050565b600067ffffffffffffffff82111561326557613264612dfc565b5b602082029050602081019050919050565b60006132896132848461324a565b612e5c565b905080838252602082019050602084028301858111156132ac576132ab612ea3565b5b835b818110156132d557806132c18882613007565b8452602084019350506020810190506132ae565b5050509392505050565b600082601f8301126132f4576132f3612de6565b5b8135613304848260208601613276565b91505092915050565b6000806040838503121561332457613323612ddc565b5b600083013567ffffffffffffffff81111561334257613341612de1565b5b61334e85828601612f6f565b925050602083013567ffffffffffffffff81111561336f5761336e612de1565b5b61337b858286016132df565b9150509250929050565b61338e81612ec8565b82525050565b60006020820190506133a96000830184613385565b92915050565b600080604083850312156133c6576133c5612ddc565b5b60006133d485828601612ef1565b92505060206133e585828601612ef1565b9150509250929050565b6133f881613133565b811461340357600080fd5b50565b600081359050613415816133ef565b92915050565b60006020828403121561343157613430612ddc565b5b600061343f84828501613406565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061347e602083613054565b915061348982613448565b602082019050919050565b600060208201905081810360008301526134ad81613471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351d82612fe6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361354f5761354e6134e3565b5b600182019050919050565b600061356582612fe6565b915061357083612fe6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135a9576135a86134e3565b5b828202905092915050565b6000819050919050565b6000819050919050565b60006135e36135de6135d9846135b4565b6135be565b612fe6565b9050919050565b6135f3816135c8565b82525050565b600060c08201905061360e6000830189613385565b61361b6020830188613169565b61362860408301876135ea565b61363560608301866135ea565b6136426080830185613385565b61364f60a0830184613169565b979650505050505050565b60008151905061366981612ff0565b92915050565b60008060006060848603121561368857613687612ddc565b5b60006136968682870161365a565b93505060206136a78682870161365a565b92505060406136b88682870161365a565b9150509250925092565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136f8601783613054565b9150613703826136c2565b602082019050919050565b60006020820190508181036000830152613727816136eb565b9050919050565b60008151905061373d81612eda565b92915050565b60006020828403121561375957613758612ddc565b5b60006137678482850161372e565b91505092915050565b60006040820190506137856000830185613385565b6137926020830184613385565b9392505050565b60006040820190506137ae6000830185613385565b6137bb6020830184613169565b9392505050565b6000815190506137d1816133ef565b92915050565b6000602082840312156137ed576137ec612ddc565b5b60006137fb848285016137c2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061383e82612fe6565b915061384983612fe6565b92508261385957613858613804565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138c0602183613054565b91506138cb82613864565b604082019050919050565b600060208201905081810360008301526138ef816138b3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613952602483613054565b915061395d826138f6565b604082019050919050565b6000602082019050818103600083015261398181613945565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139e4602283613054565b91506139ef82613988565b604082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a76602583613054565b9150613a8182613a1a565b604082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b08602383613054565b9150613b1382613aac565b604082019050919050565b60006020820190508181036000830152613b3781613afb565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b9a602983613054565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b6000613c06601b83613054565b9150613c1182613bd0565b602082019050919050565b60006020820190508181036000830152613c3581613bf9565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000613c72601a83613054565b9150613c7d82613c3c565b602082019050919050565b60006020820190508181036000830152613ca181613c65565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000613cde601383613054565b9150613ce982613ca8565b602082019050919050565b60006020820190508181036000830152613d0d81613cd1565b9050919050565b6000613d1f82612fe6565b9150613d2a83612fe6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d5f57613d5e6134e3565b5b828201905092915050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b6000613da0601c83613054565b9150613dab82613d6a565b602082019050919050565b60006020820190508181036000830152613dcf81613d93565b9050919050565b6000613de182612fe6565b9150613dec83612fe6565b925082821015613dff57613dfe6134e3565b5b828203905092915050565b6000606082019050613e1f6000830186613169565b613e2c6020830185613169565b613e396040830184613169565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e7681612ec8565b82525050565b6000613e888383613e6d565b60208301905092915050565b6000602082019050919050565b6000613eac82613e41565b613eb68185613e4c565b9350613ec183613e5d565b8060005b83811015613ef2578151613ed98882613e7c565b9750613ee483613e94565b925050600181019050613ec5565b5085935050505092915050565b600060a082019050613f146000830188613169565b613f2160208301876135ea565b8181036040830152613f338186613ea1565b9050613f426060830185613385565b613f4f6080830184613169565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f8f601b83613054565b9150613f9a82613f59565b602082019050919050565b60006020820190508181036000830152613fbe81613f82565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220971a7398ac1d4e53fbf924572b6bfaa40ab7aab997a7ebb9ffa438b1528da3b964736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c8063715018a611610102578063bc33718211610095578063e350779711610064578063e3507797146106ae578063ea2f0b37146106d7578063f275f64b14610700578063f8b45b0514610729576101ed565b8063bc337182146105e0578063bfd7928414610609578063cc99689914610646578063dd62ed3e14610671576101ed565b80638da5cb5b116100d15780638da5cb5b1461053657806395d89b41146105615780639e78fb4f1461058c578063a9059cbb146105a3576101ed565b8063715018a6146104b45780637b41192a146104cb578063818a7def146104f45780638c0b5e221461050b576101ed565b8063351a964d1161017a57806363148a501161014957806363148a501461040e5780636b999053146104375780636fc3eaec1461046057806370a0823114610477576101ed565b8063351a964d146103685780634263ec3314610393578063437823ec146103bc5780635d0044ca146103e5576101ed565b806318160ddd116101b657806318160ddd146102ac5780631d60c2b0146102d757806323b872dd14610300578063313ce5671461033d576101ed565b8062b8cf2a146101f2578063061c82d01461021b57806306fdde0314610244578063095ea7b31461026f576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190612f9d565b610754565b005b34801561022757600080fd5b50610242600480360381019061023d919061301c565b61087e565b005b34801561025057600080fd5b5061025961091d565b60405161026691906130d1565b60405180910390f35b34801561027b57600080fd5b50610296600480360381019061029191906130f3565b61095a565b6040516102a3919061314e565b60405180910390f35b3480156102b857600080fd5b506102c1610978565b6040516102ce9190613178565b60405180910390f35b3480156102e357600080fd5b506102fe60048036038101906102f9919061301c565b610982565b005b34801561030c57600080fd5b5061032760048036038101906103229190613193565b610a21565b604051610334919061314e565b60405180910390f35b34801561034957600080fd5b50610352610afa565b60405161035f9190613202565b60405180910390f35b34801561037457600080fd5b5061037d610b03565b60405161038a919061314e565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b5919061301c565b610b1a565b005b3480156103c857600080fd5b506103e360048036038101906103de919061321d565b610bb9565b005b3480156103f157600080fd5b5061040c6004803603810190610407919061301c565b610ca9565b005b34801561041a57600080fd5b506104356004803603810190610430919061330d565b610d56565b005b34801561044357600080fd5b5061045e6004803603810190610459919061321d565b610f3e565b005b34801561046c57600080fd5b5061047561102e565b005b34801561048357600080fd5b5061049e6004803603810190610499919061321d565b61103f565b6040516104ab9190613178565b60405180910390f35b3480156104c057600080fd5b506104c9611088565b005b3480156104d757600080fd5b506104f260048036038101906104ed919061301c565b6111db565b005b34801561050057600080fd5b5061050961127a565b005b34801561051757600080fd5b506105206113e8565b60405161052d9190613178565b60405180910390f35b34801561054257600080fd5b5061054b6113f2565b6040516105589190613394565b60405180910390f35b34801561056d57600080fd5b5061057661141b565b60405161058391906130d1565b60405180910390f35b34801561059857600080fd5b506105a1611458565b005b3480156105af57600080fd5b506105ca60048036038101906105c591906130f3565b61182f565b6040516105d7919061314e565b60405180910390f35b3480156105ec57600080fd5b506106076004803603810190610602919061301c565b61184d565b005b34801561061557600080fd5b50610630600480360381019061062b919061321d565b6118fa565b60405161063d919061314e565b60405180910390f35b34801561065257600080fd5b5061065b61191a565b604051610668919061314e565b60405180910390f35b34801561067d57600080fd5b50610698600480360381019061069391906133af565b611931565b6040516106a59190613178565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d0919061301c565b6119b8565b005b3480156106e357600080fd5b506106fe60048036038101906106f9919061321d565b611a57565b005b34801561070c57600080fd5b506107276004803603810190610722919061341b565b611b47565b005b34801561073557600080fd5b5061073e611bf9565b60405161074b9190613178565b60405180910390f35b61075c611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e090613494565b60405180910390fd5b60005b815181101561087a5760016005600084848151811061080e5761080d6134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061087290613512565b9150506107ec565b5050565b610886611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90613494565b60405180910390fd5b8060088190555050565b60606040518060400160405280600b81526020017f4772696d20526561706572000000000000000000000000000000000000000000815250905090565b600061096e610967611cc7565b8484611ccf565b6001905092915050565b6000600654905090565b61098a611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90613494565b60405180910390fd5b80600a8190555050565b6000610a2e848484611e98565b610aef84610a3a611cc7565b610aea85604051806060016040528060288152602001613fc660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610aa0611cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ec9092919063ffffffff16565b611ccf565b600190509392505050565b60006008905090565b6000601260169054906101000a900460ff16905090565b610b22611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690613494565b60405180910390fd5b8060098190555050565b610bc1611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590613494565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cb1611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590613494565b60405180910390fd5b6010548111610d4c57600080fd5b8060108190555050565b610d5e611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de290613494565b60405180910390fd5b60005b8251811015610f39576305f5e100828281518110610e0f57610e0e6134b4565b5b6020026020010151610e21919061355a565b60026000858481518110610e3857610e376134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110610e9157610e906134b4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100858581518110610eff57610efe6134b4565b5b6020026020010151610f11919061355a565b604051610f1e9190613178565b60405180910390a38080610f3190613512565b915050610dee565b505050565b610f46611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613494565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600047905061103c81612550565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611090611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613494565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111e3611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790613494565b60405180910390fd5b80600b8190555050565b611282611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690613494565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113583061103f565b6000806113636113f2565b426040518863ffffffff1660e01b8152600401611385969594939291906135f9565b60606040518083038185885af11580156113a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113c8919061366f565b5050506001601260166101000a81548160ff021916908315150217905550565b6000600f54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4752494d00000000000000000000000000000000000000000000000000000000815250905090565b611460611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613494565b60405180910390fd5b601260149054906101000a900460ff161561153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115349061370e565b60405180910390fd5b61156c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190613743565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190613743565b6040518363ffffffff1660e01b81526004016116c7929190613770565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190613743565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117e9929190613799565b6020604051808303816000875af1158015611808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182c91906137d7565b50565b600061184361183c611cc7565b8484611e98565b6001905092915050565b611855611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d990613494565b60405180910390fd5b600f5481116118f057600080fd5b80600f8190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000601260159054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119c0611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490613494565b60405180910390fd5b8060078190555050565b611a5f611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613494565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b4f611cc7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613494565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b6000601054905090565b6000808303611c155760009050611c77565b60008284611c23919061355a565b9050828482611c329190613833565b14611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c69906138d6565b60405180910390fd5b809150505b92915050565b6000611cbf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125bc565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613968565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da4906139fa565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e8b9190613178565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe90613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90613b1e565b60405180910390fd5b60008111611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090613bb0565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561205d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209390613c1c565b60405180910390fd5b6120a46113f2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561211257506120e26113f2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561242c57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121c25750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122185750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230a57600f54811115612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990613c88565b60405180910390fd5b601260149054906101000a900460ff166122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a890613cf4565b60405180910390fd5b601054816122be8461103f565b6122c89190613d14565b1115612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090613db6565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123725761236761261f565b600881905550612381565b61237a612636565b6008819055505b600061238c3061103f565b9050601260159054906101000a900460ff161580156123f95750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124115750601260169054906101000a900460ff165b1561242a576007548110612429576124288161264d565b5b5b505b6124e7838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124df576008546124e2565b60005b61277a565b505050565b6000838311158290612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b91906130d1565b60405180910390fd5b50600083856125439190613dd6565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125b8573d6000803e3d6000fd5b5050565b60008083118290612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa91906130d1565b60405180910390fd5b50600083856126129190613833565b9050809150509392505050565b6000600954600b546126319190613d14565b905090565b6000600a54600b546126489190613d14565b905090565b6001601260156101000a81548160ff02191690831515021790555060006126926064612684600c5485611c0390919063ffffffff16565b611c7d90919063ffffffff16565b905060006126a982846129e790919063ffffffff16565b905060006126c1600284611c7d90919063ffffffff16565b905060006126d882856129e790919063ffffffff16565b905060004790506126e883612a31565b60006126fd82476129e790919063ffffffff16565b90506127098184612c74565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161273c93929190613e0a565b60405180910390a161274d85612a31565b61275685612550565b5050505050506000601260156101000a81548160ff02191690831515021790555050565b60006127a260646127948486611c0390919063ffffffff16565b611c7d90919063ffffffff16565b905060006127b982856129e790919063ffffffff16565b905061280d84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e790919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a281600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293782600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129d79190613178565b60405180910390a3505050505050565b6000612a2983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124ec565b905092915050565b6000600267ffffffffffffffff811115612a4e57612a4d612dfc565b5b604051908082528060200260200182016040528015612a7c5781602001602082028036833780820191505090505b5090503081600081518110612a9457612a936134b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5f9190613743565b81600181518110612b7357612b726134b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bda30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c3e959493929190613eff565b600060405180830381600087803b158015612c5857600080fd5b505af1158015612c6c573d6000803e3d6000fd5b505050505050565b612ca130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ccf565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833084600080612ced6113f2565b426040518863ffffffff1660e01b8152600401612d0f969594939291906135f9565b60606040518083038185885af1158015612d2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d52919061366f565b5050506001601260166101000a81548160ff0219169083151502179055505050565b6000808284612d839190613d14565b905083811015612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf90613fa5565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e3482612deb565b810181811067ffffffffffffffff82111715612e5357612e52612dfc565b5b80604052505050565b6000612e66612dd2565b9050612e728282612e2b565b919050565b600067ffffffffffffffff821115612e9257612e91612dfc565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed382612ea8565b9050919050565b612ee381612ec8565b8114612eee57600080fd5b50565b600081359050612f0081612eda565b92915050565b6000612f19612f1484612e77565b612e5c565b90508083825260208201905060208402830185811115612f3c57612f3b612ea3565b5b835b81811015612f655780612f518882612ef1565b845260208401935050602081019050612f3e565b5050509392505050565b600082601f830112612f8457612f83612de6565b5b8135612f94848260208601612f06565b91505092915050565b600060208284031215612fb357612fb2612ddc565b5b600082013567ffffffffffffffff811115612fd157612fd0612de1565b5b612fdd84828501612f6f565b91505092915050565b6000819050919050565b612ff981612fe6565b811461300457600080fd5b50565b60008135905061301681612ff0565b92915050565b60006020828403121561303257613031612ddc565b5b600061304084828501613007565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613083578082015181840152602081019050613068565b83811115613092576000848401525b50505050565b60006130a382613049565b6130ad8185613054565b93506130bd818560208601613065565b6130c681612deb565b840191505092915050565b600060208201905081810360008301526130eb8184613098565b905092915050565b6000806040838503121561310a57613109612ddc565b5b600061311885828601612ef1565b925050602061312985828601613007565b9150509250929050565b60008115159050919050565b61314881613133565b82525050565b6000602082019050613163600083018461313f565b92915050565b61317281612fe6565b82525050565b600060208201905061318d6000830184613169565b92915050565b6000806000606084860312156131ac576131ab612ddc565b5b60006131ba86828701612ef1565b93505060206131cb86828701612ef1565b92505060406131dc86828701613007565b9150509250925092565b600060ff82169050919050565b6131fc816131e6565b82525050565b600060208201905061321760008301846131f3565b92915050565b60006020828403121561323357613232612ddc565b5b600061324184828501612ef1565b91505092915050565b600067ffffffffffffffff82111561326557613264612dfc565b5b602082029050602081019050919050565b60006132896132848461324a565b612e5c565b905080838252602082019050602084028301858111156132ac576132ab612ea3565b5b835b818110156132d557806132c18882613007565b8452602084019350506020810190506132ae565b5050509392505050565b600082601f8301126132f4576132f3612de6565b5b8135613304848260208601613276565b91505092915050565b6000806040838503121561332457613323612ddc565b5b600083013567ffffffffffffffff81111561334257613341612de1565b5b61334e85828601612f6f565b925050602083013567ffffffffffffffff81111561336f5761336e612de1565b5b61337b858286016132df565b9150509250929050565b61338e81612ec8565b82525050565b60006020820190506133a96000830184613385565b92915050565b600080604083850312156133c6576133c5612ddc565b5b60006133d485828601612ef1565b92505060206133e585828601612ef1565b9150509250929050565b6133f881613133565b811461340357600080fd5b50565b600081359050613415816133ef565b92915050565b60006020828403121561343157613430612ddc565b5b600061343f84828501613406565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061347e602083613054565b915061348982613448565b602082019050919050565b600060208201905081810360008301526134ad81613471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351d82612fe6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361354f5761354e6134e3565b5b600182019050919050565b600061356582612fe6565b915061357083612fe6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135a9576135a86134e3565b5b828202905092915050565b6000819050919050565b6000819050919050565b60006135e36135de6135d9846135b4565b6135be565b612fe6565b9050919050565b6135f3816135c8565b82525050565b600060c08201905061360e6000830189613385565b61361b6020830188613169565b61362860408301876135ea565b61363560608301866135ea565b6136426080830185613385565b61364f60a0830184613169565b979650505050505050565b60008151905061366981612ff0565b92915050565b60008060006060848603121561368857613687612ddc565b5b60006136968682870161365a565b93505060206136a78682870161365a565b92505060406136b88682870161365a565b9150509250925092565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136f8601783613054565b9150613703826136c2565b602082019050919050565b60006020820190508181036000830152613727816136eb565b9050919050565b60008151905061373d81612eda565b92915050565b60006020828403121561375957613758612ddc565b5b60006137678482850161372e565b91505092915050565b60006040820190506137856000830185613385565b6137926020830184613385565b9392505050565b60006040820190506137ae6000830185613385565b6137bb6020830184613169565b9392505050565b6000815190506137d1816133ef565b92915050565b6000602082840312156137ed576137ec612ddc565b5b60006137fb848285016137c2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061383e82612fe6565b915061384983612fe6565b92508261385957613858613804565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138c0602183613054565b91506138cb82613864565b604082019050919050565b600060208201905081810360008301526138ef816138b3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613952602483613054565b915061395d826138f6565b604082019050919050565b6000602082019050818103600083015261398181613945565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139e4602283613054565b91506139ef82613988565b604082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a76602583613054565b9150613a8182613a1a565b604082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b08602383613054565b9150613b1382613aac565b604082019050919050565b60006020820190508181036000830152613b3781613afb565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b9a602983613054565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b6000613c06601b83613054565b9150613c1182613bd0565b602082019050919050565b60006020820190508181036000830152613c3581613bf9565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000613c72601a83613054565b9150613c7d82613c3c565b602082019050919050565b60006020820190508181036000830152613ca181613c65565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000613cde601383613054565b9150613ce982613ca8565b602082019050919050565b60006020820190508181036000830152613d0d81613cd1565b9050919050565b6000613d1f82612fe6565b9150613d2a83612fe6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d5f57613d5e6134e3565b5b828201905092915050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b6000613da0601c83613054565b9150613dab82613d6a565b602082019050919050565b60006020820190508181036000830152613dcf81613d93565b9050919050565b6000613de182612fe6565b9150613dec83612fe6565b925082821015613dff57613dfe6134e3565b5b828203905092915050565b6000606082019050613e1f6000830186613169565b613e2c6020830185613169565b613e396040830184613169565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e7681612ec8565b82525050565b6000613e888383613e6d565b60208301905092915050565b6000602082019050919050565b6000613eac82613e41565b613eb68185613e4c565b9350613ec183613e5d565b8060005b83811015613ef2578151613ed98882613e7c565b9750613ee483613e94565b925050600181019050613ec5565b5085935050505092915050565b600060a082019050613f146000830188613169565b613f2160208301876135ea565b8181036040830152613f338186613ea1565b9050613f426060830185613385565b613f4f6080830184613169565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f8f601b83613054565b9150613f9a82613f59565b602082019050919050565b60006020820190508181036000830152613fbe81613f82565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220971a7398ac1d4e53fbf924572b6bfaa40ab7aab997a7ebb9ffa438b1528da3b964736f6c634300080d0033

Deployed Bytecode Sourcemap

3206:9648:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12183:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5940:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5360:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6928:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5601:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6046:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7079:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5522:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5265:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6165:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5695:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12032:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12538:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12316:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12405:125;;;;;;;;;;;;;:::i;:::-;;6518:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3062:133;;;;;;;;;;;;;:::i;:::-;;6282:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10795:302;;;;;;;;;;;;;:::i;:::-;;5006:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2878:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5439:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10484:306;;;;;;;;;;;;;:::i;:::-;;6632:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9905:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3466:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5177:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6789:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6387:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5818:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11492:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5092:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12183:130;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12250:9:::1;12245:67;12269:5;:12;12265:1;:16;12245:67;;;12306:4;12289;:14;12294:5;12300:1;12294:8;;;;;;;;:::i;:::-;;;;;;;;12289:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12283:3;;;;;:::i;:::-;;;;12245:67;;;;12183:130:::0;:::o;5940:98::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6024:6:::1;6014:7;:16;;;;5940:98:::0;:::o;5360:74::-;5397:13;5424:5;;;;;;;;;;;;;;;;;5417:12;;5360:74;:::o;6928:146::-;7003:4;7014:39;7023:12;:10;:12::i;:::-;7037:7;7046:6;7014:8;:39::i;:::-;7065:4;7058:11;;6928:146;;;;:::o;5601:86::-;5654:7;5675;;5668:14;;5601:86;:::o;6046:111::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6143:6:::1;6123:17;:26;;;;6046:111:::0;:::o;7079:292::-;7177:4;7188:36;7198:6;7206:9;7217:6;7188:9;:36::i;:::-;7229:121;7238:6;7246:12;:10;:12::i;:::-;7260:89;7298:6;7260:89;;;;;;;;;;;;;;;;;:11;:19;7272:6;7260:19;;;;;;;;;;;;;;;:33;7280:12;:10;:12::i;:::-;7260:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7229:8;:121::i;:::-;7362:4;7355:11;;7079:292;;;;;:::o;5522:74::-;5563:5;4100:1;5575:16;;5522:74;:::o;5265:90::-;5311:4;5335:12;;;;;;;;;;;5328:19;;5265:90;:::o;6165:109::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6260:6:::1;6241:16;:25;;;;6165:109:::0;:::o;5695:111::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5794:4:::1;5764:18;:27;5783:7;5764:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;5695:111:::0;:::o;12032:112::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12106:10:::1;;12099:6;:17;12091:26;;;::::0;::::1;;12133:6;12122:10;:17;;;;12032:112:::0;:::o;12538:313::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12652:9:::1;12648:196;12671:10;:17;12667:1;:21;12648:196;;;12749:5;12736:7;12744:1;12736:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;12710:8;:23;12719:10;12730:1;12719:13;;;;;;;;:::i;:::-;;;;;;;;12710:23;;;;;;;;;;;;;;;:44;;;;12798:10;12809:1;12798:13;;;;;;;;:::i;:::-;;;;;;;;12774:58;;12791:4;12774:58;;;12826:5;12813:7;12821:1;12813:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;12774:58;;;;;;:::i;:::-;;;;;;;;12690:3;;;;;:::i;:::-;;;;12648:196;;;;12538:313:::0;;:::o;12316:84::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12390:5:::1;12375:4;:12;12380:6;12375:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12316:84:::0;:::o;12405:125::-;12438:26;12467:21;12438:50;;12493:32;12506:18;12493:12;:32::i;:::-;12433:97;12405:125::o;6518:109::-;6584:7;6605:8;:17;6614:7;6605:17;;;;;;;;;;;;;;;;6598:24;;6518:109;;;:::o;3062:133::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3163:1:::1;3126:40;;3147:6;::::0;::::1;;;;;;;;3126:40;;;;;;;;;;;;3188:1;3171:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3062:133::o:0;6282:97::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6365:6:::1;6352:10;:19;;;;6282:97:::0;:::o;10795:302::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10849:8:::1;;;;;;;;;;;:24;;;10881:21;10927:4;10947:24;10965:4;10947:9;:24::i;:::-;10986:1;11002::::0;11018:7:::1;:5;:7::i;:::-;11040:15;10849:217;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11088:4;11073:12;;:19;;;;;;;;;;;;;;;;;;10795:302::o:0;5006:81::-;5050:7;5070:12;;5063:19;;5006:81;:::o;2878:70::-;2916:7;2937:6;;;;;;;;;;;2930:13;;2878:70;:::o;5439:78::-;5478:13;5505:7;;;;;;;;;;;;;;;;;5498:14;;5439:78;:::o;10484:306::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10539:9:::1;;;;;;;;;;;10538:10;10530:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;10580:51;10597:4;10612:8;;;;;;;;;;;10623:7;;10580:8;:51::i;:::-;10662:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10644:48;;;10701:4;10708:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10644:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10636:5;;:88;;;;;;;;;;;;;;;;;;10736:5;;;;;;;;;;;10729:21;;;10759:8;;;;;;;;;;;10770:14;10729:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10484:306::o:0;6632:152::-;6710:4;6721:42;6731:12;:10;:12::i;:::-;6745:9;6756:6;6721:9;:42::i;:::-;6775:4;6768:11;;6632:152;;;;:::o;9905:112::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9975:12:::1;;9968:6;:19;9960:28;;;::::0;::::1;;10006:6;9993:12;:19;;;;9905:112:::0;:::o;3466:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;5177:80::-;5218:4;5242:7;;;;;;;;;;;5235:14;;5177:80;:::o;6789:134::-;6870:7;6891:11;:18;6903:5;6891:18;;;;;;;;;;;;;;;:27;6910:7;6891:27;;;;;;;;;;;;;;;;6884:34;;6789:134;;;;:::o;6387:126::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6497:8:::1;6469:25;:36;;;;6387:126:::0;:::o;5818:110::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5915:5:::1;5885:18;:27;5904:7;5885:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5818:110:::0;:::o;11492:84::-;2997:12;:10;:12::i;:::-;2987:22;;:6;;;;;;;;;;:22;;;2979:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11564:7:::1;11552:9;;:19;;;;;;;;;;;;;;;;;;11492:84:::0;:::o;5092:77::-;5134:7;5154:10;;5147:17;;5092:77;:::o;2045:204::-;2103:7;2126:1;2121;:6;2117:32;;2142:1;2135:8;;;;2117:32;2153:9;2169:1;2165;:5;;;;:::i;:::-;2153:17;;2192:1;2187;2183;:5;;;;:::i;:::-;:10;2175:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2243:1;2236:8;;;2045:204;;;;;:::o;2254:123::-;2312:7;2333:39;2337:1;2340;2333:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2326:46;;2254:123;;;;:::o;806:89::-;859:7;880:10;873:17;;806:89;:::o;7376:308::-;7480:1;7463:19;;:5;:19;;;7455:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7555:1;7536:21;;:7;:21;;;7528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7631:6;7601:11;:18;7613:5;7601:18;;;;;;;;;;;;;;;:27;7620:7;7601:27;;;;;;;;;;;;;;;:36;;;;7663:7;7647:32;;7656:5;7647:32;;;7672:6;7647:32;;;;;;:::i;:::-;;;;;;;;7376:308;;;:::o;7689:1232::-;7787:1;7771:18;;:4;:18;;;7763:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7858:1;7844:16;;:2;:16;;;7836:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7922:1;7913:6;:10;7905:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7983:4;:10;7988:4;7983:10;;;;;;;;;;;;;;;;;;;;;;;;;7982:11;:24;;;;;7998:4;:8;8003:2;7998:8;;;;;;;;;;;;;;;;;;;;;;;;;7997:9;7982:24;7974:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8057:7;:5;:7::i;:::-;8049:15;;:4;:15;;;;:32;;;;;8074:7;:5;:7::i;:::-;8068:13;;:2;:13;;;;8049:32;8045:774;;;8101:5;;;;;;;;;;;8093:13;;:4;:13;;;:40;;;;;8124:8;;;;;;;;;;;8110:23;;:2;:23;;;;8093:40;:68;;;;;8139:18;:22;8158:2;8139:22;;;;;;;;;;;;;;;;;;;;;;;;;8137:24;8093:68;8089:278;;;8187:12;;8179:6;:20;;8171:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8244:9;;;;;;;;;;;8236:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;8317:10;;8307:6;8291:13;8301:2;8291:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;8283:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8089:278;8395:5;;;;;;;;;;;8387:13;;:4;:13;;;8383:132;;8431:8;:6;:8::i;:::-;8421:7;:18;;;;8383:132;;;8490:9;:7;:9::i;:::-;8480:7;:19;;;;8383:132;8531:28;8562:24;8580:4;8562:9;:24::i;:::-;8531:55;;8605:7;;;;;;;;;;;8604:8;:25;;;;;8624:5;;;;;;;;;;;8616:13;;:4;:13;;;;8604:25;:41;;;;;8633:12;;;;;;;;;;;8604:41;8601:213;;;8693:25;;8669:20;:49;8666:133;;8743:36;8758:20;8743:14;:36::i;:::-;8666:133;8601:213;8083:736;8045:774;8825:91;8840:4;8845:2;8848:6;8856:18;:22;8875:2;8856:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;8880:18;:24;8899:4;8880:24;;;;;;;;;;;;;;;;;;;;;;;;;8856:48;8855:60;;8908:7;;8855:60;;;8906:1;8855:60;8825:14;:91::i;:::-;7689:1232;;;:::o;1871:169::-;1957:7;1984:1;1979;:6;;1987:12;1971:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2005:9;2021:1;2017;:5;;;;:::i;:::-;2005:17;;2034:1;2027:8;;;1871:169;;;;;:::o;10022:83::-;10073:10;;;;;;;;;;;:19;;:27;10093:6;10073:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:83;:::o;2382:168::-;2468:7;2494:1;2490;:5;2497:12;2482:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2515:9;2531:1;2527;:5;;;;:::i;:::-;2515:17;;2544:1;2537:8;;;2382:168;;;;;:::o;9678:106::-;9718:7;9759:16;;9746:10;;:29;;;;:::i;:::-;9738:38;;9678:106;:::o;9792:108::-;9833:7;9874:17;;9861:10;;:30;;;;:::i;:::-;9853:39;;9792:108;:::o;8929:741::-;4440:4;4430:7;;:14;;;;;;;;;;;;;;;;;;9014:26:::1;9043:54;9091:5;9043:43;9068:17;;9043:20;:24;;:43;;;;:::i;:::-;:47;;:54;;;;:::i;:::-;9014:83;;9108:23;9134:44;9159:18;9134:20;:24;;:44;;;;:::i;:::-;9108:70;;9191:12;9206:25;9229:1;9206:18;:22;;:25;;;;:::i;:::-;9191:40;;9242:17;9262:28;9285:4;9262:18;:22;;:28;;;;:::i;:::-;9242:48;;9303:22;9328:21;9303:46;;9360:22;9377:4;9360:16;:22::i;:::-;9393:18;9414:41;9440:14;9414:21;:25;;:41;;;;:::i;:::-;9393:62;;9468:39;9485:10;9497:9;9468:16;:39::i;:::-;9533:43;9548:4;9554:10;9566:9;9533:43;;;;;;;;:::i;:::-;;;;;;;;9589:33;9606:15;9589:16;:33::i;:::-;9633:29;9646:15;9633:12;:29::i;:::-;9003:667;;;;;;4465:5:::0;4455:7;;:15;;;;;;;;;;;;;;;;;;8929:741;:::o;11581:446::-;11687:13;11703:29;11728:3;11703:20;11715:7;11703;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;11687:45;;11737:23;11763:18;11775:5;11763:7;:11;;:18;;;;:::i;:::-;11737:44;;11807:29;11828:7;11807:8;:16;11816:6;11807:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;11788:8;:16;11797:6;11788:16;;;;;;;;;;;;;;;:48;;;;11863:40;11887:15;11863:8;:19;11872:9;11863:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;11841:8;:19;11850:9;11841:19;;;;;;;;;;;;;;;:62;;;;11934:34;11962:5;11934:8;:23;11951:4;11934:23;;;;;;;;;;;;;;;;:27;;:34;;;;:::i;:::-;11908:8;:23;11925:4;11908:23;;;;;;;;;;;;;;;:60;;;;11995:9;11978:44;;11987:6;11978:44;;;12006:15;11978:44;;;;;;:::i;:::-;;;;;;;;11682:345;;11581:446;;;;:::o;1739:127::-;1797:7;1818:43;1822:1;1825;1818:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1811:50;;1739:127;;;;:::o;10113:366::-;10173:21;10211:1;10197:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10173:40;;10236:4;10218;10223:1;10218:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10256:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10246:4;10251:1;10246:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;10276:55;10293:4;10308:8;;;;;;;;;;;10319:11;10276:8;:55::i;:::-;10336:8;;;;;;;;;;;:59;;;10401:11;10418:1;10425:4;10443;10454:15;10336:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10168:311;10113:366;:::o;11105:382::-;11190:54;11207:4;11222:8;;;;;;;;;;;11233:10;11190:8;:54::i;:::-;11255:8;;;;;;;;;;;:24;;;11287:10;11322:4;11342:10;11367:1;11383;11399:7;:5;:7::i;:::-;11421:15;11255:192;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11475:4;11460:12;;:19;;;;;;;;;;;;;;;;;;11105:382;;:::o;1576:158::-;1634:7;1648:9;1664:1;1660;:5;;;;:::i;:::-;1648:17;;1683:1;1678;:6;;1670:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1728:1;1721:8;;;1576:158;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:307::-;4830:1;4840:113;4854:6;4851:1;4848:13;4840:113;;;4939:1;4934:3;4930:11;4924:18;4920:1;4915:3;4911:11;4904:39;4876:2;4873:1;4869:10;4864:15;;4840:113;;;4971:6;4968:1;4965:13;4962:101;;;5051:1;5042:6;5037:3;5033:16;5026:27;4962:101;4811:258;4762:307;;;:::o;5075:364::-;5163:3;5191:39;5224:5;5191:39;:::i;:::-;5246:71;5310:6;5305:3;5246:71;:::i;:::-;5239:78;;5326:52;5371:6;5366:3;5359:4;5352:5;5348:16;5326:52;:::i;:::-;5403:29;5425:6;5403:29;:::i;:::-;5398:3;5394:39;5387:46;;5167:272;5075:364;;;;:::o;5445:313::-;5558:4;5596:2;5585:9;5581:18;5573:26;;5645:9;5639:4;5635:20;5631:1;5620:9;5616:17;5609:47;5673:78;5746:4;5737:6;5673:78;:::i;:::-;5665:86;;5445:313;;;;:::o;5764:474::-;5832:6;5840;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:53;6085:7;6076:6;6065:9;6061:22;6040:53;:::i;:::-;6030:63;;5986:117;6142:2;6168:53;6213:7;6204:6;6193:9;6189:22;6168:53;:::i;:::-;6158:63;;6113:118;5764:474;;;;;:::o;6244:90::-;6278:7;6321:5;6314:13;6307:21;6296:32;;6244:90;;;:::o;6340:109::-;6421:21;6436:5;6421:21;:::i;:::-;6416:3;6409:34;6340:109;;:::o;6455:210::-;6542:4;6580:2;6569:9;6565:18;6557:26;;6593:65;6655:1;6644:9;6640:17;6631:6;6593:65;:::i;:::-;6455:210;;;;:::o;6671:118::-;6758:24;6776:5;6758:24;:::i;:::-;6753:3;6746:37;6671:118;;:::o;6795:222::-;6888:4;6926:2;6915:9;6911:18;6903:26;;6939:71;7007:1;6996:9;6992:17;6983:6;6939:71;:::i;:::-;6795:222;;;;:::o;7023:619::-;7100:6;7108;7116;7165:2;7153:9;7144:7;7140:23;7136:32;7133:119;;;7171:79;;:::i;:::-;7133:119;7291:1;7316:53;7361:7;7352:6;7341:9;7337:22;7316:53;:::i;:::-;7306:63;;7262:117;7418:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;:::i;:::-;7434:63;;7389:118;7546:2;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7517:118;7023:619;;;;;:::o;7648:86::-;7683:7;7723:4;7716:5;7712:16;7701:27;;7648:86;;;:::o;7740:112::-;7823:22;7839:5;7823:22;:::i;:::-;7818:3;7811:35;7740:112;;:::o;7858:214::-;7947:4;7985:2;7974:9;7970:18;7962:26;;7998:67;8062:1;8051:9;8047:17;8038:6;7998:67;:::i;:::-;7858:214;;;;:::o;8078:329::-;8137:6;8186:2;8174:9;8165:7;8161:23;8157:32;8154:119;;;8192:79;;:::i;:::-;8154:119;8312:1;8337:53;8382:7;8373:6;8362:9;8358:22;8337:53;:::i;:::-;8327:63;;8283:117;8078:329;;;;:::o;8413:311::-;8490:4;8580:18;8572:6;8569:30;8566:56;;;8602:18;;:::i;:::-;8566:56;8652:4;8644:6;8640:17;8632:25;;8712:4;8706;8702:15;8694:23;;8413:311;;;:::o;8747:710::-;8843:5;8868:81;8884:64;8941:6;8884:64;:::i;:::-;8868:81;:::i;:::-;8859:90;;8969:5;8998:6;8991:5;8984:21;9032:4;9025:5;9021:16;9014:23;;9085:4;9077:6;9073:17;9065:6;9061:30;9114:3;9106:6;9103:15;9100:122;;;9133:79;;:::i;:::-;9100:122;9248:6;9231:220;9265:6;9260:3;9257:15;9231:220;;;9340:3;9369:37;9402:3;9390:10;9369:37;:::i;:::-;9364:3;9357:50;9436:4;9431:3;9427:14;9420:21;;9307:144;9291:4;9286:3;9282:14;9275:21;;9231:220;;;9235:21;8849:608;;8747:710;;;;;:::o;9480:370::-;9551:5;9600:3;9593:4;9585:6;9581:17;9577:27;9567:122;;9608:79;;:::i;:::-;9567:122;9725:6;9712:20;9750:94;9840:3;9832:6;9825:4;9817:6;9813:17;9750:94;:::i;:::-;9741:103;;9557:293;9480:370;;;;:::o;9856:894::-;9974:6;9982;10031:2;10019:9;10010:7;10006:23;10002:32;9999:119;;;10037:79;;:::i;:::-;9999:119;10185:1;10174:9;10170:17;10157:31;10215:18;10207:6;10204:30;10201:117;;;10237:79;;:::i;:::-;10201:117;10342:78;10412:7;10403:6;10392:9;10388:22;10342:78;:::i;:::-;10332:88;;10128:302;10497:2;10486:9;10482:18;10469:32;10528:18;10520:6;10517:30;10514:117;;;10550:79;;:::i;:::-;10514:117;10655:78;10725:7;10716:6;10705:9;10701:22;10655:78;:::i;:::-;10645:88;;10440:303;9856:894;;;;;:::o;10756:118::-;10843:24;10861:5;10843:24;:::i;:::-;10838:3;10831:37;10756:118;;:::o;10880:222::-;10973:4;11011:2;11000:9;10996:18;10988:26;;11024:71;11092:1;11081:9;11077:17;11068:6;11024:71;:::i;:::-;10880:222;;;;:::o;11108:474::-;11176:6;11184;11233:2;11221:9;11212:7;11208:23;11204:32;11201:119;;;11239:79;;:::i;:::-;11201:119;11359:1;11384:53;11429:7;11420:6;11409:9;11405:22;11384:53;:::i;:::-;11374:63;;11330:117;11486:2;11512:53;11557:7;11548:6;11537:9;11533:22;11512:53;:::i;:::-;11502:63;;11457:118;11108:474;;;;;:::o;11588:116::-;11658:21;11673:5;11658:21;:::i;:::-;11651:5;11648:32;11638:60;;11694:1;11691;11684:12;11638:60;11588:116;:::o;11710:133::-;11753:5;11791:6;11778:20;11769:29;;11807:30;11831:5;11807:30;:::i;:::-;11710:133;;;;:::o;11849:323::-;11905:6;11954:2;11942:9;11933:7;11929:23;11925:32;11922:119;;;11960:79;;:::i;:::-;11922:119;12080:1;12105:50;12147:7;12138:6;12127:9;12123:22;12105:50;:::i;:::-;12095:60;;12051:114;11849:323;;;;:::o;12178:182::-;12318:34;12314:1;12306:6;12302:14;12295:58;12178:182;:::o;12366:366::-;12508:3;12529:67;12593:2;12588:3;12529:67;:::i;:::-;12522:74;;12605:93;12694:3;12605:93;:::i;:::-;12723:2;12718:3;12714:12;12707:19;;12366:366;;;:::o;12738:419::-;12904:4;12942:2;12931:9;12927:18;12919:26;;12991:9;12985:4;12981:20;12977:1;12966:9;12962:17;12955:47;13019:131;13145:4;13019:131;:::i;:::-;13011:139;;12738:419;;;:::o;13163:180::-;13211:77;13208:1;13201:88;13308:4;13305:1;13298:15;13332:4;13329:1;13322:15;13349:180;13397:77;13394:1;13387:88;13494:4;13491:1;13484:15;13518:4;13515:1;13508:15;13535:233;13574:3;13597:24;13615:5;13597:24;:::i;:::-;13588:33;;13643:66;13636:5;13633:77;13630:103;;13713:18;;:::i;:::-;13630:103;13760:1;13753:5;13749:13;13742:20;;13535:233;;;:::o;13774:348::-;13814:7;13837:20;13855:1;13837:20;:::i;:::-;13832:25;;13871:20;13889:1;13871:20;:::i;:::-;13866:25;;14059:1;13991:66;13987:74;13984:1;13981:81;13976:1;13969:9;13962:17;13958:105;13955:131;;;14066:18;;:::i;:::-;13955:131;14114:1;14111;14107:9;14096:20;;13774:348;;;;:::o;14128:85::-;14173:7;14202:5;14191:16;;14128:85;;;:::o;14219:60::-;14247:3;14268:5;14261:12;;14219:60;;;:::o;14285:158::-;14343:9;14376:61;14394:42;14403:32;14429:5;14403:32;:::i;:::-;14394:42;:::i;:::-;14376:61;:::i;:::-;14363:74;;14285:158;;;:::o;14449:147::-;14544:45;14583:5;14544:45;:::i;:::-;14539:3;14532:58;14449:147;;:::o;14602:807::-;14851:4;14889:3;14878:9;14874:19;14866:27;;14903:71;14971:1;14960:9;14956:17;14947:6;14903:71;:::i;:::-;14984:72;15052:2;15041:9;15037:18;15028:6;14984:72;:::i;:::-;15066:80;15142:2;15131:9;15127:18;15118:6;15066:80;:::i;:::-;15156;15232:2;15221:9;15217:18;15208:6;15156:80;:::i;:::-;15246:73;15314:3;15303:9;15299:19;15290:6;15246:73;:::i;:::-;15329;15397:3;15386:9;15382:19;15373:6;15329:73;:::i;:::-;14602:807;;;;;;;;;:::o;15415:143::-;15472:5;15503:6;15497:13;15488:22;;15519:33;15546:5;15519:33;:::i;:::-;15415:143;;;;:::o;15564:663::-;15652:6;15660;15668;15717:2;15705:9;15696:7;15692:23;15688:32;15685:119;;;15723:79;;:::i;:::-;15685:119;15843:1;15868:64;15924:7;15915:6;15904:9;15900:22;15868:64;:::i;:::-;15858:74;;15814:128;15981:2;16007:64;16063:7;16054:6;16043:9;16039:22;16007:64;:::i;:::-;15997:74;;15952:129;16120:2;16146:64;16202:7;16193:6;16182:9;16178:22;16146:64;:::i;:::-;16136:74;;16091:129;15564:663;;;;;:::o;16233:173::-;16373:25;16369:1;16361:6;16357:14;16350:49;16233:173;:::o;16412:366::-;16554:3;16575:67;16639:2;16634:3;16575:67;:::i;:::-;16568:74;;16651:93;16740:3;16651:93;:::i;:::-;16769:2;16764:3;16760:12;16753:19;;16412:366;;;:::o;16784:419::-;16950:4;16988:2;16977:9;16973:18;16965:26;;17037:9;17031:4;17027:20;17023:1;17012:9;17008:17;17001:47;17065:131;17191:4;17065:131;:::i;:::-;17057:139;;16784:419;;;:::o;17209:143::-;17266:5;17297:6;17291:13;17282:22;;17313:33;17340:5;17313:33;:::i;:::-;17209:143;;;;:::o;17358:351::-;17428:6;17477:2;17465:9;17456:7;17452:23;17448:32;17445:119;;;17483:79;;:::i;:::-;17445:119;17603:1;17628:64;17684:7;17675:6;17664:9;17660:22;17628:64;:::i;:::-;17618:74;;17574:128;17358:351;;;;:::o;17715:332::-;17836:4;17874:2;17863:9;17859:18;17851:26;;17887:71;17955:1;17944:9;17940:17;17931:6;17887:71;:::i;:::-;17968:72;18036:2;18025:9;18021:18;18012:6;17968:72;:::i;:::-;17715:332;;;;;:::o;18053:::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18225:71;18293:1;18282:9;18278:17;18269:6;18225:71;:::i;:::-;18306:72;18374:2;18363:9;18359:18;18350:6;18306:72;:::i;:::-;18053:332;;;;;:::o;18391:137::-;18445:5;18476:6;18470:13;18461:22;;18492:30;18516:5;18492:30;:::i;:::-;18391:137;;;;:::o;18534:345::-;18601:6;18650:2;18638:9;18629:7;18625:23;18621:32;18618:119;;;18656:79;;:::i;:::-;18618:119;18776:1;18801:61;18854:7;18845:6;18834:9;18830:22;18801:61;:::i;:::-;18791:71;;18747:125;18534:345;;;;:::o;18885:180::-;18933:77;18930:1;18923:88;19030:4;19027:1;19020:15;19054:4;19051:1;19044:15;19071:185;19111:1;19128:20;19146:1;19128:20;:::i;:::-;19123:25;;19162:20;19180:1;19162:20;:::i;:::-;19157:25;;19201:1;19191:35;;19206:18;;:::i;:::-;19191:35;19248:1;19245;19241:9;19236:14;;19071:185;;;;:::o;19262:220::-;19402:34;19398:1;19390:6;19386:14;19379:58;19471:3;19466:2;19458:6;19454:15;19447:28;19262:220;:::o;19488:366::-;19630:3;19651:67;19715:2;19710:3;19651:67;:::i;:::-;19644:74;;19727:93;19816:3;19727:93;:::i;:::-;19845:2;19840:3;19836:12;19829:19;;19488:366;;;:::o;19860:419::-;20026:4;20064:2;20053:9;20049:18;20041:26;;20113:9;20107:4;20103:20;20099:1;20088:9;20084:17;20077:47;20141:131;20267:4;20141:131;:::i;:::-;20133:139;;19860:419;;;:::o;20285:223::-;20425:34;20421:1;20413:6;20409:14;20402:58;20494:6;20489:2;20481:6;20477:15;20470:31;20285:223;:::o;20514:366::-;20656:3;20677:67;20741:2;20736:3;20677:67;:::i;:::-;20670:74;;20753:93;20842:3;20753:93;:::i;:::-;20871:2;20866:3;20862:12;20855:19;;20514:366;;;:::o;20886:419::-;21052:4;21090:2;21079:9;21075:18;21067:26;;21139:9;21133:4;21129:20;21125:1;21114:9;21110:17;21103:47;21167:131;21293:4;21167:131;:::i;:::-;21159:139;;20886:419;;;:::o;21311:221::-;21451:34;21447:1;21439:6;21435:14;21428:58;21520:4;21515:2;21507:6;21503:15;21496:29;21311:221;:::o;21538:366::-;21680:3;21701:67;21765:2;21760:3;21701:67;:::i;:::-;21694:74;;21777:93;21866:3;21777:93;:::i;:::-;21895:2;21890:3;21886:12;21879:19;;21538:366;;;:::o;21910:419::-;22076:4;22114:2;22103:9;22099:18;22091:26;;22163:9;22157:4;22153:20;22149:1;22138:9;22134:17;22127:47;22191:131;22317:4;22191:131;:::i;:::-;22183:139;;21910:419;;;:::o;22335:224::-;22475:34;22471:1;22463:6;22459:14;22452:58;22544:7;22539:2;22531:6;22527:15;22520:32;22335:224;:::o;22565:366::-;22707:3;22728:67;22792:2;22787:3;22728:67;:::i;:::-;22721:74;;22804:93;22893:3;22804:93;:::i;:::-;22922:2;22917:3;22913:12;22906:19;;22565:366;;;:::o;22937:419::-;23103:4;23141:2;23130:9;23126:18;23118:26;;23190:9;23184:4;23180:20;23176:1;23165:9;23161:17;23154:47;23218:131;23344:4;23218:131;:::i;:::-;23210:139;;22937:419;;;:::o;23362:222::-;23502:34;23498:1;23490:6;23486:14;23479:58;23571:5;23566:2;23558:6;23554:15;23547:30;23362:222;:::o;23590:366::-;23732:3;23753:67;23817:2;23812:3;23753:67;:::i;:::-;23746:74;;23829:93;23918:3;23829:93;:::i;:::-;23947:2;23942:3;23938:12;23931:19;;23590:366;;;:::o;23962:419::-;24128:4;24166:2;24155:9;24151:18;24143:26;;24215:9;24209:4;24205:20;24201:1;24190:9;24186:17;24179:47;24243:131;24369:4;24243:131;:::i;:::-;24235:139;;23962:419;;;:::o;24387:228::-;24527:34;24523:1;24515:6;24511:14;24504:58;24596:11;24591:2;24583:6;24579:15;24572:36;24387:228;:::o;24621:366::-;24763:3;24784:67;24848:2;24843:3;24784:67;:::i;:::-;24777:74;;24860:93;24949:3;24860:93;:::i;:::-;24978:2;24973:3;24969:12;24962:19;;24621:366;;;:::o;24993:419::-;25159:4;25197:2;25186:9;25182:18;25174:26;;25246:9;25240:4;25236:20;25232:1;25221:9;25217:17;25210:47;25274:131;25400:4;25274:131;:::i;:::-;25266:139;;24993:419;;;:::o;25418:177::-;25558:29;25554:1;25546:6;25542:14;25535:53;25418:177;:::o;25601:366::-;25743:3;25764:67;25828:2;25823:3;25764:67;:::i;:::-;25757:74;;25840:93;25929:3;25840:93;:::i;:::-;25958:2;25953:3;25949:12;25942:19;;25601:366;;;:::o;25973:419::-;26139:4;26177:2;26166:9;26162:18;26154:26;;26226:9;26220:4;26216:20;26212:1;26201:9;26197:17;26190:47;26254:131;26380:4;26254:131;:::i;:::-;26246:139;;25973:419;;;:::o;26398:176::-;26538:28;26534:1;26526:6;26522:14;26515:52;26398:176;:::o;26580:366::-;26722:3;26743:67;26807:2;26802:3;26743:67;:::i;:::-;26736:74;;26819:93;26908:3;26819:93;:::i;:::-;26937:2;26932:3;26928:12;26921:19;;26580:366;;;:::o;26952:419::-;27118:4;27156:2;27145:9;27141:18;27133:26;;27205:9;27199:4;27195:20;27191:1;27180:9;27176:17;27169:47;27233:131;27359:4;27233:131;:::i;:::-;27225:139;;26952:419;;;:::o;27377:169::-;27517:21;27513:1;27505:6;27501:14;27494:45;27377:169;:::o;27552:366::-;27694:3;27715:67;27779:2;27774:3;27715:67;:::i;:::-;27708:74;;27791:93;27880:3;27791:93;:::i;:::-;27909:2;27904:3;27900:12;27893:19;;27552:366;;;:::o;27924:419::-;28090:4;28128:2;28117:9;28113:18;28105:26;;28177:9;28171:4;28167:20;28163:1;28152:9;28148:17;28141:47;28205:131;28331:4;28205:131;:::i;:::-;28197:139;;27924:419;;;:::o;28349:305::-;28389:3;28408:20;28426:1;28408:20;:::i;:::-;28403:25;;28442:20;28460:1;28442:20;:::i;:::-;28437:25;;28596:1;28528:66;28524:74;28521:1;28518:81;28515:107;;;28602:18;;:::i;:::-;28515:107;28646:1;28643;28639:9;28632:16;;28349:305;;;;:::o;28660:178::-;28800:30;28796:1;28788:6;28784:14;28777:54;28660:178;:::o;28844:366::-;28986:3;29007:67;29071:2;29066:3;29007:67;:::i;:::-;29000:74;;29083:93;29172:3;29083:93;:::i;:::-;29201:2;29196:3;29192:12;29185:19;;28844:366;;;:::o;29216:419::-;29382:4;29420:2;29409:9;29405:18;29397:26;;29469:9;29463:4;29459:20;29455:1;29444:9;29440:17;29433:47;29497:131;29623:4;29497:131;:::i;:::-;29489:139;;29216:419;;;:::o;29641:191::-;29681:4;29701:20;29719:1;29701:20;:::i;:::-;29696:25;;29735:20;29753:1;29735:20;:::i;:::-;29730:25;;29774:1;29771;29768:8;29765:34;;;29779:18;;:::i;:::-;29765:34;29824:1;29821;29817:9;29809:17;;29641:191;;;;:::o;29838:442::-;29987:4;30025:2;30014:9;30010:18;30002:26;;30038:71;30106:1;30095:9;30091:17;30082:6;30038:71;:::i;:::-;30119:72;30187:2;30176:9;30172:18;30163:6;30119:72;:::i;:::-;30201;30269:2;30258:9;30254:18;30245:6;30201:72;:::i;:::-;29838:442;;;;;;:::o;30286:114::-;30353:6;30387:5;30381:12;30371:22;;30286:114;;;:::o;30406:184::-;30505:11;30539:6;30534:3;30527:19;30579:4;30574:3;30570:14;30555:29;;30406:184;;;;:::o;30596:132::-;30663:4;30686:3;30678:11;;30716:4;30711:3;30707:14;30699:22;;30596:132;;;:::o;30734:108::-;30811:24;30829:5;30811:24;:::i;:::-;30806:3;30799:37;30734:108;;:::o;30848:179::-;30917:10;30938:46;30980:3;30972:6;30938:46;:::i;:::-;31016:4;31011:3;31007:14;30993:28;;30848:179;;;;:::o;31033:113::-;31103:4;31135;31130:3;31126:14;31118:22;;31033:113;;;:::o;31182:732::-;31301:3;31330:54;31378:5;31330:54;:::i;:::-;31400:86;31479:6;31474:3;31400:86;:::i;:::-;31393:93;;31510:56;31560:5;31510:56;:::i;:::-;31589:7;31620:1;31605:284;31630:6;31627:1;31624:13;31605:284;;;31706:6;31700:13;31733:63;31792:3;31777:13;31733:63;:::i;:::-;31726:70;;31819:60;31872:6;31819:60;:::i;:::-;31809:70;;31665:224;31652:1;31649;31645:9;31640:14;;31605:284;;;31609:14;31905:3;31898:10;;31306:608;;;31182:732;;;;:::o;31920:831::-;32183:4;32221:3;32210:9;32206:19;32198:27;;32235:71;32303:1;32292:9;32288:17;32279:6;32235:71;:::i;:::-;32316:80;32392:2;32381:9;32377:18;32368:6;32316:80;:::i;:::-;32443:9;32437:4;32433:20;32428:2;32417:9;32413:18;32406:48;32471:108;32574:4;32565:6;32471:108;:::i;:::-;32463:116;;32589:72;32657:2;32646:9;32642:18;32633:6;32589:72;:::i;:::-;32671:73;32739:3;32728:9;32724:19;32715:6;32671:73;:::i;:::-;31920:831;;;;;;;;:::o;32757:177::-;32897:29;32893:1;32885:6;32881:14;32874:53;32757:177;:::o;32940:366::-;33082:3;33103:67;33167:2;33162:3;33103:67;:::i;:::-;33096:74;;33179:93;33268:3;33179:93;:::i;:::-;33297:2;33292:3;33288:12;33281:19;;32940:366;;;:::o;33312:419::-;33478:4;33516:2;33505:9;33501:18;33493:26;;33565:9;33559:4;33555:20;33551:1;33540:9;33536:17;33529:47;33593:131;33719:4;33593:131;:::i;:::-;33585:139;;33312:419;;;:::o

Swarm Source

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