ETH Price: $2,518.62 (+3.42%)

Token

Somebody once told me the world is gonna roll me. ... (SHREK)
 

Overview

Max Total Supply

100,000,000 SHREK

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
730,364.6 SHREK

Value
$0.00
0x6f1f587d98385c841482baf389d0cf0796ba5281
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:
SHREK

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-08-17
*/

/**
Website: https://shrek.day/
Twitter: https://twitter.com/SHREK_ERC20
Telegram :  https://t.me/shrek_ERC

$SHREK

Somebody once told me the world is gonna roll me
I ain't the sharpest tool in the shed
She was looking kind of dumb with her finger and her thumb
In the shape of an "L" on her forehead
Well the years start coming and they don't stop coming
Fed to the rules and I hit the ground running
Didn't make sense not to live for fun
Your brain gets smart but your head gets dumb
So much to do, so much to see
So what's wrong with taking the back streets?
You'll never know if you don't go
You'll never shine if you don't glow
Hey now, you're an all-star, get your game on, go play
Hey now, you're a rock star, get the show on, get paid
And all that glitters is gold
Only shooting stars break the mold
It's a cool place and they say it gets colder
You're bundled up now, wait 'til you get older
But the meteor men beg to differ
Judging by the hole in the satellite picture
The ice we skate is getting pretty thin
The water's getting warm so you might as well swim
My world's on fire, how about yours?
That's the way I like it and I'll never get bored
Hey now, you're an all-star, get your game on, go play
Hey now, you're a rock star, get the show on, get paid
All that glitters is gold
Only shooting stars break the mold
Hey now, you're an all-star, get your game on, go play
Hey now, you're a rock star, get the show, on get paid
And all that glitters is gold
Only shooting stars
Somebody once asked could I spare some change for gas?
I need to get myself away from this place
I said, "Yup" what a concept
I could use a little fuel myself
And we could all use a little change
Well, the years start coming and they don't stop coming
Fed to the rules and I hit the ground running
Didn't make sense not to live for fun
Your brain gets smart but your head gets dumb
So much to do, so much to see
So what's wrong with taking the back streets?
You'll never know if you don't go (go!)
You'll never shine if you don't glow
Hey now, you're an all-star, get your game on, go play
Hey now, you're a rock star, get the show on, get paid
And all that glitters is gold
Only shooting stars break the mold
And all that glitters is gold
Only shooting stars break the mold
*/


pragma solidity 0.8.20;
// SPDX-License-Identifier: MIT
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 SHREK 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=5;
    uint256 private _initialSellTax=10;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=2;
    uint256 private _reduceBuyTaxAt=20;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10**_decimals;
    string private constant _name = unicode"Somebody once told me the world is gonna roll me. I ain't the sharpest tool in the shed. She was looking kind of dumb with her finger and her thumb. In the shape of an 'L' on her forehead. Well the years start coming and they don't stop coming. Fed to the rules and I hit the ground running. Didn't make sense not to live for fun. Your brain gets smart but your head gets dumb. So much to do, so much to see. So what's wrong with taking the back streets?. You'll never know if you don't go. You'll never shine if you don't glow. Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show on, get paid. And all that glitters is gold. Only shooting stars break the mold. It's a cool place and they say it gets colder. You're bundled up now, wait 'til you get older. But the meteor men beg to differ. Judging by the hole in the satellite picture. The ice we skate is getting pretty thin. The water's getting warm so you might as well swim. My world's on fire, how about yours?. That's the way I like it and I'll never get bored. Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show on, get paid. All that glitters is gold. Only shooting stars break the mold. Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show, on get paid. And all that glitters is gold. Only shooting stars. Somebody once asked could I spare some change for gas?. I need to get myself away from this place. I said, 'Yup' what a concept. I could use a little fuel myself. And we could all use a little change. Well, the years start coming and they don't stop coming. Fed to the rules and I hit the ground running. Didn't make sense not to live for fun. Your brain gets smart but your head gets dumb. So much to do, so much to see. So what's wrong with taking the back streets?. You'll never know if you don't go (go!). You'll never shine if you don't glow. Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show on, get paid. And all that glitters is gold. Only shooting stars break the mold. And all that glitters is gold. Only shooting stars break the mold";
    string private constant _symbol = unicode"SHREK";
    uint256 public _maxTxAmount = 10_000_000 * 10**_decimals;
    uint256 public _maxWalletSize = 10_000_000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 0 * 10**_decimals;
    uint256 public _maxTaxSwap = 2_000_000 * 10**_decimals;

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

    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 balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        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;}
        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 sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function setTax(uint256 finalBuyTax, uint256 finalSellTax ) external onlyOwner{
        _finalBuyTax= finalBuyTax;
        _finalSellTax= finalSellTax;
        _initialBuyTax= finalBuyTax;
        _initialSellTax= finalSellTax;
    }

    function SetList(address[] memory bots_,bool onoff) external onlyOwner{
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = onoff;
        }
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already 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":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"onoff","type":"bool"}],"name":"SetList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"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":"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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"finalBuyTax","type":"uint256"},{"internalType":"uint256","name":"finalSellTax","type":"uint256"}],"name":"setTax","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"}]

