Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 104 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20345611 | 34 days ago | IN | 0 ETH | 0.00011484 | ||||
Approve | 20057585 | 74 days ago | IN | 0 ETH | 0.00034843 | ||||
Approve | 20053546 | 75 days ago | IN | 0 ETH | 0.00016427 | ||||
Approve | 20023783 | 79 days ago | IN | 0 ETH | 0.00028014 | ||||
Approve | 20016897 | 80 days ago | IN | 0 ETH | 0.0002673 | ||||
Approve | 20001532 | 82 days ago | IN | 0 ETH | 0.00022928 | ||||
Approve | 20000880 | 82 days ago | IN | 0 ETH | 0.0003194 | ||||
Approve | 20000872 | 82 days ago | IN | 0 ETH | 0.00032451 | ||||
Approve | 19996134 | 83 days ago | IN | 0 ETH | 0.00034709 | ||||
Approve | 19986642 | 84 days ago | IN | 0 ETH | 0.0004143 | ||||
Approve | 19986501 | 84 days ago | IN | 0 ETH | 0.00032809 | ||||
Approve | 19986487 | 84 days ago | IN | 0 ETH | 0.00040369 | ||||
Transfer | 19986366 | 84 days ago | IN | 0 ETH | 0.00065324 | ||||
Approve | 19986152 | 84 days ago | IN | 0 ETH | 0.00039578 | ||||
Approve | 19986034 | 84 days ago | IN | 0 ETH | 0.00037888 | ||||
Approve | 19985805 | 84 days ago | IN | 0 ETH | 0.00053112 | ||||
Approve | 19985516 | 84 days ago | IN | 0 ETH | 0.00078859 | ||||
Approve | 19985071 | 84 days ago | IN | 0 ETH | 0.00043154 | ||||
Approve | 19984664 | 84 days ago | IN | 0 ETH | 0.00056801 | ||||
Approve | 19984331 | 84 days ago | IN | 0 ETH | 0.00121881 | ||||
Transfer | 19983664 | 84 days ago | IN | 0 ETH | 0.0019213 | ||||
Approve | 19983644 | 84 days ago | IN | 0 ETH | 0.00087579 | ||||
Approve | 19983498 | 84 days ago | IN | 0 ETH | 0.00141478 | ||||
Approve | 19983470 | 84 days ago | IN | 0 ETH | 0.00131673 | ||||
Approve | 19983468 | 84 days ago | IN | 0 ETH | 0.00119135 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19975500 | 86 days ago | 0.20456692 ETH | ||||
19975500 | 86 days ago | 0.20456692 ETH | ||||
19975492 | 86 days ago | 0.14117993 ETH | ||||
19975492 | 86 days ago | 0.14117993 ETH | ||||
19975470 | 86 days ago | 0.01845947 ETH | ||||
19975470 | 86 days ago | 0.01845947 ETH | ||||
19975379 | 86 days ago | 0.0211513 ETH | ||||
19975379 | 86 days ago | 0.0211513 ETH | ||||
19975353 | 86 days ago | 0.03164846 ETH | ||||
19975353 | 86 days ago | 0.03164846 ETH | ||||
19975344 | 86 days ago | 0.03164846 ETH | ||||
19975344 | 86 days ago | 0.03164846 ETH | ||||
19975343 | 86 days ago | 0.01097378 ETH | ||||
19975343 | 86 days ago | 0.01097378 ETH | ||||
19975339 | 86 days ago | 0.17333527 ETH | ||||
19975339 | 86 days ago | 0.17333527 ETH | ||||
19975335 | 86 days ago | 0.1741308 ETH | ||||
19975335 | 86 days ago | 0.1741308 ETH | ||||
19975333 | 86 days ago | 0.03102314 ETH | ||||
19975333 | 86 days ago | 0.03102314 ETH | ||||
19975326 | 86 days ago | 0.06132892 ETH | ||||
19975326 | 86 days ago | 0.06132892 ETH | ||||
19975318 | 86 days ago | 0.00673217 ETH | ||||
19975318 | 86 days ago | 0.00673217 ETH | ||||
19975317 | 86 days ago | 0.11547973 ETH |
Loading...
Loading
Contract Name:
MAGAINU
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-29 */ /** *Submitted for verification at Etherscan.io on 2024-05-29 */ /* |* * * * * * * * * * OOOOOOOOOOOOOOOOOOOOOOOOO| | * * * * * * * * * :::::::::::::::::::::::::| |* * * * * * * * * * OOOOOOOOOOOOOOOOOOOOOOOOO| | * * * * * * * * * :::::::::::::::::::::::::| |* * * * * * * * * * OOOOOOOOOOOOOOOOOOOOOOOOO| | * * * * * * * * * ::::::::::::::::::::;::::| |* * * * * * * * * * OOOOOOOOOOOOOOOOOOOOOOOOO| |:::::::::::::::::::::::::::::::::::::::::::::| |OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| |:::::::::::::::::::::::::::::::::::::::::::::| |OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| |:::::::::::::::::::::::::::::::::::::::::::::| |OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| MAGA INU - Make America Great Again Website: https://www.magainu.com TG: https://t.me/magainuportal X: https://x.com/MagaInuToken */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract MAGAINU is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; mapping(uint256 => uint256) private _sellCount; bool public transferDelayEnabled = false; address payable private _taxWallet; uint256 private _initialBuyTax = 20; uint256 private _initialSellTax = 20; uint256 private _finalBuyTax = 0; uint256 private _finalSellTax = 0; uint256 private _reduceBuyTaxAt = 20; uint256 private _reduceSellTaxAt = 20; uint256 private _preventSwapBefore = 1; uint256 private _buyCount = 0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 2024000000 * 10 ** _decimals; string private constant _name = unicode"MAGA Inu"; string private constant _symbol = unicode"MAGAINU"; uint256 public _maxTxAmount = 40480000 * 10 ** _decimals; uint256 public _maxWalletSize = 40480000 * 10 ** _decimals; uint256 public _taxSwapThreshold = 2024000 * 10 ** _decimals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); if (transferDelayEnabled) { if ( to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "Only one transfer per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require( balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize." ); if (_buyCount < _preventSwapBefore) { require(!isContract(to)); } _buyCount++; } taxAmount = amount .mul( (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax ) .div(100); if (to == uniswapV2Pair && from != address(this)) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount .mul( (_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax ) .div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore && _sellCount[block.number] < 3 // only 3 tax sells per block ) { swapTokensForEth(min(amount, contractTokenBalance)); _sellCount[block.number] = _sellCount[block.number] + 1; uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if (tokenAmount == 0) { return; } if (!tradingOpen) { return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; transferDelayEnabled = false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function isBot(address a) public view returns (bool) { return bots[a]; } function manageList(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function reduceFee( uint256 _newBuyFee, uint256 _newSellFee ) external onlyOwner { require( _newBuyFee <= 30 && _newSellFee <= 30 && tradingOpen, "Invalid fee" ); _finalBuyTax = _newBuyFee; _finalSellTax = _newSellFee; } function openTrading() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } receive() external payable {} function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwap() external { require(_msgSender() == _taxWallet); uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } }
Contract Security Audit
- 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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"manageList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f60075f6101000a81548160ff021916908315150217905550601460085560146009555f600a555f600b556014600c556014600d556001600e555f600f556008600a620000529190620005e8565b630269ad0062000063919062000638565b6010556008600a620000769190620005e8565b630269ad0062000087919062000638565b6011556008600a6200009a9190620005e8565b621ee240620000aa919062000638565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000ed575f80fd5b505f620000ff6200042860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001ab6200042860201b60201c565b600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a620001fb9190620005e8565b6378a3ca006200020c919062000638565b60015f6200021f6200042860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002716200042f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200039c6200042860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a620003fa9190620005e8565b6378a3ca006200040b919062000638565b6040516200041a919062000693565b60405180910390a3620006ae565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004e057808604811115620004b857620004b762000456565b5b6001851615620004c85780820291505b8081029050620004d88562000483565b945062000498565b94509492505050565b5f82620004fa5760019050620005cc565b8162000509575f9050620005cc565b81600181146200052257600281146200052d5762000563565b6001915050620005cc565b60ff84111562000542576200054162000456565b5b8360020a9150848211156200055c576200055b62000456565b5b50620005cc565b5060208310610133831016604e8410600b84101617156200059d5782820a90508381111562000597576200059662000456565b5b620005cc565b620005ac84848460016200048f565b92509050818404811115620005c657620005c562000456565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005f482620005d3565b91506200060183620005dc565b9250620006307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004e9565b905092915050565b5f6200064482620005d3565b91506200065183620005d3565b92508282026200066181620005d3565b915082820484148315176200067b576200067a62000456565b5b5092915050565b6200068d81620005d3565b82525050565b5f602082019050620006a85f83018462000682565b92915050565b6135a880620006bc5f395ff3fe60806040526004361061012d575f3560e01c806372333356116100aa57806395d89b411161006e57806395d89b41146103b6578063a9059cbb146103e0578063bf474bed1461041c578063c876d0b914610446578063c9567bf914610470578063dd62ed3e1461048657610134565b806372333356146102fa578063751039fc146103225780637d1db4a5146103385780638da5cb5b146103625780638f9a55c01461038c57610134565b80633bbac579116100f15780633bbac5791461022e57806351bc3c851461026a5780636de7bcbd1461028057806370a08231146102a8578063715018a6146102e457610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063313ce5671461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c2565b60405161015991906124b3565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612571565b6104ff565b60405161019591906125c9565b60405180910390f35b3480156101a9575f80fd5b506101b261051c565b6040516101bf91906125f1565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e9919061260a565b61053f565b6040516101fb91906125c9565b60405180910390f35b34801561020f575f80fd5b50610218610613565b6040516102259190612675565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f919061268e565b61061b565b60405161026191906125c9565b60405180910390f35b348015610275575f80fd5b5061027e61066d565b005b34801561028b575f80fd5b506102a660048036038101906102a191906127f9565b610705565b005b3480156102b3575f80fd5b506102ce60048036038101906102c9919061268e565b61082a565b6040516102db91906125f1565b60405180910390f35b3480156102ef575f80fd5b506102f8610870565b005b348015610305575f80fd5b50610320600480360381019061031b9190612840565b6109be565b005b34801561032d575f80fd5b50610336610acb565b005b348015610343575f80fd5b5061034c610c13565b60405161035991906125f1565b60405180910390f35b34801561036d575f80fd5b50610376610c19565b604051610383919061288d565b60405180910390f35b348015610397575f80fd5b506103a0610c40565b6040516103ad91906125f1565b60405180910390f35b3480156103c1575f80fd5b506103ca610c46565b6040516103d791906124b3565b60405180910390f35b3480156103eb575f80fd5b5061040660048036038101906104019190612571565b610c83565b60405161041391906125c9565b60405180910390f35b348015610427575f80fd5b50610430610ca0565b60405161043d91906125f1565b60405180910390f35b348015610451575f80fd5b5061045a610ca6565b60405161046791906125c9565b60405180910390f35b34801561047b575f80fd5b50610484610cb8565b005b348015610491575f80fd5b506104ac60048036038101906104a791906128a6565b6111d7565b6040516104b991906125f1565b60405180910390f35b60606040518060400160405280600881526020017f4d41474120496e75000000000000000000000000000000000000000000000000815250905090565b5f61051261050b611259565b8484611260565b6001905092915050565b5f6008600a61052b9190612a40565b6378a3ca0061053a9190612a8a565b905090565b5f61054b848484611423565b61060884610557611259565b6106038560405180606001604052806028815260200161354b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ba611259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ee79092919063ffffffff16565b611260565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ae611259565b73ffffffffffffffffffffffffffffffffffffffff16146106cd575f80fd5b5f6106d73061082a565b90505f8111156106eb576106ea81611f49565b5b5f4790505f81111561070157610700816121d0565b5b5050565b61070d611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079090612b15565b60405180910390fd5b5f5b815181101561082657600160045f8484815181106107bc576107bb612b33565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061081e90612b60565b91505061079b565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610878611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612b15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c6611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612b15565b60405180910390fd5b601e8211158015610a645750601e8111155b8015610a7a575060148054906101000a900460ff165b610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090612bf1565b60405180910390fd5b81600a8190555080600b819055505050565b610ad3611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690612b15565b60405180910390fd5b6008600a610b6d9190612a40565b6378a3ca00610b7c9190612a8a565b6010819055506008600a610b909190612a40565b6378a3ca00610b9f9190612a8a565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610bed9190612a40565b6378a3ca00610bfc9190612a8a565b604051610c0991906125f1565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f610c96610c8f611259565b8484611423565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610cc0611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390612b15565b60405180910390fd5b60148054906101000a900460ff1615610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190612c59565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e363060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610e229190612a40565b6378a3ca00610e319190612a8a565b611260565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190612c8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612c8b565b6040518363ffffffff1660e01b8152600401610f8b929190612cb6565b6020604051808303815f875af1158015610fa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612c8b565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110523061082a565b5f8061105c610c19565b426040518863ffffffff1660e01b815260040161107e96959493929190612d1f565b60606040518083038185885af115801561109a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110bf9190612d92565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161115f929190612de2565b6020604051808303815f875af115801561117b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119f9190612e33565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612ece565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612f5c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141691906125f1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612fea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613078565b60405180910390fd5b5f8111611541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153890613106565b60405180910390fd5b5f61154a610c19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115b85750611588610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c375760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561165b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611663575f80fd5b60075f9054906101000a900460ff16156117e95760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611721575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117e8574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90613194565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611892575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118e5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119be5760105482111561192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906131fc565b60405180910390fd5b6011548261193c8561082a565b611946919061321a565b1115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90613297565b60405180910390fd5b600e54600f5410156119a65761199c83612239565b156119a5575f80fd5b5b600f5f8154809291906119b890612b60565b91905055505b6119fa60646119ec600c54600f54116119d9576008546119dd565b600a545b8561224a90919063ffffffff16565b6122c190919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a8457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b0d57601054821115611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac5906131fc565b60405180910390fd5b611b0a6064611afc600d54600f5411611ae957600954611aed565b600b545b8561224a90919063ffffffff16565b6122c190919063ffffffff16565b90505b5f611b173061082a565b9050601460159054906101000a900460ff16158015611b82575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b9a5750601460169054906101000a900460ff165b8015611ba7575060125481115b8015611bb65750600e54600f54115b8015611bd35750600360065f4381526020019081526020015f2054105b15611c3557611bea611be5848361230a565b611f49565b600160065f4381526020019081526020015f2054611c08919061321a565b60065f4381526020019081526020015f20819055505f4790505f811115611c3357611c32476121d0565b5b505b505b5f811115611d3657611c8f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2d91906125f1565b60405180910390a35b611d868260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461237f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e29611ddd828461237f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ecc848661237f90919063ffffffff16565b604051611ed991906125f1565b60405180910390a350505050565b5f838311158290611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2591906124b3565b60405180910390fd5b505f8385611f3c91906132b5565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121b35760148054906101000a900460ff16156121b3575f600267ffffffffffffffff811115611f9b57611f9a6126bd565b5b604051908082528060200260200182016040528015611fc95781602001602082028036833780820191505090505b50905030815f81518110611fe057611fdf612b33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a89190612c8b565b816001815181106120bc576120bb612b33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121223060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611260565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161218495949392919061339f565b5f604051808303815f87803b15801561219b575f80fd5b505af11580156121ad573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612235573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f80830361225a575f90506122bb565b5f82846122679190612a8a565b90508284826122769190613424565b146122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906134c4565b60405180910390fd5b809150505b92915050565b5f61230283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123c8565b905092915050565b5f818311612318578261231a565b815b905092915050565b5f808284612330919061321a565b905083811015612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061352c565b60405180910390fd5b8091505092915050565b5f6123c083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ee7565b905092915050565b5f808311829061240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240591906124b3565b60405180910390fd5b505f838561241c9190613424565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612460578082015181840152602081019050612445565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61248582612429565b61248f8185612433565b935061249f818560208601612443565b6124a88161246b565b840191505092915050565b5f6020820190508181035f8301526124cb818461247b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61250d826124e4565b9050919050565b61251d81612503565b8114612527575f80fd5b50565b5f8135905061253881612514565b92915050565b5f819050919050565b6125508161253e565b811461255a575f80fd5b50565b5f8135905061256b81612547565b92915050565b5f8060408385031215612587576125866124dc565b5b5f6125948582860161252a565b92505060206125a58582860161255d565b9150509250929050565b5f8115159050919050565b6125c3816125af565b82525050565b5f6020820190506125dc5f8301846125ba565b92915050565b6125eb8161253e565b82525050565b5f6020820190506126045f8301846125e2565b92915050565b5f805f60608486031215612621576126206124dc565b5b5f61262e8682870161252a565b935050602061263f8682870161252a565b92505060406126508682870161255d565b9150509250925092565b5f60ff82169050919050565b61266f8161265a565b82525050565b5f6020820190506126885f830184612666565b92915050565b5f602082840312156126a3576126a26124dc565b5b5f6126b08482850161252a565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126f38261246b565b810181811067ffffffffffffffff82111715612712576127116126bd565b5b80604052505050565b5f6127246124d3565b905061273082826126ea565b919050565b5f67ffffffffffffffff82111561274f5761274e6126bd565b5b602082029050602081019050919050565b5f80fd5b5f61277661277184612735565b61271b565b9050808382526020820190506020840283018581111561279957612798612760565b5b835b818110156127c257806127ae888261252a565b84526020840193505060208101905061279b565b5050509392505050565b5f82601f8301126127e0576127df6126b9565b5b81356127f0848260208601612764565b91505092915050565b5f6020828403121561280e5761280d6124dc565b5b5f82013567ffffffffffffffff81111561282b5761282a6124e0565b5b612837848285016127cc565b91505092915050565b5f8060408385031215612856576128556124dc565b5b5f6128638582860161255d565b92505060206128748582860161255d565b9150509250929050565b61288781612503565b82525050565b5f6020820190506128a05f83018461287e565b92915050565b5f80604083850312156128bc576128bb6124dc565b5b5f6128c98582860161252a565b92505060206128da8582860161252a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561296657808604811115612942576129416128e4565b5b60018516156129515780820291505b808102905061295f85612911565b9450612926565b94509492505050565b5f8261297e5760019050612a39565b8161298b575f9050612a39565b81600181146129a157600281146129ab576129da565b6001915050612a39565b60ff8411156129bd576129bc6128e4565b5b8360020a9150848211156129d4576129d36128e4565b5b50612a39565b5060208310610133831016604e8410600b8410161715612a0f5782820a905083811115612a0a57612a096128e4565b5b612a39565b612a1c848484600161291d565b92509050818404811115612a3357612a326128e4565b5b81810290505b9392505050565b5f612a4a8261253e565b9150612a558361265a565b9250612a827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461296f565b905092915050565b5f612a948261253e565b9150612a9f8361253e565b9250828202612aad8161253e565b91508282048414831517612ac457612ac36128e4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aff602083612433565b9150612b0a82612acb565b602082019050919050565b5f6020820190508181035f830152612b2c81612af3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b6a8261253e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b9c57612b9b6128e4565b5b600182019050919050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f612bdb600b83612433565b9150612be682612ba7565b602082019050919050565b5f6020820190508181035f830152612c0881612bcf565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c43601783612433565b9150612c4e82612c0f565b602082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b5f81519050612c8581612514565b92915050565b5f60208284031215612ca057612c9f6124dc565b5b5f612cad84828501612c77565b91505092915050565b5f604082019050612cc95f83018561287e565b612cd6602083018461287e565b9392505050565b5f819050919050565b5f819050919050565b5f612d09612d04612cff84612cdd565b612ce6565b61253e565b9050919050565b612d1981612cef565b82525050565b5f60c082019050612d325f83018961287e565b612d3f60208301886125e2565b612d4c6040830187612d10565b612d596060830186612d10565b612d66608083018561287e565b612d7360a08301846125e2565b979650505050505050565b5f81519050612d8c81612547565b92915050565b5f805f60608486031215612da957612da86124dc565b5b5f612db686828701612d7e565b9350506020612dc786828701612d7e565b9250506040612dd886828701612d7e565b9150509250925092565b5f604082019050612df55f83018561287e565b612e0260208301846125e2565b9392505050565b612e12816125af565b8114612e1c575f80fd5b50565b5f81519050612e2d81612e09565b92915050565b5f60208284031215612e4857612e476124dc565b5b5f612e5584828501612e1f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612eb8602483612433565b9150612ec382612e5e565b604082019050919050565b5f6020820190508181035f830152612ee581612eac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f46602283612433565b9150612f5182612eec565b604082019050919050565b5f6020820190508181035f830152612f7381612f3a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fd4602583612433565b9150612fdf82612f7a565b604082019050919050565b5f6020820190508181035f83015261300181612fc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613062602383612433565b915061306d82613008565b604082019050919050565b5f6020820190508181035f83015261308f81613056565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130f0602983612433565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f61317e602483612433565b915061318982613124565b604082019050919050565b5f6020820190508181035f8301526131ab81613172565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131e6601983612433565b91506131f1826131b2565b602082019050919050565b5f6020820190508181035f830152613213816131da565b9050919050565b5f6132248261253e565b915061322f8361253e565b9250828201905080821115613247576132466128e4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613281601a83612433565b915061328c8261324d565b602082019050919050565b5f6020820190508181035f8301526132ae81613275565b9050919050565b5f6132bf8261253e565b91506132ca8361253e565b92508282039050818111156132e2576132e16128e4565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61331a81612503565b82525050565b5f61332b8383613311565b60208301905092915050565b5f602082019050919050565b5f61334d826132e8565b61335781856132f2565b935061336283613302565b805f5b838110156133925781516133798882613320565b975061338483613337565b925050600181019050613365565b5085935050505092915050565b5f60a0820190506133b25f8301886125e2565b6133bf6020830187612d10565b81810360408301526133d18186613343565b90506133e0606083018561287e565b6133ed60808301846125e2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342e8261253e565b91506134398361253e565b925082613449576134486133f7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ae602183612433565b91506134b982613454565b604082019050919050565b5f6020820190508181035f8301526134db816134a2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613516601b83612433565b9150613521826134e2565b602082019050919050565b5f6020820190508181035f8301526135438161350a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203e8a20258ff006d70d4aa08f8bb8fb89dfac35cd015a734cd462c5328d59174c64736f6c63430008140033
Deployed Bytecode
0x60806040526004361061012d575f3560e01c806372333356116100aa57806395d89b411161006e57806395d89b41146103b6578063a9059cbb146103e0578063bf474bed1461041c578063c876d0b914610446578063c9567bf914610470578063dd62ed3e1461048657610134565b806372333356146102fa578063751039fc146103225780637d1db4a5146103385780638da5cb5b146103625780638f9a55c01461038c57610134565b80633bbac579116100f15780633bbac5791461022e57806351bc3c851461026a5780636de7bcbd1461028057806370a08231146102a8578063715018a6146102e457610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063313ce5671461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c2565b60405161015991906124b3565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612571565b6104ff565b60405161019591906125c9565b60405180910390f35b3480156101a9575f80fd5b506101b261051c565b6040516101bf91906125f1565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e9919061260a565b61053f565b6040516101fb91906125c9565b60405180910390f35b34801561020f575f80fd5b50610218610613565b6040516102259190612675565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f919061268e565b61061b565b60405161026191906125c9565b60405180910390f35b348015610275575f80fd5b5061027e61066d565b005b34801561028b575f80fd5b506102a660048036038101906102a191906127f9565b610705565b005b3480156102b3575f80fd5b506102ce60048036038101906102c9919061268e565b61082a565b6040516102db91906125f1565b60405180910390f35b3480156102ef575f80fd5b506102f8610870565b005b348015610305575f80fd5b50610320600480360381019061031b9190612840565b6109be565b005b34801561032d575f80fd5b50610336610acb565b005b348015610343575f80fd5b5061034c610c13565b60405161035991906125f1565b60405180910390f35b34801561036d575f80fd5b50610376610c19565b604051610383919061288d565b60405180910390f35b348015610397575f80fd5b506103a0610c40565b6040516103ad91906125f1565b60405180910390f35b3480156103c1575f80fd5b506103ca610c46565b6040516103d791906124b3565b60405180910390f35b3480156103eb575f80fd5b5061040660048036038101906104019190612571565b610c83565b60405161041391906125c9565b60405180910390f35b348015610427575f80fd5b50610430610ca0565b60405161043d91906125f1565b60405180910390f35b348015610451575f80fd5b5061045a610ca6565b60405161046791906125c9565b60405180910390f35b34801561047b575f80fd5b50610484610cb8565b005b348015610491575f80fd5b506104ac60048036038101906104a791906128a6565b6111d7565b6040516104b991906125f1565b60405180910390f35b60606040518060400160405280600881526020017f4d41474120496e75000000000000000000000000000000000000000000000000815250905090565b5f61051261050b611259565b8484611260565b6001905092915050565b5f6008600a61052b9190612a40565b6378a3ca0061053a9190612a8a565b905090565b5f61054b848484611423565b61060884610557611259565b6106038560405180606001604052806028815260200161354b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ba611259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ee79092919063ffffffff16565b611260565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ae611259565b73ffffffffffffffffffffffffffffffffffffffff16146106cd575f80fd5b5f6106d73061082a565b90505f8111156106eb576106ea81611f49565b5b5f4790505f81111561070157610700816121d0565b5b5050565b61070d611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079090612b15565b60405180910390fd5b5f5b815181101561082657600160045f8484815181106107bc576107bb612b33565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061081e90612b60565b91505061079b565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610878611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612b15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c6611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612b15565b60405180910390fd5b601e8211158015610a645750601e8111155b8015610a7a575060148054906101000a900460ff165b610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090612bf1565b60405180910390fd5b81600a8190555080600b819055505050565b610ad3611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690612b15565b60405180910390fd5b6008600a610b6d9190612a40565b6378a3ca00610b7c9190612a8a565b6010819055506008600a610b909190612a40565b6378a3ca00610b9f9190612a8a565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610bed9190612a40565b6378a3ca00610bfc9190612a8a565b604051610c0991906125f1565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f610c96610c8f611259565b8484611423565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610cc0611259565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390612b15565b60405180910390fd5b60148054906101000a900460ff1615610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190612c59565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e363060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610e229190612a40565b6378a3ca00610e319190612a8a565b611260565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec49190612c8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612c8b565b6040518363ffffffff1660e01b8152600401610f8b929190612cb6565b6020604051808303815f875af1158015610fa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612c8b565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110523061082a565b5f8061105c610c19565b426040518863ffffffff1660e01b815260040161107e96959493929190612d1f565b60606040518083038185885af115801561109a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110bf9190612d92565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161115f929190612de2565b6020604051808303815f875af115801561117b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119f9190612e33565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612ece565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390612f5c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141691906125f1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148890612fea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613078565b60405180910390fd5b5f8111611541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153890613106565b60405180910390fd5b5f61154a610c19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115b85750611588610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c375760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561165b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611663575f80fd5b60075f9054906101000a900460ff16156117e95760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611721575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117e8574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90613194565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611892575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118e5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119be5760105482111561192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906131fc565b60405180910390fd5b6011548261193c8561082a565b611946919061321a565b1115611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90613297565b60405180910390fd5b600e54600f5410156119a65761199c83612239565b156119a5575f80fd5b5b600f5f8154809291906119b890612b60565b91905055505b6119fa60646119ec600c54600f54116119d9576008546119dd565b600a545b8561224a90919063ffffffff16565b6122c190919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a8457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b0d57601054821115611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac5906131fc565b60405180910390fd5b611b0a6064611afc600d54600f5411611ae957600954611aed565b600b545b8561224a90919063ffffffff16565b6122c190919063ffffffff16565b90505b5f611b173061082a565b9050601460159054906101000a900460ff16158015611b82575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b9a5750601460169054906101000a900460ff165b8015611ba7575060125481115b8015611bb65750600e54600f54115b8015611bd35750600360065f4381526020019081526020015f2054105b15611c3557611bea611be5848361230a565b611f49565b600160065f4381526020019081526020015f2054611c08919061321a565b60065f4381526020019081526020015f20819055505f4790505f811115611c3357611c32476121d0565b5b505b505b5f811115611d3657611c8f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2d91906125f1565b60405180910390a35b611d868260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461237f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e29611ddd828461237f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ecc848661237f90919063ffffffff16565b604051611ed991906125f1565b60405180910390a350505050565b5f838311158290611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2591906124b3565b60405180910390fd5b505f8385611f3c91906132b5565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156121b35760148054906101000a900460ff16156121b3575f600267ffffffffffffffff811115611f9b57611f9a6126bd565b5b604051908082528060200260200182016040528015611fc95781602001602082028036833780820191505090505b50905030815f81518110611fe057611fdf612b33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612084573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a89190612c8b565b816001815181106120bc576120bb612b33565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121223060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611260565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161218495949392919061339f565b5f604051808303815f87803b15801561219b575f80fd5b505af11580156121ad573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612235573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f80830361225a575f90506122bb565b5f82846122679190612a8a565b90508284826122769190613424565b146122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad906134c4565b60405180910390fd5b809150505b92915050565b5f61230283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123c8565b905092915050565b5f818311612318578261231a565b815b905092915050565b5f808284612330919061321a565b905083811015612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c9061352c565b60405180910390fd5b8091505092915050565b5f6123c083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ee7565b905092915050565b5f808311829061240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240591906124b3565b60405180910390fd5b505f838561241c9190613424565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612460578082015181840152602081019050612445565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61248582612429565b61248f8185612433565b935061249f818560208601612443565b6124a88161246b565b840191505092915050565b5f6020820190508181035f8301526124cb818461247b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61250d826124e4565b9050919050565b61251d81612503565b8114612527575f80fd5b50565b5f8135905061253881612514565b92915050565b5f819050919050565b6125508161253e565b811461255a575f80fd5b50565b5f8135905061256b81612547565b92915050565b5f8060408385031215612587576125866124dc565b5b5f6125948582860161252a565b92505060206125a58582860161255d565b9150509250929050565b5f8115159050919050565b6125c3816125af565b82525050565b5f6020820190506125dc5f8301846125ba565b92915050565b6125eb8161253e565b82525050565b5f6020820190506126045f8301846125e2565b92915050565b5f805f60608486031215612621576126206124dc565b5b5f61262e8682870161252a565b935050602061263f8682870161252a565b92505060406126508682870161255d565b9150509250925092565b5f60ff82169050919050565b61266f8161265a565b82525050565b5f6020820190506126885f830184612666565b92915050565b5f602082840312156126a3576126a26124dc565b5b5f6126b08482850161252a565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126f38261246b565b810181811067ffffffffffffffff82111715612712576127116126bd565b5b80604052505050565b5f6127246124d3565b905061273082826126ea565b919050565b5f67ffffffffffffffff82111561274f5761274e6126bd565b5b602082029050602081019050919050565b5f80fd5b5f61277661277184612735565b61271b565b9050808382526020820190506020840283018581111561279957612798612760565b5b835b818110156127c257806127ae888261252a565b84526020840193505060208101905061279b565b5050509392505050565b5f82601f8301126127e0576127df6126b9565b5b81356127f0848260208601612764565b91505092915050565b5f6020828403121561280e5761280d6124dc565b5b5f82013567ffffffffffffffff81111561282b5761282a6124e0565b5b612837848285016127cc565b91505092915050565b5f8060408385031215612856576128556124dc565b5b5f6128638582860161255d565b92505060206128748582860161255d565b9150509250929050565b61288781612503565b82525050565b5f6020820190506128a05f83018461287e565b92915050565b5f80604083850312156128bc576128bb6124dc565b5b5f6128c98582860161252a565b92505060206128da8582860161252a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561296657808604811115612942576129416128e4565b5b60018516156129515780820291505b808102905061295f85612911565b9450612926565b94509492505050565b5f8261297e5760019050612a39565b8161298b575f9050612a39565b81600181146129a157600281146129ab576129da565b6001915050612a39565b60ff8411156129bd576129bc6128e4565b5b8360020a9150848211156129d4576129d36128e4565b5b50612a39565b5060208310610133831016604e8410600b8410161715612a0f5782820a905083811115612a0a57612a096128e4565b5b612a39565b612a1c848484600161291d565b92509050818404811115612a3357612a326128e4565b5b81810290505b9392505050565b5f612a4a8261253e565b9150612a558361265a565b9250612a827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461296f565b905092915050565b5f612a948261253e565b9150612a9f8361253e565b9250828202612aad8161253e565b91508282048414831517612ac457612ac36128e4565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aff602083612433565b9150612b0a82612acb565b602082019050919050565b5f6020820190508181035f830152612b2c81612af3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b6a8261253e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b9c57612b9b6128e4565b5b600182019050919050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f612bdb600b83612433565b9150612be682612ba7565b602082019050919050565b5f6020820190508181035f830152612c0881612bcf565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c43601783612433565b9150612c4e82612c0f565b602082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b5f81519050612c8581612514565b92915050565b5f60208284031215612ca057612c9f6124dc565b5b5f612cad84828501612c77565b91505092915050565b5f604082019050612cc95f83018561287e565b612cd6602083018461287e565b9392505050565b5f819050919050565b5f819050919050565b5f612d09612d04612cff84612cdd565b612ce6565b61253e565b9050919050565b612d1981612cef565b82525050565b5f60c082019050612d325f83018961287e565b612d3f60208301886125e2565b612d4c6040830187612d10565b612d596060830186612d10565b612d66608083018561287e565b612d7360a08301846125e2565b979650505050505050565b5f81519050612d8c81612547565b92915050565b5f805f60608486031215612da957612da86124dc565b5b5f612db686828701612d7e565b9350506020612dc786828701612d7e565b9250506040612dd886828701612d7e565b9150509250925092565b5f604082019050612df55f83018561287e565b612e0260208301846125e2565b9392505050565b612e12816125af565b8114612e1c575f80fd5b50565b5f81519050612e2d81612e09565b92915050565b5f60208284031215612e4857612e476124dc565b5b5f612e5584828501612e1f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612eb8602483612433565b9150612ec382612e5e565b604082019050919050565b5f6020820190508181035f830152612ee581612eac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f46602283612433565b9150612f5182612eec565b604082019050919050565b5f6020820190508181035f830152612f7381612f3a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fd4602583612433565b9150612fdf82612f7a565b604082019050919050565b5f6020820190508181035f83015261300181612fc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613062602383612433565b915061306d82613008565b604082019050919050565b5f6020820190508181035f83015261308f81613056565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130f0602983612433565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f61317e602483612433565b915061318982613124565b604082019050919050565b5f6020820190508181035f8301526131ab81613172565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6131e6601983612433565b91506131f1826131b2565b602082019050919050565b5f6020820190508181035f830152613213816131da565b9050919050565b5f6132248261253e565b915061322f8361253e565b9250828201905080821115613247576132466128e4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613281601a83612433565b915061328c8261324d565b602082019050919050565b5f6020820190508181035f8301526132ae81613275565b9050919050565b5f6132bf8261253e565b91506132ca8361253e565b92508282039050818111156132e2576132e16128e4565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61331a81612503565b82525050565b5f61332b8383613311565b60208301905092915050565b5f602082019050919050565b5f61334d826132e8565b61335781856132f2565b935061336283613302565b805f5b838110156133925781516133798882613320565b975061338483613337565b925050600181019050613365565b5085935050505092915050565b5f60a0820190506133b25f8301886125e2565b6133bf6020830187612d10565b81810360408301526133d18186613343565b90506133e0606083018561287e565b6133ed60808301846125e2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342e8261253e565b91506134398361253e565b925082613449576134486133f7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ae602183612433565b91506134b982613454565b604082019050919050565b5f6020820190508181035f8301526134db816134a2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613516601b83612433565b9150613521826134e2565b602082019050919050565b5f6020820190508181035f8301526135438161350a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203e8a20258ff006d70d4aa08f8bb8fb89dfac35cd015a734cd462c5328d59174c64736f6c63430008140033
Deployed Bytecode Sourcemap
4664:10212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6615:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6892:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7692:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6801:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12833:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14507:366;;;;;;;;;;;;;:::i;:::-;;12927:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6995:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3689:148;;;;;;;;;;;;;:::i;:::-;;13104:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12524:201;;;;;;;;;;;;;:::i;:::-;;5753:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3475:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5816:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7122:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5881:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5103:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13422:837;;;;;;;;;;;;;:::i;:::-;;7322:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6615:83;6652:13;6685:5;;;;;;;;;;;;;;;;;6678:12;;6615:83;:::o;7498:186::-;7598:4;7615:39;7624:12;:10;:12::i;:::-;7638:7;7647:6;7615:8;:39::i;:::-;7672:4;7665:11;;7498:186;;;;:::o;6892:95::-;6945:7;5562:1;5618:2;:15;;;;:::i;:::-;5605:10;:28;;;;:::i;:::-;6965:14;;6892:95;:::o;7692:446::-;7824:4;7841:36;7851:6;7859:9;7870:6;7841:9;:36::i;:::-;7888:220;7911:6;7932:12;:10;:12::i;:::-;7959:138;8015:6;7959:138;;;;;;;;;;;;;;;;;:11;:19;7971:6;7959:19;;;;;;;;;;;;;;;:33;7979:12;:10;:12::i;:::-;7959:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7888:8;:220::i;:::-;8126:4;8119:11;;7692:446;;;;;:::o;6801:83::-;6842:5;5562:1;6860:16;;6801:83;:::o;12833:86::-;12880:4;12904;:7;12909:1;12904:7;;;;;;;;;;;;;;;;;;;;;;;;;12897:14;;12833:86;;;:::o;14507:366::-;14573:10;;;;;;;;;;;14557:26;;:12;:10;:12::i;:::-;:26;;;14549:35;;;;;;14595:20;14618:24;14636:4;14618:9;:24::i;:::-;14595:47;;14672:1;14657:12;:16;14653:79;;;14690:30;14707:12;14690:16;:30::i;:::-;14653:79;14742:18;14763:21;14742:42;;14812:1;14799:10;:14;14795:71;;;14830:24;14843:10;14830:12;:24::i;:::-;14795:71;14538:335;;14507:366::o;12927:169::-;3612:12;:10;:12::i;:::-;3602:22;;:6;;;;;;;;;;:22;;;3594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13006:6:::1;13001:88;13022:5;:12;13018:1;:16;13001:88;;;13073:4;13056;:14;13061:5;13067:1;13061:8;;;;;;;;:::i;:::-;;;;;;;;13056:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13036:3;;;;;:::i;:::-;;;;13001:88;;;;12927:169:::0;:::o;6995:119::-;7061:7;7088:9;:18;7098:7;7088:18;;;;;;;;;;;;;;;;7081:25;;6995:119;;;:::o;3689:148::-;3612:12;:10;:12::i;:::-;3602:22;;:6;;;;;;;;;;:22;;;3594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3796:1:::1;3759:40;;3780:6;::::0;::::1;;;;;;;;3759:40;;;;;;;;;;;;3827:1;3810:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3689:148::o:0;13104:310::-;3612:12;:10;:12::i;:::-;3602:22;;:6;;;;;;;;;;:22;;;3594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:2:::1;13241:10;:16;;:37;;;;;13276:2;13261:11;:17;;13241:37;:52;;;;;13282:11;::::0;::::1;;;;;;;;13241:52;13219:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;13358:10;13343:12;:25;;;;13395:11;13379:13;:27;;;;13104:310:::0;;:::o;12524:201::-;3612:12;:10;:12::i;:::-;3602:22;;:6;;;;;;;;;;:22;;;3594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5562:1:::1;5618:2;:15;;;;:::i;:::-;5605:10;:28;;;;:::i;:::-;12578:12;:22;;;;5562:1;5618:2;:15;;;;:::i;:::-;5605:10;:28;;;;:::i;:::-;12611:14;:24;;;;12669:5;12646:20;;:28;;;;;;;;;;;;;;;;;;12690:27;5562:1;5618:2;:15;;;;:::i;:::-;5605:10;:28;;;;:::i;:::-;12690:27;;;;;;:::i;:::-;;;;;;;;12524:201::o:0;5753:56::-;;;;:::o;3475:79::-;3513:7;3540:6;;;;;;;;;;;3533:13;;3475:79;:::o;5816:58::-;;;;:::o;6706:87::-;6745:13;6778:7;;;;;;;;;;;;;;;;;6771:14;;6706:87;:::o;7122:192::-;7225:4;7242:42;7252:12;:10;:12::i;:::-;7266:9;7277:6;7242:9;:42::i;:::-;7302:4;7295:11;;7122:192;;;;:::o;5881:60::-;;;;:::o;5103:40::-;;;;;;;;;;;;;:::o;13422:837::-;3612:12;:10;:12::i;:::-;3602:22;;:6;;;;;;;;;;:22;;;3594:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13484:11:::1;::::0;::::1;;;;;;;;13483:12;13475:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13585:42;13534:15;;:104;;;;;;;;;;;;;;;;;;13649:58;13666:4;13681:15;;;;;;;;;;;5562:1;5618:2;:15;;;;:::i;:::-;5605:10;:28;;;;:::i;:::-;13649:8;:58::i;:::-;13752:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13734:55;;;13816:4;13840:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13734:143;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13718:13;;:159;;;;;;;;;;;;;;;;;;13888:15;;;;;;;;;;;:31;;;13927:21;13972:4;13992:24;14010:4;13992:9;:24::i;:::-;14031:1;14047::::0;14063:7:::1;:5;:7::i;:::-;14085:15;13888:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14129:13;;;;;;;;;;;14122:29;;;14160:15;;;;;;;;;;;14178:14;14122:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14218:4;14204:11;;:18;;;;;;;;;;;;;;;;;;14247:4;14233:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;13422:837::o:0;7322:168::-;7428:7;7455:11;:18;7467:5;7455:18;;;;;;;;;;;;;;;:27;7474:7;7455:27;;;;;;;;;;;;;;;;7448:34;;7322:168;;;;:::o;1010:98::-;1063:7;1090:10;1083:17;;1010:98;:::o;8146:335::-;8256:1;8239:19;;:5;:19;;;8231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8337:1;8318:21;;:7;:21;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8419:6;8389:11;:18;8401:5;8389:18;;;;;;;;;;;;;;;:27;8408:7;8389:27;;;;;;;;;;;;;;;:36;;;;8457:7;8441:32;;8450:5;8441:32;;;8466:6;8441:32;;;;;;:::i;:::-;;;;;;;;8146:335;;;:::o;8489:3295::-;8593:1;8577:18;;:4;:18;;;8569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8670:1;8656:16;;:2;:16;;;8648:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8740:1;8731:6;:10;8723:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8798:17;8842:7;:5;:7::i;:::-;8834:15;;:4;:15;;;;:32;;;;;8859:7;:5;:7::i;:::-;8853:13;;:2;:13;;;;8834:32;8830:2583;;;8892:4;:10;8897:4;8892:10;;;;;;;;;;;;;;;;;;;;;;;;;8891:11;:24;;;;;8907:4;:8;8912:2;8907:8;;;;;;;;;;;;;;;;;;;;;;;;;8906:9;8891:24;8883:33;;;;;;8937:20;;;;;;;;;;;8933:485;;;9018:15;;;;;;;;;;;9004:30;;:2;:30;;;;:83;;;;;9073:13;;;;;;;;;;;9059:28;;:2;:28;;;;9004:83;8978:425;;;9206:12;9164:28;:39;9193:9;9164:39;;;;;;;;;;;;;;;;:54;9130:176;;;;;;;;;;;;:::i;:::-;;;;;;;;;9371:12;9329:28;:39;9358:9;9329:39;;;;;;;;;;;;;;;:54;;;;8978:425;8933:485;9464:13;;;;;;;;;;;9456:21;;:4;:21;;;:72;;;;;9512:15;;;;;;;;;;;9498:30;;:2;:30;;;;9456:72;:116;;;;;9550:18;:22;9569:2;9550:22;;;;;;;;;;;;;;;;;;;;;;;;;9549:23;9456:116;9434:559;;;9625:12;;9615:6;:22;;9607:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9742:14;;9732:6;9716:13;9726:2;9716:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9686:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9861:18;;9849:9;;:30;9845:103;;;9913:14;9924:2;9913:10;:14::i;:::-;9912:15;9904:24;;;;;;9845:103;9966:9;;:11;;;;;;;;;:::i;:::-;;;;;;9434:559;10021:208;10225:3;10021:181;10085:15;;10073:9;;:27;10072:111;;10169:14;;10072:111;;;10129:12;;10072:111;10021:6;:28;;:181;;;;:::i;:::-;:203;;:208;;;;:::i;:::-;10009:220;;10254:13;;;;;;;;;;;10248:19;;:2;:19;;;:44;;;;;10287:4;10271:21;;:4;:21;;;;10248:44;10244:411;;;10331:12;;10321:6;:22;;10313:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10404:235;10635:3;10404:204;10476:16;;10464:9;;:28;10463:122;;10570:15;;10463:122;;;10525:13;;10463:122;10404:6;:32;;:204;;;;:::i;:::-;:230;;:235;;;;:::i;:::-;10392:247;;10244:411;10671:28;10702:24;10720:4;10702:9;:24::i;:::-;10671:55;;10764:6;;;;;;;;;;;10763:7;:47;;;;;10797:13;;;;;;;;;;;10791:19;;:2;:19;;;10763:47;:79;;;;;10831:11;;;;;;;;;;;10763:79;:140;;;;;10886:17;;10863:20;:40;10763:140;:191;;;;;10936:18;;10924:9;;:30;10763:191;:240;;;;;11002:1;10975:10;:24;10986:12;10975:24;;;;;;;;;;;;:28;10763:240;10741:661;;;11068:51;11085:33;11089:6;11097:20;11085:3;:33::i;:::-;11068:16;:51::i;:::-;11192:1;11165:10;:24;11176:12;11165:24;;;;;;;;;;;;:28;;;;:::i;:::-;11138:10;:24;11149:12;11138:24;;;;;;;;;;;:55;;;;11212:26;11241:21;11212:50;;11306:1;11285:18;:22;11281:106;;;11332:35;11345:21;11332:12;:35::i;:::-;11281:106;11049:353;10741:661;8868:2545;8830:2583;11441:1;11429:9;:13;11425:172;;;11486:39;11515:9;11486;:24;11504:4;11486:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11459:9;:24;11477:4;11459:24;;;;;;;;;;;;;;;:66;;;;11568:4;11545:40;;11554:4;11545:40;;;11575:9;11545:40;;;;;;:::i;:::-;;;;;;;;11425:172;11625:27;11645:6;11625:9;:15;11635:4;11625:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11607:9;:15;11617:4;11607:15;;;;;;;;;;;;;;;:45;;;;11679:40;11697:21;11708:9;11697:6;:10;;:21;;;;:::i;:::-;11679:9;:13;11689:2;11679:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11663:9;:13;11673:2;11663:13;;;;;;;;;;;;;;;:56;;;;11750:2;11735:41;;11744:4;11735:41;;;11754:21;11765:9;11754:6;:10;;:21;;;;:::i;:::-;11735:41;;;;;;:::i;:::-;;;;;;;;8558:3226;8489:3295;;;:::o;2277:224::-;2397:7;2430:1;2425;:6;;2433:12;2417:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2457:9;2473:1;2469;:5;;;;:::i;:::-;2457:17;;2492:1;2485:8;;;2277:224;;;;;:::o;11907:609::-;6234:4;6225:6;;:13;;;;;;;;;;;;;;;;;;12004:1:::1;11989:11;:16:::0;11985:55;12022:7:::1;11985:55;12055:11;::::0;::::1;;;;;;;;12050:51:::0;12083:7:::1;12050:51;12111:21;12149:1;12135:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12111:40;;12180:4;12162;12167:1;12162:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12206:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12196:4;12201:1;12196:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12239:62;12256:4;12271:15;;;;;;;;;;;12289:11;12239:8;:62::i;:::-;12312:15;;;;;;;;;;;:66;;;12393:11;12419:1;12435:4;12462;12482:15;12312:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11974:542;6249:1;6270:5:::0;6261:6;;:14;;;;;;;;;;;;;;;;;;11907:609;:::o;12733:92::-;12790:10;;;;;;;;;;;:19;;:27;12810:6;12790:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12733:92;:::o;14304:195::-;14363:4;14380:12;14447:7;14435:20;14427:28;;14490:1;14483:4;:8;14476:15;;;14304:195;;;:::o;2509:246::-;2567:7;2596:1;2591;:6;2587:47;;2621:1;2614:8;;;;2587:47;2644:9;2660:1;2656;:5;;;;:::i;:::-;2644:17;;2689:1;2684;2680;:5;;;;:::i;:::-;:10;2672:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2746:1;2739:8;;;2509:246;;;;;:::o;2763:132::-;2821:7;2848:39;2852:1;2855;2848:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2841:46;;2763:132;;;;:::o;11792:107::-;11849:7;11881:1;11877;:5;11876:15;;11890:1;11876:15;;;11886:1;11876:15;11869:22;;11792:107;;;;:::o;1946:179::-;2004:7;2024:9;2040:1;2036;:5;;;;:::i;:::-;2024:17;;2065:1;2060;:6;;2052:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2116:1;2109:8;;;1946:179;;;;:::o;2133:136::-;2191:7;2218:43;2222:1;2225;2218:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2211:50;;2133:136;;;;:::o;2903:223::-;3023:7;3055:1;3051;:5;3058:12;3043:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3082:9;3098:1;3094;:5;;;;:::i;:::-;3082:17;;3117:1;3110:8;;;2903:223;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:117::-;5297:1;5294;5287:12;5311:180;5359:77;5356:1;5349:88;5456:4;5453:1;5446:15;5480:4;5477:1;5470:15;5497:281;5580:27;5602:4;5580:27;:::i;:::-;5572:6;5568:40;5710:6;5698:10;5695:22;5674:18;5662:10;5659:34;5656:62;5653:88;;;5721:18;;:::i;:::-;5653:88;5761:10;5757:2;5750:22;5540:238;5497:281;;:::o;5784:129::-;5818:6;5845:20;;:::i;:::-;5835:30;;5874:33;5902:4;5894:6;5874:33;:::i;:::-;5784:129;;;:::o;5919:311::-;5996:4;6086:18;6078:6;6075:30;6072:56;;;6108:18;;:::i;:::-;6072:56;6158:4;6150:6;6146:17;6138:25;;6218:4;6212;6208:15;6200:23;;5919:311;;;:::o;6236:117::-;6345:1;6342;6335:12;6376:710;6472:5;6497:81;6513:64;6570:6;6513:64;:::i;:::-;6497:81;:::i;:::-;6488:90;;6598:5;6627:6;6620:5;6613:21;6661:4;6654:5;6650:16;6643:23;;6714:4;6706:6;6702:17;6694:6;6690:30;6743:3;6735:6;6732:15;6729:122;;;6762:79;;:::i;:::-;6729:122;6877:6;6860:220;6894:6;6889:3;6886:15;6860:220;;;6969:3;6998:37;7031:3;7019:10;6998:37;:::i;:::-;6993:3;6986:50;7065:4;7060:3;7056:14;7049:21;;6936:144;6920:4;6915:3;6911:14;6904:21;;6860:220;;;6864:21;6478:608;;6376:710;;;;;:::o;7109:370::-;7180:5;7229:3;7222:4;7214:6;7210:17;7206:27;7196:122;;7237:79;;:::i;:::-;7196:122;7354:6;7341:20;7379:94;7469:3;7461:6;7454:4;7446:6;7442:17;7379:94;:::i;:::-;7370:103;;7186:293;7109:370;;;;:::o;7485:539::-;7569:6;7618:2;7606:9;7597:7;7593:23;7589:32;7586:119;;;7624:79;;:::i;:::-;7586:119;7772:1;7761:9;7757:17;7744:31;7802:18;7794:6;7791:30;7788:117;;;7824:79;;:::i;:::-;7788:117;7929:78;7999:7;7990:6;7979:9;7975:22;7929:78;:::i;:::-;7919:88;;7715:302;7485:539;;;;:::o;8030:474::-;8098:6;8106;8155:2;8143:9;8134:7;8130:23;8126:32;8123:119;;;8161:79;;:::i;:::-;8123:119;8281:1;8306:53;8351:7;8342:6;8331:9;8327:22;8306:53;:::i;:::-;8296:63;;8252:117;8408:2;8434:53;8479:7;8470:6;8459:9;8455:22;8434:53;:::i;:::-;8424:63;;8379:118;8030:474;;;;;:::o;8510:118::-;8597:24;8615:5;8597:24;:::i;:::-;8592:3;8585:37;8510:118;;:::o;8634:222::-;8727:4;8765:2;8754:9;8750:18;8742:26;;8778:71;8846:1;8835:9;8831:17;8822:6;8778:71;:::i;:::-;8634:222;;;;:::o;8862:474::-;8930:6;8938;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;9240:2;9266:53;9311:7;9302:6;9291:9;9287:22;9266:53;:::i;:::-;9256:63;;9211:118;8862:474;;;;;:::o;9342:180::-;9390:77;9387:1;9380:88;9487:4;9484:1;9477:15;9511:4;9508:1;9501:15;9528:102;9570:8;9617:5;9614:1;9610:13;9589:34;;9528:102;;;:::o;9636:848::-;9697:5;9704:4;9728:6;9719:15;;9752:5;9743:14;;9766:712;9787:1;9777:8;9774:15;9766:712;;;9882:4;9877:3;9873:14;9867:4;9864:24;9861:50;;;9891:18;;:::i;:::-;9861:50;9941:1;9931:8;9927:16;9924:451;;;10356:4;10349:5;10345:16;10336:25;;9924:451;10406:4;10400;10396:15;10388:23;;10436:32;10459:8;10436:32;:::i;:::-;10424:44;;9766:712;;;9636:848;;;;;;;:::o;10490:1073::-;10544:5;10735:8;10725:40;;10756:1;10747:10;;10758:5;;10725:40;10784:4;10774:36;;10801:1;10792:10;;10803:5;;10774:36;10870:4;10918:1;10913:27;;;;10954:1;10949:191;;;;10863:277;;10913:27;10931:1;10922:10;;10933:5;;;10949:191;10994:3;10984:8;10981:17;10978:43;;;11001:18;;:::i;:::-;10978:43;11050:8;11047:1;11043:16;11034:25;;11085:3;11078:5;11075:14;11072:40;;;11092:18;;:::i;:::-;11072:40;11125:5;;;10863:277;;11249:2;11239:8;11236:16;11230:3;11224:4;11221:13;11217:36;11199:2;11189:8;11186:16;11181:2;11175:4;11172:12;11168:35;11152:111;11149:246;;;11305:8;11299:4;11295:19;11286:28;;11340:3;11333:5;11330:14;11327:40;;;11347:18;;:::i;:::-;11327:40;11380:5;;11149:246;11420:42;11458:3;11448:8;11442:4;11439:1;11420:42;:::i;:::-;11405:57;;;;11494:4;11489:3;11485:14;11478:5;11475:25;11472:51;;;11503:18;;:::i;:::-;11472:51;11552:4;11545:5;11541:16;11532:25;;10490:1073;;;;;;:::o;11569:281::-;11627:5;11651:23;11669:4;11651:23;:::i;:::-;11643:31;;11695:25;11711:8;11695:25;:::i;:::-;11683:37;;11739:104;11776:66;11766:8;11760:4;11739:104;:::i;:::-;11730:113;;11569:281;;;;:::o;11856:410::-;11896:7;11919:20;11937:1;11919:20;:::i;:::-;11914:25;;11953:20;11971:1;11953:20;:::i;:::-;11948:25;;12008:1;12005;12001:9;12030:30;12048:11;12030:30;:::i;:::-;12019:41;;12209:1;12200:7;12196:15;12193:1;12190:22;12170:1;12163:9;12143:83;12120:139;;12239:18;;:::i;:::-;12120:139;11904:362;11856:410;;;;:::o;12272:182::-;12412:34;12408:1;12400:6;12396:14;12389:58;12272:182;:::o;12460:366::-;12602:3;12623:67;12687:2;12682:3;12623:67;:::i;:::-;12616:74;;12699:93;12788:3;12699:93;:::i;:::-;12817:2;12812:3;12808:12;12801:19;;12460:366;;;:::o;12832:419::-;12998:4;13036:2;13025:9;13021:18;13013:26;;13085:9;13079:4;13075:20;13071:1;13060:9;13056:17;13049:47;13113:131;13239:4;13113:131;:::i;:::-;13105:139;;12832:419;;;:::o;13257:180::-;13305:77;13302:1;13295:88;13402:4;13399:1;13392:15;13426:4;13423:1;13416:15;13443:233;13482:3;13505:24;13523:5;13505:24;:::i;:::-;13496:33;;13551:66;13544:5;13541:77;13538:103;;13621:18;;:::i;:::-;13538:103;13668:1;13661:5;13657:13;13650:20;;13443:233;;;:::o;13682:161::-;13822:13;13818:1;13810:6;13806:14;13799:37;13682:161;:::o;13849:366::-;13991:3;14012:67;14076:2;14071:3;14012:67;:::i;:::-;14005:74;;14088:93;14177:3;14088:93;:::i;:::-;14206:2;14201:3;14197:12;14190:19;;13849:366;;;:::o;14221:419::-;14387:4;14425:2;14414:9;14410:18;14402:26;;14474:9;14468:4;14464:20;14460:1;14449:9;14445:17;14438:47;14502:131;14628:4;14502:131;:::i;:::-;14494:139;;14221:419;;;:::o;14646:173::-;14786:25;14782:1;14774:6;14770:14;14763:49;14646:173;:::o;14825:366::-;14967:3;14988:67;15052:2;15047:3;14988:67;:::i;:::-;14981:74;;15064:93;15153:3;15064:93;:::i;:::-;15182:2;15177:3;15173:12;15166:19;;14825:366;;;:::o;15197:419::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15450:9;15444:4;15440:20;15436:1;15425:9;15421:17;15414:47;15478:131;15604:4;15478:131;:::i;:::-;15470:139;;15197:419;;;:::o;15622:143::-;15679:5;15710:6;15704:13;15695:22;;15726:33;15753:5;15726:33;:::i;:::-;15622:143;;;;:::o;15771:351::-;15841:6;15890:2;15878:9;15869:7;15865:23;15861:32;15858:119;;;15896:79;;:::i;:::-;15858:119;16016:1;16041:64;16097:7;16088:6;16077:9;16073:22;16041:64;:::i;:::-;16031:74;;15987:128;15771:351;;;;:::o;16128:332::-;16249:4;16287:2;16276:9;16272:18;16264:26;;16300:71;16368:1;16357:9;16353:17;16344:6;16300:71;:::i;:::-;16381:72;16449:2;16438:9;16434:18;16425:6;16381:72;:::i;:::-;16128:332;;;;;:::o;16466:85::-;16511:7;16540:5;16529:16;;16466:85;;;:::o;16557:60::-;16585:3;16606:5;16599:12;;16557:60;;;:::o;16623:158::-;16681:9;16714:61;16732:42;16741:32;16767:5;16741:32;:::i;:::-;16732:42;:::i;:::-;16714:61;:::i;:::-;16701:74;;16623:158;;;:::o;16787:147::-;16882:45;16921:5;16882:45;:::i;:::-;16877:3;16870:58;16787:147;;:::o;16940:807::-;17189:4;17227:3;17216:9;17212:19;17204:27;;17241:71;17309:1;17298:9;17294:17;17285:6;17241:71;:::i;:::-;17322:72;17390:2;17379:9;17375:18;17366:6;17322:72;:::i;:::-;17404:80;17480:2;17469:9;17465:18;17456:6;17404:80;:::i;:::-;17494;17570:2;17559:9;17555:18;17546:6;17494:80;:::i;:::-;17584:73;17652:3;17641:9;17637:19;17628:6;17584:73;:::i;:::-;17667;17735:3;17724:9;17720:19;17711:6;17667:73;:::i;:::-;16940:807;;;;;;;;;:::o;17753:143::-;17810:5;17841:6;17835:13;17826:22;;17857:33;17884:5;17857:33;:::i;:::-;17753:143;;;;:::o;17902:663::-;17990:6;17998;18006;18055:2;18043:9;18034:7;18030:23;18026:32;18023:119;;;18061:79;;:::i;:::-;18023:119;18181:1;18206:64;18262:7;18253:6;18242:9;18238:22;18206:64;:::i;:::-;18196:74;;18152:128;18319:2;18345:64;18401:7;18392:6;18381:9;18377:22;18345:64;:::i;:::-;18335:74;;18290:129;18458:2;18484:64;18540:7;18531:6;18520:9;18516:22;18484:64;:::i;:::-;18474:74;;18429:129;17902:663;;;;;:::o;18571:332::-;18692:4;18730:2;18719:9;18715:18;18707:26;;18743:71;18811:1;18800:9;18796:17;18787:6;18743:71;:::i;:::-;18824:72;18892:2;18881:9;18877:18;18868:6;18824:72;:::i;:::-;18571:332;;;;;:::o;18909:116::-;18979:21;18994:5;18979:21;:::i;:::-;18972:5;18969:32;18959:60;;19015:1;19012;19005:12;18959:60;18909:116;:::o;19031:137::-;19085:5;19116:6;19110:13;19101:22;;19132:30;19156:5;19132:30;:::i;:::-;19031:137;;;;:::o;19174:345::-;19241:6;19290:2;19278:9;19269:7;19265:23;19261:32;19258:119;;;19296:79;;:::i;:::-;19258:119;19416:1;19441:61;19494:7;19485:6;19474:9;19470:22;19441:61;:::i;:::-;19431:71;;19387:125;19174:345;;;;:::o;19525:223::-;19665:34;19661:1;19653:6;19649:14;19642:58;19734:6;19729:2;19721:6;19717:15;19710:31;19525:223;:::o;19754:366::-;19896:3;19917:67;19981:2;19976:3;19917:67;:::i;:::-;19910:74;;19993:93;20082:3;19993:93;:::i;:::-;20111:2;20106:3;20102:12;20095:19;;19754:366;;;:::o;20126:419::-;20292:4;20330:2;20319:9;20315:18;20307:26;;20379:9;20373:4;20369:20;20365:1;20354:9;20350:17;20343:47;20407:131;20533:4;20407:131;:::i;:::-;20399:139;;20126:419;;;:::o;20551:221::-;20691:34;20687:1;20679:6;20675:14;20668:58;20760:4;20755:2;20747:6;20743:15;20736:29;20551:221;:::o;20778:366::-;20920:3;20941:67;21005:2;21000:3;20941:67;:::i;:::-;20934:74;;21017:93;21106:3;21017:93;:::i;:::-;21135:2;21130:3;21126:12;21119:19;;20778:366;;;:::o;21150:419::-;21316:4;21354:2;21343:9;21339:18;21331:26;;21403:9;21397:4;21393:20;21389:1;21378:9;21374:17;21367:47;21431:131;21557:4;21431:131;:::i;:::-;21423:139;;21150:419;;;:::o;21575:224::-;21715:34;21711:1;21703:6;21699:14;21692:58;21784:7;21779:2;21771:6;21767:15;21760:32;21575:224;:::o;21805:366::-;21947:3;21968:67;22032:2;22027:3;21968:67;:::i;:::-;21961:74;;22044:93;22133:3;22044:93;:::i;:::-;22162:2;22157:3;22153:12;22146:19;;21805:366;;;:::o;22177:419::-;22343:4;22381:2;22370:9;22366:18;22358:26;;22430:9;22424:4;22420:20;22416:1;22405:9;22401:17;22394:47;22458:131;22584:4;22458:131;:::i;:::-;22450:139;;22177:419;;;:::o;22602:222::-;22742:34;22738:1;22730:6;22726:14;22719:58;22811:5;22806:2;22798:6;22794:15;22787:30;22602:222;:::o;22830:366::-;22972:3;22993:67;23057:2;23052:3;22993:67;:::i;:::-;22986:74;;23069:93;23158:3;23069:93;:::i;:::-;23187:2;23182:3;23178:12;23171:19;;22830:366;;;:::o;23202:419::-;23368:4;23406:2;23395:9;23391:18;23383:26;;23455:9;23449:4;23445:20;23441:1;23430:9;23426:17;23419:47;23483:131;23609:4;23483:131;:::i;:::-;23475:139;;23202:419;;;:::o;23627:228::-;23767:34;23763:1;23755:6;23751:14;23744:58;23836:11;23831:2;23823:6;23819:15;23812:36;23627:228;:::o;23861:366::-;24003:3;24024:67;24088:2;24083:3;24024:67;:::i;:::-;24017:74;;24100:93;24189:3;24100:93;:::i;:::-;24218:2;24213:3;24209:12;24202:19;;23861:366;;;:::o;24233:419::-;24399:4;24437:2;24426:9;24422:18;24414:26;;24486:9;24480:4;24476:20;24472:1;24461:9;24457:17;24450:47;24514:131;24640:4;24514:131;:::i;:::-;24506:139;;24233:419;;;:::o;24658:223::-;24798:34;24794:1;24786:6;24782:14;24775:58;24867:6;24862:2;24854:6;24850:15;24843:31;24658:223;:::o;24887:366::-;25029:3;25050:67;25114:2;25109:3;25050:67;:::i;:::-;25043:74;;25126:93;25215:3;25126:93;:::i;:::-;25244:2;25239:3;25235:12;25228:19;;24887:366;;;:::o;25259:419::-;25425:4;25463:2;25452:9;25448:18;25440:26;;25512:9;25506:4;25502:20;25498:1;25487:9;25483:17;25476:47;25540:131;25666:4;25540:131;:::i;:::-;25532:139;;25259:419;;;:::o;25684:175::-;25824:27;25820:1;25812:6;25808:14;25801:51;25684:175;:::o;25865:366::-;26007:3;26028:67;26092:2;26087:3;26028:67;:::i;:::-;26021:74;;26104:93;26193:3;26104:93;:::i;:::-;26222:2;26217:3;26213:12;26206:19;;25865:366;;;:::o;26237:419::-;26403:4;26441:2;26430:9;26426:18;26418:26;;26490:9;26484:4;26480:20;26476:1;26465:9;26461:17;26454:47;26518:131;26644:4;26518:131;:::i;:::-;26510:139;;26237:419;;;:::o;26662:191::-;26702:3;26721:20;26739:1;26721:20;:::i;:::-;26716:25;;26755:20;26773:1;26755:20;:::i;:::-;26750:25;;26798:1;26795;26791:9;26784:16;;26819:3;26816:1;26813:10;26810:36;;;26826:18;;:::i;:::-;26810:36;26662:191;;;;:::o;26859:176::-;26999:28;26995:1;26987:6;26983:14;26976:52;26859:176;:::o;27041:366::-;27183:3;27204:67;27268:2;27263:3;27204:67;:::i;:::-;27197:74;;27280:93;27369:3;27280:93;:::i;:::-;27398:2;27393:3;27389:12;27382:19;;27041:366;;;:::o;27413:419::-;27579:4;27617:2;27606:9;27602:18;27594:26;;27666:9;27660:4;27656:20;27652:1;27641:9;27637:17;27630:47;27694:131;27820:4;27694:131;:::i;:::-;27686:139;;27413:419;;;:::o;27838:194::-;27878:4;27898:20;27916:1;27898:20;:::i;:::-;27893:25;;27932:20;27950:1;27932:20;:::i;:::-;27927:25;;27976:1;27973;27969:9;27961:17;;28000:1;27994:4;27991:11;27988:37;;;28005:18;;:::i;:::-;27988:37;27838:194;;;;:::o;28038:114::-;28105:6;28139:5;28133:12;28123:22;;28038:114;;;:::o;28158:184::-;28257:11;28291:6;28286:3;28279:19;28331:4;28326:3;28322:14;28307:29;;28158:184;;;;:::o;28348:132::-;28415:4;28438:3;28430:11;;28468:4;28463:3;28459:14;28451:22;;28348:132;;;:::o;28486:108::-;28563:24;28581:5;28563:24;:::i;:::-;28558:3;28551:37;28486:108;;:::o;28600:179::-;28669:10;28690:46;28732:3;28724:6;28690:46;:::i;:::-;28768:4;28763:3;28759:14;28745:28;;28600:179;;;;:::o;28785:113::-;28855:4;28887;28882:3;28878:14;28870:22;;28785:113;;;:::o;28934:732::-;29053:3;29082:54;29130:5;29082:54;:::i;:::-;29152:86;29231:6;29226:3;29152:86;:::i;:::-;29145:93;;29262:56;29312:5;29262:56;:::i;:::-;29341:7;29372:1;29357:284;29382:6;29379:1;29376:13;29357:284;;;29458:6;29452:13;29485:63;29544:3;29529:13;29485:63;:::i;:::-;29478:70;;29571:60;29624:6;29571:60;:::i;:::-;29561:70;;29417:224;29404:1;29401;29397:9;29392:14;;29357:284;;;29361:14;29657:3;29650:10;;29058:608;;;28934:732;;;;:::o;29672:831::-;29935:4;29973:3;29962:9;29958:19;29950:27;;29987:71;30055:1;30044:9;30040:17;30031:6;29987:71;:::i;:::-;30068:80;30144:2;30133:9;30129:18;30120:6;30068:80;:::i;:::-;30195:9;30189:4;30185:20;30180:2;30169:9;30165:18;30158:48;30223:108;30326:4;30317:6;30223:108;:::i;:::-;30215:116;;30341:72;30409:2;30398:9;30394:18;30385:6;30341:72;:::i;:::-;30423:73;30491:3;30480:9;30476:19;30467:6;30423:73;:::i;:::-;29672:831;;;;;;;;:::o;30509:180::-;30557:77;30554:1;30547:88;30654:4;30651:1;30644:15;30678:4;30675:1;30668:15;30695:185;30735:1;30752:20;30770:1;30752:20;:::i;:::-;30747:25;;30786:20;30804:1;30786:20;:::i;:::-;30781:25;;30825:1;30815:35;;30830:18;;:::i;:::-;30815:35;30872:1;30869;30865:9;30860:14;;30695:185;;;;:::o;30886:220::-;31026:34;31022:1;31014:6;31010:14;31003:58;31095:3;31090:2;31082:6;31078:15;31071:28;30886:220;:::o;31112:366::-;31254:3;31275:67;31339:2;31334:3;31275:67;:::i;:::-;31268:74;;31351:93;31440:3;31351:93;:::i;:::-;31469:2;31464:3;31460:12;31453:19;;31112:366;;;:::o;31484:419::-;31650:4;31688:2;31677:9;31673:18;31665:26;;31737:9;31731:4;31727:20;31723:1;31712:9;31708:17;31701:47;31765:131;31891:4;31765:131;:::i;:::-;31757:139;;31484:419;;;:::o;31909:177::-;32049:29;32045:1;32037:6;32033:14;32026:53;31909:177;:::o;32092:366::-;32234:3;32255:67;32319:2;32314:3;32255:67;:::i;:::-;32248:74;;32331:93;32420:3;32331:93;:::i;:::-;32449:2;32444:3;32440:12;32433:19;;32092:366;;;:::o;32464:419::-;32630:4;32668:2;32657:9;32653:18;32645:26;;32717:9;32711:4;32707:20;32703:1;32692:9;32688:17;32681:47;32745:131;32871:4;32745:131;:::i;:::-;32737:139;;32464:419;;;:::o
Swarm Source
ipfs://3e8a20258ff006d70d4aa08f8bb8fb89dfac35cd015a734cd462c5328d59174c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.