ETH Price: $3,464.50 (+2.17%)
Gas: 7 Gwei

Token

Cyclone (CYCLONE)
 

Overview

Max Total Supply

1,000,000,000 CYCLONE

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
akhileshdubba.eth
Balance
2,352,346.657090614 CYCLONE

Value
$0.00
0x80106c6e3001bbd2620e329fe9411d4de371bb2c
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:
Cyclone

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-01
*/

/**

🌀 $CYCLONE 🌀
Cyclone is a super-deflationary project on Ethereum Chain that will integrate multiple dApps to reward holders based on the luck factor.

The dApps we plan to implement with $CYCLONE, will greatly help with making the project deflationary, since they will have integrated burning systems in place.

Benefits of $CYCLONE:
- deflationary
- anti sniper mechanism
- sliding tax mechanism

SLIDING TAX MECHANISM:

Starting tax: 10%
tax decreasing 1% every 15 minutes
Final tax: 4%

For fair launch follow us on:
https://twitter.com/Cycloneeth
https://t.me/cycloneeth

*/

pragma solidity ^0.8.15;
// SPDX-License-Identifier: UNLICENSED
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);
    }

}  

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

contract Cyclone is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 10**9 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    struct Taxes {
        uint256 buyFee1;
        uint256 buyFee2;
        uint256 sellFee1;
        uint256 sellFee2;
    }

    Taxes private _taxes = Taxes(0,17,0,17);
    uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2;
    uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2;
    address payable private _feeAddrWallet;
    uint256 private _feeRate = 20;

    uint256 private decreasingTaxFrequency = 15 minutes;
    uint256 private lastDecreasingTaxTime;
    
    string private constant _name = "Cyclone";
    string private constant _symbol = "CYCLONE";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    uint256 launchedAt;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    bool private _isBuy = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TaxChange(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(0x5FC02DB25483a9b4eA5EFfBe36D5ae6cF6004f60);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

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

    function _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(amount > 0, "Amount cannot be zero.");
        _isBuy = true;

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

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // buy
                require(amount <= _maxTxAmount, "Max transaction exceeded.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Max wallet exceeded.");
            }

            if (from != address(uniswapV2Router) && ! _isExcludedFromFee[from] && to == uniswapV2Pair){
                require(!bots[from] && !bots[to]);
                _isBuy = false;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
            }

            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                require(block.number >= (launchedAt + 6), "Anti sniper mechanism");
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                if (_taxes.buyFee2 == 17 || _taxes.sellFee2 == 17) {
                    _taxes.buyFee2 = 10;
                    _taxes.sellFee2 = 10;
                    lastDecreasingTaxTime = block.timestamp;
                    emit TaxChange(_taxes.buyFee2);
                }
            }

            if (_taxes.buyFee2 != 17 && _taxes.buyFee2 > 4 && block.timestamp >= lastDecreasingTaxTime + decreasingTaxFrequency) {
                _taxes.buyFee2 = _taxes.buyFee2.sub(1);
                _taxes.sellFee2 = _taxes.sellFee2.sub(1);
                lastDecreasingTaxTime = block.timestamp;
                emit TaxChange(_taxes.buyFee2);
            }
        }

        _tokenTransfer(from,to,amount);
    }

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

    function getIsBuy() private view returns (bool){
        return _isBuy;
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function getCurrentFees() public view returns (uint256, uint256, uint256, uint256) {
        return (_taxes.buyFee1, _taxes.buyFee2, _taxes.sellFee1, _taxes.sellFee2);
    }

    function adjustFees(uint256 buyFee1, uint256 buyFee2, uint256 sellFee1, uint256 sellFee2) external onlyOwner {
        require(buyFee1 + buyFee2 <= initialTotalBuyFee);
        require(sellFee1 + sellFee2 <= initialTotalSellFee);
        _taxes.buyFee1 = buyFee1;
        _taxes.buyFee2 = buyFee2;
        _taxes.sellFee1 = sellFee1;
        _taxes.sellFee2 = sellFee2;
    }

    function changeMaxTxAmount(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxTxAmount = _tTotal.mul(percentage).div(100);
    }

    function changeMaxWalletSize(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxWalletSize = _tTotal.mul(percentage).div(100);
    }

    function setFeeRate(uint256 rate) external onlyOwner() {
        require(rate<=49);
        _feeRate = rate;
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet.transfer(amount);
    }  

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading already open.");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(3).div(100);
        _maxWalletSize = _tTotal.mul(3).div(100);
        tradingOpen = true;
        launchedAt = block.number;
        lastDecreasingTaxTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addBot(address[] memory _bots) public onlyOwner {
        for (uint i = 0; i < _bots.length; i++) {
            if (_bots[i] != address(this) && _bots[i] != uniswapV2Pair && _bots[i] != address(uniswapV2Router)){
                bots[_bots[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}
    
    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = getIsBuy() ? _getTValues(tAmount, _taxes.buyFee1, _taxes.buyFee2) : _getTValues(tAmount, _taxes.sellFee1, _taxes.sellFee2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TaxChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee1","type":"uint256"},{"internalType":"uint256","name":"buyFee2","type":"uint256"},{"internalType":"uint256","name":"sellFee1","type":"uint256"},{"internalType":"uint256","name":"sellFee2","type":"uint256"}],"name":"adjustFees","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":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setFeeRate","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c9190620004d4565b6000196200002b91906200053b565b60085560405180608001604052806000815260200160118152602001600081526020016011815250600a600082015181600001556020820151816001015560408201518160020155606082015181600301555050600a60010154600a6000015462000097919062000576565b600e55600a60030154600a60020154620000b2919062000576565b600f5560146011556103846012556000601760006101000a81548160ff0219169083151502179055506000601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055506000601760036101000a81548160ff021916908315150217905550670de0b6b3a7640000601855670de0b6b3a76400006019553480156200015157600080fd5b506000620001646200046a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350735fc02db25483a9b4ea5effbe36d5ae6cf6004f60601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600260006200026e6200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002c26200047260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003f56200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200045c9190620005e4565b60405180910390a362000601565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004e1826200049b565b9150620004ee836200049b565b925082620005015762000500620004a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000548826200049b565b915062000555836200049b565b9250828210156200056b576200056a6200050c565b5b828203905092915050565b600062000583826200049b565b915062000590836200049b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005c857620005c76200050c565b5b828201905092915050565b620005de816200049b565b82525050565b6000602082019050620005fb6000830184620005d3565b92915050565b613c7380620006116000396000f3fe6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612ca5565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612d6f565b610555565b6040516101af9190612dca565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612de5565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e5b565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612fbe565b61067a565b005b34801561024157600080fd5b5061025c60048036038101906102579190613007565b6108dc565b6040516102699190612dca565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061305a565b6109b5565b005b3480156102a757600080fd5b506102b0610aa5565b6040516102bd91906130a3565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130be565b610aae565b005b3480156102fb57600080fd5b5061031660048036038101906103119190613117565b610b5b565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130be565b610c0d565b005b34801561034d57600080fd5b50610356610ce6565b005b34801561036457600080fd5b5061037f600480360381019061037a919061305a565b610d8c565b60405161038c9190612e5b565b60405180910390f35b3480156103a157600080fd5b506103aa610ddd565b005b3480156103b857600080fd5b506103c1610f30565b6040516103d19493929190613144565b60405180910390f35b3480156103e657600080fd5b506103ef610f5c565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190613198565b60405180910390f35b34801561042857600080fd5b5061043161103a565b60405161043e9190612ca5565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612d6f565b611077565b60405161047b9190612dca565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130be565b611095565b005b3480156104b957600080fd5b506104c261116e565b005b3480156104d057600080fd5b506104d961121c565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906131b3565b611795565b60405161050f9190612e5b565b60405180910390f35b60606040518060400160405280600781526020017f4379636c6f6e6500000000000000000000000000000000000000000000000000815250905090565b600061056961056261181c565b8484611824565b6001905092915050565b61057b61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff9061323f565b60405180910390fd5b600e548385610617919061328e565b111561062257600080fd5b600f548183610631919061328e565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b6000670de0b6b3a7640000905090565b61068261181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107069061323f565b60405180910390fd5b60005b81518110156108d8573073ffffffffffffffffffffffffffffffffffffffff16828281518110610745576107446132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b8576107b76132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082c5761082b6132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c55760016006600084848151811061086b5761086a6132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d090613313565b915050610712565b5050565b60006108e98484846119ed565b6109aa846108f561181c565b6109a585604051806060016040528060288152602001613c1660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b61181c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121539092919063ffffffff16565b611824565b600190509392505050565b6109bd61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a419061323f565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab661181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a9061323f565b60405180910390fd5b6031811115610b5157600080fd5b8060118190555050565b610b6361181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061323f565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c1561181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c999061323f565b60405180910390fd5b60008111610caf57600080fd5b610cdd6064610ccf83670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60188190555050565b610cee61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d729061323f565b60405180910390fd5b6000479050610d898161227b565b50565b6000610dd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122e7565b9050919050565b610de561181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061323f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f6461181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe89061323f565b60405180910390fd5b670de0b6b3a7640000601881905550670de0b6b3a7640000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4359434c4f4e4500000000000000000000000000000000000000000000000000815250905090565b600061108b61108461181c565b84846119ed565b6001905092915050565b61109d61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111219061323f565b60405180910390fd5b6000811161113757600080fd5b611165606461115783670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60198190555050565b61117661181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061323f565b60405180910390fd5b600061120e30610d8c565b905061121981612355565b50565b61122461181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a89061323f565b60405180910390fd5b601560149054906101000a900460ff1615611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f8906133a7565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670de0b6b3a7640000611824565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff91906133dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a91906133dc565b6040518363ffffffff1660e01b81526004016114a7929190613409565b6020604051808303816000875af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea91906133dc565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610d8c565b60008061157e611011565b426040518863ffffffff1660e01b81526004016115a096959493929190613477565b60606040518083038185885af11580156115be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e391906134ed565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff02191690831515021790555061164b606461163d6003670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60188190555061168060646116726003670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b6019819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161174e929190613540565b6020604051808303816000875af115801561176d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611791919061357e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061361d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f9906136af565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e09190612e5b565b60405180910390a3505050565b60008111611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a279061371b565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a53611011565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ac15750611a91611011565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561214357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b715750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc75750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bdf5750601760029054906101000a900460ff165b15611c8257601854811115611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090613787565b60405180910390fd5b60195481611c3684610d8c565b611c40919061328e565b1115611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c78906137f3565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d2a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e5157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e3557600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6000611e5c30610d8c565b9050611eb06064611ea2601154611e94601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b6121b790919063ffffffff16565b61223190919063ffffffff16565b811115611f0c57611f096064611efb601154611eed601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b6121b790919063ffffffff16565b61223190919063ffffffff16565b90505b601760009054906101000a900460ff16158015611f775750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f8f5750601760019054906101000a900460ff165b1561207e576006601654611fa3919061328e565b431015611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc9061385f565b60405180910390fd5b611fee81612355565b60004790506000811115612006576120054761227b565b5b6011600a60010154148061201f57506011600a60030154145b1561207c57600a8060010181905550600a8060030181905550426013819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516120739190612e5b565b60405180910390a15b505b6011600a600101541415801561209957506004600a60010154115b80156120b457506012546013546120b0919061328e565b4210155b15612141576120d26001600a600101546125da90919063ffffffff16565b600a600101819055506120f46001600a600301546125da90919063ffffffff16565b600a60030181905550426013819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516121389190612e5b565b60405180910390a15b505b61214e838383612624565b505050565b600083831115829061219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929190612ca5565b60405180910390fd5b50600083856121aa919061387f565b9050809150509392505050565b60008083036121c9576000905061222b565b600082846121d791906138b3565b90508284826121e6919061393c565b14612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d906139df565b60405180910390fd5b809150505b92915050565b600061227383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612634565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122e3573d6000803e3d6000fd5b5050565b600060085482111561232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613a71565b60405180910390fd5b6000612338612697565b905061234d818461223190919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561238d5761238c612e7b565b5b6040519080825280602002602001820160405280156123bb5781602001602082028036833780820191505090505b50905030816000815181106123d3576123d26132e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249e91906133dc565b816001815181106124b2576124b16132e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061251930601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611824565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c42612569919061328e565b6040518663ffffffff1660e01b8152600401612589959493929190613b4f565b600060405180830381600087803b1580156125a357600080fd5b505af11580156125b7573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b600061261c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612153565b905092915050565b61262f8383836126c2565b505050565b6000808311829061267b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126729190612ca5565b60405180910390fd5b506000838561268a919061393c565b9050809150509392505050565b60008060006126a461288d565b915091506126bb818361223190919063ffffffff16565b9250505090565b6000806000806000806126d4876128ec565b95509550955095509550955061273286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125da90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612813816129df565b61281d8483612a9c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161287a9190612e5b565b60405180910390a3505050505050505050565b600080600060085490506000670de0b6b3a764000090506128c1670de0b6b3a764000060085461223190919063ffffffff16565b8210156128df57600854670de0b6b3a76400009350935050506128e8565b81819350935050505b9091565b6000806000806000806000806000612902612ad6565b6129205761291b8a600a60020154600a60030154612aed565b612936565b6129358a600a60000154600a60010154612aed565b5b9250925092506000612946612697565b905060008060006129598e878787612b83565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612990919061328e565b9050838110156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90613bf5565b60405180910390fd5b8091505092915050565b60006129e9612697565b90506000612a0082846121b790919063ffffffff16565b9050612a5481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612ab1826008546125da90919063ffffffff16565b600881905550612acc8160095461298190919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612b196064612b0b888a6121b790919063ffffffff16565b61223190919063ffffffff16565b90506000612b436064612b35888b6121b790919063ffffffff16565b61223190919063ffffffff16565b90506000612b6c82612b5e858c6125da90919063ffffffff16565b6125da90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b9c85896121b790919063ffffffff16565b90506000612bb386896121b790919063ffffffff16565b90506000612bca87896121b790919063ffffffff16565b90506000612bf382612be585876125da90919063ffffffff16565b6125da90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c46578082015181840152602081019050612c2b565b83811115612c55576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c7782612c0c565b612c818185612c17565b9350612c91818560208601612c28565b612c9a81612c5b565b840191505092915050565b60006020820190508181036000830152612cbf8184612c6c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0682612cdb565b9050919050565b612d1681612cfb565b8114612d2157600080fd5b50565b600081359050612d3381612d0d565b92915050565b6000819050919050565b612d4c81612d39565b8114612d5757600080fd5b50565b600081359050612d6981612d43565b92915050565b60008060408385031215612d8657612d85612cd1565b5b6000612d9485828601612d24565b9250506020612da585828601612d5a565b9150509250929050565b60008115159050919050565b612dc481612daf565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b60008060008060808587031215612dff57612dfe612cd1565b5b6000612e0d87828801612d5a565b9450506020612e1e87828801612d5a565b9350506040612e2f87828801612d5a565b9250506060612e4087828801612d5a565b91505092959194509250565b612e5581612d39565b82525050565b6000602082019050612e706000830184612e4c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eb382612c5b565b810181811067ffffffffffffffff82111715612ed257612ed1612e7b565b5b80604052505050565b6000612ee5612cc7565b9050612ef18282612eaa565b919050565b600067ffffffffffffffff821115612f1157612f10612e7b565b5b602082029050602081019050919050565b600080fd5b6000612f3a612f3584612ef6565b612edb565b90508083825260208201905060208402830185811115612f5d57612f5c612f22565b5b835b81811015612f865780612f728882612d24565b845260208401935050602081019050612f5f565b5050509392505050565b600082601f830112612fa557612fa4612e76565b5b8135612fb5848260208601612f27565b91505092915050565b600060208284031215612fd457612fd3612cd1565b5b600082013567ffffffffffffffff811115612ff257612ff1612cd6565b5b612ffe84828501612f90565b91505092915050565b6000806000606084860312156130205761301f612cd1565b5b600061302e86828701612d24565b935050602061303f86828701612d24565b925050604061305086828701612d5a565b9150509250925092565b6000602082840312156130705761306f612cd1565b5b600061307e84828501612d24565b91505092915050565b600060ff82169050919050565b61309d81613087565b82525050565b60006020820190506130b86000830184613094565b92915050565b6000602082840312156130d4576130d3612cd1565b5b60006130e284828501612d5a565b91505092915050565b6130f481612daf565b81146130ff57600080fd5b50565b600081359050613111816130eb565b92915050565b60006020828403121561312d5761312c612cd1565b5b600061313b84828501613102565b91505092915050565b60006080820190506131596000830187612e4c565b6131666020830186612e4c565b6131736040830185612e4c565b6131806060830184612e4c565b95945050505050565b61319281612cfb565b82525050565b60006020820190506131ad6000830184613189565b92915050565b600080604083850312156131ca576131c9612cd1565b5b60006131d885828601612d24565b92505060206131e985828601612d24565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613229602083612c17565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061329982612d39565b91506132a483612d39565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132d9576132d861325f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061331e82612d39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133505761334f61325f565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613391601583612c17565b915061339c8261335b565b602082019050919050565b600060208201905081810360008301526133c081613384565b9050919050565b6000815190506133d681612d0d565b92915050565b6000602082840312156133f2576133f1612cd1565b5b6000613400848285016133c7565b91505092915050565b600060408201905061341e6000830185613189565b61342b6020830184613189565b9392505050565b6000819050919050565b6000819050919050565b600061346161345c61345784613432565b61343c565b612d39565b9050919050565b61347181613446565b82525050565b600060c08201905061348c6000830189613189565b6134996020830188612e4c565b6134a66040830187613468565b6134b36060830186613468565b6134c06080830185613189565b6134cd60a0830184612e4c565b979650505050505050565b6000815190506134e781612d43565b92915050565b60008060006060848603121561350657613505612cd1565b5b6000613514868287016134d8565b9350506020613525868287016134d8565b9250506040613536868287016134d8565b9150509250925092565b60006040820190506135556000830185613189565b6135626020830184612e4c565b9392505050565b600081519050613578816130eb565b92915050565b60006020828403121561359457613593612cd1565b5b60006135a284828501613569565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613607602483612c17565b9150613612826135ab565b604082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613699602283612c17565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613705601683612c17565b9150613710826136cf565b602082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613771601983612c17565b915061377c8261373b565b602082019050919050565b600060208201905081810360008301526137a081613764565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006137dd601483612c17565b91506137e8826137a7565b602082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f416e746920736e69706572206d656368616e69736d0000000000000000000000600082015250565b6000613849601583612c17565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612d39565b915061389583612d39565b9250828210156138a8576138a761325f565b5b828203905092915050565b60006138be82612d39565b91506138c983612d39565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139025761390161325f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394782612d39565b915061395283612d39565b9250826139625761396161390d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c9602183612c17565b91506139d48261396d565b604082019050919050565b600060208201905081810360008301526139f8816139bc565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a5b602a83612c17565b9150613a66826139ff565b604082019050919050565b60006020820190508181036000830152613a8a81613a4e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ac681612cfb565b82525050565b6000613ad88383613abd565b60208301905092915050565b6000602082019050919050565b6000613afc82613a91565b613b068185613a9c565b9350613b1183613aad565b8060005b83811015613b42578151613b298882613acc565b9750613b3483613ae4565b925050600181019050613b15565b5085935050505092915050565b600060a082019050613b646000830188612e4c565b613b716020830187613468565b8181036040830152613b838186613af1565b9050613b926060830185613189565b613b9f6080830184612e4c565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bdf601b83612c17565b9150613bea82613ba9565b602082019050919050565b60006020820190508181036000830152613c0e81613bd2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adc83ba652b29419c89fc3223bd2f76447df93197beba77289edfb64d11fdb5764736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612ca5565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612d6f565b610555565b6040516101af9190612dca565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612de5565b610573565b005b3480156101ed57600080fd5b506101f661066a565b6040516102039190612e5b565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612fbe565b61067a565b005b34801561024157600080fd5b5061025c60048036038101906102579190613007565b6108dc565b6040516102699190612dca565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061305a565b6109b5565b005b3480156102a757600080fd5b506102b0610aa5565b6040516102bd91906130a3565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906130be565b610aae565b005b3480156102fb57600080fd5b5061031660048036038101906103119190613117565b610b5b565b005b34801561032457600080fd5b5061033f600480360381019061033a91906130be565b610c0d565b005b34801561034d57600080fd5b50610356610ce6565b005b34801561036457600080fd5b5061037f600480360381019061037a919061305a565b610d8c565b60405161038c9190612e5b565b60405180910390f35b3480156103a157600080fd5b506103aa610ddd565b005b3480156103b857600080fd5b506103c1610f30565b6040516103d19493929190613144565b60405180910390f35b3480156103e657600080fd5b506103ef610f5c565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190613198565b60405180910390f35b34801561042857600080fd5b5061043161103a565b60405161043e9190612ca5565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612d6f565b611077565b60405161047b9190612dca565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906130be565b611095565b005b3480156104b957600080fd5b506104c261116e565b005b3480156104d057600080fd5b506104d961121c565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906131b3565b611795565b60405161050f9190612e5b565b60405180910390f35b60606040518060400160405280600781526020017f4379636c6f6e6500000000000000000000000000000000000000000000000000815250905090565b600061056961056261181c565b8484611824565b6001905092915050565b61057b61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff9061323f565b60405180910390fd5b600e548385610617919061328e565b111561062257600080fd5b600f548183610631919061328e565b111561063c57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b6000670de0b6b3a7640000905090565b61068261181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107069061323f565b60405180910390fd5b60005b81518110156108d8573073ffffffffffffffffffffffffffffffffffffffff16828281518110610745576107446132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b8576107b76132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b801561084d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061082c5761082b6132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c55760016006600084848151811061086b5761086a6132e4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108d090613313565b915050610712565b5050565b60006108e98484846119ed565b6109aa846108f561181c565b6109a585604051806060016040528060288152602001613c1660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b61181c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121539092919063ffffffff16565b611824565b600190509392505050565b6109bd61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a419061323f565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab661181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a9061323f565b60405180910390fd5b6031811115610b5157600080fd5b8060118190555050565b610b6361181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be79061323f565b60405180910390fd5b80601760026101000a81548160ff02191690831515021790555050565b610c1561181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c999061323f565b60405180910390fd5b60008111610caf57600080fd5b610cdd6064610ccf83670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60188190555050565b610cee61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d729061323f565b60405180910390fd5b6000479050610d898161227b565b50565b6000610dd6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122e7565b9050919050565b610de561181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e699061323f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f6461181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe89061323f565b60405180910390fd5b670de0b6b3a7640000601881905550670de0b6b3a7640000601981905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4359434c4f4e4500000000000000000000000000000000000000000000000000815250905090565b600061108b61108461181c565b84846119ed565b6001905092915050565b61109d61181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111219061323f565b60405180910390fd5b6000811161113757600080fd5b611165606461115783670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60198190555050565b61117661181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061323f565b60405180910390fd5b600061120e30610d8c565b905061121981612355565b50565b61122461181c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a89061323f565b60405180910390fd5b601560149054906101000a900460ff1615611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f8906133a7565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061139030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16670de0b6b3a7640000611824565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff91906133dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a91906133dc565b6040518363ffffffff1660e01b81526004016114a7929190613409565b6020604051808303816000875af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea91906133dc565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610d8c565b60008061157e611011565b426040518863ffffffff1660e01b81526004016115a096959493929190613477565b60606040518083038185885af11580156115be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115e391906134ed565b5050506001601760016101000a81548160ff0219169083151502179055506001601760026101000a81548160ff02191690831515021790555061164b606461163d6003670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b60188190555061168060646116726003670de0b6b3a76400006121b790919063ffffffff16565b61223190919063ffffffff16565b6019819055506001601560146101000a81548160ff0219169083151502179055504360168190555042601381905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161174e929190613540565b6020604051808303816000875af115801561176d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611791919061357e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061361d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f9906136af565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e09190612e5b565b60405180910390a3505050565b60008111611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a279061371b565b60405180910390fd5b6001601760036101000a81548160ff021916908315150217905550611a53611011565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ac15750611a91611011565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561214357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b715750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc75750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bdf5750601760029054906101000a900460ff165b15611c8257601854811115611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090613787565b60405180910390fd5b60195481611c3684610d8c565b611c40919061328e565b1115611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c78906137f3565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d2a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e5157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e2c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e3557600080fd5b6000601760036101000a81548160ff0219169083151502179055505b6000611e5c30610d8c565b9050611eb06064611ea2601154611e94601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b6121b790919063ffffffff16565b61223190919063ffffffff16565b811115611f0c57611f096064611efb601154611eed601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d8c565b6121b790919063ffffffff16565b61223190919063ffffffff16565b90505b601760009054906101000a900460ff16158015611f775750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f8f5750601760019054906101000a900460ff165b1561207e576006601654611fa3919061328e565b431015611fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdc9061385f565b60405180910390fd5b611fee81612355565b60004790506000811115612006576120054761227b565b5b6011600a60010154148061201f57506011600a60030154145b1561207c57600a8060010181905550600a8060030181905550426013819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516120739190612e5b565b60405180910390a15b505b6011600a600101541415801561209957506004600a60010154115b80156120b457506012546013546120b0919061328e565b4210155b15612141576120d26001600a600101546125da90919063ffffffff16565b600a600101819055506120f46001600a600301546125da90919063ffffffff16565b600a60030181905550426013819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516121389190612e5b565b60405180910390a15b505b61214e838383612624565b505050565b600083831115829061219b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121929190612ca5565b60405180910390fd5b50600083856121aa919061387f565b9050809150509392505050565b60008083036121c9576000905061222b565b600082846121d791906138b3565b90508284826121e6919061393c565b14612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d906139df565b60405180910390fd5b809150505b92915050565b600061227383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612634565b905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122e3573d6000803e3d6000fd5b5050565b600060085482111561232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613a71565b60405180910390fd5b6000612338612697565b905061234d818461223190919063ffffffff16565b915050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561238d5761238c612e7b565b5b6040519080825280602002602001820160405280156123bb5781602001602082028036833780820191505090505b50905030816000815181106123d3576123d26132e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249e91906133dc565b816001815181106124b2576124b16132e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061251930601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611824565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c42612569919061328e565b6040518663ffffffff1660e01b8152600401612589959493929190613b4f565b600060405180830381600087803b1580156125a357600080fd5b505af11580156125b7573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b600061261c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612153565b905092915050565b61262f8383836126c2565b505050565b6000808311829061267b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126729190612ca5565b60405180910390fd5b506000838561268a919061393c565b9050809150509392505050565b60008060006126a461288d565b915091506126bb818361223190919063ffffffff16565b9250505090565b6000806000806000806126d4876128ec565b95509550955095509550955061273286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125da90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612813816129df565b61281d8483612a9c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161287a9190612e5b565b60405180910390a3505050505050505050565b600080600060085490506000670de0b6b3a764000090506128c1670de0b6b3a764000060085461223190919063ffffffff16565b8210156128df57600854670de0b6b3a76400009350935050506128e8565b81819350935050505b9091565b6000806000806000806000806000612902612ad6565b6129205761291b8a600a60020154600a60030154612aed565b612936565b6129358a600a60000154600a60010154612aed565b5b9250925092506000612946612697565b905060008060006129598e878787612b83565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612990919061328e565b9050838110156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90613bf5565b60405180910390fd5b8091505092915050565b60006129e9612697565b90506000612a0082846121b790919063ffffffff16565b9050612a5481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612ab1826008546125da90919063ffffffff16565b600881905550612acc8160095461298190919063ffffffff16565b6009819055505050565b6000601760039054906101000a900460ff16905090565b600080600080612b196064612b0b888a6121b790919063ffffffff16565b61223190919063ffffffff16565b90506000612b436064612b35888b6121b790919063ffffffff16565b61223190919063ffffffff16565b90506000612b6c82612b5e858c6125da90919063ffffffff16565b6125da90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b9c85896121b790919063ffffffff16565b90506000612bb386896121b790919063ffffffff16565b90506000612bca87896121b790919063ffffffff16565b90506000612bf382612be585876125da90919063ffffffff16565b6125da90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c46578082015181840152602081019050612c2b565b83811115612c55576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c7782612c0c565b612c818185612c17565b9350612c91818560208601612c28565b612c9a81612c5b565b840191505092915050565b60006020820190508181036000830152612cbf8184612c6c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0682612cdb565b9050919050565b612d1681612cfb565b8114612d2157600080fd5b50565b600081359050612d3381612d0d565b92915050565b6000819050919050565b612d4c81612d39565b8114612d5757600080fd5b50565b600081359050612d6981612d43565b92915050565b60008060408385031215612d8657612d85612cd1565b5b6000612d9485828601612d24565b9250506020612da585828601612d5a565b9150509250929050565b60008115159050919050565b612dc481612daf565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b60008060008060808587031215612dff57612dfe612cd1565b5b6000612e0d87828801612d5a565b9450506020612e1e87828801612d5a565b9350506040612e2f87828801612d5a565b9250506060612e4087828801612d5a565b91505092959194509250565b612e5581612d39565b82525050565b6000602082019050612e706000830184612e4c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612eb382612c5b565b810181811067ffffffffffffffff82111715612ed257612ed1612e7b565b5b80604052505050565b6000612ee5612cc7565b9050612ef18282612eaa565b919050565b600067ffffffffffffffff821115612f1157612f10612e7b565b5b602082029050602081019050919050565b600080fd5b6000612f3a612f3584612ef6565b612edb565b90508083825260208201905060208402830185811115612f5d57612f5c612f22565b5b835b81811015612f865780612f728882612d24565b845260208401935050602081019050612f5f565b5050509392505050565b600082601f830112612fa557612fa4612e76565b5b8135612fb5848260208601612f27565b91505092915050565b600060208284031215612fd457612fd3612cd1565b5b600082013567ffffffffffffffff811115612ff257612ff1612cd6565b5b612ffe84828501612f90565b91505092915050565b6000806000606084860312156130205761301f612cd1565b5b600061302e86828701612d24565b935050602061303f86828701612d24565b925050604061305086828701612d5a565b9150509250925092565b6000602082840312156130705761306f612cd1565b5b600061307e84828501612d24565b91505092915050565b600060ff82169050919050565b61309d81613087565b82525050565b60006020820190506130b86000830184613094565b92915050565b6000602082840312156130d4576130d3612cd1565b5b60006130e284828501612d5a565b91505092915050565b6130f481612daf565b81146130ff57600080fd5b50565b600081359050613111816130eb565b92915050565b60006020828403121561312d5761312c612cd1565b5b600061313b84828501613102565b91505092915050565b60006080820190506131596000830187612e4c565b6131666020830186612e4c565b6131736040830185612e4c565b6131806060830184612e4c565b95945050505050565b61319281612cfb565b82525050565b60006020820190506131ad6000830184613189565b92915050565b600080604083850312156131ca576131c9612cd1565b5b60006131d885828601612d24565b92505060206131e985828601612d24565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613229602083612c17565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061329982612d39565b91506132a483612d39565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132d9576132d861325f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061331e82612d39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133505761334f61325f565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613391601583612c17565b915061339c8261335b565b602082019050919050565b600060208201905081810360008301526133c081613384565b9050919050565b6000815190506133d681612d0d565b92915050565b6000602082840312156133f2576133f1612cd1565b5b6000613400848285016133c7565b91505092915050565b600060408201905061341e6000830185613189565b61342b6020830184613189565b9392505050565b6000819050919050565b6000819050919050565b600061346161345c61345784613432565b61343c565b612d39565b9050919050565b61347181613446565b82525050565b600060c08201905061348c6000830189613189565b6134996020830188612e4c565b6134a66040830187613468565b6134b36060830186613468565b6134c06080830185613189565b6134cd60a0830184612e4c565b979650505050505050565b6000815190506134e781612d43565b92915050565b60008060006060848603121561350657613505612cd1565b5b6000613514868287016134d8565b9350506020613525868287016134d8565b9250506040613536868287016134d8565b9150509250925092565b60006040820190506135556000830185613189565b6135626020830184612e4c565b9392505050565b600081519050613578816130eb565b92915050565b60006020828403121561359457613593612cd1565b5b60006135a284828501613569565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613607602483612c17565b9150613612826135ab565b604082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613699602283612c17565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b6000613705601683612c17565b9150613710826136cf565b602082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613771601983612c17565b915061377c8261373b565b602082019050919050565b600060208201905081810360008301526137a081613764565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006137dd601483612c17565b91506137e8826137a7565b602082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f416e746920736e69706572206d656368616e69736d0000000000000000000000600082015250565b6000613849601583612c17565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b600061388a82612d39565b915061389583612d39565b9250828210156138a8576138a761325f565b5b828203905092915050565b60006138be82612d39565b91506138c983612d39565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139025761390161325f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394782612d39565b915061395283612d39565b9250826139625761396161390d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139c9602183612c17565b91506139d48261396d565b604082019050919050565b600060208201905081810360008301526139f8816139bc565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a5b602a83612c17565b9150613a66826139ff565b604082019050919050565b60006020820190508181036000830152613a8a81613a4e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ac681612cfb565b82525050565b6000613ad88383613abd565b60208301905092915050565b6000602082019050919050565b6000613afc82613a91565b613b068185613a9c565b9350613b1183613aad565b8060005b83811015613b42578151613b298882613acc565b9750613b3483613ae4565b925050600181019050613b15565b5085935050505092915050565b600060a082019050613b646000830188612e4c565b613b716020830187613468565b8181036040830152613b838186613af1565b9050613b926060830185613189565b613b9f6080830184612e4c565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bdf601b83612c17565b9150613bea82613ba9565b602082019050919050565b60006020820190508181036000830152613c0e81613bd2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adc83ba652b29419c89fc3223bd2f76447df93197beba77289edfb64d11fdb5764736f6c634300080f0033

Deployed Bytecode Sourcemap

4131:12838:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6345:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7197:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11453:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6622:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13396:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7366:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13704:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6531:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12189:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7687:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11843:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15040:153;;;;;;;;;;;;;:::i;:::-;;6725:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:148;;;;;;;;;;;;;:::i;:::-;;11270:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;11144:118;;;;;;;;;;;;;:::i;:::-;;2996:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6436:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6871:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12014;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14874:154;;;;;;;;;;;;;:::i;:::-;;12428:956;;;;;;;;;;;;;:::i;:::-;;7046:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6345:83;6382:13;6415:5;;;;;;;;;;;;;;;;;6408:12;;6345:83;:::o;7197:161::-;7272:4;7289:39;7298:12;:10;:12::i;:::-;7312:7;7321:6;7289:8;:39::i;:::-;7346:4;7339:11;;7197:161;;;;:::o;11453:382::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11602:18:::1;;11591:7;11581;:17;;;;:::i;:::-;:39;;11573:48;;;::::0;::::1;;11663:19;;11651:8;11640;:19;;;;:::i;:::-;:42;;11632:51;;;::::0;::::1;;11711:7;11694:6;:14;;:24;;;;11746:7;11729:6;:14;;:24;;;;11782:8;11764:6;:15;;:26;;;;11819:8;11801:6;:15;;:26;;;;11453:382:::0;;;;:::o;6622:95::-;6675:7;4631:17;6695:14;;6622:95;:::o;13396:296::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13469:6:::1;13464:221;13485:5;:12;13481:1;:16;13464:221;;;13543:4;13523:25;;:5;13529:1;13523:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;13564:13;;;;;;;;;;;13552:25;;:5;13558:1;13552:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;13523:54;:94;;;;;13601:15;;;;;;;;;;;13581:36;;:5;13587:1;13581:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13523:94;13519:155;;;13654:4;13637;:14;13642:5;13648:1;13642:8;;;;;;;;:::i;:::-;;;;;;;;13637:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13519:155;13499:3;;;;;:::i;:::-;;;;13464:221;;;;13396:296:::0;:::o;7366:313::-;7464:4;7481:36;7491:6;7499:9;7510:6;7481:9;:36::i;:::-;7528:121;7537:6;7545:12;:10;:12::i;:::-;7559:89;7597:6;7559:89;;;;;;;;;;;;;;;;;:11;:19;7571:6;7559:19;;;;;;;;;;;;;;;:33;7579:12;:10;:12::i;:::-;7559:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7528:8;:121::i;:::-;7667:4;7660:11;;7366:313;;;;;:::o;13704:88::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13779:5:::1;13764:4;:12;13769:6;13764:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13704:88:::0;:::o;6531:83::-;6572:5;5408:1;6590:16;;6531:83;:::o;12189:117::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12269:2:::1;12263:4;:8;;12255:17;;;::::0;::::1;;12294:4;12283:8;:15;;;;12189:117:::0;:::o;7687:103::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7777:5:::1;7759:15;;:23;;;;;;;;;;;;;;;;;;7687:103:::0;:::o;11843:163::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11938:1:::1;11927:10;:12;11919:21;;;::::0;::::1;;11966:32;11994:3;11966:23;11978:10;4631:17;11966:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11951:12;:47;;;;11843:163:::0;:::o;15040:153::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15092:26:::1;15121:21;15092:50;;15153:32;15166:18;15153:12;:32::i;:::-;15081:112;15040:153::o:0;6725:138::-;6791:7;6818:37;6838:7;:16;6846:7;6838:16;;;;;;;;;;;;;;;;6818:19;:37::i;:::-;6811:44;;6725:138;;;:::o;3210:148::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3317:1:::1;3280:40;;3301:6;::::0;::::1;;;;;;;;3280:40;;;;;;;;;;;;3348:1;3331:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3210:148::o:0;11270:175::-;11317:7;11326;11335;11344;11372:6;:14;;;11388:6;:14;;;11404:6;:15;;;11421:6;:15;;;11364:73;;;;;;;;11270:175;;;;:::o;11144:118::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4631:17:::1;11197:12;:22;;;;4631:17;11230:14;:24;;;;11144:118::o:0;2996:79::-;3034:7;3061:6;;;;;;;;;;;3054:13;;2996:79;:::o;6436:87::-;6475:13;6508:7;;;;;;;;;;;;;;;;;6501:14;;6436:87;:::o;6871:167::-;6949:4;6966:42;6976:12;:10;:12::i;:::-;6990:9;7001:6;6966:9;:42::i;:::-;7026:4;7019:11;;6871:167;;;;:::o;12014:::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12111:1:::1;12100:10;:12;12092:21;;;::::0;::::1;;12141:32;12169:3;12141:23;12153:10;4631:17;12141:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;12124:14;:49;;;;12014:167:::0;:::o;14874:154::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14926:23:::1;14952:24;14970:4;14952:9;:24::i;:::-;14926:50;;14987:33;15004:15;14987:16;:33::i;:::-;14915:113;14874:154::o:0;12428:956::-;3133:12;:10;:12::i;:::-;3123:22;;:6;;;;;;;;;;:22;;;3115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12492:11:::1;;;;;;;;;;;12491:12;12483:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12540:35;12597:42;12540:100;;12669:16;12651:15;;:34;;;;;;;;;;;;;;;;;;12696:58;12713:4;12728:15;;;;;;;;;;;4631:17;12696:8;:58::i;:::-;12799:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12781:56;;;12846:4;12853:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12781:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12765:13;;:112;;;;;;;;;;;;;;;;;;12888:15;;;;;;;;;;;:31;;;12927:21;12958:4;12964:24;12982:4;12964:9;:24::i;:::-;12989:1;12991::::0;12993:7:::1;:5;:7::i;:::-;13001:15;12888:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13042:4;13028:11;;:18;;;;;;;;;;;;;;;;;;13075:4;13057:15;;:22;;;;;;;;;;;;;;;;;;13105:23;13124:3;13105:14;13117:1;4631:17;13105:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13090:12;:38;;;;13156:23;13175:3;13156:14;13168:1;4631:17;13156:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;13139:14;:40;;;;13204:4;13190:11;;:18;;;;;;;;;;;;;;;;;;13232:12;13219:10;:25;;;;13279:15;13255:21;:39;;;;13312:13;;;;;;;;;;;13305:29;;;13343:15;;;;;;;;;;;13361:14;13305:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12472:912;12428:956::o:0;7046:143::-;7127:7;7154:11;:18;7166:5;7154:18;;;;;;;;;;;;;;;:27;7173:7;7154:27;;;;;;;;;;;;;;;;7147:34;;7046:143;;;;:::o;714:98::-;767:7;794:10;787:17;;714:98;:::o;8060:335::-;8170:1;8153:19;;:5;:19;;;8145:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8251:1;8232:21;;:7;:21;;;8224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8333:6;8303:11;:18;8315:5;8303:18;;;;;;;;;;;;;;;:27;8322:7;8303:27;;;;;;;;;;;;;;;:36;;;;8371:7;8355:32;;8364:5;8355:32;;;8380:6;8355:32;;;;;;:::i;:::-;;;;;;;;8060:335;;;:::o;8403:2150::-;8500:1;8491:6;:10;8483:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8548:4;8539:6;;:13;;;;;;;;;;;;;;;;;;8577:7;:5;:7::i;:::-;8569:15;;:4;:15;;;;:32;;;;;8594:7;:5;:7::i;:::-;8588:13;;:2;:13;;;;8569:32;8565:1938;;;8632:13;;;;;;;;;;;8624:21;;:4;:21;;;:55;;;;;8663:15;;;;;;;;;;;8649:30;;:2;:30;;;;8624:55;:83;;;;;8685:18;:22;8704:2;8685:22;;;;;;;;;;;;;;;;;;;;;;;;;8683:24;8624:83;:102;;;;;8711:15;;;;;;;;;;;8624:102;8620:319;;;8789:12;;8779:6;:22;;8771:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8884:14;;8874:6;8858:13;8868:2;8858:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8850:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8620:319;8975:15;;;;;;;;;;;8959:32;;:4;:32;;;;:62;;;;;8997:18;:24;9016:4;8997:24;;;;;;;;;;;;;;;;;;;;;;;;;8995:26;8959:62;:85;;;;;9031:13;;;;;;;;;;;9025:19;;:2;:19;;;8959:85;8955:191;;;9073:4;:10;9078:4;9073:10;;;;;;;;;;;;;;;;;;;;;;;;;9072:11;:24;;;;;9088:4;:8;9093:2;9088:8;;;;;;;;;;;;;;;;;;;;;;;;;9087:9;9072:24;9064:33;;;;;;9125:5;9116:6;;:14;;;;;;;;;;;;;;;;;;8955:191;9162:28;9193:24;9211:4;9193:9;:24::i;:::-;9162:55;;9258:47;9301:3;9258:38;9287:8;;9258:24;9268:13;;;;;;;;;;;9258:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9235:20;:70;9232:180;;;9349:47;9392:3;9349:38;9378:8;;9349:24;9359:13;;;;;;;;;;;9349:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9326:70;;9232:180;9433:6;;;;;;;;;;;9432:7;:32;;;;;9451:13;;;;;;;;;;;9443:21;;:4;:21;;;;9432:32;:47;;;;;9468:11;;;;;;;;;;;9432:47;9428:692;;;9538:1;9525:10;;:14;;;;:::i;:::-;9508:12;:32;;9500:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9585:38;9602:20;9585:16;:38::i;:::-;9642:26;9671:21;9642:50;;9735:1;9714:18;:22;9711:105;;;9761:35;9774:21;9761:12;:35::i;:::-;9711:105;9856:2;9838:6;:14;;;:20;:45;;;;9881:2;9862:6;:15;;;:21;9838:45;9834:271;;;9925:2;9908:6;:14;;:19;;;;9968:2;9950:6;:15;;:20;;;;10017:15;9993:21;:39;;;;10060:25;10070:6;:14;;;10060:25;;;;;;:::i;:::-;;;;;;;;9834:271;9481:639;9428:692;10158:2;10140:6;:14;;;:20;;:42;;;;;10181:1;10164:6;:14;;;:18;10140:42;:111;;;;;10229:22;;10205:21;;:46;;;;:::i;:::-;10186:15;:65;;10140:111;10136:356;;;10289:21;10308:1;10289:6;:14;;;:18;;:21;;;;:::i;:::-;10272:6;:14;;:38;;;;10347:22;10367:1;10347:6;:15;;;:19;;:22;;;;:::i;:::-;10329:6;:15;;:40;;;;10412:15;10388:21;:39;;;;10451:25;10461:6;:14;;;10451:25;;;;;;:::i;:::-;;;;;;;;10136:356;8603:1900;8565:1938;10515:30;10530:4;10535:2;10538:6;10515:14;:30::i;:::-;8403:2150;;;:::o;1851:190::-;1937:7;1970:1;1965;:6;;1973:12;1957:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1997:9;2013:1;2009;:5;;;;:::i;:::-;1997:17;;2032:1;2025:8;;;1851:190;;;;;:::o;2049:246::-;2107:7;2136:1;2131;:6;2127:47;;2161:1;2154:8;;;;2127:47;2184:9;2200:1;2196;:5;;;;:::i;:::-;2184:17;;2229:1;2224;2220;:5;;;;:::i;:::-;:10;2212:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2286:1;2279:8;;;2049:246;;;;;:::o;2303:132::-;2361:7;2388:39;2392:1;2395;2388:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2381:46;;2303:132;;;;:::o;12322:96::-;12379:14;;;;;;;;;;;:23;;:31;12403:6;12379:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12322:96;:::o;7798:254::-;7865:7;7904;;7893;:18;;7885:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7969:19;7992:10;:8;:10::i;:::-;7969:33;;8020:24;8032:11;8020:7;:11;;:24;;;;:::i;:::-;8013:31;;;7798:254;;;:::o;10561:488::-;5929:4;5920:6;;:13;;;;;;;;;;;;;;;;;;10639:21:::1;10677:1;10663:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10639:40;;10708:4;10690;10695:1;10690:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10734:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10724:4;10729:1;10724:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10767:62;10784:4;10799:15;;;;;;;;;;;10817:11;10767:8;:62::i;:::-;10840:15;;;;;;;;;;;:66;;;10921:11;10947:1;10963:4;10990;11028:2;11010:15;:20;;;;:::i;:::-;10840:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10628:421;5965:5:::0;5956:6;;:14;;;;;;;;;;;;;;;;;;10561:488;:::o;1707:136::-;1765:7;1792:43;1796:1;1799;1792:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1785:50;;1707:136;;;;:::o;13808:146::-;13902:44;13920:6;13928:9;13939:6;13902:17;:44::i;:::-;13808:146;;;:::o;2443:189::-;2529:7;2561:1;2557;:5;2564:12;2549:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2588:9;2604:1;2600;:5;;;;:::i;:::-;2588:17;;2623:1;2616:8;;;2443:189;;;;;:::o;16533:163::-;16574:7;16595:15;16612;16631:19;:17;:19::i;:::-;16594:56;;;;16668:20;16680:7;16668;:11;;:20;;;;:::i;:::-;16661:27;;;;16533:163;:::o;13962:488::-;14061:15;14078:23;14103:12;14117:23;14142:12;14156:13;14173:19;14184:7;14173:10;:19::i;:::-;14060:132;;;;;;;;;;;;14221:28;14241:7;14221;:15;14229:6;14221:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14203:7;:15;14211:6;14203:15;;;;;;;;;;;;;;;:46;;;;14281:39;14304:15;14281:7;:18;14289:9;14281:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14260:7;:18;14268:9;14260:18;;;;;;;;;;;;;;;:60;;;;14332:16;14342:5;14332:9;:16::i;:::-;14359:23;14371:4;14377;14359:11;:23::i;:::-;14415:9;14398:44;;14407:6;14398:44;;;14426:15;14398:44;;;;;;:::i;:::-;;;;;;;;14049:401;;;;;;13962:488;;;:::o;16704:262::-;16754:7;16763;16783:15;16801:7;;16783:25;;16819:15;4631:17;16819:25;;16875:20;4631:17;16875:7;;:11;;:20;;;;:::i;:::-;16865:7;:30;16861:61;;;16905:7;;4631:17;16897:25;;;;;;;;16861:61;16941:7;16950;16933:25;;;;;;16704:262;;;:::o;15201:551::-;15260:7;15269;15278;15287;15296;15305;15326:23;15351:12;15365:13;15382:10;:8;:10::i;:::-;:122;;15450:54;15462:7;15471:6;:15;;;15488:6;:15;;;15450:11;:54::i;:::-;15382:122;;;15395:52;15407:7;15416:6;:14;;;15432:6;:14;;;15395:11;:52::i;:::-;15382:122;15325:179;;;;;;15515:19;15538:10;:8;:10::i;:::-;15515:33;;15560:15;15577:23;15602:12;15618:46;15630:7;15639:4;15645:5;15652:11;15618;:46::i;:::-;15559:105;;;;;;15683:7;15692:15;15709:4;15715:15;15732:4;15738:5;15675:69;;;;;;;;;;;;;;;;;;;15201:551;;;;;;;:::o;1520:179::-;1578:7;1598:9;1614:1;1610;:5;;;;:::i;:::-;1598:17;;1639:1;1634;:6;;1626:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1690:1;1683:8;;;1520:179;;;;:::o;14458:212::-;14511:19;14534:10;:8;:10::i;:::-;14511:33;;14555:13;14571:22;14581:11;14571:5;:9;;:22;;;;:::i;:::-;14555:38;;14629:33;14656:5;14629:7;:22;14645:4;14629:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14604:7;:22;14620:4;14604:22;;;;;;;;;;;;;;;:58;;;;14500:170;;14458:212;:::o;14678:147::-;14756:17;14768:4;14756:7;;:11;;:17;;;;:::i;:::-;14746:7;:27;;;;14797:20;14812:4;14797:10;;:14;;:20;;;;:::i;:::-;14784:10;:33;;;;14678:147;;:::o;11057:79::-;11099:4;11122:6;;;;;;;;;;;11115:13;;11057:79;:::o;15760:351::-;15853:7;15862;15871;15891:12;15906:28;15930:3;15906:19;15918:6;15906:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15891:43;;15945:13;15961:29;15986:3;15961:20;15973:7;15961;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15945:45;;16001:23;16027:28;16049:5;16027:17;16039:4;16027:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16001:54;;16074:15;16091:4;16097:5;16066:37;;;;;;;;;15760:351;;;;;;;:::o;16119:409::-;16229:7;16238;16247;16267:15;16285:24;16297:11;16285:7;:11;;:24;;;;:::i;:::-;16267:42;;16320:12;16335:21;16344:11;16335:4;:8;;:21;;;;:::i;:::-;16320:36;;16367:13;16383:22;16393:11;16383:5;:9;;:22;;;;:::i;:::-;16367:38;;16416:23;16442:28;16464:5;16442:17;16454:4;16442:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16416:54;;16489:7;16498:15;16515:4;16481:39;;;;;;;;;;16119:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:765::-;3580:6;3588;3596;3604;3653:3;3641:9;3632:7;3628:23;3624:33;3621:120;;;3660:79;;:::i;:::-;3621:120;3780:1;3805:53;3850:7;3841:6;3830:9;3826:22;3805:53;:::i;:::-;3795:63;;3751:117;3907:2;3933:53;3978:7;3969:6;3958:9;3954:22;3933:53;:::i;:::-;3923:63;;3878:118;4035:2;4061:53;4106:7;4097:6;4086:9;4082:22;4061:53;:::i;:::-;4051:63;;4006:118;4163:2;4189:53;4234:7;4225:6;4214:9;4210:22;4189:53;:::i;:::-;4179:63;;4134:118;3494:765;;;;;;;:::o;4265:118::-;4352:24;4370:5;4352:24;:::i;:::-;4347:3;4340:37;4265:118;;:::o;4389:222::-;4482:4;4520:2;4509:9;4505:18;4497:26;;4533:71;4601:1;4590:9;4586:17;4577:6;4533:71;:::i;:::-;4389:222;;;;:::o;4617:117::-;4726:1;4723;4716:12;4740:180;4788:77;4785:1;4778:88;4885:4;4882:1;4875:15;4909:4;4906:1;4899:15;4926:281;5009:27;5031:4;5009:27;:::i;:::-;5001:6;4997:40;5139:6;5127:10;5124:22;5103:18;5091:10;5088:34;5085:62;5082:88;;;5150:18;;:::i;:::-;5082:88;5190:10;5186:2;5179:22;4969:238;4926:281;;:::o;5213:129::-;5247:6;5274:20;;:::i;:::-;5264:30;;5303:33;5331:4;5323:6;5303:33;:::i;:::-;5213:129;;;:::o;5348:311::-;5425:4;5515:18;5507:6;5504:30;5501:56;;;5537:18;;:::i;:::-;5501:56;5587:4;5579:6;5575:17;5567:25;;5647:4;5641;5637:15;5629:23;;5348:311;;;:::o;5665:117::-;5774:1;5771;5764:12;5805:710;5901:5;5926:81;5942:64;5999:6;5942:64;:::i;:::-;5926:81;:::i;:::-;5917:90;;6027:5;6056:6;6049:5;6042:21;6090:4;6083:5;6079:16;6072:23;;6143:4;6135:6;6131:17;6123:6;6119:30;6172:3;6164:6;6161:15;6158:122;;;6191:79;;:::i;:::-;6158:122;6306:6;6289:220;6323:6;6318:3;6315:15;6289:220;;;6398:3;6427:37;6460:3;6448:10;6427:37;:::i;:::-;6422:3;6415:50;6494:4;6489:3;6485:14;6478:21;;6365:144;6349:4;6344:3;6340:14;6333:21;;6289:220;;;6293:21;5907:608;;5805:710;;;;;:::o;6538:370::-;6609:5;6658:3;6651:4;6643:6;6639:17;6635:27;6625:122;;6666:79;;:::i;:::-;6625:122;6783:6;6770:20;6808:94;6898:3;6890:6;6883:4;6875:6;6871:17;6808:94;:::i;:::-;6799:103;;6615:293;6538:370;;;;:::o;6914:539::-;6998:6;7047:2;7035:9;7026:7;7022:23;7018:32;7015:119;;;7053:79;;:::i;:::-;7015:119;7201:1;7190:9;7186:17;7173:31;7231:18;7223:6;7220:30;7217:117;;;7253:79;;:::i;:::-;7217:117;7358:78;7428:7;7419:6;7408:9;7404:22;7358:78;:::i;:::-;7348:88;;7144:302;6914:539;;;;:::o;7459:619::-;7536:6;7544;7552;7601:2;7589:9;7580:7;7576:23;7572:32;7569:119;;;7607:79;;:::i;:::-;7569:119;7727:1;7752:53;7797:7;7788:6;7777:9;7773:22;7752:53;:::i;:::-;7742:63;;7698:117;7854:2;7880:53;7925:7;7916:6;7905:9;7901:22;7880:53;:::i;:::-;7870:63;;7825:118;7982:2;8008:53;8053:7;8044:6;8033:9;8029:22;8008:53;:::i;:::-;7998:63;;7953:118;7459:619;;;;;:::o;8084:329::-;8143:6;8192:2;8180:9;8171:7;8167:23;8163:32;8160:119;;;8198:79;;:::i;:::-;8160:119;8318:1;8343:53;8388:7;8379:6;8368:9;8364:22;8343:53;:::i;:::-;8333:63;;8289:117;8084:329;;;;:::o;8419:86::-;8454:7;8494:4;8487:5;8483:16;8472:27;;8419:86;;;:::o;8511:112::-;8594:22;8610:5;8594:22;:::i;:::-;8589:3;8582:35;8511:112;;:::o;8629:214::-;8718:4;8756:2;8745:9;8741:18;8733:26;;8769:67;8833:1;8822:9;8818:17;8809:6;8769:67;:::i;:::-;8629:214;;;;:::o;8849:329::-;8908:6;8957:2;8945:9;8936:7;8932:23;8928:32;8925:119;;;8963:79;;:::i;:::-;8925:119;9083:1;9108:53;9153:7;9144:6;9133:9;9129:22;9108:53;:::i;:::-;9098:63;;9054:117;8849:329;;;;:::o;9184:116::-;9254:21;9269:5;9254:21;:::i;:::-;9247:5;9244:32;9234:60;;9290:1;9287;9280:12;9234:60;9184:116;:::o;9306:133::-;9349:5;9387:6;9374:20;9365:29;;9403:30;9427:5;9403:30;:::i;:::-;9306:133;;;;:::o;9445:323::-;9501:6;9550:2;9538:9;9529:7;9525:23;9521:32;9518:119;;;9556:79;;:::i;:::-;9518:119;9676:1;9701:50;9743:7;9734:6;9723:9;9719:22;9701:50;:::i;:::-;9691:60;;9647:114;9445:323;;;;:::o;9774:553::-;9951:4;9989:3;9978:9;9974:19;9966:27;;10003:71;10071:1;10060:9;10056:17;10047:6;10003:71;:::i;:::-;10084:72;10152:2;10141:9;10137:18;10128:6;10084:72;:::i;:::-;10166;10234:2;10223:9;10219:18;10210:6;10166:72;:::i;:::-;10248;10316:2;10305:9;10301:18;10292:6;10248:72;:::i;:::-;9774:553;;;;;;;:::o;10333:118::-;10420:24;10438:5;10420:24;:::i;:::-;10415:3;10408:37;10333:118;;:::o;10457:222::-;10550:4;10588:2;10577:9;10573:18;10565:26;;10601:71;10669:1;10658:9;10654:17;10645:6;10601:71;:::i;:::-;10457:222;;;;:::o;10685:474::-;10753:6;10761;10810:2;10798:9;10789:7;10785:23;10781:32;10778:119;;;10816:79;;:::i;:::-;10778:119;10936:1;10961:53;11006:7;10997:6;10986:9;10982:22;10961:53;:::i;:::-;10951:63;;10907:117;11063:2;11089:53;11134:7;11125:6;11114:9;11110:22;11089:53;:::i;:::-;11079:63;;11034:118;10685:474;;;;;:::o;11165:182::-;11305:34;11301:1;11293:6;11289:14;11282:58;11165:182;:::o;11353:366::-;11495:3;11516:67;11580:2;11575:3;11516:67;:::i;:::-;11509:74;;11592:93;11681:3;11592:93;:::i;:::-;11710:2;11705:3;11701:12;11694:19;;11353:366;;;:::o;11725:419::-;11891:4;11929:2;11918:9;11914:18;11906:26;;11978:9;11972:4;11968:20;11964:1;11953:9;11949:17;11942:47;12006:131;12132:4;12006:131;:::i;:::-;11998:139;;11725:419;;;:::o;12150:180::-;12198:77;12195:1;12188:88;12295:4;12292:1;12285:15;12319:4;12316:1;12309:15;12336:305;12376:3;12395:20;12413:1;12395:20;:::i;:::-;12390:25;;12429:20;12447:1;12429:20;:::i;:::-;12424:25;;12583:1;12515:66;12511:74;12508:1;12505:81;12502:107;;;12589:18;;:::i;:::-;12502:107;12633:1;12630;12626:9;12619:16;;12336:305;;;;:::o;12647:180::-;12695:77;12692:1;12685:88;12792:4;12789:1;12782:15;12816:4;12813:1;12806:15;12833:233;12872:3;12895:24;12913:5;12895:24;:::i;:::-;12886:33;;12941:66;12934:5;12931:77;12928:103;;13011:18;;:::i;:::-;12928:103;13058:1;13051:5;13047:13;13040:20;;12833:233;;;:::o;13072:171::-;13212:23;13208:1;13200:6;13196:14;13189:47;13072:171;:::o;13249:366::-;13391:3;13412:67;13476:2;13471:3;13412:67;:::i;:::-;13405:74;;13488:93;13577:3;13488:93;:::i;:::-;13606:2;13601:3;13597:12;13590:19;;13249:366;;;:::o;13621:419::-;13787:4;13825:2;13814:9;13810:18;13802:26;;13874:9;13868:4;13864:20;13860:1;13849:9;13845:17;13838:47;13902:131;14028:4;13902:131;:::i;:::-;13894:139;;13621:419;;;:::o;14046:143::-;14103:5;14134:6;14128:13;14119:22;;14150:33;14177:5;14150:33;:::i;:::-;14046:143;;;;:::o;14195:351::-;14265:6;14314:2;14302:9;14293:7;14289:23;14285:32;14282:119;;;14320:79;;:::i;:::-;14282:119;14440:1;14465:64;14521:7;14512:6;14501:9;14497:22;14465:64;:::i;:::-;14455:74;;14411:128;14195:351;;;;:::o;14552:332::-;14673:4;14711:2;14700:9;14696:18;14688:26;;14724:71;14792:1;14781:9;14777:17;14768:6;14724:71;:::i;:::-;14805:72;14873:2;14862:9;14858:18;14849:6;14805:72;:::i;:::-;14552:332;;;;;:::o;14890:85::-;14935:7;14964:5;14953:16;;14890:85;;;:::o;14981:60::-;15009:3;15030:5;15023:12;;14981:60;;;:::o;15047:158::-;15105:9;15138:61;15156:42;15165:32;15191:5;15165:32;:::i;:::-;15156:42;:::i;:::-;15138:61;:::i;:::-;15125:74;;15047:158;;;:::o;15211:147::-;15306:45;15345:5;15306:45;:::i;:::-;15301:3;15294:58;15211:147;;:::o;15364:807::-;15613:4;15651:3;15640:9;15636:19;15628:27;;15665:71;15733:1;15722:9;15718:17;15709:6;15665:71;:::i;:::-;15746:72;15814:2;15803:9;15799:18;15790:6;15746:72;:::i;:::-;15828:80;15904:2;15893:9;15889:18;15880:6;15828:80;:::i;:::-;15918;15994:2;15983:9;15979:18;15970:6;15918:80;:::i;:::-;16008:73;16076:3;16065:9;16061:19;16052:6;16008:73;:::i;:::-;16091;16159:3;16148:9;16144:19;16135:6;16091:73;:::i;:::-;15364:807;;;;;;;;;:::o;16177:143::-;16234:5;16265:6;16259:13;16250:22;;16281:33;16308:5;16281:33;:::i;:::-;16177:143;;;;:::o;16326:663::-;16414:6;16422;16430;16479:2;16467:9;16458:7;16454:23;16450:32;16447:119;;;16485:79;;:::i;:::-;16447:119;16605:1;16630:64;16686:7;16677:6;16666:9;16662:22;16630:64;:::i;:::-;16620:74;;16576:128;16743:2;16769:64;16825:7;16816:6;16805:9;16801:22;16769:64;:::i;:::-;16759:74;;16714:129;16882:2;16908:64;16964:7;16955:6;16944:9;16940:22;16908:64;:::i;:::-;16898:74;;16853:129;16326:663;;;;;:::o;16995:332::-;17116:4;17154:2;17143:9;17139:18;17131:26;;17167:71;17235:1;17224:9;17220:17;17211:6;17167:71;:::i;:::-;17248:72;17316:2;17305:9;17301:18;17292:6;17248:72;:::i;:::-;16995:332;;;;;:::o;17333:137::-;17387:5;17418:6;17412:13;17403:22;;17434:30;17458:5;17434:30;:::i;:::-;17333:137;;;;:::o;17476:345::-;17543:6;17592:2;17580:9;17571:7;17567:23;17563:32;17560:119;;;17598:79;;:::i;:::-;17560:119;17718:1;17743:61;17796:7;17787:6;17776:9;17772:22;17743:61;:::i;:::-;17733:71;;17689:125;17476:345;;;;:::o;17827:223::-;17967:34;17963:1;17955:6;17951:14;17944:58;18036:6;18031:2;18023:6;18019:15;18012:31;17827:223;:::o;18056:366::-;18198:3;18219:67;18283:2;18278:3;18219:67;:::i;:::-;18212:74;;18295:93;18384:3;18295:93;:::i;:::-;18413:2;18408:3;18404:12;18397:19;;18056:366;;;:::o;18428:419::-;18594:4;18632:2;18621:9;18617:18;18609:26;;18681:9;18675:4;18671:20;18667:1;18656:9;18652:17;18645:47;18709:131;18835:4;18709:131;:::i;:::-;18701:139;;18428:419;;;:::o;18853:221::-;18993:34;18989:1;18981:6;18977:14;18970:58;19062:4;19057:2;19049:6;19045:15;19038:29;18853:221;:::o;19080:366::-;19222:3;19243:67;19307:2;19302:3;19243:67;:::i;:::-;19236:74;;19319:93;19408:3;19319:93;:::i;:::-;19437:2;19432:3;19428:12;19421:19;;19080:366;;;:::o;19452:419::-;19618:4;19656:2;19645:9;19641:18;19633:26;;19705:9;19699:4;19695:20;19691:1;19680:9;19676:17;19669:47;19733:131;19859:4;19733:131;:::i;:::-;19725:139;;19452:419;;;:::o;19877:172::-;20017:24;20013:1;20005:6;20001:14;19994:48;19877:172;:::o;20055:366::-;20197:3;20218:67;20282:2;20277:3;20218:67;:::i;:::-;20211:74;;20294:93;20383:3;20294:93;:::i;:::-;20412:2;20407:3;20403:12;20396:19;;20055:366;;;:::o;20427:419::-;20593:4;20631:2;20620:9;20616:18;20608:26;;20680:9;20674:4;20670:20;20666:1;20655:9;20651:17;20644:47;20708:131;20834:4;20708:131;:::i;:::-;20700:139;;20427:419;;;:::o;20852:175::-;20992:27;20988:1;20980:6;20976:14;20969:51;20852:175;:::o;21033:366::-;21175:3;21196:67;21260:2;21255:3;21196:67;:::i;:::-;21189:74;;21272:93;21361:3;21272:93;:::i;:::-;21390:2;21385:3;21381:12;21374:19;;21033:366;;;:::o;21405:419::-;21571:4;21609:2;21598:9;21594:18;21586:26;;21658:9;21652:4;21648:20;21644:1;21633:9;21629:17;21622:47;21686:131;21812:4;21686:131;:::i;:::-;21678:139;;21405:419;;;:::o;21830:170::-;21970:22;21966:1;21958:6;21954:14;21947:46;21830:170;:::o;22006:366::-;22148:3;22169:67;22233:2;22228:3;22169:67;:::i;:::-;22162:74;;22245:93;22334:3;22245:93;:::i;:::-;22363:2;22358:3;22354:12;22347:19;;22006:366;;;:::o;22378:419::-;22544:4;22582:2;22571:9;22567:18;22559:26;;22631:9;22625:4;22621:20;22617:1;22606:9;22602:17;22595:47;22659:131;22785:4;22659:131;:::i;:::-;22651:139;;22378:419;;;:::o;22803:171::-;22943:23;22939:1;22931:6;22927:14;22920:47;22803:171;:::o;22980:366::-;23122:3;23143:67;23207:2;23202:3;23143:67;:::i;:::-;23136:74;;23219:93;23308:3;23219:93;:::i;:::-;23337:2;23332:3;23328:12;23321:19;;22980:366;;;:::o;23352:419::-;23518:4;23556:2;23545:9;23541:18;23533:26;;23605:9;23599:4;23595:20;23591:1;23580:9;23576:17;23569:47;23633:131;23759:4;23633:131;:::i;:::-;23625:139;;23352:419;;;:::o;23777:191::-;23817:4;23837:20;23855:1;23837:20;:::i;:::-;23832:25;;23871:20;23889:1;23871:20;:::i;:::-;23866:25;;23910:1;23907;23904:8;23901:34;;;23915:18;;:::i;:::-;23901:34;23960:1;23957;23953:9;23945:17;;23777:191;;;;:::o;23974:348::-;24014:7;24037:20;24055:1;24037:20;:::i;:::-;24032:25;;24071:20;24089:1;24071:20;:::i;:::-;24066:25;;24259:1;24191:66;24187:74;24184:1;24181:81;24176:1;24169:9;24162:17;24158:105;24155:131;;;24266:18;;:::i;:::-;24155:131;24314:1;24311;24307:9;24296:20;;23974:348;;;;:::o;24328:180::-;24376:77;24373:1;24366:88;24473:4;24470:1;24463:15;24497:4;24494:1;24487:15;24514:185;24554:1;24571:20;24589:1;24571:20;:::i;:::-;24566:25;;24605:20;24623:1;24605:20;:::i;:::-;24600:25;;24644:1;24634:35;;24649:18;;:::i;:::-;24634:35;24691:1;24688;24684:9;24679:14;;24514:185;;;;:::o;24705:220::-;24845:34;24841:1;24833:6;24829:14;24822:58;24914:3;24909:2;24901:6;24897:15;24890:28;24705:220;:::o;24931:366::-;25073:3;25094:67;25158:2;25153:3;25094:67;:::i;:::-;25087:74;;25170:93;25259:3;25170:93;:::i;:::-;25288:2;25283:3;25279:12;25272:19;;24931:366;;;:::o;25303:419::-;25469:4;25507:2;25496:9;25492:18;25484:26;;25556:9;25550:4;25546:20;25542:1;25531:9;25527:17;25520:47;25584:131;25710:4;25584:131;:::i;:::-;25576:139;;25303:419;;;:::o;25728:229::-;25868:34;25864:1;25856:6;25852:14;25845:58;25937:12;25932:2;25924:6;25920:15;25913:37;25728:229;:::o;25963:366::-;26105:3;26126:67;26190:2;26185:3;26126:67;:::i;:::-;26119:74;;26202:93;26291:3;26202:93;:::i;:::-;26320:2;26315:3;26311:12;26304:19;;25963:366;;;:::o;26335:419::-;26501:4;26539:2;26528:9;26524:18;26516:26;;26588:9;26582:4;26578:20;26574:1;26563:9;26559:17;26552:47;26616:131;26742:4;26616:131;:::i;:::-;26608:139;;26335:419;;;:::o;26760:114::-;26827:6;26861:5;26855:12;26845:22;;26760:114;;;:::o;26880:184::-;26979:11;27013:6;27008:3;27001:19;27053:4;27048:3;27044:14;27029:29;;26880:184;;;;:::o;27070:132::-;27137:4;27160:3;27152:11;;27190:4;27185:3;27181:14;27173:22;;27070:132;;;:::o;27208:108::-;27285:24;27303:5;27285:24;:::i;:::-;27280:3;27273:37;27208:108;;:::o;27322:179::-;27391:10;27412:46;27454:3;27446:6;27412:46;:::i;:::-;27490:4;27485:3;27481:14;27467:28;;27322:179;;;;:::o;27507:113::-;27577:4;27609;27604:3;27600:14;27592:22;;27507:113;;;:::o;27656:732::-;27775:3;27804:54;27852:5;27804:54;:::i;:::-;27874:86;27953:6;27948:3;27874:86;:::i;:::-;27867:93;;27984:56;28034:5;27984:56;:::i;:::-;28063:7;28094:1;28079:284;28104:6;28101:1;28098:13;28079:284;;;28180:6;28174:13;28207:63;28266:3;28251:13;28207:63;:::i;:::-;28200:70;;28293:60;28346:6;28293:60;:::i;:::-;28283:70;;28139:224;28126:1;28123;28119:9;28114:14;;28079:284;;;28083:14;28379:3;28372:10;;27780:608;;;27656:732;;;;:::o;28394:831::-;28657:4;28695:3;28684:9;28680:19;28672:27;;28709:71;28777:1;28766:9;28762:17;28753:6;28709:71;:::i;:::-;28790:80;28866:2;28855:9;28851:18;28842:6;28790:80;:::i;:::-;28917:9;28911:4;28907:20;28902:2;28891:9;28887:18;28880:48;28945:108;29048:4;29039:6;28945:108;:::i;:::-;28937:116;;29063:72;29131:2;29120:9;29116:18;29107:6;29063:72;:::i;:::-;29145:73;29213:3;29202:9;29198:19;29189:6;29145:73;:::i;:::-;28394:831;;;;;;;;:::o;29231:177::-;29371:29;29367:1;29359:6;29355:14;29348:53;29231:177;:::o;29414:366::-;29556:3;29577:67;29641:2;29636:3;29577:67;:::i;:::-;29570:74;;29653:93;29742:3;29653:93;:::i;:::-;29771:2;29766:3;29762:12;29755:19;;29414:366;;;:::o;29786:419::-;29952:4;29990:2;29979:9;29975:18;29967:26;;30039:9;30033:4;30029:20;30025:1;30014:9;30010:17;30003:47;30067:131;30193:4;30067:131;:::i;:::-;30059:139;;29786:419;;;:::o

Swarm Source

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