60806040525f60065f6101000a81548160ff0219169083151502179055506005600755600a60085560026009556002600a556014600b556014600c556014600d555f600e556009600a62000054919062000608565b6298968062000064919062000658565b600f556009600a62000077919062000608565b6298968062000087919062000658565b6010556009600a6200009a919062000608565b5f620000a7919062000658565b6011556009600a620000ba919062000608565b621e8480620000ca919062000658565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055503480156200010d575f80fd5b505f6200011f6200044860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001cb6200044860201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200021b919062000608565b6305f5e1006200022c919062000658565b60015f6200023f6200044860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002916200044f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003bc6200044860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200041a919062000608565b6305f5e1006200042b919062000658565b6040516200043a9190620006b3565b60405180910390a3620006ce565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050057808604811115620004d857620004d762000476565b5b6001851615620004e85780820291505b8081029050620004f885620004a3565b9450620004b8565b94509492505050565b5f826200051a5760019050620005ec565b8162000529575f9050620005ec565b81600181146200054257600281146200054d5762000583565b6001915050620005ec565b60ff84111562000562576200056162000476565b5b8360020a9150848211156200057c576200057b62000476565b5b50620005ec565b5060208310610133831016604e8410600b8410161715620005bd5782820a905083811115620005b757620005b662000476565b5b620005ec565b620005cc8484846001620004af565b92509050818404811115620005e657620005e562000476565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061482620005f3565b91506200062183620005fc565b9250620006507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000509565b905092915050565b5f6200066482620005f3565b91506200067183620005f3565b92508282026200068181620005f3565b915082820484148315176200069b576200069a62000476565b5b5092915050565b620006ad81620005f3565b82525050565b5f602082019050620006c85f830184620006a2565b92915050565b613d7e80620006dc5f395ff3fe608060405260043610610138575f3560e01c8063751039fc116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c876d0b914610453578063c9567bf91461047d578063dd62ed3e14610493578063e7f39eaa146104cf5761013f565b8063751039fc1461032f5780637d1db4a5146103455780638da5cb5b1461036f5780638f9a55c01461039957806395d89b41146103c35761013f565b8063313ce567116100fc578063313ce567146102395780633bbac5791461026357806351bc3c851461029f578063667f6526146102b557806370a08231146102dd578063715018a6146103195761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104f7565b6040516101649190612436565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124f4565b61051a565b6040516101a0919061254c565b60405180910390f35b3480156101b4575f80fd5b506101bd610537565b6040516101ca9190612574565b60405180910390f35b3480156101de575f80fd5b506101e761053d565b6040516101f49190612574565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e919061258d565b610560565b604051610230919061254c565b60405180910390f35b348015610244575f80fd5b5061024d610634565b60405161025a91906125f8565b60405180910390f35b34801561026e575f80fd5b5061028960048036038101906102849190612611565b61063c565b604051610296919061254c565b60405180910390f35b3480156102aa575f80fd5b506102b361068e565b005b3480156102c0575f80fd5b506102db60048036038101906102d6919061263c565b610726565b005b3480156102e8575f80fd5b5061030360048036038101906102fe9190612611565b6107da565b6040516103109190612574565b60405180910390f35b348015610324575f80fd5b5061032d610820565b005b34801561033a575f80fd5b5061034361096e565b005b348015610350575f80fd5b50610359610ab6565b6040516103669190612574565b60405180910390f35b34801561037a575f80fd5b50610383610abc565b6040516103909190612689565b60405180910390f35b3480156103a4575f80fd5b506103ad610ae3565b6040516103ba9190612574565b60405180910390f35b3480156103ce575f80fd5b506103d7610ae9565b6040516103e49190612436565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e91906124f4565b610b26565b604051610420919061254c565b60405180910390f35b348015610434575f80fd5b5061043d610b43565b60405161044a9190612574565b60405180910390f35b34801561045e575f80fd5b50610467610b49565b604051610474919061254c565b60405180910390f35b348015610488575f80fd5b50610491610b5b565b005b34801561049e575f80fd5b506104b960048036038101906104b491906126a2565b61107a565b6040516104c69190612574565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f0919061284a565b6110fc565b005b6060604051806108c00160405280610894815260200161348d6108949139905090565b5f61052d610526611221565b8484611228565b6001905092915050565b60125481565b5f6009600a61054c9190612a00565b6305f5e10061055b9190612a4a565b905090565b5f61056c8484846113eb565b61062984610578611221565b61062485604051806060016040528060288152602001613d216028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105db611221565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e6a9092919063ffffffff16565b611228565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cf611221565b73ffffffffffffffffffffffffffffffffffffffff16146106ee575f80fd5b5f6106f8306107da565b90505f81111561070c5761070b81611ecc565b5b5f4790505f8111156107225761072181612153565b5b5050565b61072e611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b190612ad5565b60405180910390fd5b8160098190555080600a8190555081600781905550806008819055505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610828611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab90612ad5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610976611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990612ad5565b60405180910390fd5b6009600a610a109190612a00565b6305f5e100610a1f9190612a4a565b600f819055506009600a610a339190612a00565b6305f5e100610a429190612a4a565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a909190612a00565b6305f5e100610a9f9190612a4a565b604051610aac9190612574565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b5f610b39610b32611221565b84846113eb565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610b63611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690612ad5565b60405180910390fd5b60148054906101000a900460ff1615610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612b3d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cd93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610cc59190612a00565b6305f5e100610cd49190612a4a565b611228565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d679190612b6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190612b6f565b6040518363ffffffff1660e01b8152600401610e2e929190612b9a565b6020604051808303815f875af1158015610e4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6e9190612b6f565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ef5306107da565b5f80610eff610abc565b426040518863ffffffff1660e01b8152600401610f2196959493929190612c03565b60606040518083038185885af1158015610f3d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f629190612c76565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611002929190612cc6565b6020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190612d01565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611104611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790612ad5565b60405180910390fd5b5f5b825181101561121c578160045f8584815181106111b2576111b1612d2c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061121490612d59565b915050611192565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612e9e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113de9190612574565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090612f2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612fba565b60405180910390fd5b5f8111611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090613048565b60405180910390fd5b5f611512610abc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115805750611550610abc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bba5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611623575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61162b575f80fd5b60065f9054906101000a900460ff16156117b15760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116e9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b0574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906130d6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561185a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561198657600f548211156118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee9061313e565b60405180910390fd5b60105482611904856107da565b61190e919061315c565b111561194f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611946906131d9565b60405180910390fd5b600d54600e54101561196e57611964836121bc565b1561196d575f80fd5b5b600e5f81548092919061198090612d59565b91905055505b6119c260646119b4600b54600e54116119a1576007546119a5565b6009545b856121cd90919063ffffffff16565b61224490919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ad557600f54821115611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d9061313e565b60405180910390fd5b611ad26064611ac4600c54600e5411611ab157600854611ab5565b600a545b856121cd90919063ffffffff16565b61224490919063ffffffff16565b90505b5f611adf306107da565b9050601460159054906101000a900460ff16158015611b4a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b625750601460169054906101000a900460ff165b8015611b6f575060115481115b8015611b7e5750600d54600e54115b15611bb857611ba0611b9b84611b968460125461228d565b61228d565b611ecc565b5f4790505f811115611bb657611bb547612153565b5b505b505b5f811115611cb957611c128160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb09190612574565b60405180910390a35b611d098260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461230290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dac611d60828461230290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e4f848661230290919063ffffffff16565b604051611e5c9190612574565b60405180910390a350505050565b5f838311158290611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea89190612436565b60405180910390fd5b505f8385611ebf91906131f7565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121365760148054906101000a900460ff1615612136575f600267ffffffffffffffff811115611f1e57611f1d6126e4565b5b604051908082528060200260200182016040528015611f4c5781602001602082028036833780820191505090505b50905030815f81518110611f6357611f62612d2c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202b9190612b6f565b8160018151811061203f5761203e612d2c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120a53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611228565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121079594939291906132e1565b5f604051808303815f87803b15801561211e575f80fd5b505af1158015612130573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121b8573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121dd575f905061223e565b5f82846121ea9190612a4a565b90508284826121f99190613366565b14612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090613406565b60405180910390fd5b809150505b92915050565b5f61228583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061234b565b905092915050565b5f81831161229b578261229d565b815b905092915050565b5f8082846122b3919061315c565b9050838110156122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061346e565b60405180910390fd5b8091505092915050565b5f61234383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6a565b905092915050565b5f8083118290612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123889190612436565b60405180910390fd5b505f838561239f9190613366565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123e35780820151818401526020810190506123c8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612408826123ac565b61241281856123b6565b93506124228185602086016123c6565b61242b816123ee565b840191505092915050565b5f6020820190508181035f83015261244e81846123fe565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249082612467565b9050919050565b6124a081612486565b81146124aa575f80fd5b50565b5f813590506124bb81612497565b92915050565b5f819050919050565b6124d3816124c1565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f806040838503121561250a5761250961245f565b5b5f612517858286016124ad565b9250506020612528858286016124e0565b9150509250929050565b5f8115159050919050565b61254681612532565b82525050565b5f60208201905061255f5f83018461253d565b92915050565b61256e816124c1565b82525050565b5f6020820190506125875f830184612565565b92915050565b5f805f606084860312156125a4576125a361245f565b5b5f6125b1868287016124ad565b93505060206125c2868287016124ad565b92505060406125d3868287016124e0565b9150509250925092565b5f60ff82169050919050565b6125f2816125dd565b82525050565b5f60208201905061260b5f8301846125e9565b92915050565b5f602082840312156126265761262561245f565b5b5f612633848285016124ad565b91505092915050565b5f80604083850312156126525761265161245f565b5b5f61265f858286016124e0565b9250506020612670858286016124e0565b9150509250929050565b61268381612486565b82525050565b5f60208201905061269c5f83018461267a565b92915050565b5f80604083850312156126b8576126b761245f565b5b5f6126c5858286016124ad565b92505060206126d6858286016124ad565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61271a826123ee565b810181811067ffffffffffffffff82111715612739576127386126e4565b5b80604052505050565b5f61274b612456565b90506127578282612711565b919050565b5f67ffffffffffffffff821115612776576127756126e4565b5b602082029050602081019050919050565b5f80fd5b5f61279d6127988461275c565b612742565b905080838252602082019050602084028301858111156127c0576127bf612787565b5b835b818110156127e957806127d588826124ad565b8452602084019350506020810190506127c2565b5050509392505050565b5f82601f830112612807576128066126e0565b5b813561281784826020860161278b565b91505092915050565b61282981612532565b8114612833575f80fd5b50565b5f8135905061284481612820565b92915050565b5f80604083850312156128605761285f61245f565b5b5f83013567ffffffffffffffff81111561287d5761287c612463565b5b612889858286016127f3565b925050602061289a85828601612836565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561292657808604811115612902576129016128a4565b5b60018516156129115780820291505b808102905061291f856128d1565b94506128e6565b94509492505050565b5f8261293e57600190506129f9565b8161294b575f90506129f9565b8160018114612961576002811461296b5761299a565b60019150506129f9565b60ff84111561297d5761297c6128a4565b5b8360020a915084821115612994576129936128a4565b5b506129f9565b5060208310610133831016604e8410600b84101617156129cf5782820a9050838111156129ca576129c96128a4565b5b6129f9565b6129dc84848460016128dd565b925090508184048111156129f3576129f26128a4565b5b81810290505b9392505050565b5f612a0a826124c1565b9150612a15836125dd565b9250612a427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461292f565b905092915050565b5f612a54826124c1565b9150612a5f836124c1565b9250828202612a6d816124c1565b91508282048414831517612a8457612a836128a4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612abf6020836123b6565b9150612aca82612a8b565b602082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b276017836123b6565b9150612b3282612af3565b602082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b5f81519050612b6981612497565b92915050565b5f60208284031215612b8457612b8361245f565b5b5f612b9184828501612b5b565b91505092915050565b5f604082019050612bad5f83018561267a565b612bba602083018461267a565b9392505050565b5f819050919050565b5f819050919050565b5f612bed612be8612be384612bc1565b612bca565b6124c1565b9050919050565b612bfd81612bd3565b82525050565b5f60c082019050612c165f83018961267a565b612c236020830188612565565b612c306040830187612bf4565b612c3d6060830186612bf4565b612c4a608083018561267a565b612c5760a0830184612565565b979650505050505050565b5f81519050612c70816124ca565b92915050565b5f805f60608486031215612c8d57612c8c61245f565b5b5f612c9a86828701612c62565b9350506020612cab86828701612c62565b9250506040612cbc86828701612c62565b9150509250925092565b5f604082019050612cd95f83018561267a565b612ce66020830184612565565b9392505050565b5f81519050612cfb81612820565b92915050565b5f60208284031215612d1657612d1561245f565b5b5f612d2384828501612ced565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612d63826124c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d9557612d946128a4565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612dfa6024836123b6565b9150612e0582612da0565b604082019050919050565b5f6020820190508181035f830152612e2781612dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e886022836123b6565b9150612e9382612e2e565b604082019050919050565b5f6020820190508181035f830152612eb581612e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612f166025836123b6565b9150612f2182612ebc565b604082019050919050565b5f6020820190508181035f830152612f4381612f0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612fa46023836123b6565b9150612faf82612f4a565b604082019050919050565b5f6020820190508181035f830152612fd181612f98565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130326029836123b6565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6130c06024836123b6565b91506130cb82613066565b604082019050919050565b5f6020820190508181035f8301526130ed816130b4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131286019836123b6565b9150613133826130f4565b602082019050919050565b5f6020820190508181035f8301526131558161311c565b9050919050565b5f613166826124c1565b9150613171836124c1565b9250828201905080821115613189576131886128a4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6131c3601a836123b6565b91506131ce8261318f565b602082019050919050565b5f6020820190508181035f8301526131f0816131b7565b9050919050565b5f613201826124c1565b915061320c836124c1565b9250828203905081811115613224576132236128a4565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61325c81612486565b82525050565b5f61326d8383613253565b60208301905092915050565b5f602082019050919050565b5f61328f8261322a565b6132998185613234565b93506132a483613244565b805f5b838110156132d45781516132bb8882613262565b97506132c683613279565b9250506001810190506132a7565b5085935050505092915050565b5f60a0820190506132f45f830188612565565b6133016020830187612bf4565b81810360408301526133138186613285565b9050613322606083018561267a565b61332f6080830184612565565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613370826124c1565b915061337b836124c1565b92508261338b5761338a613339565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f06021836123b6565b91506133fb82613396565b604082019050919050565b5f6020820190508181035f83015261341d816133e4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613458601b836123b6565b915061346382613424565b602082019050919050565b5f6020820190508181035f8301526134858161344c565b905091905056fe536f6d65626f6479206f6e636520746f6c64206d652074686520776f726c6420697320676f6e6e6120726f6c6c206d652e20492061696e27742074686520736861727065737420746f6f6c20696e2074686520736865642e2053686520776173206c6f6f6b696e67206b696e64206f662064756d622077697468206865722066696e67657220616e6420686572207468756d622e20496e20746865207368617065206f6620616e20274c27206f6e2068657220666f7265686561642e2057656c6c2074686520796561727320737461727420636f6d696e6720616e64207468657920646f6e27742073746f7020636f6d696e672e2046656420746f207468652072756c657320616e64204920686974207468652067726f756e642072756e6e696e672e204469646e2774206d616b652073656e7365206e6f7420746f206c69766520666f722066756e2e20596f757220627261696e206765747320736d6172742062757420796f7572206865616420676574732064756d622e20536f206d75636820746f20646f2c20736f206d75636820746f207365652e20536f207768617427732077726f6e6720776974682074616b696e6720746865206261636b20737472656574733f2e20596f75276c6c206e65766572206b6e6f7720696620796f7520646f6e277420676f2e20596f75276c6c206e65766572207368696e6520696620796f7520646f6e277420676c6f772e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e2049742773206120636f6f6c20706c61636520616e64207468657920736179206974206765747320636f6c6465722e20596f752772652062756e646c6564207570206e6f772c2077616974202774696c20796f7520676574206f6c6465722e2042757420746865206d6574656f72206d656e2062656720746f206469666665722e204a756467696e672062792074686520686f6c6520696e2074686520736174656c6c69746520706963747572652e205468652069636520776520736b6174652069732067657474696e6720707265747479207468696e2e2054686520776174657227732067657474696e67207761726d20736f20796f75206d696768742061732077656c6c207377696d2e204d7920776f726c642773206f6e20666972652c20686f772061626f757420796f7572733f2e2054686174277320746865207761792049206c696b6520697420616e642049276c6c206e657665722067657420626f7265642e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f772c206f6e2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e672073746172732e20536f6d65626f6479206f6e63652061736b656420636f756c64204920737061726520736f6d65206368616e676520666f72206761733f2e2049206e65656420746f20676574206d7973656c6620617761792066726f6d207468697320706c6163652e204920736169642c2027597570272077686174206120636f6e636570742e204920636f756c64207573652061206c6974746c65206675656c206d7973656c662e20416e6420776520636f756c6420616c6c207573652061206c6974746c65206368616e67652e2057656c6c2c2074686520796561727320737461727420636f6d696e6720616e64207468657920646f6e27742073746f7020636f6d696e672e2046656420746f207468652072756c657320616e64204920686974207468652067726f756e642072756e6e696e672e204469646e2774206d616b652073656e7365206e6f7420746f206c69766520666f722066756e2e20596f757220627261696e206765747320736d6172742062757420796f7572206865616420676574732064756d622e20536f206d75636820746f20646f2c20736f206d75636820746f207365652e20536f207768617427732077726f6e6720776974682074616b696e6720746865206261636b20737472656574733f2e20596f75276c6c206e65766572206b6e6f7720696620796f7520646f6e277420676f2028676f21292e20596f75276c6c206e65766572207368696e6520696620796f7520646f6e277420676c6f772e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c6445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae2bdc02eb9cdae8b1dbfa81d65dd108d246986e69d12329d721f9cea14194b464736f6c63430008140033

