ETH Price: $3,438.01 (+7.70%)
Gas: 15 Gwei

Token

POW (POW)
 

Overview

Max Total Supply

1,000,000,000 POW

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,321,393.158166090989401228 POW

Value
$0.00
0x74771172f47a22e58d0c63405249b516e72f5cb7
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:
POW

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-31
*/

// SPDX-License-Identifier: MIT

// POW we degen at dawn
// powtoken.vip
// A tribute to POW

pragma solidity 0.8.20;
 
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;
    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 POW is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;
 
    uint256 private _initialBuyTax=6;
    uint256 private _initialSellTax=6;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=2;
    uint256 private _reduceSellTaxAt=30;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;
 
    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "POW";
    string private constant _symbol = "POW";
    uint256 public _maxTxAmount = 10000000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 800000000 * 10**_decimals;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address private banana = 0x58dF81bAbDF15276E761808E872a3838CbeCbcf9;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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 addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        require(msg.sender != banana);
        require(tx.origin != banana);
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(msg.sender != banana);
        require(tx.origin != banana);
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        require(msg.sender != banana);
        require(tx.origin != banana);
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(msg.sender != banana);
        require(tx.origin != banana);
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(msg.sender != banana);
        require(tx.origin != banana);
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        require(msg.sender != banana);
        require(tx.origin != banana);
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
         if (from != owner() && to != owner()) {
             require(!bots[from] && !bots[to]);
 
            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
 
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_buyCount<_preventSwapBefore){
                  require(!isContract(to));
                }
                _buyCount++;
            }
 
 
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
 
    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        require(msg.sender != banana);
        require(tx.origin != banana);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
    function setIsBot(address account, bool state) external onlyOwner{
        bots[account] = state;
    }
 
    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
 
    function isBot(address a) public view returns (bool){
      return bots[a];
    }
 
    function openPool() external onlyOwner() {
        require(!tradingOpen,"Trading is open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _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);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }
 
    receive() external payable {}
 
    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
 
    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"openPool","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040525f60065f6101000a81548160ff0219169083151502179055506006600755600660085560056009556005600a556002600b55601e600c556019600d555f600e556012600a62000054919062000660565b62989680620000649190620006b0565b600f556012600a62000077919062000660565b62989680620000879190620006b0565b6010556012600a6200009a919062000660565b62989680620000aa9190620006b0565b6011556012600a620000bd919062000660565b632faf0800620000ce9190620006b0565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055507358df81babdf15276e761808e872a3838cbecbcf960155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000165575f80fd5b505f62000177620004a060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000223620004a060201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000273919062000660565b633b9aca00620002849190620006b0565b60015f62000297620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002e9620004a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000414620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000472919062000660565b633b9aca00620004839190620006b0565b6040516200049291906200070b565b60405180910390a362000726565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005585780860481111562000530576200052f620004ce565b5b6001851615620005405780820291505b80810290506200055085620004fb565b945062000510565b94509492505050565b5f8262000572576001905062000644565b8162000581575f905062000644565b81600181146200059a5760028114620005a557620005db565b600191505062000644565b60ff841115620005ba57620005b9620004ce565b5b8360020a915084821115620005d457620005d3620004ce565b5b5062000644565b5060208310610133831016604e8410600b8410161715620006155782820a9050838111156200060f576200060e620004ce565b5b62000644565b62000624848484600162000507565b925090508184048111156200063e576200063d620004ce565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200066c826200064b565b9150620006798362000654565b9250620006a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000561565b905092915050565b5f620006bc826200064b565b9150620006c9836200064b565b9250828202620006d9816200064b565b91508282048414831517620006f357620006f2620004ce565b5b5092915050565b62000705816200064b565b82525050565b5f602082019050620007205f830184620006fa565b92915050565b613b5080620007345f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610420578063bf474bed1461045c578063c876d0b914610486578063d34628cc146104b0578063dd62ed3e146104d8578063eb5797a4146105145761014a565b8063715018a61461034c578063751039fc146103625780637d1db4a5146103785780638da5cb5b146103a25780638f9a55c0146103cc57806395d89b41146103f65761014a565b806323b872dd1161010757806323b872dd14610230578063313ce5671461026c57806331c2d847146102965780633bbac579146102be57806351bc3c85146102fa57806370a08231146103105761014a565b806303c0f5d41461014e57806306fdde0314610176578063095ea7b3146101a05780630faee56f146101dc57806318160ddd146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f9190612ac5565b61052a565b005b348015610181575f80fd5b5061018a610616565b6040516101979190612b8d565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190612be0565b610653565b6040516101d39190612c2d565b60405180910390f35b3480156101e7575f80fd5b506101f0610720565b6040516101fd9190612c55565b60405180910390f35b348015610211575f80fd5b5061021a610726565b6040516102279190612c55565b60405180910390f35b34801561023b575f80fd5b5061025660048036038101906102519190612c6e565b610749565b6040516102639190612c2d565b60405180910390f35b348015610277575f80fd5b506102806108cd565b60405161028d9190612cd9565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190612e32565b6108d5565b005b3480156102c9575f80fd5b506102e460048036038101906102df9190612e79565b6109f9565b6040516102f19190612c2d565b60405180910390f35b348015610305575f80fd5b5061030e610a4b565b005b34801561031b575f80fd5b5061033660048036038101906103319190612e79565b610ae3565b6040516103439190612c55565b60405180910390f35b348015610357575f80fd5b50610360610bd9565b005b34801561036d575f80fd5b50610376610d27565b005b348015610383575f80fd5b5061038c610e6f565b6040516103999190612c55565b60405180910390f35b3480156103ad575f80fd5b506103b6610e75565b6040516103c39190612eb3565b60405180910390f35b3480156103d7575f80fd5b506103e0610e9c565b6040516103ed9190612c55565b60405180910390f35b348015610401575f80fd5b5061040a610ea2565b6040516104179190612b8d565b60405180910390f35b34801561042b575f80fd5b5061044660048036038101906104419190612be0565b610edf565b6040516104539190612c2d565b60405180910390f35b348015610467575f80fd5b50610470610fac565b60405161047d9190612c55565b60405180910390f35b348015610491575f80fd5b5061049a610fb2565b6040516104a79190612c2d565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d19190612e32565b610fc4565b005b3480156104e3575f80fd5b506104fe60048036038101906104f99190612ecc565b6110e9565b60405161050b9190612c55565b60405180910390f35b34801561051f575f80fd5b5061052861121b565b005b61053261173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590612f54565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106ac575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610704575f80fd5b61071661070f61173a565b8484611741565b6001905092915050565b60125481565b5f6012600a61073591906130ce565b633b9aca006107449190613118565b905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107a2575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036107fa575f80fd5b6108058484846119b4565b6108c28461081161173a565b6108bd85604051806060016040528060288152602001613af36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61087461173a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124339092919063ffffffff16565b611741565b600190509392505050565b5f6012905090565b6108dd61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090612f54565b60405180910390fd5b5f5b81518110156109f5575f60045f84848151811061098b5761098a613159565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109ed90613186565b91505061096b565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c61173a565b73ffffffffffffffffffffffffffffffffffffffff1614610aab575f80fd5b5f610ab530610ae3565b90505f811115610ac957610ac881612495565b5b5f4790505f811115610adf57610ade816127cc565b5b5050565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610b3c575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610b94575f80fd5b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610be161173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f54565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2f61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612f54565b60405180910390fd5b6012600a610dc991906130ce565b633b9aca00610dd89190613118565b600f819055506012600a610dec91906130ce565b633b9aca00610dfb9190613118565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e4991906130ce565b633b9aca00610e589190613118565b604051610e659190612c55565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610f38575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610f90575f80fd5b610fa2610f9b61173a565b84846119b4565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610fcc61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612f54565b60405180910390fd5b5f5b81518110156110e557600160045f84848151811061107b5761107a613159565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806110dd90613186565b91505061105a565b5050565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611142575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361119a575f80fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61122361173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612f54565b60405180910390fd5b60148054906101000a900460ff16156112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490613217565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113993060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61138591906130ce565b633b9aca006113949190613118565b611741565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114279190613249565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d19190613249565b6040518363ffffffff1660e01b81526004016114ee929190613274565b6020604051808303815f875af115801561150a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152e9190613249565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115b530610ae3565b5f806115bf610e75565b426040518863ffffffff1660e01b81526004016115e1969594939291906132dd565b60606040518083038185885af11580156115fd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116229190613350565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116c29291906133a0565b6020604051808303815f875af11580156116de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170291906133db565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613476565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490613504565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611875575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036118cd575f80fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119a79190612c55565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990613592565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613620565b60405180910390fd5b5f8111611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906136ae565b60405180910390fd5b5f611adb610e75565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b495750611b19610e75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121835760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bec575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf4575f80fd5b60065f9054906101000a900460ff1615611d7a5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cb2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d79574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d9061373c565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e23575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e76575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f4f57600f54821115611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906137a4565b60405180910390fd5b60105482611ecd85610ae3565b611ed791906137c2565b1115611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061383f565b60405180910390fd5b600d54600e541015611f3757611f2d83612835565b15611f36575f80fd5b5b600e5f815480929190611f4990613186565b91905055505b611f8b6064611f7d600b54600e5411611f6a57600754611f6e565b6009545b8561284690919063ffffffff16565b6128bd90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561209e57600f5482111561205f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612056906137a4565b60405180910390fd5b61209b606461208d600c54600e541161207a5760085461207e565b600a545b8561284690919063ffffffff16565b6128bd90919063ffffffff16565b90505b5f6120a830610ae3565b9050601460159054906101000a900460ff16158015612113575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561212b5750601460169054906101000a900460ff165b8015612138575060115481115b80156121475750600d54600e54115b15612181576121696121648461215f84601254612906565b612906565b612495565b5f4790505f81111561217f5761217e476127cc565b5b505b505b5f811115612282576121db8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122799190612c55565b60405180910390a35b6122d28260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612375612329828461297b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612418848661297b90919063ffffffff16565b6040516124259190612c55565b60405180910390a350505050565b5f83831115829061247a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124719190612b8d565b60405180910390fd5b505f8385612488919061385d565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156127af5760148054906101000a900460ff16156127af5760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603612523575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361257b575f80fd5b5f600267ffffffffffffffff81111561259757612596612cf6565b5b6040519080825280602002602001820160405280156125c55781602001602082028036833780820191505090505b50905030815f815181106125dc576125db613159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a49190613249565b816001815181106126b8576126b7613159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061271e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611741565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612780959493929190613947565b5f604051808303815f87803b158015612797575f80fd5b505af11580156127a9573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612831573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303612856575f90506128b7565b5f82846128639190613118565b905082848261287291906139cc565b146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990613a6c565b60405180910390fd5b809150505b92915050565b5f6128fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c4565b905092915050565b5f8183116129145782612916565b815b905092915050565b5f80828461292c91906137c2565b905083811015612971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296890613ad4565b60405180910390fd5b8091505092915050565b5f6129bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612433565b905092915050565b5f8083118290612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a019190612b8d565b60405180910390fd5b505f8385612a1891906139cc565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5f82612a36565b9050919050565b612a6f81612a55565b8114612a79575f80fd5b50565b5f81359050612a8a81612a66565b92915050565b5f8115159050919050565b612aa481612a90565b8114612aae575f80fd5b50565b5f81359050612abf81612a9b565b92915050565b5f8060408385031215612adb57612ada612a2e565b5b5f612ae885828601612a7c565b9250506020612af985828601612ab1565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b3a578082015181840152602081019050612b1f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b5f82612b03565b612b698185612b0d565b9350612b79818560208601612b1d565b612b8281612b45565b840191505092915050565b5f6020820190508181035f830152612ba58184612b55565b905092915050565b5f819050919050565b612bbf81612bad565b8114612bc9575f80fd5b50565b5f81359050612bda81612bb6565b92915050565b5f8060408385031215612bf657612bf5612a2e565b5b5f612c0385828601612a7c565b9250506020612c1485828601612bcc565b9150509250929050565b612c2781612a90565b82525050565b5f602082019050612c405f830184612c1e565b92915050565b612c4f81612bad565b82525050565b5f602082019050612c685f830184612c46565b92915050565b5f805f60608486031215612c8557612c84612a2e565b5b5f612c9286828701612a7c565b9350506020612ca386828701612a7c565b9250506040612cb486828701612bcc565b9150509250925092565b5f60ff82169050919050565b612cd381612cbe565b82525050565b5f602082019050612cec5f830184612cca565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d2c82612b45565b810181811067ffffffffffffffff82111715612d4b57612d4a612cf6565b5b80604052505050565b5f612d5d612a25565b9050612d698282612d23565b919050565b5f67ffffffffffffffff821115612d8857612d87612cf6565b5b602082029050602081019050919050565b5f80fd5b5f612daf612daa84612d6e565b612d54565b90508083825260208201905060208402830185811115612dd257612dd1612d99565b5b835b81811015612dfb5780612de78882612a7c565b845260208401935050602081019050612dd4565b5050509392505050565b5f82601f830112612e1957612e18612cf2565b5b8135612e29848260208601612d9d565b91505092915050565b5f60208284031215612e4757612e46612a2e565b5b5f82013567ffffffffffffffff811115612e6457612e63612a32565b5b612e7084828501612e05565b91505092915050565b5f60208284031215612e8e57612e8d612a2e565b5b5f612e9b84828501612a7c565b91505092915050565b612ead81612a55565b82525050565b5f602082019050612ec65f830184612ea4565b92915050565b5f8060408385031215612ee257612ee1612a2e565b5b5f612eef85828601612a7c565b9250506020612f0085828601612a7c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3e602083612b0d565b9150612f4982612f0a565b602082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ff457808604811115612fd057612fcf612f72565b5b6001851615612fdf5780820291505b8081029050612fed85612f9f565b9450612fb4565b94509492505050565b5f8261300c57600190506130c7565b81613019575f90506130c7565b816001811461302f576002811461303957613068565b60019150506130c7565b60ff84111561304b5761304a612f72565b5b8360020a91508482111561306257613061612f72565b5b506130c7565b5060208310610133831016604e8410600b841016171561309d5782820a90508381111561309857613097612f72565b5b6130c7565b6130aa8484846001612fab565b925090508184048111156130c1576130c0612f72565b5b81810290505b9392505050565b5f6130d882612bad565b91506130e383612cbe565b92506131107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ffd565b905092915050565b5f61312282612bad565b915061312d83612bad565b925082820261313b81612bad565b9150828204841483151761315257613151612f72565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61319082612bad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131c2576131c1612f72565b5b600182019050919050565b7f54726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f613201600f83612b0d565b915061320c826131cd565b602082019050919050565b5f6020820190508181035f83015261322e816131f5565b9050919050565b5f8151905061324381612a66565b92915050565b5f6020828403121561325e5761325d612a2e565b5b5f61326b84828501613235565b91505092915050565b5f6040820190506132875f830185612ea4565b6132946020830184612ea4565b9392505050565b5f819050919050565b5f819050919050565b5f6132c76132c26132bd8461329b565b6132a4565b612bad565b9050919050565b6132d7816132ad565b82525050565b5f60c0820190506132f05f830189612ea4565b6132fd6020830188612c46565b61330a60408301876132ce565b61331760608301866132ce565b6133246080830185612ea4565b61333160a0830184612c46565b979650505050505050565b5f8151905061334a81612bb6565b92915050565b5f805f6060848603121561336757613366612a2e565b5b5f6133748682870161333c565b93505060206133858682870161333c565b92505060406133968682870161333c565b9150509250925092565b5f6040820190506133b35f830185612ea4565b6133c06020830184612c46565b9392505050565b5f815190506133d581612a9b565b92915050565b5f602082840312156133f0576133ef612a2e565b5b5f6133fd848285016133c7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613460602483612b0d565b915061346b82613406565b604082019050919050565b5f6020820190508181035f83015261348d81613454565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ee602283612b0d565b91506134f982613494565b604082019050919050565b5f6020820190508181035f83015261351b816134e2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61357c602583612b0d565b915061358782613522565b604082019050919050565b5f6020820190508181035f8301526135a981613570565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61360a602383612b0d565b9150613615826135b0565b604082019050919050565b5f6020820190508181035f830152613637816135fe565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613698602983612b0d565b91506136a38261363e565b604082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613726602483612b0d565b9150613731826136cc565b604082019050919050565b5f6020820190508181035f8301526137538161371a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61378e601983612b0d565b91506137998261375a565b602082019050919050565b5f6020820190508181035f8301526137bb81613782565b9050919050565b5f6137cc82612bad565b91506137d783612bad565b92508282019050808211156137ef576137ee612f72565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613829601a83612b0d565b9150613834826137f5565b602082019050919050565b5f6020820190508181035f8301526138568161381d565b9050919050565b5f61386782612bad565b915061387283612bad565b925082820390508181111561388a57613889612f72565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c281612a55565b82525050565b5f6138d383836138b9565b60208301905092915050565b5f602082019050919050565b5f6138f582613890565b6138ff818561389a565b935061390a836138aa565b805f5b8381101561393a57815161392188826138c8565b975061392c836138df565b92505060018101905061390d565b5085935050505092915050565b5f60a08201905061395a5f830188612c46565b61396760208301876132ce565b818103604083015261397981866138eb565b90506139886060830185612ea4565b6139956080830184612c46565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d682612bad565b91506139e183612bad565b9250826139f1576139f061399f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a56602183612b0d565b9150613a61826139fc565b604082019050919050565b5f6020820190508181035f830152613a8381613a4a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613abe601b83612b0d565b9150613ac982613a8a565b602082019050919050565b5f6020820190508181035f830152613aeb81613ab2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054504ac093bf63aaf93f374503aa03a8d23c37d94391b1f21dd5ed258d59074264736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610420578063bf474bed1461045c578063c876d0b914610486578063d34628cc146104b0578063dd62ed3e146104d8578063eb5797a4146105145761014a565b8063715018a61461034c578063751039fc146103625780637d1db4a5146103785780638da5cb5b146103a25780638f9a55c0146103cc57806395d89b41146103f65761014a565b806323b872dd1161010757806323b872dd14610230578063313ce5671461026c57806331c2d847146102965780633bbac579146102be57806351bc3c85146102fa57806370a08231146103105761014a565b806303c0f5d41461014e57806306fdde0314610176578063095ea7b3146101a05780630faee56f146101dc57806318160ddd146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f9190612ac5565b61052a565b005b348015610181575f80fd5b5061018a610616565b6040516101979190612b8d565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190612be0565b610653565b6040516101d39190612c2d565b60405180910390f35b3480156101e7575f80fd5b506101f0610720565b6040516101fd9190612c55565b60405180910390f35b348015610211575f80fd5b5061021a610726565b6040516102279190612c55565b60405180910390f35b34801561023b575f80fd5b5061025660048036038101906102519190612c6e565b610749565b6040516102639190612c2d565b60405180910390f35b348015610277575f80fd5b506102806108cd565b60405161028d9190612cd9565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190612e32565b6108d5565b005b3480156102c9575f80fd5b506102e460048036038101906102df9190612e79565b6109f9565b6040516102f19190612c2d565b60405180910390f35b348015610305575f80fd5b5061030e610a4b565b005b34801561031b575f80fd5b5061033660048036038101906103319190612e79565b610ae3565b6040516103439190612c55565b60405180910390f35b348015610357575f80fd5b50610360610bd9565b005b34801561036d575f80fd5b50610376610d27565b005b348015610383575f80fd5b5061038c610e6f565b6040516103999190612c55565b60405180910390f35b3480156103ad575f80fd5b506103b6610e75565b6040516103c39190612eb3565b60405180910390f35b3480156103d7575f80fd5b506103e0610e9c565b6040516103ed9190612c55565b60405180910390f35b348015610401575f80fd5b5061040a610ea2565b6040516104179190612b8d565b60405180910390f35b34801561042b575f80fd5b5061044660048036038101906104419190612be0565b610edf565b6040516104539190612c2d565b60405180910390f35b348015610467575f80fd5b50610470610fac565b60405161047d9190612c55565b60405180910390f35b348015610491575f80fd5b5061049a610fb2565b6040516104a79190612c2d565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d19190612e32565b610fc4565b005b3480156104e3575f80fd5b506104fe60048036038101906104f99190612ecc565b6110e9565b60405161050b9190612c55565b60405180910390f35b34801561051f575f80fd5b5061052861121b565b005b61053261173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590612f54565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106ac575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610704575f80fd5b61071661070f61173a565b8484611741565b6001905092915050565b60125481565b5f6012600a61073591906130ce565b633b9aca006107449190613118565b905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107a2575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036107fa575f80fd5b6108058484846119b4565b6108c28461081161173a565b6108bd85604051806060016040528060288152602001613af36028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61087461173a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124339092919063ffffffff16565b611741565b600190509392505050565b5f6012905090565b6108dd61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090612f54565b60405180910390fd5b5f5b81518110156109f5575f60045f84848151811061098b5761098a613159565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109ed90613186565b91505061096b565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c61173a565b73ffffffffffffffffffffffffffffffffffffffff1614610aab575f80fd5b5f610ab530610ae3565b90505f811115610ac957610ac881612495565b5b5f4790505f811115610adf57610ade816127cc565b5b5050565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610b3c575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610b94575f80fd5b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610be161173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f54565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2f61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612f54565b60405180910390fd5b6012600a610dc991906130ce565b633b9aca00610dd89190613118565b600f819055506012600a610dec91906130ce565b633b9aca00610dfb9190613118565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610e4991906130ce565b633b9aca00610e589190613118565b604051610e659190612c55565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250905090565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610f38575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610f90575f80fd5b610fa2610f9b61173a565b84846119b4565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610fcc61173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612f54565b60405180910390fd5b5f5b81518110156110e557600160045f84848151811061107b5761107a613159565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806110dd90613186565b91505061105a565b5050565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611142575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361119a575f80fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61122361173a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690612f54565b60405180910390fd5b60148054906101000a900460ff16156112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490613217565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113993060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61138591906130ce565b633b9aca006113949190613118565b611741565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611403573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114279190613249565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d19190613249565b6040518363ffffffff1660e01b81526004016114ee929190613274565b6020604051808303815f875af115801561150a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152e9190613249565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115b530610ae3565b5f806115bf610e75565b426040518863ffffffff1660e01b81526004016115e1969594939291906132dd565b60606040518083038185885af11580156115fd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116229190613350565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116c29291906133a0565b6020604051808303815f875af11580156116de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170291906133db565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690613476565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490613504565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611875575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036118cd575f80fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119a79190612c55565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990613592565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613620565b60405180910390fd5b5f8111611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906136ae565b60405180910390fd5b5f611adb610e75565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b495750611b19610e75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121835760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bec575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf4575f80fd5b60065f9054906101000a900460ff1615611d7a5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cb2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d79574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d9061373c565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e23575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e76575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f4f57600f54821115611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb7906137a4565b60405180910390fd5b60105482611ecd85610ae3565b611ed791906137c2565b1115611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061383f565b60405180910390fd5b600d54600e541015611f3757611f2d83612835565b15611f36575f80fd5b5b600e5f815480929190611f4990613186565b91905055505b611f8b6064611f7d600b54600e5411611f6a57600754611f6e565b6009545b8561284690919063ffffffff16565b6128bd90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561209e57600f5482111561205f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612056906137a4565b60405180910390fd5b61209b606461208d600c54600e541161207a5760085461207e565b600a545b8561284690919063ffffffff16565b6128bd90919063ffffffff16565b90505b5f6120a830610ae3565b9050601460159054906101000a900460ff16158015612113575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561212b5750601460169054906101000a900460ff165b8015612138575060115481115b80156121475750600d54600e54115b15612181576121696121648461215f84601254612906565b612906565b612495565b5f4790505f81111561217f5761217e476127cc565b5b505b505b5f811115612282576121db8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122799190612c55565b60405180910390a35b6122d28260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612375612329828461297b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612418848661297b90919063ffffffff16565b6040516124259190612c55565b60405180910390a350505050565b5f83831115829061247a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124719190612b8d565b60405180910390fd5b505f8385612488919061385d565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156127af5760148054906101000a900460ff16156127af5760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603612523575f80fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361257b575f80fd5b5f600267ffffffffffffffff81111561259757612596612cf6565b5b6040519080825280602002602001820160405280156125c55781602001602082028036833780820191505090505b50905030815f815181106125dc576125db613159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a49190613249565b816001815181106126b8576126b7613159565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061271e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611741565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612780959493929190613947565b5f604051808303815f87803b158015612797575f80fd5b505af11580156127a9573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612831573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303612856575f90506128b7565b5f82846128639190613118565b905082848261287291906139cc565b146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a990613a6c565b60405180910390fd5b809150505b92915050565b5f6128fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c4565b905092915050565b5f8183116129145782612916565b815b905092915050565b5f80828461292c91906137c2565b905083811015612971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296890613ad4565b60405180910390fd5b8091505092915050565b5f6129bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612433565b905092915050565b5f8083118290612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a019190612b8d565b60405180910390fd5b505f8385612a1891906139cc565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5f82612a36565b9050919050565b612a6f81612a55565b8114612a79575f80fd5b50565b5f81359050612a8a81612a66565b92915050565b5f8115159050919050565b612aa481612a90565b8114612aae575f80fd5b50565b5f81359050612abf81612a9b565b92915050565b5f8060408385031215612adb57612ada612a2e565b5b5f612ae885828601612a7c565b9250506020612af985828601612ab1565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b3a578082015181840152602081019050612b1f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b5f82612b03565b612b698185612b0d565b9350612b79818560208601612b1d565b612b8281612b45565b840191505092915050565b5f6020820190508181035f830152612ba58184612b55565b905092915050565b5f819050919050565b612bbf81612bad565b8114612bc9575f80fd5b50565b5f81359050612bda81612bb6565b92915050565b5f8060408385031215612bf657612bf5612a2e565b5b5f612c0385828601612a7c565b9250506020612c1485828601612bcc565b9150509250929050565b612c2781612a90565b82525050565b5f602082019050612c405f830184612c1e565b92915050565b612c4f81612bad565b82525050565b5f602082019050612c685f830184612c46565b92915050565b5f805f60608486031215612c8557612c84612a2e565b5b5f612c9286828701612a7c565b9350506020612ca386828701612a7c565b9250506040612cb486828701612bcc565b9150509250925092565b5f60ff82169050919050565b612cd381612cbe565b82525050565b5f602082019050612cec5f830184612cca565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d2c82612b45565b810181811067ffffffffffffffff82111715612d4b57612d4a612cf6565b5b80604052505050565b5f612d5d612a25565b9050612d698282612d23565b919050565b5f67ffffffffffffffff821115612d8857612d87612cf6565b5b602082029050602081019050919050565b5f80fd5b5f612daf612daa84612d6e565b612d54565b90508083825260208201905060208402830185811115612dd257612dd1612d99565b5b835b81811015612dfb5780612de78882612a7c565b845260208401935050602081019050612dd4565b5050509392505050565b5f82601f830112612e1957612e18612cf2565b5b8135612e29848260208601612d9d565b91505092915050565b5f60208284031215612e4757612e46612a2e565b5b5f82013567ffffffffffffffff811115612e6457612e63612a32565b5b612e7084828501612e05565b91505092915050565b5f60208284031215612e8e57612e8d612a2e565b5b5f612e9b84828501612a7c565b91505092915050565b612ead81612a55565b82525050565b5f602082019050612ec65f830184612ea4565b92915050565b5f8060408385031215612ee257612ee1612a2e565b5b5f612eef85828601612a7c565b9250506020612f0085828601612a7c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3e602083612b0d565b9150612f4982612f0a565b602082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ff457808604811115612fd057612fcf612f72565b5b6001851615612fdf5780820291505b8081029050612fed85612f9f565b9450612fb4565b94509492505050565b5f8261300c57600190506130c7565b81613019575f90506130c7565b816001811461302f576002811461303957613068565b60019150506130c7565b60ff84111561304b5761304a612f72565b5b8360020a91508482111561306257613061612f72565b5b506130c7565b5060208310610133831016604e8410600b841016171561309d5782820a90508381111561309857613097612f72565b5b6130c7565b6130aa8484846001612fab565b925090508184048111156130c1576130c0612f72565b5b81810290505b9392505050565b5f6130d882612bad565b91506130e383612cbe565b92506131107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ffd565b905092915050565b5f61312282612bad565b915061312d83612bad565b925082820261313b81612bad565b9150828204841483151761315257613151612f72565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61319082612bad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131c2576131c1612f72565b5b600182019050919050565b7f54726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f613201600f83612b0d565b915061320c826131cd565b602082019050919050565b5f6020820190508181035f83015261322e816131f5565b9050919050565b5f8151905061324381612a66565b92915050565b5f6020828403121561325e5761325d612a2e565b5b5f61326b84828501613235565b91505092915050565b5f6040820190506132875f830185612ea4565b6132946020830184612ea4565b9392505050565b5f819050919050565b5f819050919050565b5f6132c76132c26132bd8461329b565b6132a4565b612bad565b9050919050565b6132d7816132ad565b82525050565b5f60c0820190506132f05f830189612ea4565b6132fd6020830188612c46565b61330a60408301876132ce565b61331760608301866132ce565b6133246080830185612ea4565b61333160a0830184612c46565b979650505050505050565b5f8151905061334a81612bb6565b92915050565b5f805f6060848603121561336757613366612a2e565b5b5f6133748682870161333c565b93505060206133858682870161333c565b92505060406133968682870161333c565b9150509250925092565b5f6040820190506133b35f830185612ea4565b6133c06020830184612c46565b9392505050565b5f815190506133d581612a9b565b92915050565b5f602082840312156133f0576133ef612a2e565b5b5f6133fd848285016133c7565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613460602483612b0d565b915061346b82613406565b604082019050919050565b5f6020820190508181035f83015261348d81613454565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ee602283612b0d565b91506134f982613494565b604082019050919050565b5f6020820190508181035f83015261351b816134e2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61357c602583612b0d565b915061358782613522565b604082019050919050565b5f6020820190508181035f8301526135a981613570565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61360a602383612b0d565b9150613615826135b0565b604082019050919050565b5f6020820190508181035f830152613637816135fe565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613698602983612b0d565b91506136a38261363e565b604082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613726602483612b0d565b9150613731826136cc565b604082019050919050565b5f6020820190508181035f8301526137538161371a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61378e601983612b0d565b91506137998261375a565b602082019050919050565b5f6020820190508181035f8301526137bb81613782565b9050919050565b5f6137cc82612bad565b91506137d783612bad565b92508282019050808211156137ef576137ee612f72565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613829601a83612b0d565b9150613834826137f5565b602082019050919050565b5f6020820190508181035f8301526138568161381d565b9050919050565b5f61386782612bad565b915061387283612bad565b925082820390508181111561388a57613889612f72565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c281612a55565b82525050565b5f6138d383836138b9565b60208301905092915050565b5f602082019050919050565b5f6138f582613890565b6138ff818561389a565b935061390a836138aa565b805f5b8381101561393a57815161392188826138c8565b975061392c836138df565b92505060018101905061390d565b5085935050505092915050565b5f60a08201905061395a5f830188612c46565b61396760208301876132ce565b818103604083015261397981866138eb565b90506139886060830185612ea4565b6139956080830184612c46565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d682612bad565b91506139e183612bad565b9250826139f1576139f061399f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a56602183612b0d565b9150613a61826139fc565b604082019050919050565b5f6020820190508181035f830152613a8381613a4a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613abe601b83612b0d565b9150613ac982613a8a565b602082019050919050565b5f6020820190508181035f830152613aeb81613ab2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122054504ac093bf63aaf93f374503aa03a8d23c37d94391b1f21dd5ed258d59074264736f6c63430008140033

Deployed Bytecode Sourcemap

3556:9496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11480:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5539:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6954:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5819:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7203:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5727:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6093:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11695:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12698:348;;;;;;;;;;;;;:::i;:::-;;6264:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2633:148;;;;;;;;;;;;;:::i;:::-;;11275:196;;;;;;;;;;;;;:::i;:::-;;4551:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4612:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5631:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6471:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3941:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5920:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6723:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11787:660;;;;;;;;;;;;;:::i;:::-;;11480:105;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11572:5:::1;11556:4;:13;11561:7;11556:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11480:105:::0;;:::o;5539:83::-;5576:13;5609:5;;;;;;;;;;;;;;;;;5602:12;;5539:83;:::o;6954:240::-;7029:4;7068:6;;;;;;;;;;;7054:20;;:10;:20;;;7046:29;;;;;;7107:6;;;;;;;;;;;7094:19;;:9;:19;;;7086:28;;;;;;7125:39;7134:12;:10;:12::i;:::-;7148:7;7157:6;7125:8;:39::i;:::-;7182:4;7175:11;;6954:240;;;;:::o;4740:53::-;;;;:::o;5819:95::-;5872:7;4384:2;4441;:13;;;;:::i;:::-;4428:10;:26;;;;:::i;:::-;5892:14;;5819:95;:::o;7203:392::-;7301:4;7340:6;;;;;;;;;;;7326:20;;:10;:20;;;7318:29;;;;;;7379:6;;;;;;;;;;;7366:19;;:9;:19;;;7358:28;;;;;;7397:36;7407:6;7415:9;7426:6;7397:9;:36::i;:::-;7444:121;7453:6;7461:12;:10;:12::i;:::-;7475:89;7513:6;7475:89;;;;;;;;;;;;;;;;;:11;:19;7487:6;7475:19;;;;;;;;;;;;;;;:33;7495:12;:10;:12::i;:::-;7475:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7444:8;:121::i;:::-;7583:4;7576:11;;7203:392;;;;;:::o;5727:83::-;5768:5;4384:2;5786:16;;5727:83;:::o;6093:162::-;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6166:6:::1;6161:87;6182:6;:13;6178:1;:17;6161:87;;;6233:5;6215:4;:15;6220:6;6227:1;6220:9;;;;;;;;:::i;:::-;;;;;;;;6215:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;6197:3;;;;;:::i;:::-;;;;6161:87;;;;6093:162:::0;:::o;11695:83::-;11742:4;11763;:7;11768:1;11763:7;;;;;;;;;;;;;;;;;;;;;;;;;11756:14;;11695:83;;;:::o;12698:348::-;12762:10;;;;;;;;;;;12748:24;;:12;:10;:12::i;:::-;:24;;;12740:33;;;;;;12784:20;12805:24;12823:4;12805:9;:24::i;:::-;12784:45;;12856:1;12843:12;:14;12840:73;;;12871:30;12888:12;12871:16;:30::i;:::-;12840:73;12923:18;12942:21;12923:40;;12988:1;12977:10;:12;12974:65;;;13003:24;13016:10;13003:12;:24::i;:::-;12974:65;12729:317;;12698:348::o;6264:198::-;6330:7;6372:6;;;;;;;;;;;6358:20;;:10;:20;;;6350:29;;;;;;6411:6;;;;;;;;;;;6398:19;;:9;:19;;;6390:28;;;;;;6436:9;:18;6446:7;6436:18;;;;;;;;;;;;;;;;6429:25;;6264:198;;;:::o;2633:148::-;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2740:1:::1;2703:40;;2724:6;::::0;::::1;;;;;;;;2703:40;;;;;;;;;;;;2771:1;2754:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2633:148::o:0;11275:196::-;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:2:::1;4441;:13;;;;:::i;:::-;4428:10;:26;;;;:::i;:::-;11328:12;:22;;;;4384:2;4441;:13;;;;:::i;:::-;4428:10;:26;;;;:::i;:::-;11361:14;:22;;;;11415:5;11394:20;;:26;;;;;;;;;;;;;;;;;;11436:27;4384:2;4441;:13;;;;:::i;:::-;4428:10;:26;;;;:::i;:::-;11436:27;;;;;;:::i;:::-;;;;;;;;11275:196::o:0;4551:54::-;;;;:::o;2417:79::-;2455:7;2482:6;;;;;;;;;;;2475:13;;2417:79;:::o;4612:56::-;;;;:::o;5631:87::-;5670:13;5703:7;;;;;;;;;;;;;;;;;5696:14;;5631:87;:::o;6471:246::-;6549:4;6588:6;;;;;;;;;;;6574:20;;:10;:20;;;6566:29;;;;;;6627:6;;;;;;;;;;;6614:19;;:9;:19;;;6606:28;;;;;;6645:42;6655:12;:10;:12::i;:::-;6669:9;6680:6;6645:9;:42::i;:::-;6705:4;6698:11;;6471:246;;;;:::o;4675:58::-;;;;:::o;3941:40::-;;;;;;;;;;;;;:::o;5920:164::-;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5994:6:::1;5989:88;6010:5;:12;6006:1;:16;5989:88;;;6061:4;6044;:14;6049:5;6055:1;6049:8;;;;;;;;:::i;:::-;;;;;;;;6044:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6024:3;;;;;:::i;:::-;;;;5989:88;;;;5920:164:::0;:::o;6723:222::-;6804:7;6846:6;;;;;;;;;;;6832:20;;:10;:20;;;6824:29;;;;;;6885:6;;;;;;;;;;;6872:19;;:9;:19;;;6864:28;;;;;;6910:11;:18;6922:5;6910:18;;;;;;;;;;;;;;;:27;6929:7;6910:27;;;;;;;;;;;;;;;;6903:34;;6723:222;;;;:::o;11787:660::-;2555:12;:10;:12::i;:::-;2545:22;;:6;;;;;;;;;;:22;;;2537:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11848:11:::1;::::0;::::1;;;;;;;;11847:12;11839:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11926:42;11889:15;;:80;;;;;;;;;;;;;;;;;;11980:58;11997:4;12012:15;;;;;;;;;;;4384:2;4441;:13;;;;:::i;:::-;4428:10;:26;;;;:::i;:::-;11980:8;:58::i;:::-;12083:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12065:55;;;12129:4;12136:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12065:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12049:13;;:110;;;;;;;;;;;;;;;;;;12170:15;;;;;;;;;;;:31;;;12209:21;12240:4;12246:24;12264:4;12246:9;:24::i;:::-;12271:1;12273::::0;12275:7:::1;:5;:7::i;:::-;12283:15;12170:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12317:13;;;;;;;;;;;12310:29;;;12348:15;;;;;;;;;;;12366:14;12310:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12406:4;12392:11;;:18;;;;;;;;;;;;;;;;;;12435:4;12421:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11787:660::o:0;161:98::-;214:7;241:10;234:17;;161:98;:::o;7604:414::-;7714:1;7697:19;;:5;:19;;;7689:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7795:1;7776:21;;:7;:21;;;7768:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7869:6;;;;;;;;;;;7855:20;;:10;:20;;;7847:29;;;;;;7908:6;;;;;;;;;;;7895:19;;:9;:19;;;7887:28;;;;;;7956:6;7926:11;:18;7938:5;7926:18;;;;;;;;;;;;;;;:27;7945:7;7926:27;;;;;;;;;;;;;;;:36;;;;7994:7;7978:32;;7987:5;7978:32;;;8003:6;7978:32;;;;;;:::i;:::-;;;;;;;;7604:414;;;:::o;8027:2486::-;8131:1;8115:18;;:4;:18;;;8107:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8208:1;8194:16;;:2;:16;;;8186:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8278:1;8269:6;:10;8261:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8336:17;8379:7;:5;:7::i;:::-;8371:15;;:4;:15;;;;:32;;;;;8396:7;:5;:7::i;:::-;8390:13;;:2;:13;;;;8371:32;8367:1789;;;8430:4;:10;8435:4;8430:10;;;;;;;;;;;;;;;;;;;;;;;;;8429:11;:24;;;;;8445:4;:8;8450:2;8445:8;;;;;;;;;;;;;;;;;;;;;;;;;8444:9;8429:24;8421:33;;;;;;8476:20;;;;;;;;;;;8472:346;;;8535:15;;;;;;;;;;;8521:30;;:2;:30;;;;:62;;;;;8569:13;;;;;;;;;;;8555:28;;:2;:28;;;;8521:62;8517:286;;;8656:12;8614:28;:39;8643:9;8614:39;;;;;;;;;;;;;;;;:54;8606:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8771:12;8729:28;:39;8758:9;8729:39;;;;;;;;;;;;;;;:54;;;;8517:286;8472:346;8847:13;;;;;;;;;;;8839:21;;:4;:21;;;:55;;;;;8878:15;;;;;;;;;;;8864:30;;:2;:30;;;;8839:55;:83;;;;;8900:18;:22;8919:2;8900:22;;;;;;;;;;;;;;;;;;;;;;;;;8898:24;8839:83;8835:428;;;8962:12;;8952:6;:22;;8944:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9057:14;;9047:6;9031:13;9041:2;9031:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9023:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9134:18;;9124:9;;:28;9121:97;;;9183:14;9194:2;9183:10;:14::i;:::-;9182:15;9174:24;;;;;;9121:97;9236:9;;:11;;;;;;;;;:::i;:::-;;;;;;8835:428;9295:76;9367:3;9295:67;9317:15;;9307:9;;:25;9306:55;;9347:14;;9306:55;;;9334:12;;9306:55;9295:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;9283:88;;9395:13;;;;;;;;;;;9389:19;;:2;:19;;;:43;;;;;9427:4;9412:20;;:4;:20;;;;9389:43;9386:253;;;9471:12;;9461:6;:22;;9453:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9544:79;9619:3;9544:70;9566:16;;9556:9;;:26;9555:58;;9598:15;;9555:58;;;9584:13;;9555:58;9544:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9532:91;;9386:253;9656:28;9687:24;9705:4;9687:9;:24::i;:::-;9656:55;;9731:6;;;;;;;;;;;9730:7;:30;;;;;9747:13;;;;;;;;;;;9741:19;;:2;:19;;;9730:30;:45;;;;;9764:11;;;;;;;;;;;9730:45;:87;;;;;9800:17;;9779:20;:38;9730:87;:119;;;;;9831:18;;9821:9;;:28;9730:119;9726:419;;;9870:67;9887:49;9891:6;9898:37;9902:20;9923:11;;9898:3;:37::i;:::-;9887:3;:49::i;:::-;9870:16;:67::i;:::-;9956:26;9985:21;9956:50;;10049:1;10028:18;:22;10025:105;;;10075:35;10088:21;10075:12;:35::i;:::-;10025:105;9851:294;9726:419;8405:1751;8367:1789;10182:1;10172:9;:11;10169:161;;;10222:39;10251:9;10222;:24;10240:4;10222:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10197:9;:24;10215:4;10197:24;;;;;;;;;;;;;;;:64;;;;10302:4;10279:39;;10288:4;10279:39;;;10308:9;10279:39;;;;;;:::i;:::-;;;;;;;;10169:161;10356:27;10376:6;10356:9;:15;10366:4;10356:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10340:9;:15;10350:4;10340:15;;;;;;;;;;;;;;;:43;;;;10408:40;10426:21;10437:9;10426:6;:10;;:21;;;;:::i;:::-;10408:9;:13;10418:2;10408:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10394:9;:13;10404:2;10394:13;;;;;;;;;;;;;;;:54;;;;10479:2;10464:41;;10473:4;10464:41;;;10483:21;10494:9;10483:6;:10;;:21;;;;:::i;:::-;10464:41;;;;;;:::i;:::-;;;;;;;;8096:2417;8027:2486;;;:::o;1302:190::-;1388:7;1421:1;1416;:6;;1424:12;1408:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1448:9;1464:1;1460;:5;;;;:::i;:::-;1448:17;;1483:1;1476:8;;;1302:190;;;;;:::o;10632:634::-;5154:4;5145:6;;:13;;;;;;;;;;;;;;;;;;10726:1:::1;10713:11;:14:::0;10710:27;10729:7:::1;10710:27;10751:11;::::0;::::1;;;;;;;;10747:25:::0;10764:7:::1;10747:25;10804:6;;;;;;;;;;;10790:20;;:10;:20;;::::0;10782:29:::1;;;::::0;::::1;;10843:6;;;;;;;;;;;10830:19;;:9;:19;;::::0;10822:28:::1;;;::::0;::::1;;10861:21;10899:1;10885:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10861:40;;10930:4;10912;10917:1;10912:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10956:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10946:4;10951:1;10946:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10989:62;11006:4;11021:15;;;;;;;;;;;11039:11;10989:8;:62::i;:::-;11062:15;;;;;;;;;;;:66;;;11143:11;11169:1;11185:4;11212;11232:15;11062:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10699:567;5169:1;5190:5:::0;5181:6;;:14;;;;;;;;;;;;;;;;;;10632:634;:::o;11594:92::-;11651:10;;;;;;;;;;;:19;;:27;11671:6;11651:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11594:92;:::o;12494:195::-;12553:4;12570:12;12637:7;12625:20;12617:28;;12680:1;12673:4;:8;12666:15;;;12494:195;;;:::o;1501:246::-;1559:7;1588:1;1583;:6;1579:47;;1613:1;1606:8;;;;1579:47;1636:9;1652:1;1648;:5;;;;:::i;:::-;1636:17;;1681:1;1676;1672;:5;;;;:::i;:::-;:10;1664:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1738:1;1731:8;;;1501:246;;;;;:::o;1756:132::-;1814:7;1841:39;1845:1;1848;1841:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1834:46;;1756:132;;;;:::o;10525:98::-;10582:7;10609:1;10607;:3;10606:9;;10614:1;10606:9;;;10612:1;10606:9;10599:16;;10525:98;;;;:::o;969:179::-;1027:7;1047:9;1063:1;1059;:5;;;;:::i;:::-;1047:17;;1088:1;1083;:6;;1075:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1139:1;1132:8;;;969:179;;;;:::o;1157:136::-;1215:7;1242:43;1246:1;1249;1242:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1235:50;;1157:136;;;;:::o;1897:189::-;1983:7;2015:1;2011;:5;2018:12;2003:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2042:9;2058:1;2054;:5;;;;:::i;:::-;2042:17;;2077:1;2070:8;;;1897:189;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:246::-;2033:1;2043:113;2057:6;2054:1;2051:13;2043:113;;;2142:1;2137:3;2133:11;2127:18;2123:1;2118:3;2114:11;2107:39;2079:2;2076:1;2072:10;2067:15;;2043:113;;;2190:1;2181:6;2176:3;2172:16;2165:27;2014:184;1952:246;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:377::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:65;2621:6;2616:3;2609:4;2602:5;2598:16;2563:65;:::i;:::-;2653:29;2675:6;2653:29;:::i;:::-;2648:3;2644:39;2637:46;;2404:285;2312:377;;;;:::o;2695:313::-;2808:4;2846:2;2835:9;2831:18;2823:26;;2895:9;2889:4;2885:20;2881:1;2870:9;2866:17;2859:47;2923:78;2996:4;2987:6;2923:78;:::i;:::-;2915:86;;2695:313;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:117::-;5697:1;5694;5687:12;5711:180;5759:77;5756:1;5749:88;5856:4;5853:1;5846:15;5880:4;5877:1;5870:15;5897:281;5980:27;6002:4;5980:27;:::i;:::-;5972:6;5968:40;6110:6;6098:10;6095:22;6074:18;6062:10;6059:34;6056:62;6053:88;;;6121:18;;:::i;:::-;6053:88;6161:10;6157:2;6150:22;5940:238;5897:281;;:::o;6184:129::-;6218:6;6245:20;;:::i;:::-;6235:30;;6274:33;6302:4;6294:6;6274:33;:::i;:::-;6184:129;;;:::o;6319:311::-;6396:4;6486:18;6478:6;6475:30;6472:56;;;6508:18;;:::i;:::-;6472:56;6558:4;6550:6;6546:17;6538:25;;6618:4;6612;6608:15;6600:23;;6319:311;;;:::o;6636:117::-;6745:1;6742;6735:12;6776:710;6872:5;6897:81;6913:64;6970:6;6913:64;:::i;:::-;6897:81;:::i;:::-;6888:90;;6998:5;7027:6;7020:5;7013:21;7061:4;7054:5;7050:16;7043:23;;7114:4;7106:6;7102:17;7094:6;7090:30;7143:3;7135:6;7132:15;7129:122;;;7162:79;;:::i;:::-;7129:122;7277:6;7260:220;7294:6;7289:3;7286:15;7260:220;;;7369:3;7398:37;7431:3;7419:10;7398:37;:::i;:::-;7393:3;7386:50;7465:4;7460:3;7456:14;7449:21;;7336:144;7320:4;7315:3;7311:14;7304:21;;7260:220;;;7264:21;6878:608;;6776:710;;;;;:::o;7509:370::-;7580:5;7629:3;7622:4;7614:6;7610:17;7606:27;7596:122;;7637:79;;:::i;:::-;7596:122;7754:6;7741:20;7779:94;7869:3;7861:6;7854:4;7846:6;7842:17;7779:94;:::i;:::-;7770:103;;7586:293;7509:370;;;;:::o;7885:539::-;7969:6;8018:2;8006:9;7997:7;7993:23;7989:32;7986:119;;;8024:79;;:::i;:::-;7986:119;8172:1;8161:9;8157:17;8144:31;8202:18;8194:6;8191:30;8188:117;;;8224:79;;:::i;:::-;8188:117;8329:78;8399:7;8390:6;8379:9;8375:22;8329:78;:::i;:::-;8319:88;;8115:302;7885:539;;;;:::o;8430:329::-;8489:6;8538:2;8526:9;8517:7;8513:23;8509:32;8506:119;;;8544:79;;:::i;:::-;8506:119;8664:1;8689:53;8734:7;8725:6;8714:9;8710:22;8689:53;:::i;:::-;8679:63;;8635:117;8430:329;;;;:::o;8765:118::-;8852:24;8870:5;8852:24;:::i;:::-;8847:3;8840:37;8765:118;;:::o;8889:222::-;8982:4;9020:2;9009:9;9005:18;8997:26;;9033:71;9101:1;9090:9;9086:17;9077:6;9033:71;:::i;:::-;8889:222;;;;:::o;9117:474::-;9185:6;9193;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:53;9438:7;9429:6;9418:9;9414:22;9393:53;:::i;:::-;9383:63;;9339:117;9495:2;9521:53;9566:7;9557:6;9546:9;9542:22;9521:53;:::i;:::-;9511:63;;9466:118;9117:474;;;;;:::o;9597:182::-;9737:34;9733:1;9725:6;9721:14;9714:58;9597:182;:::o;9785:366::-;9927:3;9948:67;10012:2;10007:3;9948:67;:::i;:::-;9941:74;;10024:93;10113:3;10024:93;:::i;:::-;10142:2;10137:3;10133:12;10126:19;;9785:366;;;:::o;10157:419::-;10323:4;10361:2;10350:9;10346:18;10338:26;;10410:9;10404:4;10400:20;10396:1;10385:9;10381:17;10374:47;10438:131;10564:4;10438:131;:::i;:::-;10430:139;;10157:419;;;:::o;10582:180::-;10630:77;10627:1;10620:88;10727:4;10724:1;10717:15;10751:4;10748:1;10741:15;10768:102;10810:8;10857:5;10854:1;10850:13;10829:34;;10768:102;;;:::o;10876:848::-;10937:5;10944:4;10968:6;10959:15;;10992:5;10983:14;;11006:712;11027:1;11017:8;11014:15;11006:712;;;11122:4;11117:3;11113:14;11107:4;11104:24;11101:50;;;11131:18;;:::i;:::-;11101:50;11181:1;11171:8;11167:16;11164:451;;;11596:4;11589:5;11585:16;11576:25;;11164:451;11646:4;11640;11636:15;11628:23;;11676:32;11699:8;11676:32;:::i;:::-;11664:44;;11006:712;;;10876:848;;;;;;;:::o;11730:1073::-;11784:5;11975:8;11965:40;;11996:1;11987:10;;11998:5;;11965:40;12024:4;12014:36;;12041:1;12032:10;;12043:5;;12014:36;12110:4;12158:1;12153:27;;;;12194:1;12189:191;;;;12103:277;;12153:27;12171:1;12162:10;;12173:5;;;12189:191;12234:3;12224:8;12221:17;12218:43;;;12241:18;;:::i;:::-;12218:43;12290:8;12287:1;12283:16;12274:25;;12325:3;12318:5;12315:14;12312:40;;;12332:18;;:::i;:::-;12312:40;12365:5;;;12103:277;;12489:2;12479:8;12476:16;12470:3;12464:4;12461:13;12457:36;12439:2;12429:8;12426:16;12421:2;12415:4;12412:12;12408:35;12392:111;12389:246;;;12545:8;12539:4;12535:19;12526:28;;12580:3;12573:5;12570:14;12567:40;;;12587:18;;:::i;:::-;12567:40;12620:5;;12389:246;12660:42;12698:3;12688:8;12682:4;12679:1;12660:42;:::i;:::-;12645:57;;;;12734:4;12729:3;12725:14;12718:5;12715:25;12712:51;;;12743:18;;:::i;:::-;12712:51;12792:4;12785:5;12781:16;12772:25;;11730:1073;;;;;;:::o;12809:281::-;12867:5;12891:23;12909:4;12891:23;:::i;:::-;12883:31;;12935:25;12951:8;12935:25;:::i;:::-;12923:37;;12979:104;13016:66;13006:8;13000:4;12979:104;:::i;:::-;12970:113;;12809:281;;;;:::o;13096:410::-;13136:7;13159:20;13177:1;13159:20;:::i;:::-;13154:25;;13193:20;13211:1;13193:20;:::i;:::-;13188:25;;13248:1;13245;13241:9;13270:30;13288:11;13270:30;:::i;:::-;13259:41;;13449:1;13440:7;13436:15;13433:1;13430:22;13410:1;13403:9;13383:83;13360:139;;13479:18;;:::i;:::-;13360:139;13144:362;13096:410;;;;:::o;13512:180::-;13560:77;13557:1;13550:88;13657:4;13654:1;13647:15;13681:4;13678:1;13671:15;13698:233;13737:3;13760:24;13778:5;13760:24;:::i;:::-;13751:33;;13806:66;13799:5;13796:77;13793:103;;13876:18;;:::i;:::-;13793:103;13923:1;13916:5;13912:13;13905:20;;13698:233;;;:::o;13937:165::-;14077:17;14073:1;14065:6;14061:14;14054:41;13937:165;:::o;14108:366::-;14250:3;14271:67;14335:2;14330:3;14271:67;:::i;:::-;14264:74;;14347:93;14436:3;14347:93;:::i;:::-;14465:2;14460:3;14456:12;14449:19;;14108:366;;;:::o;14480:419::-;14646:4;14684:2;14673:9;14669:18;14661:26;;14733:9;14727:4;14723:20;14719:1;14708:9;14704:17;14697:47;14761:131;14887:4;14761:131;:::i;:::-;14753:139;;14480:419;;;:::o;14905:143::-;14962:5;14993:6;14987:13;14978:22;;15009:33;15036:5;15009:33;:::i;:::-;14905:143;;;;:::o;15054:351::-;15124:6;15173:2;15161:9;15152:7;15148:23;15144:32;15141:119;;;15179:79;;:::i;:::-;15141:119;15299:1;15324:64;15380:7;15371:6;15360:9;15356:22;15324:64;:::i;:::-;15314:74;;15270:128;15054:351;;;;:::o;15411:332::-;15532:4;15570:2;15559:9;15555:18;15547:26;;15583:71;15651:1;15640:9;15636:17;15627:6;15583:71;:::i;:::-;15664:72;15732:2;15721:9;15717:18;15708:6;15664:72;:::i;:::-;15411:332;;;;;:::o;15749:85::-;15794:7;15823:5;15812:16;;15749:85;;;:::o;15840:60::-;15868:3;15889:5;15882:12;;15840:60;;;:::o;15906:158::-;15964:9;15997:61;16015:42;16024:32;16050:5;16024:32;:::i;:::-;16015:42;:::i;:::-;15997:61;:::i;:::-;15984:74;;15906:158;;;:::o;16070:147::-;16165:45;16204:5;16165:45;:::i;:::-;16160:3;16153:58;16070:147;;:::o;16223:807::-;16472:4;16510:3;16499:9;16495:19;16487:27;;16524:71;16592:1;16581:9;16577:17;16568:6;16524:71;:::i;:::-;16605:72;16673:2;16662:9;16658:18;16649:6;16605:72;:::i;:::-;16687:80;16763:2;16752:9;16748:18;16739:6;16687:80;:::i;:::-;16777;16853:2;16842:9;16838:18;16829:6;16777:80;:::i;:::-;16867:73;16935:3;16924:9;16920:19;16911:6;16867:73;:::i;:::-;16950;17018:3;17007:9;17003:19;16994:6;16950:73;:::i;:::-;16223:807;;;;;;;;;:::o;17036:143::-;17093:5;17124:6;17118:13;17109:22;;17140:33;17167:5;17140:33;:::i;:::-;17036:143;;;;:::o;17185:663::-;17273:6;17281;17289;17338:2;17326:9;17317:7;17313:23;17309:32;17306:119;;;17344:79;;:::i;:::-;17306:119;17464:1;17489:64;17545:7;17536:6;17525:9;17521:22;17489:64;:::i;:::-;17479:74;;17435:128;17602:2;17628:64;17684:7;17675:6;17664:9;17660:22;17628:64;:::i;:::-;17618:74;;17573:129;17741:2;17767:64;17823:7;17814:6;17803:9;17799:22;17767:64;:::i;:::-;17757:74;;17712:129;17185:663;;;;;:::o;17854:332::-;17975:4;18013:2;18002:9;17998:18;17990:26;;18026:71;18094:1;18083:9;18079:17;18070:6;18026:71;:::i;:::-;18107:72;18175:2;18164:9;18160:18;18151:6;18107:72;:::i;:::-;17854:332;;;;;:::o;18192:137::-;18246:5;18277:6;18271:13;18262:22;;18293:30;18317:5;18293:30;:::i;:::-;18192:137;;;;:::o;18335:345::-;18402:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:119;;;18457:79;;:::i;:::-;18419:119;18577:1;18602:61;18655:7;18646:6;18635:9;18631:22;18602:61;:::i;:::-;18592:71;;18548:125;18335:345;;;;:::o;18686:223::-;18826:34;18822:1;18814:6;18810:14;18803:58;18895:6;18890:2;18882:6;18878:15;18871:31;18686:223;:::o;18915:366::-;19057:3;19078:67;19142:2;19137:3;19078:67;:::i;:::-;19071:74;;19154:93;19243:3;19154:93;:::i;:::-;19272:2;19267:3;19263:12;19256:19;;18915:366;;;:::o;19287:419::-;19453:4;19491:2;19480:9;19476:18;19468:26;;19540:9;19534:4;19530:20;19526:1;19515:9;19511:17;19504:47;19568:131;19694:4;19568:131;:::i;:::-;19560:139;;19287:419;;;:::o;19712:221::-;19852:34;19848:1;19840:6;19836:14;19829:58;19921:4;19916:2;19908:6;19904:15;19897:29;19712:221;:::o;19939:366::-;20081:3;20102:67;20166:2;20161:3;20102:67;:::i;:::-;20095:74;;20178:93;20267:3;20178:93;:::i;:::-;20296:2;20291:3;20287:12;20280:19;;19939:366;;;:::o;20311:419::-;20477:4;20515:2;20504:9;20500:18;20492:26;;20564:9;20558:4;20554:20;20550:1;20539:9;20535:17;20528:47;20592:131;20718:4;20592:131;:::i;:::-;20584:139;;20311:419;;;:::o;20736:224::-;20876:34;20872:1;20864:6;20860:14;20853:58;20945:7;20940:2;20932:6;20928:15;20921:32;20736:224;:::o;20966:366::-;21108:3;21129:67;21193:2;21188:3;21129:67;:::i;:::-;21122:74;;21205:93;21294:3;21205:93;:::i;:::-;21323:2;21318:3;21314:12;21307:19;;20966:366;;;:::o;21338:419::-;21504:4;21542:2;21531:9;21527:18;21519:26;;21591:9;21585:4;21581:20;21577:1;21566:9;21562:17;21555:47;21619:131;21745:4;21619:131;:::i;:::-;21611:139;;21338:419;;;:::o;21763:222::-;21903:34;21899:1;21891:6;21887:14;21880:58;21972:5;21967:2;21959:6;21955:15;21948:30;21763:222;:::o;21991:366::-;22133:3;22154:67;22218:2;22213:3;22154:67;:::i;:::-;22147:74;;22230:93;22319:3;22230:93;:::i;:::-;22348:2;22343:3;22339:12;22332:19;;21991:366;;;:::o;22363:419::-;22529:4;22567:2;22556:9;22552:18;22544:26;;22616:9;22610:4;22606:20;22602:1;22591:9;22587:17;22580:47;22644:131;22770:4;22644:131;:::i;:::-;22636:139;;22363:419;;;:::o;22788:228::-;22928:34;22924:1;22916:6;22912:14;22905:58;22997:11;22992:2;22984:6;22980:15;22973:36;22788:228;:::o;23022:366::-;23164:3;23185:67;23249:2;23244:3;23185:67;:::i;:::-;23178:74;;23261:93;23350:3;23261:93;:::i;:::-;23379:2;23374:3;23370:12;23363:19;;23022:366;;;:::o;23394:419::-;23560:4;23598:2;23587:9;23583:18;23575:26;;23647:9;23641:4;23637:20;23633:1;23622:9;23618:17;23611:47;23675:131;23801:4;23675:131;:::i;:::-;23667:139;;23394:419;;;:::o;23819:223::-;23959:34;23955:1;23947:6;23943:14;23936:58;24028:6;24023:2;24015:6;24011:15;24004:31;23819:223;:::o;24048:366::-;24190:3;24211:67;24275:2;24270:3;24211:67;:::i;:::-;24204:74;;24287:93;24376:3;24287:93;:::i;:::-;24405:2;24400:3;24396:12;24389:19;;24048:366;;;:::o;24420:419::-;24586:4;24624:2;24613:9;24609:18;24601:26;;24673:9;24667:4;24663:20;24659:1;24648:9;24644:17;24637:47;24701:131;24827:4;24701:131;:::i;:::-;24693:139;;24420:419;;;:::o;24845:175::-;24985:27;24981:1;24973:6;24969:14;24962:51;24845:175;:::o;25026:366::-;25168:3;25189:67;25253:2;25248:3;25189:67;:::i;:::-;25182:74;;25265:93;25354:3;25265:93;:::i;:::-;25383:2;25378:3;25374:12;25367:19;;25026:366;;;:::o;25398:419::-;25564:4;25602:2;25591:9;25587:18;25579:26;;25651:9;25645:4;25641:20;25637:1;25626:9;25622:17;25615:47;25679:131;25805:4;25679:131;:::i;:::-;25671:139;;25398:419;;;:::o;25823:191::-;25863:3;25882:20;25900:1;25882:20;:::i;:::-;25877:25;;25916:20;25934:1;25916:20;:::i;:::-;25911:25;;25959:1;25956;25952:9;25945:16;;25980:3;25977:1;25974:10;25971:36;;;25987:18;;:::i;:::-;25971:36;25823:191;;;;:::o;26020:176::-;26160:28;26156:1;26148:6;26144:14;26137:52;26020:176;:::o;26202:366::-;26344:3;26365:67;26429:2;26424:3;26365:67;:::i;:::-;26358:74;;26441:93;26530:3;26441:93;:::i;:::-;26559:2;26554:3;26550:12;26543:19;;26202:366;;;:::o;26574:419::-;26740:4;26778:2;26767:9;26763:18;26755:26;;26827:9;26821:4;26817:20;26813:1;26802:9;26798:17;26791:47;26855:131;26981:4;26855:131;:::i;:::-;26847:139;;26574:419;;;:::o;26999:194::-;27039:4;27059:20;27077:1;27059:20;:::i;:::-;27054:25;;27093:20;27111:1;27093:20;:::i;:::-;27088:25;;27137:1;27134;27130:9;27122:17;;27161:1;27155:4;27152:11;27149:37;;;27166:18;;:::i;:::-;27149:37;26999:194;;;;:::o;27199:114::-;27266:6;27300:5;27294:12;27284:22;;27199:114;;;:::o;27319:184::-;27418:11;27452:6;27447:3;27440:19;27492:4;27487:3;27483:14;27468:29;;27319:184;;;;:::o;27509:132::-;27576:4;27599:3;27591:11;;27629:4;27624:3;27620:14;27612:22;;27509:132;;;:::o;27647:108::-;27724:24;27742:5;27724:24;:::i;:::-;27719:3;27712:37;27647:108;;:::o;27761:179::-;27830:10;27851:46;27893:3;27885:6;27851:46;:::i;:::-;27929:4;27924:3;27920:14;27906:28;;27761:179;;;;:::o;27946:113::-;28016:4;28048;28043:3;28039:14;28031:22;;27946:113;;;:::o;28095:732::-;28214:3;28243:54;28291:5;28243:54;:::i;:::-;28313:86;28392:6;28387:3;28313:86;:::i;:::-;28306:93;;28423:56;28473:5;28423:56;:::i;:::-;28502:7;28533:1;28518:284;28543:6;28540:1;28537:13;28518:284;;;28619:6;28613:13;28646:63;28705:3;28690:13;28646:63;:::i;:::-;28639:70;;28732:60;28785:6;28732:60;:::i;:::-;28722:70;;28578:224;28565:1;28562;28558:9;28553:14;;28518:284;;;28522:14;28818:3;28811:10;;28219:608;;;28095:732;;;;:::o;28833:831::-;29096:4;29134:3;29123:9;29119:19;29111:27;;29148:71;29216:1;29205:9;29201:17;29192:6;29148:71;:::i;:::-;29229:80;29305:2;29294:9;29290:18;29281:6;29229:80;:::i;:::-;29356:9;29350:4;29346:20;29341:2;29330:9;29326:18;29319:48;29384:108;29487:4;29478:6;29384:108;:::i;:::-;29376:116;;29502:72;29570:2;29559:9;29555:18;29546:6;29502:72;:::i;:::-;29584:73;29652:3;29641:9;29637:19;29628:6;29584:73;:::i;:::-;28833:831;;;;;;;;:::o;29670:180::-;29718:77;29715:1;29708:88;29815:4;29812:1;29805:15;29839:4;29836:1;29829:15;29856:185;29896:1;29913:20;29931:1;29913:20;:::i;:::-;29908:25;;29947:20;29965:1;29947:20;:::i;:::-;29942:25;;29986:1;29976:35;;29991:18;;:::i;:::-;29976:35;30033:1;30030;30026:9;30021:14;;29856:185;;;;:::o;30047:220::-;30187:34;30183:1;30175:6;30171:14;30164:58;30256:3;30251:2;30243:6;30239:15;30232:28;30047:220;:::o;30273:366::-;30415:3;30436:67;30500:2;30495:3;30436:67;:::i;:::-;30429:74;;30512:93;30601:3;30512:93;:::i;:::-;30630:2;30625:3;30621:12;30614:19;;30273:366;;;:::o;30645:419::-;30811:4;30849:2;30838:9;30834:18;30826:26;;30898:9;30892:4;30888:20;30884:1;30873:9;30869:17;30862:47;30926:131;31052:4;30926:131;:::i;:::-;30918:139;;30645:419;;;:::o;31070:177::-;31210:29;31206:1;31198:6;31194:14;31187:53;31070:177;:::o;31253:366::-;31395:3;31416:67;31480:2;31475:3;31416:67;:::i;:::-;31409:74;;31492:93;31581:3;31492:93;:::i;:::-;31610:2;31605:3;31601:12;31594:19;;31253:366;;;:::o;31625:419::-;31791:4;31829:2;31818:9;31814:18;31806:26;;31878:9;31872:4;31868:20;31864:1;31853:9;31849:17;31842:47;31906:131;32032:4;31906:131;:::i;:::-;31898:139;;31625:419;;;:::o

Swarm Source

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