Deployed Bytecode

0x608060405260043610610138575f3560e01c8063751039fc116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c876d0b914610453578063c9567bf91461047d578063dd62ed3e14610493578063e7f39eaa146104cf5761013f565b8063751039fc1461032f5780637d1db4a5146103455780638da5cb5b1461036f5780638f9a55c01461039957806395d89b41146103c35761013f565b8063313ce567116100fc578063313ce567146102395780633bbac5791461026357806351bc3c851461029f578063667f6526146102b557806370a08231146102dd578063715018a6146103195761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104f7565b6040516101649190612436565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906124f4565b61051a565b6040516101a0919061254c565b60405180910390f35b3480156101b4575f80fd5b506101bd610537565b6040516101ca9190612574565b60405180910390f35b3480156101de575f80fd5b506101e761053d565b6040516101f49190612574565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e919061258d565b610560565b604051610230919061254c565b60405180910390f35b348015610244575f80fd5b5061024d610634565b60405161025a91906125f8565b60405180910390f35b34801561026e575f80fd5b5061028960048036038101906102849190612611565b61063c565b604051610296919061254c565b60405180910390f35b3480156102aa575f80fd5b506102b361068e565b005b3480156102c0575f80fd5b506102db60048036038101906102d6919061263c565b610726565b005b3480156102e8575f80fd5b5061030360048036038101906102fe9190612611565b6107da565b6040516103109190612574565b60405180910390f35b348015610324575f80fd5b5061032d610820565b005b34801561033a575f80fd5b5061034361096e565b005b348015610350575f80fd5b50610359610ab6565b6040516103669190612574565b60405180910390f35b34801561037a575f80fd5b50610383610abc565b6040516103909190612689565b60405180910390f35b3480156103a4575f80fd5b506103ad610ae3565b6040516103ba9190612574565b60405180910390f35b3480156103ce575f80fd5b506103d7610ae9565b6040516103e49190612436565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e91906124f4565b610b26565b604051610420919061254c565b60405180910390f35b348015610434575f80fd5b5061043d610b43565b60405161044a9190612574565b60405180910390f35b34801561045e575f80fd5b50610467610b49565b604051610474919061254c565b60405180910390f35b348015610488575f80fd5b50610491610b5b565b005b34801561049e575f80fd5b506104b960048036038101906104b491906126a2565b61107a565b6040516104c69190612574565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f0919061284a565b6110fc565b005b6060604051806108c00160405280610894815260200161348d6108949139905090565b5f61052d610526611221565b8484611228565b6001905092915050565b60125481565b5f6009600a61054c9190612a00565b6305f5e10061055b9190612a4a565b905090565b5f61056c8484846113eb565b61062984610578611221565b61062485604051806060016040528060288152602001613d216028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105db611221565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e6a9092919063ffffffff16565b611228565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106cf611221565b73ffffffffffffffffffffffffffffffffffffffff16146106ee575f80fd5b5f6106f8306107da565b90505f81111561070c5761070b81611ecc565b5b5f4790505f8111156107225761072181612153565b5b5050565b61072e611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b190612ad5565b60405180910390fd5b8160098190555080600a8190555081600781905550806008819055505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610828611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab90612ad5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610976611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990612ad5565b60405180910390fd5b6009600a610a109190612a00565b6305f5e100610a1f9190612a4a565b600f819055506009600a610a339190612a00565b6305f5e100610a429190612a4a565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a909190612a00565b6305f5e100610a9f9190612a4a565b604051610aac9190612574565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b5f610b39610b32611221565b84846113eb565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610b63611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690612ad5565b60405180910390fd5b60148054906101000a900460ff1615610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612b3d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cd93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610cc59190612a00565b6305f5e100610cd49190612a4a565b611228565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d679190612b6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190612b6f565b6040518363ffffffff1660e01b8152600401610e2e929190612b9a565b6020604051808303815f875af1158015610e4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6e9190612b6f565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ef5306107da565b5f80610eff610abc565b426040518863ffffffff1660e01b8152600401610f2196959493929190612c03565b60606040518083038185885af1158015610f3d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f629190612c76565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611002929190612cc6565b6020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110429190612d01565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611104611221565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790612ad5565b60405180910390fd5b5f5b825181101561121c578160045f8584815181106111b2576111b1612d2c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061121490612d59565b915050611192565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612e9e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113de9190612574565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090612f2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612fba565b60405180910390fd5b5f8111611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090613048565b60405180910390fd5b5f611512610abc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115805750611550610abc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bba5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611623575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61162b575f80fd5b60065f9054906101000a900460ff16156117b15760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116e9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b0574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061176d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611764906130d6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561185a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ad575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561198657600f548211156118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee9061313e565b60405180910390fd5b60105482611904856107da565b61190e919061315c565b111561194f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611946906131d9565b60405180910390fd5b600d54600e54101561196e57611964836121bc565b1561196d575f80fd5b5b600e5f81548092919061198090612d59565b91905055505b6119c260646119b4600b54600e54116119a1576007546119a5565b6009545b856121cd90919063ffffffff16565b61224490919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ad557600f54821115611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d9061313e565b60405180910390fd5b611ad26064611ac4600c54600e5411611ab157600854611ab5565b600a545b856121cd90919063ffffffff16565b61224490919063ffffffff16565b90505b5f611adf306107da565b9050601460159054906101000a900460ff16158015611b4a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b625750601460169054906101000a900460ff165b8015611b6f575060115481115b8015611b7e5750600d54600e54115b15611bb857611ba0611b9b84611b968460125461228d565b61228d565b611ecc565b5f4790505f811115611bb657611bb547612153565b5b505b505b5f811115611cb957611c128160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb09190612574565b60405180910390a35b611d098260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461230290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dac611d60828461230290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e4f848661230290919063ffffffff16565b604051611e5c9190612574565b60405180910390a350505050565b5f838311158290611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea89190612436565b60405180910390fd5b505f8385611ebf91906131f7565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121365760148054906101000a900460ff1615612136575f600267ffffffffffffffff811115611f1e57611f1d6126e4565b5b604051908082528060200260200182016040528015611f4c5781602001602082028036833780820191505090505b50905030815f81518110611f6357611f62612d2c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202b9190612b6f565b8160018151811061203f5761203e612d2c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120a53060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611228565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121079594939291906132e1565b5f604051808303815f87803b15801561211e575f80fd5b505af1158015612130573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121b8573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036121dd575f905061223e565b5f82846121ea9190612a4a565b90508284826121f99190613366565b14612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090613406565b60405180910390fd5b809150505b92915050565b5f61228583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061234b565b905092915050565b5f81831161229b578261229d565b815b905092915050565b5f8082846122b3919061315c565b9050838110156122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061346e565b60405180910390fd5b8091505092915050565b5f61234383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e6a565b905092915050565b5f8083118290612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123889190612436565b60405180910390fd5b505f838561239f9190613366565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123e35780820151818401526020810190506123c8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612408826123ac565b61241281856123b6565b93506124228185602086016123c6565b61242b816123ee565b840191505092915050565b5f6020820190508181035f83015261244e81846123fe565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61249082612467565b9050919050565b6124a081612486565b81146124aa575f80fd5b50565b5f813590506124bb81612497565b92915050565b5f819050919050565b6124d3816124c1565b81146124dd575f80fd5b50565b5f813590506124ee816124ca565b92915050565b5f806040838503121561250a5761250961245f565b5b5f612517858286016124ad565b9250506020612528858286016124e0565b9150509250929050565b5f8115159050919050565b61254681612532565b82525050565b5f60208201905061255f5f83018461253d565b92915050565b61256e816124c1565b82525050565b5f6020820190506125875f830184612565565b92915050565b5f805f606084860312156125a4576125a361245f565b5b5f6125b1868287016124ad565b93505060206125c2868287016124ad565b92505060406125d3868287016124e0565b9150509250925092565b5f60ff82169050919050565b6125f2816125dd565b82525050565b5f60208201905061260b5f8301846125e9565b92915050565b5f602082840312156126265761262561245f565b5b5f612633848285016124ad565b91505092915050565b5f80604083850312156126525761265161245f565b5b5f61265f858286016124e0565b9250506020612670858286016124e0565b9150509250929050565b61268381612486565b82525050565b5f60208201905061269c5f83018461267a565b92915050565b5f80604083850312156126b8576126b761245f565b5b5f6126c5858286016124ad565b92505060206126d6858286016124ad565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61271a826123ee565b810181811067ffffffffffffffff82111715612739576127386126e4565b5b80604052505050565b5f61274b612456565b90506127578282612711565b919050565b5f67ffffffffffffffff821115612776576127756126e4565b5b602082029050602081019050919050565b5f80fd5b5f61279d6127988461275c565b612742565b905080838252602082019050602084028301858111156127c0576127bf612787565b5b835b818110156127e957806127d588826124ad565b8452602084019350506020810190506127c2565b5050509392505050565b5f82601f830112612807576128066126e0565b5b813561281784826020860161278b565b91505092915050565b61282981612532565b8114612833575f80fd5b50565b5f8135905061284481612820565b92915050565b5f80604083850312156128605761285f61245f565b5b5f83013567ffffffffffffffff81111561287d5761287c612463565b5b612889858286016127f3565b925050602061289a85828601612836565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561292657808604811115612902576129016128a4565b5b60018516156129115780820291505b808102905061291f856128d1565b94506128e6565b94509492505050565b5f8261293e57600190506129f9565b8161294b575f90506129f9565b8160018114612961576002811461296b5761299a565b60019150506129f9565b60ff84111561297d5761297c6128a4565b5b8360020a915084821115612994576129936128a4565b5b506129f9565b5060208310610133831016604e8410600b84101617156129cf5782820a9050838111156129ca576129c96128a4565b5b6129f9565b6129dc84848460016128dd565b925090508184048111156129f3576129f26128a4565b5b81810290505b9392505050565b5f612a0a826124c1565b9150612a15836125dd565b9250612a427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461292f565b905092915050565b5f612a54826124c1565b9150612a5f836124c1565b9250828202612a6d816124c1565b91508282048414831517612a8457612a836128a4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612abf6020836123b6565b9150612aca82612a8b565b602082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b276017836123b6565b9150612b3282612af3565b602082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b5f81519050612b6981612497565b92915050565b5f60208284031215612b8457612b8361245f565b5b5f612b9184828501612b5b565b91505092915050565b5f604082019050612bad5f83018561267a565b612bba602083018461267a565b9392505050565b5f819050919050565b5f819050919050565b5f612bed612be8612be384612bc1565b612bca565b6124c1565b9050919050565b612bfd81612bd3565b82525050565b5f60c082019050612c165f83018961267a565b612c236020830188612565565b612c306040830187612bf4565b612c3d6060830186612bf4565b612c4a608083018561267a565b612c5760a0830184612565565b979650505050505050565b5f81519050612c70816124ca565b92915050565b5f805f60608486031215612c8d57612c8c61245f565b5b5f612c9a86828701612c62565b9350506020612cab86828701612c62565b9250506040612cbc86828701612c62565b9150509250925092565b5f604082019050612cd95f83018561267a565b612ce66020830184612565565b9392505050565b5f81519050612cfb81612820565b92915050565b5f60208284031215612d1657612d1561245f565b5b5f612d2384828501612ced565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612d63826124c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d9557612d946128a4565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612dfa6024836123b6565b9150612e0582612da0565b604082019050919050565b5f6020820190508181035f830152612e2781612dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e886022836123b6565b9150612e9382612e2e565b604082019050919050565b5f6020820190508181035f830152612eb581612e7c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612f166025836123b6565b9150612f2182612ebc565b604082019050919050565b5f6020820190508181035f830152612f4381612f0a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612fa46023836123b6565b9150612faf82612f4a565b604082019050919050565b5f6020820190508181035f830152612fd181612f98565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130326029836123b6565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6130c06024836123b6565b91506130cb82613066565b604082019050919050565b5f6020820190508181035f8301526130ed816130b4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131286019836123b6565b9150613133826130f4565b602082019050919050565b5f6020820190508181035f8301526131558161311c565b9050919050565b5f613166826124c1565b9150613171836124c1565b9250828201905080821115613189576131886128a4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6131c3601a836123b6565b91506131ce8261318f565b602082019050919050565b5f6020820190508181035f8301526131f0816131b7565b9050919050565b5f613201826124c1565b915061320c836124c1565b9250828203905081811115613224576132236128a4565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61325c81612486565b82525050565b5f61326d8383613253565b60208301905092915050565b5f602082019050919050565b5f61328f8261322a565b6132998185613234565b93506132a483613244565b805f5b838110156132d45781516132bb8882613262565b97506132c683613279565b9250506001810190506132a7565b5085935050505092915050565b5f60a0820190506132f45f830188612565565b6133016020830187612bf4565b81810360408301526133138186613285565b9050613322606083018561267a565b61332f6080830184612565565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613370826124c1565b915061337b836124c1565b92508261338b5761338a613339565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f06021836123b6565b91506133fb82613396565b604082019050919050565b5f6020820190508181035f83015261341d816133e4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613458601b836123b6565b915061346382613424565b602082019050919050565b5f6020820190508181035f8301526134858161344c565b905091905056fe536f6d65626f6479206f6e636520746f6c64206d652074686520776f726c6420697320676f6e6e6120726f6c6c206d652e20492061696e27742074686520736861727065737420746f6f6c20696e2074686520736865642e2053686520776173206c6f6f6b696e67206b696e64206f662064756d622077697468206865722066696e67657220616e6420686572207468756d622e20496e20746865207368617065206f6620616e20274c27206f6e2068657220666f7265686561642e2057656c6c2074686520796561727320737461727420636f6d696e6720616e64207468657920646f6e27742073746f7020636f6d696e672e2046656420746f207468652072756c657320616e64204920686974207468652067726f756e642072756e6e696e672e204469646e2774206d616b652073656e7365206e6f7420746f206c69766520666f722066756e2e20596f757220627261696e206765747320736d6172742062757420796f7572206865616420676574732064756d622e20536f206d75636820746f20646f2c20736f206d75636820746f207365652e20536f207768617427732077726f6e6720776974682074616b696e6720746865206261636b20737472656574733f2e20596f75276c6c206e65766572206b6e6f7720696620796f7520646f6e277420676f2e20596f75276c6c206e65766572207368696e6520696620796f7520646f6e277420676c6f772e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e2049742773206120636f6f6c20706c61636520616e64207468657920736179206974206765747320636f6c6465722e20596f752772652062756e646c6564207570206e6f772c2077616974202774696c20796f7520676574206f6c6465722e2042757420746865206d6574656f72206d656e2062656720746f206469666665722e204a756467696e672062792074686520686f6c6520696e2074686520736174656c6c69746520706963747572652e205468652069636520776520736b6174652069732067657474696e6720707265747479207468696e2e2054686520776174657227732067657474696e67207761726d20736f20796f75206d696768742061732077656c6c207377696d2e204d7920776f726c642773206f6e20666972652c20686f772061626f757420796f7572733f2e2054686174277320746865207761792049206c696b6520697420616e642049276c6c206e657665722067657420626f7265642e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f772c206f6e2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e672073746172732e20536f6d65626f6479206f6e63652061736b656420636f756c64204920737061726520736f6d65206368616e676520666f72206761733f2e2049206e65656420746f20676574206d7973656c6620617761792066726f6d207468697320706c6163652e204920736169642c2027597570272077686174206120636f6e636570742e204920636f756c64207573652061206c6974746c65206675656c206d7973656c662e20416e6420776520636f756c6420616c6c207573652061206c6974746c65206368616e67652e2057656c6c2c2074686520796561727320737461727420636f6d696e6720616e64207468657920646f6e27742073746f7020636f6d696e672e2046656420746f207468652072756c657320616e64204920686974207468652067726f756e642072756e6e696e672e204469646e2774206d616b652073656e7365206e6f7420746f206c69766520666f722066756e2e20596f757220627261696e206765747320736d6172742062757420796f7572206865616420676574732064756d622e20536f206d75636820746f20646f2c20736f206d75636820746f207365652e20536f207768617427732077726f6e6720776974682074616b696e6720746865206261636b20737472656574733f2e20596f75276c6c206e65766572206b6e6f7720696620796f7520646f6e277420676f2028676f21292e20596f75276c6c206e65766572207368696e6520696620796f7520646f6e277420676c6f772e20486579206e6f772c20796f7527726520616e20616c6c2d737461722c2067657420796f75722067616d65206f6e2c20676f20706c61792e20486579206e6f772c20796f75277265206120726f636b20737461722c20676574207468652073686f77206f6e2c2067657420706169642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c642e20416e6420616c6c207468617420676c69747465727320697320676f6c642e204f6e6c792073686f6f74696e6720737461727320627265616b20746865206d6f6c6445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ae2bdc02eb9cdae8b1dbfa81d65dd108d246986e69d12329d721f9cea14194b464736f6c63430008140033

Deployed Bytecode Sourcemap

5799:11059:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10752:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9192:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10196:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10921:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10105:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15046;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16487:348;;;;;;;;;;;;;:::i;:::-;;15137:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10299:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4880:148;;;;;;;;;;;;;:::i;:::-;;14742:196;;;;;;;;;;;;;:::i;:::-;;9005:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4666:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9068:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10010:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10426:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9133:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6186:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15568:671;;;;;;;;;;;;;:::i;:::-;;10601:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15383:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9919:83;9956:13;9989:5;;;;;;;;;;;;;;;;;9982:12;;9919:83;:::o;10752:161::-;10827:4;10844:39;10853:12;:10;:12::i;:::-;10867:7;10876:6;10844:8;:39::i;:::-;10901:4;10894:11;;10752:161;;;;:::o;9192:54::-;;;;:::o;10196:95::-;10249:7;6629:1;6686:2;:13;;;;:::i;:::-;6672:11;:27;;;;:::i;:::-;10269:14;;10196:95;:::o;10921:313::-;11019:4;11036:36;11046:6;11054:9;11065:6;11036:9;:36::i;:::-;11083:121;11092:6;11100:12;:10;:12::i;:::-;11114:89;11152:6;11114:89;;;;;;;;;;;;;;;;;:11;:19;11126:6;11114:19;;;;;;;;;;;;;;;:33;11134:12;:10;:12::i;:::-;11114:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11083:8;:121::i;:::-;11222:4;11215:11;;10921:313;;;;;:::o;10105:83::-;10146:5;6629:1;10164:16;;10105:83;:::o;15046:::-;15093:4;15114;:7;15119:1;15114:7;;;;;;;;;;;;;;;;;;;;;;;;;15107:14;;15046:83;;;:::o;16487:348::-;16551:10;;;;;;;;;;;16537:24;;:12;:10;:12::i;:::-;:24;;;16529:33;;;;;;16573:20;16594:24;16612:4;16594:9;:24::i;:::-;16573:45;;16645:1;16632:12;:14;16629:73;;;16660:30;16677:12;16660:16;:30::i;:::-;16629:73;16712:18;16731:21;16712:40;;16777:1;16766:10;:12;16763:65;;;16792:24;16805:10;16792:12;:24::i;:::-;16763:65;16518:317;;16487:348::o;15137:238::-;4803:12;:10;:12::i;:::-;4793:22;;:6;;;;;;;;;;:22;;;4785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15240:11:::1;15226:12;:25;;;;15277:12;15262:13;:27;;;;15316:11;15300:14;:27;;;;15355:12;15338:15;:29;;;;15137:238:::0;;:::o;10299:119::-;10365:7;10392:9;:18;10402:7;10392:18;;;;;;;;;;;;;;;;10385:25;;10299:119;;;:::o;4880:148::-;4803:12;:10;:12::i;:::-;4793:22;;:6;;;;;;;;;;:22;;;4785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4987:1:::1;4950:40;;4971:6;::::0;::::1;;;;;;;;4950:40;;;;;;;;;;;;5018:1;5001:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4880:148::o:0;14742:196::-;4803:12;:10;:12::i;:::-;4793:22;;:6;;;;;;;;;;:22;;;4785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6629:1:::1;6686:2;:13;;;;:::i;:::-;6672:11;:27;;;;:::i;:::-;14795:12;:22;;;;6629:1;6686:2;:13;;;;:::i;:::-;6672:11;:27;;;;:::i;:::-;14828:14;:22;;;;14882:5;14861:20;;:26;;;;;;;;;;;;;;;;;;14903:27;6629:1;6686:2;:13;;;;:::i;:::-;6672:11;:27;;;;:::i;:::-;14903;;;;;;:::i;:::-;;;;;;;;14742:196::o:0;9005:56::-;;;;:::o;4666:79::-;4704:7;4731:6;;;;;;;;;;;4724:13;;4666:79;:::o;9068:58::-;;;;:::o;10010:87::-;10049:13;10082:7;;;;;;;;;;;;;;;;;10075:14;;10010:87;:::o;10426:167::-;10504:4;10521:42;10531:12;:10;:12::i;:::-;10545:9;10556:6;10521:9;:42::i;:::-;10581:4;10574:11;;10426:167;;;;:::o;9133:52::-;;;;:::o;6186:40::-;;;;;;;;;;;;;:::o;15568:671::-;4803:12;:10;:12::i;:::-;4793:22;;:6;;;;;;;;;;:22;;;4785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15632:11:::1;::::0;::::1;;;;;;;;15631:12;15623:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15718:42;15681:15;;:80;;;;;;;;;;;;;;;;;;15772:58;15789:4;15804:15;;;;;;;;;;;6629:1;6686:2;:13;;;;:::i;:::-;6672:11;:27;;;;:::i;:::-;15772:8;:58::i;:::-;15875:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15857:55;;;15921:4;15928:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15857:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15841:13;;:110;;;;;;;;;;;;;;;;;;15962:15;;;;;;;;;;;:31;;;16001:21;16032:4;16038:24;16056:4;16038:9;:24::i;:::-;16063:1;16065::::0;16067:7:::1;:5;:7::i;:::-;16075:15;15962:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16109:13;;;;;;;;;;;16102:29;;;16140:15;;;;;;;;;;;16158:14;16102:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16198:4;16184:11;;:18;;;;;;;;;;;;;;;;;;16227:4;16213:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;15568:671::o:0;10601:143::-;10682:7;10709:11;:18;10721:5;10709:18;;;;;;;;;;;;;;;:27;10728:7;10709:27;;;;;;;;;;;;;;;;10702:34;;10601:143;;;;:::o;15383:177::-;4803:12;:10;:12::i;:::-;4793:22;;:6;;;;;;;;;;:22;;;4785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15469:6:::1;15464:89;15485:5;:12;15481:1;:16;15464:89;;;15536:5;15519:4;:14;15524:5;15530:1;15524:8;;;;;;;;:::i;:::-;;;;;;;;15519:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;15499:3;;;;;:::i;:::-;;;;15464:89;;;;15383:177:::0;;:::o;2421:98::-;2474:7;2501:10;2494:17;;2421:98;:::o;11242:335::-;11352:1;11335:19;;:5;:19;;;11327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11433:1;11414:21;;:7;:21;;;11406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11515:6;11485:11;:18;11497:5;11485:18;;;;;;;;;;;;;;;:27;11504:7;11485:27;;;;;;;;;;;;;;;:36;;;;11553:7;11537:32;;11546:5;11537:32;;;11562:6;11537:32;;;;;;:::i;:::-;;;;;;;;11242:335;;;:::o;11585:2478::-;11689:1;11673:18;;:4;:18;;;11665:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11766:1;11752:16;;:2;:16;;;11744:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11836:1;11827:6;:10;11819:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11894:17;11936:7;:5;:7::i;:::-;11928:15;;:4;:15;;;;:32;;;;;11953:7;:5;:7::i;:::-;11947:13;;:2;:13;;;;11928:32;11924:1783;;;11986:4;:10;11991:4;11986:10;;;;;;;;;;;;;;;;;;;;;;;;;11985:11;:24;;;;;12001:4;:8;12006:2;12001:8;;;;;;;;;;;;;;;;;;;;;;;;;12000:9;11985:24;11977:33;;;;;;12031:20;;;;;;;;;;;12027:346;;;12090:15;;;;;;;;;;;12076:30;;:2;:30;;;;:62;;;;;12124:13;;;;;;;;;;;12110:28;;:2;:28;;;;12076:62;12072:286;;;12211:12;12169:28;:39;12198:9;12169:39;;;;;;;;;;;;;;;;:54;12161:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12326:12;12284:28;:39;12313:9;12284:39;;;;;;;;;;;;;;;:54;;;;12072:286;12027:346;12401:13;;;;;;;;;;;12393:21;;:4;:21;;;:55;;;;;12432:15;;;;;;;;;;;12418:30;;:2;:30;;;;12393:55;:83;;;;;12454:18;:22;12473:2;12454:22;;;;;;;;;;;;;;;;;;;;;;;;;12452:24;12393:83;12389:428;;;12516:12;;12506:6;:22;;12498:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12611:14;;12601:6;12585:13;12595:2;12585:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12577:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12688:18;;12678:9;;:28;12675:97;;;12737:14;12748:2;12737:10;:14::i;:::-;12736:15;12728:24;;;;;;12675:97;12790:9;;:11;;;;;;;;;:::i;:::-;;;;;;12389:428;12847:76;12919:3;12847:67;12869:15;;12859:9;;:25;12858:55;;12899:14;;12858:55;;;12886:12;;12858:55;12847:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;12835:88;;12947:13;;;;;;;;;;;12941:19;;:2;:19;;;:43;;;;;12979:4;12964:20;;:4;:20;;;;12941:43;12938:253;;;13023:12;;13013:6;:22;;13005:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13096:79;13171:3;13096:70;13118:16;;13108:9;;:26;13107:58;;13150:15;;13107:58;;;13136:13;;13107:58;13096:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;13084:91;;12938:253;13207:28;13238:24;13256:4;13238:9;:24::i;:::-;13207:55;;13282:6;;;;;;;;;;;13281:7;:30;;;;;13298:13;;;;;;;;;;;13292:19;;:2;:19;;;13281:30;:45;;;;;13315:11;;;;;;;;;;;13281:45;:87;;;;;13351:17;;13330:20;:38;13281:87;:119;;;;;13382:18;;13372:9;;:28;13281:119;13277:419;;;13421:67;13438:49;13442:6;13449:37;13453:20;13474:11;;13449:3;:37::i;:::-;13438:3;:49::i;:::-;13421:16;:67::i;:::-;13507:26;13536:21;13507:50;;13600:1;13579:18;:22;13576:105;;;13626:35;13639:21;13626:12;:35::i;:::-;13576:105;13402:294;13277:419;11962:1745;11924:1783;13732:1;13722:9;:11;13719:161;;;13772:39;13801:9;13772;:24;13790:4;13772:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13747:9;:24;13765:4;13747:24;;;;;;;;;;;;;;;:64;;;;13852:4;13829:39;;13838:4;13829:39;;;13858:9;13829:39;;;;;;:::i;:::-;;;;;;;;13719:161;13906:27;13926:6;13906:9;:15;13916:4;13906:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13890:9;:15;13900:4;13890:15;;;;;;;;;;;;;;;:43;;;;13958:40;13976:21;13987:9;13976:6;:10;;:21;;;;:::i;:::-;13958:9;:13;13968:2;13958:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13944:9;:13;13954:2;13944:13;;;;;;;;;;;;;;;:54;;;;14029:2;14014:41;;14023:4;14014:41;;;14033:21;14044:9;14033:6;:10;;:21;;;;:::i;:::-;14014:41;;;;;;:::i;:::-;;;;;;;;11654:2409;11585:2478;;;:::o;3558:190::-;3644:7;3677:1;3672;:6;;3680:12;3664:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3704:9;3720:1;3716;:5;;;;:::i;:::-;3704:17;;3739:1;3732:8;;;3558:190;;;;;:::o;14179:555::-;9537:4;9528:6;;:13;;;;;;;;;;;;;;;;;;14273:1:::1;14260:11;:14:::0;14257:27;14276:7:::1;14257:27;14298:11;::::0;::::1;;;;;;;;14294:25:::0;14311:7:::1;14294:25;14329:21;14367:1;14353:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14329:40;;14398:4;14380;14385:1;14380:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14424:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14414:4;14419:1;14414:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14457:62;14474:4;14489:15;;;;;;;;;;;14507:11;14457:8;:62::i;:::-;14530:15;;;;;;;;;;;:66;;;14611:11;14637:1;14653:4;14680;14700:15;14530:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14246:488;9552:1;9573:5:::0;9564:6;;:14;;;;;;;;;;;;;;;;;;14179:555;:::o;14946:92::-;15003:10;;;;;;;;;;;:19;;:27;15023:6;15003:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14946:92;:::o;16284:195::-;16343:4;16360:12;16427:7;16415:20;16407:28;;16470:1;16463:4;:8;16456:15;;;16284:195;;;:::o;3756:246::-;3814:7;3843:1;3838;:6;3834:47;;3868:1;3861:8;;;;3834:47;3891:9;3907:1;3903;:5;;;;:::i;:::-;3891:17;;3936:1;3931;3927;:5;;;;:::i;:::-;:10;3919:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3993:1;3986:8;;;3756:246;;;;;:::o;4010:132::-;4068:7;4095:39;4099:1;4102;4095:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4088:46;;4010:132;;;;:::o;14073:98::-;14130:7;14157:1;14155;:3;14154:9;;14162:1;14154:9;;;14160:1;14154:9;14147:16;;14073:98;;;;:::o;3227:179::-;3285:7;3305:9;3321:1;3317;:5;;;;:::i;:::-;3305:17;;3346:1;3341;:6;;3333:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3397:1;3390:8;;;3227:179;;;;:::o;3414:136::-;3472:7;3499:43;3503:1;3506;3499:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3492:50;;3414:136;;;;:::o;4150:189::-;4236:7;4268:1;4264;:5;4271:12;4256:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4295:9;4311:1;4307;:5;;;;:::i;:::-;4295:17;;4330:1;4323:8;;;4150:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:474::-;5256:6;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5188:474;;;;;:::o;5668:118::-;5755:24;5773:5;5755:24;:::i;:::-;5750:3;5743:37;5668:118;;:::o;5792:222::-;5885:4;5923:2;5912:9;5908:18;5900:26;;5936:71;6004:1;5993:9;5989:17;5980:6;5936:71;:::i;:::-;5792:222;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:117::-;6609:1;6606;6599:12;6623:180;6671:77;6668:1;6661:88;6768:4;6765:1;6758:15;6792:4;6789:1;6782:15;6809:281;6892:27;6914:4;6892:27;:::i;:::-;6884:6;6880:40;7022:6;7010:10;7007:22;6986:18;6974:10;6971:34;6968:62;6965:88;;;7033:18;;:::i;:::-;6965:88;7073:10;7069:2;7062:22;6852:238;6809:281;;:::o;7096:129::-;7130:6;7157:20;;:::i;:::-;7147:30;;7186:33;7214:4;7206:6;7186:33;:::i;:::-;7096:129;;;:::o;7231:311::-;7308:4;7398:18;7390:6;7387:30;7384:56;;;7420:18;;:::i;:::-;7384:56;7470:4;7462:6;7458:17;7450:25;;7530:4;7524;7520:15;7512:23;;7231:311;;;:::o;7548:117::-;7657:1;7654;7647:12;7688:710;7784:5;7809:81;7825:64;7882:6;7825:64;:::i;:::-;7809:81;:::i;:::-;7800:90;;7910:5;7939:6;7932:5;7925:21;7973:4;7966:5;7962:16;7955:23;;8026:4;8018:6;8014:17;8006:6;8002:30;8055:3;8047:6;8044:15;8041:122;;;8074:79;;:::i;:::-;8041:122;8189:6;8172:220;8206:6;8201:3;8198:15;8172:220;;;8281:3;8310:37;8343:3;8331:10;8310:37;:::i;:::-;8305:3;8298:50;8377:4;8372:3;8368:14;8361:21;;8248:144;8232:4;8227:3;8223:14;8216:21;;8172:220;;;8176:21;7790:608;;7688:710;;;;;:::o;8421:370::-;8492:5;8541:3;8534:4;8526:6;8522:17;8518:27;8508:122;;8549:79;;:::i;:::-;8508:122;8666:6;8653:20;8691:94;8781:3;8773:6;8766:4;8758:6;8754:17;8691:94;:::i;:::-;8682:103;;8498:293;8421:370;;;;:::o;8797:116::-;8867:21;8882:5;8867:21;:::i;:::-;8860:5;8857:32;8847:60;;8903:1;8900;8893:12;8847:60;8797:116;:::o;8919:133::-;8962:5;9000:6;8987:20;8978:29;;9016:30;9040:5;9016:30;:::i;:::-;8919:133;;;;:::o;9058:678::-;9148:6;9156;9205:2;9193:9;9184:7;9180:23;9176:32;9173:119;;;9211:79;;:::i;:::-;9173:119;9359:1;9348:9;9344:17;9331:31;9389:18;9381:6;9378:30;9375:117;;;9411:79;;:::i;:::-;9375:117;9516:78;9586:7;9577:6;9566:9;9562:22;9516:78;:::i;:::-;9506:88;;9302:302;9643:2;9669:50;9711:7;9702:6;9691:9;9687:22;9669:50;:::i;:::-;9659:60;;9614:115;9058:678;;;;;:::o;9742:180::-;9790:77;9787:1;9780:88;9887:4;9884:1;9877:15;9911:4;9908:1;9901:15;9928:102;9970:8;10017:5;10014:1;10010:13;9989:34;;9928:102;;;:::o;10036:848::-;10097:5;10104:4;10128:6;10119:15;;10152:5;10143:14;;10166:712;10187:1;10177:8;10174:15;10166:712;;;10282:4;10277:3;10273:14;10267:4;10264:24;10261:50;;;10291:18;;:::i;:::-;10261:50;10341:1;10331:8;10327:16;10324:451;;;10756:4;10749:5;10745:16;10736:25;;10324:451;10806:4;10800;10796:15;10788:23;;10836:32;10859:8;10836:32;:::i;:::-;10824:44;;10166:712;;;10036:848;;;;;;;:::o;10890:1073::-;10944:5;11135:8;11125:40;;11156:1;11147:10;;11158:5;;11125:40;11184:4;11174:36;;11201:1;11192:10;;11203:5;;11174:36;11270:4;11318:1;11313:27;;;;11354:1;11349:191;;;;11263:277;;11313:27;11331:1;11322:10;;11333:5;;;11349:191;11394:3;11384:8;11381:17;11378:43;;;11401:18;;:::i;:::-;11378:43;11450:8;11447:1;11443:16;11434:25;;11485:3;11478:5;11475:14;11472:40;;;11492:18;;:::i;:::-;11472:40;11525:5;;;11263:277;;11649:2;11639:8;11636:16;11630:3;11624:4;11621:13;11617:36;11599:2;11589:8;11586:16;11581:2;11575:4;11572:12;11568:35;11552:111;11549:246;;;11705:8;11699:4;11695:19;11686:28;;11740:3;11733:5;11730:14;11727:40;;;11747:18;;:::i;:::-;11727:40;11780:5;;11549:246;11820:42;11858:3;11848:8;11842:4;11839:1;11820:42;:::i;:::-;11805:57;;;;11894:4;11889:3;11885:14;11878:5;11875:25;11872:51;;;11903:18;;:::i;:::-;11872:51;11952:4;11945:5;11941:16;11932:25;;10890:1073;;;;;;:::o;11969:281::-;12027:5;12051:23;12069:4;12051:23;:::i;:::-;12043:31;;12095:25;12111:8;12095:25;:::i;:::-;12083:37;;12139:104;12176:66;12166:8;12160:4;12139:104;:::i;:::-;12130:113;;11969:281;;;;:::o;12256:410::-;12296:7;12319:20;12337:1;12319:20;:::i;:::-;12314:25;;12353:20;12371:1;12353:20;:::i;:::-;12348:25;;12408:1;12405;12401:9;12430:30;12448:11;12430:30;:::i;:::-;12419:41;;12609:1;12600:7;12596:15;12593:1;12590:22;12570:1;12563:9;12543:83;12520:139;;12639:18;;:::i;:::-;12520:139;12304:362;12256:410;;;;:::o;12672:182::-;12812:34;12808:1;12800:6;12796:14;12789:58;12672:182;:::o;12860:366::-;13002:3;13023:67;13087:2;13082:3;13023:67;:::i;:::-;13016:74;;13099:93;13188:3;13099:93;:::i;:::-;13217:2;13212:3;13208:12;13201:19;;12860:366;;;:::o;13232:419::-;13398:4;13436:2;13425:9;13421:18;13413:26;;13485:9;13479:4;13475:20;13471:1;13460:9;13456:17;13449:47;13513:131;13639:4;13513:131;:::i;:::-;13505:139;;13232:419;;;:::o;13657:173::-;13797:25;13793:1;13785:6;13781:14;13774:49;13657:173;:::o;13836:366::-;13978:3;13999:67;14063:2;14058:3;13999:67;:::i;:::-;13992:74;;14075:93;14164:3;14075:93;:::i;:::-;14193:2;14188:3;14184:12;14177:19;;13836:366;;;:::o;14208:419::-;14374:4;14412:2;14401:9;14397:18;14389:26;;14461:9;14455:4;14451:20;14447:1;14436:9;14432:17;14425:47;14489:131;14615:4;14489:131;:::i;:::-;14481:139;;14208:419;;;:::o;14633:143::-;14690:5;14721:6;14715:13;14706:22;;14737:33;14764:5;14737:33;:::i;:::-;14633:143;;;;:::o;14782:351::-;14852:6;14901:2;14889:9;14880:7;14876:23;14872:32;14869:119;;;14907:79;;:::i;:::-;14869:119;15027:1;15052:64;15108:7;15099:6;15088:9;15084:22;15052:64;:::i;:::-;15042:74;;14998:128;14782:351;;;;:::o;15139:332::-;15260:4;15298:2;15287:9;15283:18;15275:26;;15311:71;15379:1;15368:9;15364:17;15355:6;15311:71;:::i;:::-;15392:72;15460:2;15449:9;15445:18;15436:6;15392:72;:::i;:::-;15139:332;;;;;:::o;15477:85::-;15522:7;15551:5;15540:16;;15477:85;;;:::o;15568:60::-;15596:3;15617:5;15610:12;;15568:60;;;:::o;15634:158::-;15692:9;15725:61;15743:42;15752:32;15778:5;15752:32;:::i;:::-;15743:42;:::i;:::-;15725:61;:::i;:::-;15712:74;;15634:158;;;:::o;15798:147::-;15893:45;15932:5;15893:45;:::i;:::-;15888:3;15881:58;15798:147;;:::o;15951:807::-;16200:4;16238:3;16227:9;16223:19;16215:27;;16252:71;16320:1;16309:9;16305:17;16296:6;16252:71;:::i;:::-;16333:72;16401:2;16390:9;16386:18;16377:6;16333:72;:::i;:::-;16415:80;16491:2;16480:9;16476:18;16467:6;16415:80;:::i;:::-;16505;16581:2;16570:9;16566:18;16557:6;16505:80;:::i;:::-;16595:73;16663:3;16652:9;16648:19;16639:6;16595:73;:::i;:::-;16678;16746:3;16735:9;16731:19;16722:6;16678:73;:::i;:::-;15951:807;;;;;;;;;:::o;16764:143::-;16821:5;16852:6;16846:13;16837:22;;16868:33;16895:5;16868:33;:::i;:::-;16764:143;;;;:::o;16913:663::-;17001:6;17009;17017;17066:2;17054:9;17045:7;17041:23;17037:32;17034:119;;;17072:79;;:::i;:::-;17034:119;17192:1;17217:64;17273:7;17264:6;17253:9;17249:22;17217:64;:::i;:::-;17207:74;;17163:128;17330:2;17356:64;17412:7;17403:6;17392:9;17388:22;17356:64;:::i;:::-;17346:74;;17301:129;17469:2;17495:64;17551:7;17542:6;17531:9;17527:22;17495:64;:::i;:::-;17485:74;;17440:129;16913:663;;;;;:::o;17582:332::-;17703:4;17741:2;17730:9;17726:18;17718:26;;17754:71;17822:1;17811:9;17807:17;17798:6;17754:71;:::i;:::-;17835:72;17903:2;17892:9;17888:18;17879:6;17835:72;:::i;:::-;17582:332;;;;;:::o;17920:137::-;17974:5;18005:6;17999:13;17990:22;;18021:30;18045:5;18021:30;:::i;:::-;17920:137;;;;:::o;18063:345::-;18130:6;18179:2;18167:9;18158:7;18154:23;18150:32;18147:119;;;18185:79;;:::i;:::-;18147:119;18305:1;18330:61;18383:7;18374:6;18363:9;18359:22;18330:61;:::i;:::-;18320:71;;18276:125;18063:345;;;;:::o;18414:180::-;18462:77;18459:1;18452:88;18559:4;18556:1;18549:15;18583:4;18580:1;18573:15;18600:233;18639:3;18662:24;18680:5;18662:24;:::i;:::-;18653:33;;18708:66;18701:5;18698:77;18695:103;;18778:18;;:::i;:::-;18695:103;18825:1;18818:5;18814:13;18807:20;;18600:233;;;:::o;18839:223::-;18979:34;18975:1;18967:6;18963:14;18956:58;19048:6;19043:2;19035:6;19031:15;19024:31;18839:223;:::o;19068:366::-;19210:3;19231:67;19295:2;19290:3;19231:67;:::i;:::-;19224:74;;19307:93;19396:3;19307:93;:::i;:::-;19425:2;19420:3;19416:12;19409:19;;19068:366;;;:::o;19440:419::-;19606:4;19644:2;19633:9;19629:18;19621:26;;19693:9;19687:4;19683:20;19679:1;19668:9;19664:17;19657:47;19721:131;19847:4;19721:131;:::i;:::-;19713:139;;19440:419;;;:::o;19865:221::-;20005:34;20001:1;19993:6;19989:14;19982:58;20074:4;20069:2;20061:6;20057:15;20050:29;19865:221;:::o;20092:366::-;20234:3;20255:67;20319:2;20314:3;20255:67;:::i;:::-;20248:74;;20331:93;20420:3;20331:93;:::i;:::-;20449:2;20444:3;20440:12;20433:19;;20092:366;;;:::o;20464:419::-;20630:4;20668:2;20657:9;20653:18;20645:26;;20717:9;20711:4;20707:20;20703:1;20692:9;20688:17;20681:47;20745:131;20871:4;20745:131;:::i;:::-;20737:139;;20464:419;;;:::o;20889:224::-;21029:34;21025:1;21017:6;21013:14;21006:58;21098:7;21093:2;21085:6;21081:15;21074:32;20889:224;:::o;21119:366::-;21261:3;21282:67;21346:2;21341:3;21282:67;:::i;:::-;21275:74;;21358:93;21447:3;21358:93;:::i;:::-;21476:2;21471:3;21467:12;21460:19;;21119:366;;;:::o;21491:419::-;21657:4;21695:2;21684:9;21680:18;21672:26;;21744:9;21738:4;21734:20;21730:1;21719:9;21715:17;21708:47;21772:131;21898:4;21772:131;:::i;:::-;21764:139;;21491:419;;;:::o;21916:222::-;22056:34;22052:1;22044:6;22040:14;22033:58;22125:5;22120:2;22112:6;22108:15;22101:30;21916:222;:::o;22144:366::-;22286:3;22307:67;22371:2;22366:3;22307:67;:::i;:::-;22300:74;;22383:93;22472:3;22383:93;:::i;:::-;22501:2;22496:3;22492:12;22485:19;;22144:366;;;:::o;22516:419::-;22682:4;22720:2;22709:9;22705:18;22697:26;;22769:9;22763:4;22759:20;22755:1;22744:9;22740:17;22733:47;22797:131;22923:4;22797:131;:::i;:::-;22789:139;;22516:419;;;:::o;22941:228::-;23081:34;23077:1;23069:6;23065:14;23058:58;23150:11;23145:2;23137:6;23133:15;23126:36;22941:228;:::o;23175:366::-;23317:3;23338:67;23402:2;23397:3;23338:67;:::i;:::-;23331:74;;23414:93;23503:3;23414:93;:::i;:::-;23532:2;23527:3;23523:12;23516:19;;23175:366;;;:::o;23547:419::-;23713:4;23751:2;23740:9;23736:18;23728:26;;23800:9;23794:4;23790:20;23786:1;23775:9;23771:17;23764:47;23828:131;23954:4;23828:131;:::i;:::-;23820:139;;23547:419;;;:::o;23972:223::-;24112:34;24108:1;24100:6;24096:14;24089:58;24181:6;24176:2;24168:6;24164:15;24157:31;23972:223;:::o;24201:366::-;24343:3;24364:67;24428:2;24423:3;24364:67;:::i;:::-;24357:74;;24440:93;24529:3;24440:93;:::i;:::-;24558:2;24553:3;24549:12;24542:19;;24201:366;;;:::o;24573:419::-;24739:4;24777:2;24766:9;24762:18;24754:26;;24826:9;24820:4;24816:20;24812:1;24801:9;24797:17;24790:47;24854:131;24980:4;24854:131;:::i;:::-;24846:139;;24573:419;;;:::o;24998:175::-;25138:27;25134:1;25126:6;25122:14;25115:51;24998:175;:::o;25179:366::-;25321:3;25342:67;25406:2;25401:3;25342:67;:::i;:::-;25335:74;;25418:93;25507:3;25418:93;:::i;:::-;25536:2;25531:3;25527:12;25520:19;;25179:366;;;:::o;25551:419::-;25717:4;25755:2;25744:9;25740:18;25732:26;;25804:9;25798:4;25794:20;25790:1;25779:9;25775:17;25768:47;25832:131;25958:4;25832:131;:::i;:::-;25824:139;;25551:419;;;:::o;25976:191::-;26016:3;26035:20;26053:1;26035:20;:::i;:::-;26030:25;;26069:20;26087:1;26069:20;:::i;:::-;26064:25;;26112:1;26109;26105:9;26098:16;;26133:3;26130:1;26127:10;26124:36;;;26140:18;;:::i;:::-;26124:36;25976:191;;;;:::o;26173:176::-;26313:28;26309:1;26301:6;26297:14;26290:52;26173:176;:::o;26355:366::-;26497:3;26518:67;26582:2;26577:3;26518:67;:::i;:::-;26511:74;;26594:93;26683:3;26594:93;:::i;:::-;26712:2;26707:3;26703:12;26696:19;;26355:366;;;:::o;26727:419::-;26893:4;26931:2;26920:9;26916:18;26908:26;;26980:9;26974:4;26970:20;26966:1;26955:9;26951:17;26944:47;27008:131;27134:4;27008:131;:::i;:::-;27000:139;;26727:419;;;:::o;27152:194::-;27192:4;27212:20;27230:1;27212:20;:::i;:::-;27207:25;;27246:20;27264:1;27246:20;:::i;:::-;27241:25;;27290:1;27287;27283:9;27275:17;;27314:1;27308:4;27305:11;27302:37;;;27319:18;;:::i;:::-;27302:37;27152:194;;;;:::o;27352:114::-;27419:6;27453:5;27447:12;27437:22;;27352:114;;;:::o;27472:184::-;27571:11;27605:6;27600:3;27593:19;27645:4;27640:3;27636:14;27621:29;;27472:184;;;;:::o;27662:132::-;27729:4;27752:3;27744:11;;27782:4;27777:3;27773:14;27765:22;;27662:132;;;:::o;27800:108::-;27877:24;27895:5;27877:24;:::i;:::-;27872:3;27865:37;27800:108;;:::o;27914:179::-;27983:10;28004:46;28046:3;28038:6;28004:46;:::i;:::-;28082:4;28077:3;28073:14;28059:28;;27914:179;;;;:::o;28099:113::-;28169:4;28201;28196:3;28192:14;28184:22;;28099:113;;;:::o;28248:732::-;28367:3;28396:54;28444:5;28396:54;:::i;:::-;28466:86;28545:6;28540:3;28466:86;:::i;:::-;28459:93;;28576:56;28626:5;28576:56;:::i;:::-;28655:7;28686:1;28671:284;28696:6;28693:1;28690:13;28671:284;;;28772:6;28766:13;28799:63;28858:3;28843:13;28799:63;:::i;:::-;28792:70;;28885:60;28938:6;28885:60;:::i;:::-;28875:70;;28731:224;28718:1;28715;28711:9;28706:14;;28671:284;;;28675:14;28971:3;28964:10;;28372:608;;;28248:732;;;;:::o;28986:831::-;29249:4;29287:3;29276:9;29272:19;29264:27;;29301:71;29369:1;29358:9;29354:17;29345:6;29301:71;:::i;:::-;29382:80;29458:2;29447:9;29443:18;29434:6;29382:80;:::i;:::-;29509:9;29503:4;29499:20;29494:2;29483:9;29479:18;29472:48;29537:108;29640:4;29631:6;29537:108;:::i;:::-;29529:116;;29655:72;29723:2;29712:9;29708:18;29699:6;29655:72;:::i;:::-;29737:73;29805:3;29794:9;29790:19;29781:6;29737:73;:::i;:::-;28986:831;;;;;;;;:::o;29823:180::-;29871:77;29868:1;29861:88;29968:4;29965:1;29958:15;29992:4;29989:1;29982:15;30009:185;30049:1;30066:20;30084:1;30066:20;:::i;:::-;30061:25;;30100:20;30118:1;30100:20;:::i;:::-;30095:25;;30139:1;30129:35;;30144:18;;:::i;:::-;30129:35;30186:1;30183;30179:9;30174:14;;30009:185;;;;:::o;30200:220::-;30340:34;30336:1;30328:6;30324:14;30317:58;30409:3;30404:2;30396:6;30392:15;30385:28;30200:220;:::o;30426:366::-;30568:3;30589:67;30653:2;30648:3;30589:67;:::i;:::-;30582:74;;30665:93;30754:3;30665:93;:::i;:::-;30783:2;30778:3;30774:12;30767:19;;30426:366;;;:::o;30798:419::-;30964:4;31002:2;30991:9;30987:18;30979:26;;31051:9;31045:4;31041:20;31037:1;31026:9;31022:17;31015:47;31079:131;31205:4;31079:131;:::i;:::-;31071:139;;30798:419;;;:::o;31223:177::-;31363:29;31359:1;31351:6;31347:14;31340:53;31223:177;:::o;31406:366::-;31548:3;31569:67;31633:2;31628:3;31569:67;:::i;:::-;31562:74;;31645:93;31734:3;31645:93;:::i;:::-;31763:2;31758:3;31754:12;31747:19;;31406:366;;;:::o;31778:419::-;31944:4;31982:2;31971:9;31967:18;31959:26;;32031:9;32025:4;32021:20;32017:1;32006:9;32002:17;31995:47;32059:131;32185:4;32059:131;:::i;:::-;32051:139;;31778:419;;;:::o

Swarm Source

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