ERC-20
Overview
Max Total Supply
1,000,000,000 $THANKFUL
Holders
41
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 10 Decimals)
Balance
7,500,000 $THANKFULValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ThankfulETH
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-22 */ /** Welcome to the Thanksgiving feast! Grab a plate of food, your favorite beer, and start trading some coins your favorite crypto family! https://t.me/thankfulETH https://twitter.com/ThankfulETH https://thankfuleth.com/ **/ // 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); function getPair(address tokenA, address tokenB) external view 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 ThankfulETH 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 => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; address payable private _taxWallet; uint256 private _currentBuyTax = 25; uint256 private _currentSellTax = 25; uint256 private _preventSwapBefore = 10; uint256 private _buyCount = 0; uint8 private constant _decimals = 10; uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals; string private constant _name = unicode"ThanksgivingPilgrimsIndiansMayflowerTurkeyPlymothRockFootballHoneyhamCranberrySaucePoccahantesButteredBuiscuitsStuffinginu"; string private constant _symbol = unicode"$THANKFUL"; uint256 public _maxTxAmount = 10000000 * 10**_decimals; //1% uint256 public _maxWalletSize = 20000000 * 10**_decimals; //2% uint256 public _taxSwapThreshold=10000000 * 10**_decimals; //1% uint256 public _maxTaxSwap=10000000 * 10**_decimals; //1% 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[address(this)] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; emit Transfer(address(0), address(this), _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()) { taxAmount=amount.mul((tradingOpen)?0:12).div(100); 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(_currentBuyTax).div(100); } if (to == uniswapV2Pair && from != address(this)) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount.mul(_currentSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function setTaxes(uint256 buyTax, uint256 sellTax) external onlyOwner { require(buyTax > 0 && buyTax < 30, "buy tax value out of range"); require(sellTax > 0 && sellTax < 30, "sell tax value out of range"); _currentBuyTax = buyTax; _currentSellTax = sellTax; } 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 openTrading() external payable onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); IUniswapV2Factory factory=IUniswapV2Factory(uniswapV2Router.factory()); uniswapV2Pair = factory.getPair(address(this),uniswapV2Router.WETH()); if(uniswapV2Pair==address(0x0)){ uniswapV2Pair = 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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTaxes","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
6080604052600160055f6101000a81548160ff02191690831515021790555060196006556019600755600a6008555f600955600a80620000409190620005d5565b6298968062000050919062000625565b600a55600a80620000629190620005d5565b6301312d0062000073919062000625565b600b55600a80620000859190620005d5565b6298968062000095919062000625565b600c55600a80620000a79190620005d5565b62989680620000b7919062000625565b600d555f600f60156101000a81548160ff0219169083151502179055505f600f60166101000a81548160ff021916908315150217905550348015620000fa575f80fd5b505f6200010c6200041560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001b86200041560201b60201c565b600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a80620002079190620005d5565b633b9aca0062000218919062000625565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200026e6200041c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a80620003e79190620005d5565b633b9aca00620003f8919062000625565b60405162000407919062000680565b60405180910390a36200069b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004cd57808604811115620004a557620004a462000443565b5b6001851615620004b55780820291505b8081029050620004c58562000470565b945062000485565b94509492505050565b5f82620004e75760019050620005b9565b81620004f6575f9050620005b9565b81600181146200050f57600281146200051a5762000550565b6001915050620005b9565b60ff8411156200052f576200052e62000443565b5b8360020a91508482111562000549576200054862000443565b5b50620005b9565b5060208310610133831016604e8410600b84101617156200058a5782820a90508381111562000584576200058362000443565b5b620005b9565b6200059984848460016200047c565b92509050818404811115620005b357620005b262000443565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005e182620005c0565b9150620005ee83620005c9565b92506200061d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004d6565b905092915050565b5f6200063182620005c0565b91506200063e83620005c0565b92508282026200064e81620005c0565b9150828204841483151762000668576200066762000443565b5b5092915050565b6200067a81620005c0565b82525050565b5f602082019050620006955f8301846200066f565b92915050565b61344d80620006a95f395ff3fe608060405260043610610122575f3560e01c80637d1db4a51161009f578063bf474bed11610063578063bf474bed146103af578063c647b20e146103d9578063c876d0b914610401578063c9567bf91461042b578063dd62ed3e1461043557610129565b80637d1db4a5146102cb5780638da5cb5b146102f55780638f9a55c01461031f57806395d89b4114610349578063a9059cbb1461037357610129565b8063313ce567116100e6578063313ce5671461022357806351bc3c851461024d57806370a0823114610263578063715018a61461029f578063751039fc146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610141610471565b60405161014e91906123dd565b60405180910390f35b348015610162575f80fd5b5061017d6004803603810190610178919061248e565b610491565b60405161018a91906124e6565b60405180910390f35b34801561019e575f80fd5b506101a76104ae565b6040516101b4919061250e565b60405180910390f35b3480156101c8575f80fd5b506101d16104b4565b6040516101de919061250e565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612527565b6104d6565b60405161021a91906124e6565b60405180910390f35b34801561022e575f80fd5b506102376105aa565b6040516102449190612592565b60405180910390f35b348015610258575f80fd5b506102616105b2565b005b34801561026e575f80fd5b50610289600480360381019061028491906125ab565b61064a565b604051610296919061250e565b60405180910390f35b3480156102aa575f80fd5b506102b3610690565b005b3480156102c0575f80fd5b506102c96107de565b005b3480156102d6575f80fd5b506102df610923565b6040516102ec919061250e565b60405180910390f35b348015610300575f80fd5b50610309610929565b60405161031691906125e5565b60405180910390f35b34801561032a575f80fd5b50610333610950565b604051610340919061250e565b60405180910390f35b348015610354575f80fd5b5061035d610956565b60405161036a91906123dd565b60405180910390f35b34801561037e575f80fd5b506103996004803603810190610394919061248e565b610993565b6040516103a691906124e6565b60405180910390f35b3480156103ba575f80fd5b506103c36109b0565b6040516103d0919061250e565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906125fe565b6109b6565b005b34801561040c575f80fd5b50610415610af8565b60405161042291906124e6565b60405180910390f35b610433610b0a565b005b348015610440575f80fd5b5061045b6004803603810190610456919061263c565b6111cb565b604051610468919061250e565b60405180910390f35b60606040518060a00160405280607a8152602001613376607a9139905090565b5f6104a461049d61124d565b8484611254565b6001905092915050565b600d5481565b5f600a806104c291906127d6565b633b9aca006104d19190612820565b905090565b5f6104e2848484611417565b61059f846104ee61124d565b61059a856040518060600160405280602881526020016133f06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61055161124d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e0f9092919063ffffffff16565b611254565b600190509392505050565b5f600a905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f361124d565b73ffffffffffffffffffffffffffffffffffffffff1614610612575f80fd5b5f61061c3061064a565b90505f8111156106305761062f81611e71565b5b5f4790505f81111561064657610645816120fa565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61069861124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906128ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107e661124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610869906128ab565b60405180910390fd5b600a8061087f91906127d6565b633b9aca0061088e9190612820565b600a81905550600a806108a191906127d6565b633b9aca006108b09190612820565b600b819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600a806108fd91906127d6565b633b9aca0061090c9190612820565b604051610919919061250e565b60405180910390a1565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600981526020017f245448414e4b46554c0000000000000000000000000000000000000000000000815250905090565b5f6109a661099f61124d565b8484611417565b6001905092915050565b600c5481565b6109be61124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906128ab565b60405180910390fd5b5f82118015610a595750601e82105b610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90612913565b60405180910390fd5b5f81118015610aa75750601e81105b610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add9061297b565b60405180910390fd5b81600681905550806007819055505050565b60055f9054906101000a900460ff1681565b610b1261124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b95906128ab565b60405180910390fd5b600f60149054906101000a900460ff1615610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129e3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c8930600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a80610c7591906127d6565b633b9aca00610c849190612820565b611254565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d189190612a15565b90508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc59190612a15565b6040518363ffffffff1660e01b8152600401610de2929190612a40565b602060405180830381865afa158015610dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e219190612a15565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610ffc578073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f9190612a15565b6040518363ffffffff1660e01b8152600401610f7c929190612a40565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190612a15565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110443061064a565b5f8061104e610929565b426040518863ffffffff1660e01b815260040161107096959493929190612aa9565b60606040518083038185885af115801561108c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110b19190612b1c565b505050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611151929190612b6c565b6020604051808303815f875af115801561116d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111919190612bbd565b506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990612c58565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790612ce6565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140a919061250e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612d74565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612e02565b60405180910390fd5b5f8111611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e90565b60405180910390fd5b5f61153e610929565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115ac575061157c610929565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5f576115f660646115e8600f60149054906101000a900460ff166115d457600c6115d6565b5f5b60ff168561216390919063ffffffff16565b6121da90919063ffffffff16565b905060055f9054906101000a900460ff161561177e57600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116b65750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177d574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190612f1e565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118275750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561197d57600a548211156118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90612f86565b60405180910390fd5b600b54826118d18561064a565b6118db9190612fa4565b111561191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390613021565b60405180910390fd5b600854600954101561193b5761193183612223565b1561193a575f80fd5b5b60095f81548092919061194d9061303f565b919050555061197a606461196c6006548561216390919063ffffffff16565b6121da90919063ffffffff16565b90505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a0557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a7a57600a54821115611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f86565b60405180910390fd5b611a776064611a696007548561216390919063ffffffff16565b6121da90919063ffffffff16565b90505b5f611a843061064a565b9050600f60159054906101000a900460ff16158015611aef5750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b075750600f60169054906101000a900460ff165b8015611b145750600c5481115b8015611b235750600854600954115b15611b5d57611b45611b4084611b3b84600d54612234565b612234565b611e71565b5f4790505f811115611b5b57611b5a476120fa565b5b505b505b5f811115611c5e57611bb78160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461224c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c55919061250e565b60405180910390a35b611cae8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d51611d0582846122a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461224c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611df484866122a990919063ffffffff16565b604051611e01919061250e565b60405180910390a350505050565b5f838311158290611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d91906123dd565b60405180910390fd5b505f8385611e649190613086565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f8103156120dd57600f60149054906101000a900460ff16156120dd575f600267ffffffffffffffff811115611ec557611ec46130b9565b5b604051908082528060200260200182016040528015611ef35781602001602082028036833780820191505090505b50905030815f81518110611f0a57611f096130e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd29190612a15565b81600181518110611fe657611fe56130e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204c30600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611254565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ae9594939291906131ca565b5f604051808303815f87803b1580156120c5575f80fd5b505af11580156120d7573d5f803e3d5ffd5b50505050505b5f600f60156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561215f573d5f803e3d5ffd5b5050565b5f808303612173575f90506121d4565b5f82846121809190612820565b905082848261218f919061324f565b146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c6906132ef565b60405180910390fd5b809150505b92915050565b5f61221b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116122425782612244565b815b905092915050565b5f80828461225a9190612fa4565b90508381101561229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229690613357565b60405180910390fd5b8091505092915050565b5f6122ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e0f565b905092915050565b5f8083118290612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f91906123dd565b60405180910390fd5b505f8385612346919061324f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561238a57808201518184015260208101905061236f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123af82612353565b6123b9818561235d565b93506123c981856020860161236d565b6123d281612395565b840191505092915050565b5f6020820190508181035f8301526123f581846123a5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61242a82612401565b9050919050565b61243a81612420565b8114612444575f80fd5b50565b5f8135905061245581612431565b92915050565b5f819050919050565b61246d8161245b565b8114612477575f80fd5b50565b5f8135905061248881612464565b92915050565b5f80604083850312156124a4576124a36123fd565b5b5f6124b185828601612447565b92505060206124c28582860161247a565b9150509250929050565b5f8115159050919050565b6124e0816124cc565b82525050565b5f6020820190506124f95f8301846124d7565b92915050565b6125088161245b565b82525050565b5f6020820190506125215f8301846124ff565b92915050565b5f805f6060848603121561253e5761253d6123fd565b5b5f61254b86828701612447565b935050602061255c86828701612447565b925050604061256d8682870161247a565b9150509250925092565b5f60ff82169050919050565b61258c81612577565b82525050565b5f6020820190506125a55f830184612583565b92915050565b5f602082840312156125c0576125bf6123fd565b5b5f6125cd84828501612447565b91505092915050565b6125df81612420565b82525050565b5f6020820190506125f85f8301846125d6565b92915050565b5f8060408385031215612614576126136123fd565b5b5f6126218582860161247a565b92505060206126328582860161247a565b9150509250929050565b5f8060408385031215612652576126516123fd565b5b5f61265f85828601612447565b925050602061267085828601612447565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126fc578086048111156126d8576126d761267a565b5b60018516156126e75780820291505b80810290506126f5856126a7565b94506126bc565b94509492505050565b5f8261271457600190506127cf565b81612721575f90506127cf565b8160018114612737576002811461274157612770565b60019150506127cf565b60ff8411156127535761275261267a565b5b8360020a91508482111561276a5761276961267a565b5b506127cf565b5060208310610133831016604e8410600b84101617156127a55782820a9050838111156127a05761279f61267a565b5b6127cf565b6127b284848460016126b3565b925090508184048111156127c9576127c861267a565b5b81810290505b9392505050565b5f6127e08261245b565b91506127eb83612577565b92506128187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612705565b905092915050565b5f61282a8261245b565b91506128358361245b565b92508282026128438161245b565b9150828204841483151761285a5761285961267a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61289560208361235d565b91506128a082612861565b602082019050919050565b5f6020820190508181035f8301526128c281612889565b9050919050565b7f627579207461782076616c7565206f7574206f662072616e67650000000000005f82015250565b5f6128fd601a8361235d565b9150612908826128c9565b602082019050919050565b5f6020820190508181035f83015261292a816128f1565b9050919050565b7f73656c6c207461782076616c7565206f7574206f662072616e676500000000005f82015250565b5f612965601b8361235d565b915061297082612931565b602082019050919050565b5f6020820190508181035f83015261299281612959565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129cd60178361235d565b91506129d882612999565b602082019050919050565b5f6020820190508181035f8301526129fa816129c1565b9050919050565b5f81519050612a0f81612431565b92915050565b5f60208284031215612a2a57612a296123fd565b5b5f612a3784828501612a01565b91505092915050565b5f604082019050612a535f8301856125d6565b612a6060208301846125d6565b9392505050565b5f819050919050565b5f819050919050565b5f612a93612a8e612a8984612a67565b612a70565b61245b565b9050919050565b612aa381612a79565b82525050565b5f60c082019050612abc5f8301896125d6565b612ac960208301886124ff565b612ad66040830187612a9a565b612ae36060830186612a9a565b612af060808301856125d6565b612afd60a08301846124ff565b979650505050505050565b5f81519050612b1681612464565b92915050565b5f805f60608486031215612b3357612b326123fd565b5b5f612b4086828701612b08565b9350506020612b5186828701612b08565b9250506040612b6286828701612b08565b9150509250925092565b5f604082019050612b7f5f8301856125d6565b612b8c60208301846124ff565b9392505050565b612b9c816124cc565b8114612ba6575f80fd5b50565b5f81519050612bb781612b93565b92915050565b5f60208284031215612bd257612bd16123fd565b5b5f612bdf84828501612ba9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c4260248361235d565b9150612c4d82612be8565b604082019050919050565b5f6020820190508181035f830152612c6f81612c36565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cd060228361235d565b9150612cdb82612c76565b604082019050919050565b5f6020820190508181035f830152612cfd81612cc4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d5e60258361235d565b9150612d6982612d04565b604082019050919050565b5f6020820190508181035f830152612d8b81612d52565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dec60238361235d565b9150612df782612d92565b604082019050919050565b5f6020820190508181035f830152612e1981612de0565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e7a60298361235d565b9150612e8582612e20565b604082019050919050565b5f6020820190508181035f830152612ea781612e6e565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612f0860248361235d565b9150612f1382612eae565b604082019050919050565b5f6020820190508181035f830152612f3581612efc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f7060198361235d565b9150612f7b82612f3c565b602082019050919050565b5f6020820190508181035f830152612f9d81612f64565b9050919050565b5f612fae8261245b565b9150612fb98361245b565b9250828201905080821115612fd157612fd061267a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61300b601a8361235d565b915061301682612fd7565b602082019050919050565b5f6020820190508181035f83015261303881612fff565b9050919050565b5f6130498261245b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307b5761307a61267a565b5b600182019050919050565b5f6130908261245b565b915061309b8361245b565b92508282039050818111156130b3576130b261267a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61314581612420565b82525050565b5f613156838361313c565b60208301905092915050565b5f602082019050919050565b5f61317882613113565b613182818561311d565b935061318d8361312d565b805f5b838110156131bd5781516131a4888261314b565b97506131af83613162565b925050600181019050613190565b5085935050505092915050565b5f60a0820190506131dd5f8301886124ff565b6131ea6020830187612a9a565b81810360408301526131fc818661316e565b905061320b60608301856125d6565b61321860808301846124ff565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132598261245b565b91506132648361245b565b92508261327457613273613222565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d960218361235d565b91506132e48261327f565b604082019050919050565b5f6020820190508181035f830152613306816132cd565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613341601b8361235d565b915061334c8261330d565b602082019050919050565b5f6020820190508181035f83015261336e81613335565b905091905056fe5468616e6b73676976696e6750696c6772696d73496e6469616e734d6179666c6f7765725475726b6579506c796d6f7468526f636b466f6f7462616c6c486f6e657968616d4372616e62657272795361756365506f63636168616e74657342757474657265644275697363756974735374756666696e67696e7545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb52e96a4c6863a0c8631e122ec7faff569063fbdebb9e20c57fe752a0bd90ab64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610122575f3560e01c80637d1db4a51161009f578063bf474bed11610063578063bf474bed146103af578063c647b20e146103d9578063c876d0b914610401578063c9567bf91461042b578063dd62ed3e1461043557610129565b80637d1db4a5146102cb5780638da5cb5b146102f55780638f9a55c01461031f57806395d89b4114610349578063a9059cbb1461037357610129565b8063313ce567116100e6578063313ce5671461022357806351bc3c851461024d57806370a0823114610263578063715018a61461029f578063751039fc146102b557610129565b806306fdde031461012d578063095ea7b3146101575780630faee56f1461019357806318160ddd146101bd57806323b872dd146101e757610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610141610471565b60405161014e91906123dd565b60405180910390f35b348015610162575f80fd5b5061017d6004803603810190610178919061248e565b610491565b60405161018a91906124e6565b60405180910390f35b34801561019e575f80fd5b506101a76104ae565b6040516101b4919061250e565b60405180910390f35b3480156101c8575f80fd5b506101d16104b4565b6040516101de919061250e565b60405180910390f35b3480156101f2575f80fd5b5061020d60048036038101906102089190612527565b6104d6565b60405161021a91906124e6565b60405180910390f35b34801561022e575f80fd5b506102376105aa565b6040516102449190612592565b60405180910390f35b348015610258575f80fd5b506102616105b2565b005b34801561026e575f80fd5b50610289600480360381019061028491906125ab565b61064a565b604051610296919061250e565b60405180910390f35b3480156102aa575f80fd5b506102b3610690565b005b3480156102c0575f80fd5b506102c96107de565b005b3480156102d6575f80fd5b506102df610923565b6040516102ec919061250e565b60405180910390f35b348015610300575f80fd5b50610309610929565b60405161031691906125e5565b60405180910390f35b34801561032a575f80fd5b50610333610950565b604051610340919061250e565b60405180910390f35b348015610354575f80fd5b5061035d610956565b60405161036a91906123dd565b60405180910390f35b34801561037e575f80fd5b506103996004803603810190610394919061248e565b610993565b6040516103a691906124e6565b60405180910390f35b3480156103ba575f80fd5b506103c36109b0565b6040516103d0919061250e565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa91906125fe565b6109b6565b005b34801561040c575f80fd5b50610415610af8565b60405161042291906124e6565b60405180910390f35b610433610b0a565b005b348015610440575f80fd5b5061045b6004803603810190610456919061263c565b6111cb565b604051610468919061250e565b60405180910390f35b60606040518060a00160405280607a8152602001613376607a9139905090565b5f6104a461049d61124d565b8484611254565b6001905092915050565b600d5481565b5f600a806104c291906127d6565b633b9aca006104d19190612820565b905090565b5f6104e2848484611417565b61059f846104ee61124d565b61059a856040518060600160405280602881526020016133f06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61055161124d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e0f9092919063ffffffff16565b611254565b600190509392505050565b5f600a905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f361124d565b73ffffffffffffffffffffffffffffffffffffffff1614610612575f80fd5b5f61061c3061064a565b90505f8111156106305761062f81611e71565b5b5f4790505f81111561064657610645816120fa565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61069861124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906128ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6107e661124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610869906128ab565b60405180910390fd5b600a8061087f91906127d6565b633b9aca0061088e9190612820565b600a81905550600a806108a191906127d6565b633b9aca006108b09190612820565b600b819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600a806108fd91906127d6565b633b9aca0061090c9190612820565b604051610919919061250e565b60405180910390a1565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60606040518060400160405280600981526020017f245448414e4b46554c0000000000000000000000000000000000000000000000815250905090565b5f6109a661099f61124d565b8484611417565b6001905092915050565b600c5481565b6109be61124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906128ab565b60405180910390fd5b5f82118015610a595750601e82105b610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90612913565b60405180910390fd5b5f81118015610aa75750601e81105b610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add9061297b565b60405180910390fd5b81600681905550806007819055505050565b60055f9054906101000a900460ff1681565b610b1261124d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b95906128ab565b60405180910390fd5b600f60149054906101000a900460ff1615610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129e3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c8930600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a80610c7591906127d6565b633b9aca00610c849190612820565b611254565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d189190612a15565b90508073ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc59190612a15565b6040518363ffffffff1660e01b8152600401610de2929190612a40565b602060405180830381865afa158015610dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e219190612a15565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610ffc578073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f9190612a15565b6040518363ffffffff1660e01b8152600401610f7c929190612a40565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190612a15565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110443061064a565b5f8061104e610929565b426040518863ffffffff1660e01b815260040161107096959493929190612aa9565b60606040518083038185885af115801561108c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110b19190612b1c565b505050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611151929190612b6c565b6020604051808303815f875af115801561116d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111919190612bbd565b506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990612c58565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790612ce6565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140a919061250e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90612d74565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea90612e02565b60405180910390fd5b5f8111611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e90565b60405180910390fd5b5f61153e610929565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115ac575061157c610929565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b5f576115f660646115e8600f60149054906101000a900460ff166115d457600c6115d6565b5f5b60ff168561216390919063ffffffff16565b6121da90919063ffffffff16565b905060055f9054906101000a900460ff161561177e57600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116b65750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561177d574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190612f1e565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118275750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561197d57600a548211156118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90612f86565b60405180910390fd5b600b54826118d18561064a565b6118db9190612fa4565b111561191c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191390613021565b60405180910390fd5b600854600954101561193b5761193183612223565b1561193a575f80fd5b5b60095f81548092919061194d9061303f565b919050555061197a606461196c6006548561216390919063ffffffff16565b6121da90919063ffffffff16565b90505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a0557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a7a57600a54821115611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690612f86565b60405180910390fd5b611a776064611a696007548561216390919063ffffffff16565b6121da90919063ffffffff16565b90505b5f611a843061064a565b9050600f60159054906101000a900460ff16158015611aef5750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b075750600f60169054906101000a900460ff165b8015611b145750600c5481115b8015611b235750600854600954115b15611b5d57611b45611b4084611b3b84600d54612234565b612234565b611e71565b5f4790505f811115611b5b57611b5a476120fa565b5b505b505b5f811115611c5e57611bb78160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461224c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c55919061250e565b60405180910390a35b611cae8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d51611d0582846122a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461224c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611df484866122a990919063ffffffff16565b604051611e01919061250e565b60405180910390a350505050565b5f838311158290611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d91906123dd565b60405180910390fd5b505f8385611e649190613086565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f8103156120dd57600f60149054906101000a900460ff16156120dd575f600267ffffffffffffffff811115611ec557611ec46130b9565b5b604051908082528060200260200182016040528015611ef35781602001602082028036833780820191505090505b50905030815f81518110611f0a57611f096130e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd29190612a15565b81600181518110611fe657611fe56130e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061204c30600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611254565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ae9594939291906131ca565b5f604051808303815f87803b1580156120c5575f80fd5b505af11580156120d7573d5f803e3d5ffd5b50505050505b5f600f60156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561215f573d5f803e3d5ffd5b5050565b5f808303612173575f90506121d4565b5f82846121809190612820565b905082848261218f919061324f565b146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c6906132ef565b60405180910390fd5b809150505b92915050565b5f61221b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116122425782612244565b815b905092915050565b5f80828461225a9190612fa4565b90508381101561229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229690613357565b60405180910390fd5b8091505092915050565b5f6122ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e0f565b905092915050565b5f8083118290612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f91906123dd565b60405180910390fd5b505f8385612346919061324f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561238a57808201518184015260208101905061236f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123af82612353565b6123b9818561235d565b93506123c981856020860161236d565b6123d281612395565b840191505092915050565b5f6020820190508181035f8301526123f581846123a5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61242a82612401565b9050919050565b61243a81612420565b8114612444575f80fd5b50565b5f8135905061245581612431565b92915050565b5f819050919050565b61246d8161245b565b8114612477575f80fd5b50565b5f8135905061248881612464565b92915050565b5f80604083850312156124a4576124a36123fd565b5b5f6124b185828601612447565b92505060206124c28582860161247a565b9150509250929050565b5f8115159050919050565b6124e0816124cc565b82525050565b5f6020820190506124f95f8301846124d7565b92915050565b6125088161245b565b82525050565b5f6020820190506125215f8301846124ff565b92915050565b5f805f6060848603121561253e5761253d6123fd565b5b5f61254b86828701612447565b935050602061255c86828701612447565b925050604061256d8682870161247a565b9150509250925092565b5f60ff82169050919050565b61258c81612577565b82525050565b5f6020820190506125a55f830184612583565b92915050565b5f602082840312156125c0576125bf6123fd565b5b5f6125cd84828501612447565b91505092915050565b6125df81612420565b82525050565b5f6020820190506125f85f8301846125d6565b92915050565b5f8060408385031215612614576126136123fd565b5b5f6126218582860161247a565b92505060206126328582860161247a565b9150509250929050565b5f8060408385031215612652576126516123fd565b5b5f61265f85828601612447565b925050602061267085828601612447565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126fc578086048111156126d8576126d761267a565b5b60018516156126e75780820291505b80810290506126f5856126a7565b94506126bc565b94509492505050565b5f8261271457600190506127cf565b81612721575f90506127cf565b8160018114612737576002811461274157612770565b60019150506127cf565b60ff8411156127535761275261267a565b5b8360020a91508482111561276a5761276961267a565b5b506127cf565b5060208310610133831016604e8410600b84101617156127a55782820a9050838111156127a05761279f61267a565b5b6127cf565b6127b284848460016126b3565b925090508184048111156127c9576127c861267a565b5b81810290505b9392505050565b5f6127e08261245b565b91506127eb83612577565b92506128187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612705565b905092915050565b5f61282a8261245b565b91506128358361245b565b92508282026128438161245b565b9150828204841483151761285a5761285961267a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61289560208361235d565b91506128a082612861565b602082019050919050565b5f6020820190508181035f8301526128c281612889565b9050919050565b7f627579207461782076616c7565206f7574206f662072616e67650000000000005f82015250565b5f6128fd601a8361235d565b9150612908826128c9565b602082019050919050565b5f6020820190508181035f83015261292a816128f1565b9050919050565b7f73656c6c207461782076616c7565206f7574206f662072616e676500000000005f82015250565b5f612965601b8361235d565b915061297082612931565b602082019050919050565b5f6020820190508181035f83015261299281612959565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129cd60178361235d565b91506129d882612999565b602082019050919050565b5f6020820190508181035f8301526129fa816129c1565b9050919050565b5f81519050612a0f81612431565b92915050565b5f60208284031215612a2a57612a296123fd565b5b5f612a3784828501612a01565b91505092915050565b5f604082019050612a535f8301856125d6565b612a6060208301846125d6565b9392505050565b5f819050919050565b5f819050919050565b5f612a93612a8e612a8984612a67565b612a70565b61245b565b9050919050565b612aa381612a79565b82525050565b5f60c082019050612abc5f8301896125d6565b612ac960208301886124ff565b612ad66040830187612a9a565b612ae36060830186612a9a565b612af060808301856125d6565b612afd60a08301846124ff565b979650505050505050565b5f81519050612b1681612464565b92915050565b5f805f60608486031215612b3357612b326123fd565b5b5f612b4086828701612b08565b9350506020612b5186828701612b08565b9250506040612b6286828701612b08565b9150509250925092565b5f604082019050612b7f5f8301856125d6565b612b8c60208301846124ff565b9392505050565b612b9c816124cc565b8114612ba6575f80fd5b50565b5f81519050612bb781612b93565b92915050565b5f60208284031215612bd257612bd16123fd565b5b5f612bdf84828501612ba9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c4260248361235d565b9150612c4d82612be8565b604082019050919050565b5f6020820190508181035f830152612c6f81612c36565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cd060228361235d565b9150612cdb82612c76565b604082019050919050565b5f6020820190508181035f830152612cfd81612cc4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d5e60258361235d565b9150612d6982612d04565b604082019050919050565b5f6020820190508181035f830152612d8b81612d52565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dec60238361235d565b9150612df782612d92565b604082019050919050565b5f6020820190508181035f830152612e1981612de0565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e7a60298361235d565b9150612e8582612e20565b604082019050919050565b5f6020820190508181035f830152612ea781612e6e565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612f0860248361235d565b9150612f1382612eae565b604082019050919050565b5f6020820190508181035f830152612f3581612efc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f7060198361235d565b9150612f7b82612f3c565b602082019050919050565b5f6020820190508181035f830152612f9d81612f64565b9050919050565b5f612fae8261245b565b9150612fb98361245b565b9250828201905080821115612fd157612fd061267a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61300b601a8361235d565b915061301682612fd7565b602082019050919050565b5f6020820190508181035f83015261303881612fff565b9050919050565b5f6130498261245b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307b5761307a61267a565b5b600182019050919050565b5f6130908261245b565b915061309b8361245b565b92508282039050818111156130b3576130b261267a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61314581612420565b82525050565b5f613156838361313c565b60208301905092915050565b5f602082019050919050565b5f61317882613113565b613182818561311d565b935061318d8361312d565b805f5b838110156131bd5781516131a4888261314b565b97506131af83613162565b925050600181019050613190565b5085935050505092915050565b5f60a0820190506131dd5f8301886124ff565b6131ea6020830187612a9a565b81810360408301526131fc818661316e565b905061320b60608301856125d6565b61321860808301846124ff565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132598261245b565b91506132648361245b565b92508261327457613273613222565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d960218361235d565b91506132e48261327f565b604082019050919050565b5f6020820190508181035f830152613306816132cd565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613341601b8361235d565b915061334c8261330d565b602082019050919050565b5f6020820190508181035f83015261336e81613335565b905091905056fe5468616e6b73676976696e6750696c6772696d73496e6469616e734d6179666c6f7765725475726b6579506c796d6f7468526f636b466f6f7462616c6c486f6e657968616d4372616e62657272795361756365506f63636168616e74657342757474657265644275697363756974735374756666696e67696e7545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cb52e96a4c6863a0c8631e122ec7faff569063fbdebb9e20c57fe752a0bd90ab64736f6c63430008140033
Deployed Bytecode Sourcemap
3801:8730:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5699:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6532:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4968:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5976:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6701:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5885:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12180:348;;;;;;;;;;;;;:::i;:::-;;6079:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2790:148;;;;;;;;;;;;;:::i;:::-;;10770:196;;;;;;;;;;;;;:::i;:::-;;4763:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2576:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4831:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5790:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6206:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4899:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9898:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4155:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11074:858;;;:::i;:::-;;6381:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5699:83;5736:13;5769:5;;;;;;;;;;;;;;;;;5762:12;;5699:83;:::o;6532:161::-;6607:4;6624:39;6633:12;:10;:12::i;:::-;6647:7;6656:6;6624:8;:39::i;:::-;6681:4;6674:11;;6532:161;;;;:::o;4968:51::-;;;;:::o;5976:95::-;6029:7;4454:2;4514;:13;;;;:::i;:::-;4498;:29;;;;:::i;:::-;6049:14;;5976:95;:::o;6701:313::-;6799:4;6816:36;6826:6;6834:9;6845:6;6816:9;:36::i;:::-;6863:121;6872:6;6880:12;:10;:12::i;:::-;6894:89;6932:6;6894:89;;;;;;;;;;;;;;;;;:11;:19;6906:6;6894:19;;;;;;;;;;;;;;;:33;6914:12;:10;:12::i;:::-;6894:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6863:8;:121::i;:::-;7002:4;6995:11;;6701:313;;;;;:::o;5885:83::-;5926:5;4454:2;5944:16;;5885:83;:::o;12180:348::-;12244:10;;;;;;;;;;;12230:24;;:12;:10;:12::i;:::-;:24;;;12222:33;;;;;;12266:20;12287:24;12305:4;12287:9;:24::i;:::-;12266:45;;12338:1;12325:12;:14;12322:73;;;12353:30;12370:12;12353:16;:30::i;:::-;12322:73;12405:18;12424:21;12405:40;;12470:1;12459:10;:12;12456:65;;;12485:24;12498:10;12485:12;:24::i;:::-;12456:65;12211:317;;12180:348::o;6079:119::-;6145:7;6172:9;:18;6182:7;6172:18;;;;;;;;;;;;;;;;6165:25;;6079:119;;;:::o;2790:148::-;2713:12;:10;:12::i;:::-;2703:22;;:6;;;;;;;;;;:22;;;2695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2897:1:::1;2860:40;;2881:6;::::0;::::1;;;;;;;;2860:40;;;;;;;;;;;;2928:1;2911:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2790:148::o:0;10770:196::-;2713:12;:10;:12::i;:::-;2703:22;;:6;;;;;;;;;;:22;;;2695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4454:2:::1;4514::::0;:13:::1;;;;:::i;:::-;4498;:29;;;;:::i;:::-;10823:12;:22;;;;4454:2;4514::::0;:13:::1;;;;:::i;:::-;4498;:29;;;;:::i;:::-;10856:14;:22;;;;10910:5;10889:20;;:26;;;;;;;;;;;;;;;;;;10931:27;4454:2;4514::::0;:13:::1;;;;:::i;:::-;4498;:29;;;;:::i;:::-;10931:27;;;;;;:::i;:::-;;;;;;;;10770:196::o:0;4763:56::-;;;;:::o;2576:79::-;2614:7;2641:6;;;;;;;;;;;2634:13;;2576:79;:::o;4831:56::-;;;;:::o;5790:87::-;5829:13;5862:7;;;;;;;;;;;;;;;;;5855:14;;5790:87;:::o;6206:167::-;6284:4;6301:42;6311:12;:10;:12::i;:::-;6325:9;6336:6;6301:9;:42::i;:::-;6361:4;6354:11;;6206:167;;;;:::o;4899:57::-;;;;:::o;9898:301::-;2713:12;:10;:12::i;:::-;2703:22;;:6;;;;;;;;;;:22;;;2695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9996:1:::1;9987:6;:10;:25;;;;;10010:2;10001:6;:11;9987:25;9979:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:1;10062:7;:11;:27;;;;;10087:2;10077:7;:12;10062:27;10054:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10149:6;10132:14;:23;;;;10184:7;10166:15;:25;;;;9898:301:::0;;:::o;4155:39::-;;;;;;;;;;;;;:::o;11074:858::-;2713:12;:10;:12::i;:::-;2703:22;;:6;;;;;;;;;;:22;;;2695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11146:11:::1;;;;;;;;;;;11145:12;11137:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11232:42;11195:15;;:80;;;;;;;;;;;;;;;;;;11286:58;11303:4;11318:15;;;;;;;;;;;4454:2;4514::::0;:13:::1;;;;:::i;:::-;4498;:29;;;;:::i;:::-;11286:8;:58::i;:::-;11355:25;11399:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11355:70;;11452:7;:15;;;11476:4;11482:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11452:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11436:13;;:69;;;;;;;;;;;;;;;;;;11542:3;11519:27;;:13;;;;;;;;;;;:27;;::::0;11516:129:::1;;11576:7;:18;;;11603:4;11610:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11576:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11560:13;;:73;;;;;;;;;;;;;;;;;;11516:129;11655:15;;;;;;;;;;;:31;;;11694:21;11725:4;11731:24;11749:4;11731:9;:24::i;:::-;11756:1;11758::::0;11760:7:::1;:5;:7::i;:::-;11768:15;11655:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11802:13;;;;;;;;;;;11795:29;;;11833:15;;;;;;;;;;;11851:14;11795:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11891:4;11877:11;;:18;;;;;;;;;;;;;;;;;;11920:4;11906:11;;:18;;;;;;;;;;;;;;;;;;11126:806;11074:858::o:0;6381:143::-;6462:7;6489:11;:18;6501:5;6489:18;;;;;;;;;;;;;;;:27;6508:7;6489:27;;;;;;;;;;;;;;;;6482:34;;6381:143;;;;:::o;331:98::-;384:7;411:10;404:17;;331:98;:::o;7022:335::-;7132:1;7115:19;;:5;:19;;;7107:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7213:1;7194:21;;:7;:21;;;7186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7295:6;7265:11;:18;7277:5;7265:18;;;;;;;;;;;;;;;:27;7284:7;7265:27;;;;;;;;;;;;;;;:36;;;;7333:7;7317:32;;7326:5;7317:32;;;7342:6;7317:32;;;;;;:::i;:::-;;;;;;;;7022:335;;;:::o;7365:2417::-;7469:1;7453:18;;:4;:18;;;7445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7546:1;7532:16;;:2;:16;;;7524:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7616:1;7607:6;:10;7599:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7674:17;7716:7;:5;:7::i;:::-;7708:15;;:4;:15;;;;:32;;;;;7733:7;:5;:7::i;:::-;7727:13;;:2;:13;;;;7708:32;7704:1722;;;7767:39;7802:3;7767:30;7779:11;;;;;;;;;;;7778:18;;7794:2;7778:18;;;7792:1;7778:18;7767:30;;:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;7757:49;;7825:20;;;;;;;;;;;7821:350;;;7884:15;;;;;;;;;;;7870:30;;:2;:30;;;;:62;;;;;7918:13;;;;;;;;;;;7904:28;;:2;:28;;;;7870:62;7866:290;;;8007:12;7965:28;:39;7994:9;7965:39;;;;;;;;;;;;;;;;:54;7957:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8124:12;8082:28;:39;8111:9;8082:39;;;;;;;;;;;;;;;:54;;;;7866:290;7821:350;8199:13;;;;;;;;;;;8191:21;;:4;:21;;;:55;;;;;8230:15;;;;;;;;;;;8216:30;;:2;:30;;;;8191:55;:83;;;;;8252:18;:22;8271:2;8252:22;;;;;;;;;;;;;;;;;;;;;;;;;8250:24;8191:83;8187:495;;;8313:12;;8303:6;:22;;8295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8408:14;;8398:6;8382:13;8392:2;8382:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8374:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8485:18;;8475:9;;:28;8472:99;;;8536:14;8547:2;8536:10;:14::i;:::-;8535:15;8527:24;;;;;;8472:99;8589:9;;:11;;;;;;;;;:::i;:::-;;;;;;8631:35;8662:3;8631:26;8642:14;;8631:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;8619:47;;8187:495;8708:13;;;;;;;;;;;8702:19;;:2;:19;;;:44;;;;;8741:4;8725:21;;:4;:21;;;;8702:44;8698:212;;;8785:12;;8775:6;:22;;8767:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8858:36;8890:3;8858:27;8869:15;;8858:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;8846:48;;8698:212;8926:28;8957:24;8975:4;8957:9;:24::i;:::-;8926:55;;9001:6;;;;;;;;;;;9000:7;:30;;;;;9017:13;;;;;;;;;;;9011:19;;:2;:19;;;9000:30;:45;;;;;9034:11;;;;;;;;;;;9000:45;:87;;;;;9070:17;;9049:20;:38;9000:87;:119;;;;;9101:18;;9091:9;;:28;9000:119;8996:419;;;9140:67;9157:49;9161:6;9168:37;9172:20;9193:11;;9168:3;:37::i;:::-;9157:3;:49::i;:::-;9140:16;:67::i;:::-;9226:26;9255:21;9226:50;;9319:1;9298:18;:22;9295:105;;;9345:35;9358:21;9345:12;:35::i;:::-;9295:105;9121:294;8996:419;7742:1684;7704:1722;9451:1;9441:9;:11;9438:161;;;9491:39;9520:9;9491;:24;9509:4;9491:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9466:9;:24;9484:4;9466:24;;;;;;;;;;;;;;;:64;;;;9571:4;9548:39;;9557:4;9548:39;;;9577:9;9548:39;;;;;;:::i;:::-;;;;;;;;9438:161;9625:27;9645:6;9625:9;:15;9635:4;9625:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9609:9;:15;9619:4;9609:15;;;;;;;;;;;;;;;:43;;;;9677:40;9695:21;9706:9;9695:6;:10;;:21;;;;:::i;:::-;9677:9;:13;9687:2;9677:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9663:9;:13;9673:2;9663:13;;;;;;;;;;;;;;;:54;;;;9748:2;9733:41;;9742:4;9733:41;;;9752:21;9763:9;9752:6;:10;;:21;;;;:::i;:::-;9733:41;;;;;;:::i;:::-;;;;;;;;7434:2348;7365:2417;;;:::o;1468:190::-;1554:7;1587:1;1582;:6;;1590:12;1574:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1614:9;1630:1;1626;:5;;;;:::i;:::-;1614:17;;1649:1;1642:8;;;1468:190;;;;;:::o;10207:555::-;5315:4;5306:6;;:13;;;;;;;;;;;;;;;;;;10301:1:::1;10288:11;:14:::0;10285:27;10304:7:::1;10285:27;10326:11;;;;;;;;;;;10322:25:::0;10339:7:::1;10322:25;10357:21;10395:1;10381:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10357:40;;10426:4;10408;10413:1;10408:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10452:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10442:4;10447:1;10442:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10485:62;10502:4;10517:15;;;;;;;;;;;10535:11;10485:8;:62::i;:::-;10558:15;;;;;;;;;;;:66;;;10639:11;10665:1;10681:4;10708;10728:15;10558:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10274:488;5330:1;5351:5:::0;5342:6;;:14;;;;;;;;;;;;;;;;;;10207:555;:::o;10974:92::-;11031:10;;;;;;;;;;;:19;;:27;11051:6;11031:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10974:92;:::o;1666:246::-;1724:7;1753:1;1748;:6;1744:47;;1778:1;1771:8;;;;1744:47;1801:9;1817:1;1813;:5;;;;:::i;:::-;1801:17;;1846:1;1841;1837;:5;;;;:::i;:::-;:10;1829:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1903:1;1896:8;;;1666:246;;;;;:::o;1920:132::-;1978:7;2005:39;2009:1;2012;2005:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1998:46;;1920:132;;;;:::o;11977:195::-;12036:4;12053:12;12120:7;12108:20;12100:28;;12163:1;12156:4;:8;12149:15;;;11977:195;;;:::o;9790:100::-;9847:7;9876:1;9874;:3;9873:9;;9881:1;9873:9;;;9879:1;9873:9;9866:16;;9790:100;;;;:::o;1137:179::-;1195:7;1215:9;1231:1;1227;:5;;;;:::i;:::-;1215:17;;1256:1;1251;:6;;1243:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1307:1;1300:8;;;1137:179;;;;:::o;1324:136::-;1382:7;1409:43;1413:1;1416;1409:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1402:50;;1324:136;;;;:::o;2060:189::-;2146:7;2178:1;2174;:5;2181:12;2166:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2205:9;2221:1;2217;:5;;;;:::i;:::-;2205:17;;2240:1;2233:8;;;2060:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529: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:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:180::-;6548:77;6545:1;6538:88;6645:4;6642:1;6635:15;6669:4;6666:1;6659:15;6686:102;6728:8;6775:5;6772:1;6768:13;6747:34;;6686:102;;;:::o;6794:848::-;6855:5;6862:4;6886:6;6877:15;;6910:5;6901:14;;6924:712;6945:1;6935:8;6932:15;6924:712;;;7040:4;7035:3;7031:14;7025:4;7022:24;7019:50;;;7049:18;;:::i;:::-;7019:50;7099:1;7089:8;7085:16;7082:451;;;7514:4;7507:5;7503:16;7494:25;;7082:451;7564:4;7558;7554:15;7546:23;;7594:32;7617:8;7594:32;:::i;:::-;7582:44;;6924:712;;;6794:848;;;;;;;:::o;7648:1073::-;7702:5;7893:8;7883:40;;7914:1;7905:10;;7916:5;;7883:40;7942:4;7932:36;;7959:1;7950:10;;7961:5;;7932:36;8028:4;8076:1;8071:27;;;;8112:1;8107:191;;;;8021:277;;8071:27;8089:1;8080:10;;8091:5;;;8107:191;8152:3;8142:8;8139:17;8136:43;;;8159:18;;:::i;:::-;8136:43;8208:8;8205:1;8201:16;8192:25;;8243:3;8236:5;8233:14;8230:40;;;8250:18;;:::i;:::-;8230:40;8283:5;;;8021:277;;8407:2;8397:8;8394:16;8388:3;8382:4;8379:13;8375:36;8357:2;8347:8;8344:16;8339:2;8333:4;8330:12;8326:35;8310:111;8307:246;;;8463:8;8457:4;8453:19;8444:28;;8498:3;8491:5;8488:14;8485:40;;;8505:18;;:::i;:::-;8485:40;8538:5;;8307:246;8578:42;8616:3;8606:8;8600:4;8597:1;8578:42;:::i;:::-;8563:57;;;;8652:4;8647:3;8643:14;8636:5;8633:25;8630:51;;;8661:18;;:::i;:::-;8630:51;8710:4;8703:5;8699:16;8690:25;;7648:1073;;;;;;:::o;8727:281::-;8785:5;8809:23;8827:4;8809:23;:::i;:::-;8801:31;;8853:25;8869:8;8853:25;:::i;:::-;8841:37;;8897:104;8934:66;8924:8;8918:4;8897:104;:::i;:::-;8888:113;;8727:281;;;;:::o;9014:410::-;9054:7;9077:20;9095:1;9077:20;:::i;:::-;9072:25;;9111:20;9129:1;9111:20;:::i;:::-;9106:25;;9166:1;9163;9159:9;9188:30;9206:11;9188:30;:::i;:::-;9177:41;;9367:1;9358:7;9354:15;9351:1;9348:22;9328:1;9321:9;9301:83;9278:139;;9397:18;;:::i;:::-;9278:139;9062:362;9014:410;;;;:::o;9430:182::-;9570:34;9566:1;9558:6;9554:14;9547:58;9430:182;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:176::-;10555:28;10551:1;10543:6;10539:14;10532:52;10415:176;:::o;10597:366::-;10739:3;10760:67;10824:2;10819:3;10760:67;:::i;:::-;10753:74;;10836:93;10925:3;10836:93;:::i;:::-;10954:2;10949:3;10945:12;10938:19;;10597:366;;;:::o;10969:419::-;11135:4;11173:2;11162:9;11158:18;11150:26;;11222:9;11216:4;11212:20;11208:1;11197:9;11193:17;11186:47;11250:131;11376:4;11250:131;:::i;:::-;11242:139;;10969:419;;;:::o;11394:177::-;11534:29;11530:1;11522:6;11518:14;11511:53;11394:177;:::o;11577:366::-;11719:3;11740:67;11804:2;11799:3;11740:67;:::i;:::-;11733:74;;11816:93;11905:3;11816:93;:::i;:::-;11934:2;11929:3;11925:12;11918:19;;11577:366;;;:::o;11949:419::-;12115:4;12153:2;12142:9;12138:18;12130:26;;12202:9;12196:4;12192:20;12188:1;12177:9;12173:17;12166:47;12230:131;12356:4;12230:131;:::i;:::-;12222:139;;11949:419;;;:::o;12374:173::-;12514:25;12510:1;12502:6;12498:14;12491:49;12374:173;:::o;12553:366::-;12695:3;12716:67;12780:2;12775:3;12716:67;:::i;:::-;12709:74;;12792:93;12881:3;12792:93;:::i;:::-;12910:2;12905:3;12901:12;12894:19;;12553:366;;;:::o;12925:419::-;13091:4;13129:2;13118:9;13114:18;13106:26;;13178:9;13172:4;13168:20;13164:1;13153:9;13149:17;13142:47;13206:131;13332:4;13206:131;:::i;:::-;13198:139;;12925:419;;;:::o;13350:143::-;13407:5;13438:6;13432:13;13423:22;;13454:33;13481:5;13454:33;:::i;:::-;13350:143;;;;:::o;13499:351::-;13569:6;13618:2;13606:9;13597:7;13593:23;13589:32;13586:119;;;13624:79;;:::i;:::-;13586:119;13744:1;13769:64;13825:7;13816:6;13805:9;13801:22;13769:64;:::i;:::-;13759:74;;13715:128;13499:351;;;;:::o;13856:332::-;13977:4;14015:2;14004:9;14000:18;13992:26;;14028:71;14096:1;14085:9;14081:17;14072:6;14028:71;:::i;:::-;14109:72;14177:2;14166:9;14162:18;14153:6;14109:72;:::i;:::-;13856:332;;;;;:::o;14194:85::-;14239:7;14268:5;14257:16;;14194:85;;;:::o;14285:60::-;14313:3;14334:5;14327:12;;14285:60;;;:::o;14351:158::-;14409:9;14442:61;14460:42;14469:32;14495:5;14469:32;:::i;:::-;14460:42;:::i;:::-;14442:61;:::i;:::-;14429:74;;14351:158;;;:::o;14515:147::-;14610:45;14649:5;14610:45;:::i;:::-;14605:3;14598:58;14515:147;;:::o;14668:807::-;14917:4;14955:3;14944:9;14940:19;14932:27;;14969:71;15037:1;15026:9;15022:17;15013:6;14969:71;:::i;:::-;15050:72;15118:2;15107:9;15103:18;15094:6;15050:72;:::i;:::-;15132:80;15208:2;15197:9;15193:18;15184:6;15132:80;:::i;:::-;15222;15298:2;15287:9;15283:18;15274:6;15222:80;:::i;:::-;15312:73;15380:3;15369:9;15365:19;15356:6;15312:73;:::i;:::-;15395;15463:3;15452:9;15448:19;15439:6;15395:73;:::i;:::-;14668:807;;;;;;;;;:::o;15481:143::-;15538:5;15569:6;15563:13;15554:22;;15585:33;15612:5;15585:33;:::i;:::-;15481:143;;;;:::o;15630:663::-;15718:6;15726;15734;15783:2;15771:9;15762:7;15758:23;15754:32;15751:119;;;15789:79;;:::i;:::-;15751:119;15909:1;15934:64;15990:7;15981:6;15970:9;15966:22;15934:64;:::i;:::-;15924:74;;15880:128;16047:2;16073:64;16129:7;16120:6;16109:9;16105:22;16073:64;:::i;:::-;16063:74;;16018:129;16186:2;16212:64;16268:7;16259:6;16248:9;16244:22;16212:64;:::i;:::-;16202:74;;16157:129;15630:663;;;;;:::o;16299:332::-;16420:4;16458:2;16447:9;16443:18;16435:26;;16471:71;16539:1;16528:9;16524:17;16515:6;16471:71;:::i;:::-;16552:72;16620:2;16609:9;16605:18;16596:6;16552:72;:::i;:::-;16299:332;;;;;:::o;16637:116::-;16707:21;16722:5;16707:21;:::i;:::-;16700:5;16697:32;16687:60;;16743:1;16740;16733:12;16687:60;16637:116;:::o;16759:137::-;16813:5;16844:6;16838:13;16829:22;;16860:30;16884:5;16860:30;:::i;:::-;16759:137;;;;:::o;16902:345::-;16969:6;17018:2;17006:9;16997:7;16993:23;16989:32;16986:119;;;17024:79;;:::i;:::-;16986:119;17144:1;17169:61;17222:7;17213:6;17202:9;17198:22;17169:61;:::i;:::-;17159:71;;17115:125;16902:345;;;;:::o;17253:223::-;17393:34;17389:1;17381:6;17377:14;17370:58;17462:6;17457:2;17449:6;17445:15;17438:31;17253:223;:::o;17482:366::-;17624:3;17645:67;17709:2;17704:3;17645:67;:::i;:::-;17638:74;;17721:93;17810:3;17721:93;:::i;:::-;17839:2;17834:3;17830:12;17823:19;;17482:366;;;:::o;17854:419::-;18020:4;18058:2;18047:9;18043:18;18035:26;;18107:9;18101:4;18097:20;18093:1;18082:9;18078:17;18071:47;18135:131;18261:4;18135:131;:::i;:::-;18127:139;;17854:419;;;:::o;18279:221::-;18419:34;18415:1;18407:6;18403:14;18396:58;18488:4;18483:2;18475:6;18471:15;18464:29;18279:221;:::o;18506:366::-;18648:3;18669:67;18733:2;18728:3;18669:67;:::i;:::-;18662:74;;18745:93;18834:3;18745:93;:::i;:::-;18863:2;18858:3;18854:12;18847:19;;18506:366;;;:::o;18878:419::-;19044:4;19082:2;19071:9;19067:18;19059:26;;19131:9;19125:4;19121:20;19117:1;19106:9;19102:17;19095:47;19159:131;19285:4;19159:131;:::i;:::-;19151:139;;18878:419;;;:::o;19303:224::-;19443:34;19439:1;19431:6;19427:14;19420:58;19512:7;19507:2;19499:6;19495:15;19488:32;19303:224;:::o;19533:366::-;19675:3;19696:67;19760:2;19755:3;19696:67;:::i;:::-;19689:74;;19772:93;19861:3;19772:93;:::i;:::-;19890:2;19885:3;19881:12;19874:19;;19533:366;;;:::o;19905:419::-;20071:4;20109:2;20098:9;20094:18;20086:26;;20158:9;20152:4;20148:20;20144:1;20133:9;20129:17;20122:47;20186:131;20312:4;20186:131;:::i;:::-;20178:139;;19905:419;;;:::o;20330:222::-;20470:34;20466:1;20458:6;20454:14;20447:58;20539:5;20534:2;20526:6;20522:15;20515:30;20330:222;:::o;20558:366::-;20700:3;20721:67;20785:2;20780:3;20721:67;:::i;:::-;20714:74;;20797:93;20886:3;20797:93;:::i;:::-;20915:2;20910:3;20906:12;20899:19;;20558:366;;;:::o;20930:419::-;21096:4;21134:2;21123:9;21119:18;21111:26;;21183:9;21177:4;21173:20;21169:1;21158:9;21154:17;21147:47;21211:131;21337:4;21211:131;:::i;:::-;21203:139;;20930:419;;;:::o;21355:228::-;21495:34;21491:1;21483:6;21479:14;21472:58;21564:11;21559:2;21551:6;21547:15;21540:36;21355:228;:::o;21589:366::-;21731:3;21752:67;21816:2;21811:3;21752:67;:::i;:::-;21745:74;;21828:93;21917:3;21828:93;:::i;:::-;21946:2;21941:3;21937:12;21930:19;;21589:366;;;:::o;21961:419::-;22127:4;22165:2;22154:9;22150:18;22142:26;;22214:9;22208:4;22204:20;22200:1;22189:9;22185:17;22178:47;22242:131;22368:4;22242:131;:::i;:::-;22234:139;;21961:419;;;:::o;22386:223::-;22526:34;22522:1;22514:6;22510:14;22503:58;22595:6;22590:2;22582:6;22578:15;22571:31;22386:223;:::o;22615:366::-;22757:3;22778:67;22842:2;22837:3;22778:67;:::i;:::-;22771:74;;22854:93;22943:3;22854:93;:::i;:::-;22972:2;22967:3;22963:12;22956:19;;22615:366;;;:::o;22987:419::-;23153:4;23191:2;23180:9;23176:18;23168:26;;23240:9;23234:4;23230:20;23226:1;23215:9;23211:17;23204:47;23268:131;23394:4;23268:131;:::i;:::-;23260:139;;22987:419;;;:::o;23412:175::-;23552:27;23548:1;23540:6;23536:14;23529:51;23412:175;:::o;23593:366::-;23735:3;23756:67;23820:2;23815:3;23756:67;:::i;:::-;23749:74;;23832:93;23921:3;23832:93;:::i;:::-;23950:2;23945:3;23941:12;23934:19;;23593:366;;;:::o;23965:419::-;24131:4;24169:2;24158:9;24154:18;24146:26;;24218:9;24212:4;24208:20;24204:1;24193:9;24189:17;24182:47;24246:131;24372:4;24246:131;:::i;:::-;24238:139;;23965:419;;;:::o;24390:191::-;24430:3;24449:20;24467:1;24449:20;:::i;:::-;24444:25;;24483:20;24501:1;24483:20;:::i;:::-;24478:25;;24526:1;24523;24519:9;24512:16;;24547:3;24544:1;24541:10;24538:36;;;24554:18;;:::i;:::-;24538:36;24390:191;;;;:::o;24587:176::-;24727:28;24723:1;24715:6;24711:14;24704:52;24587:176;:::o;24769:366::-;24911:3;24932:67;24996:2;24991:3;24932:67;:::i;:::-;24925:74;;25008:93;25097:3;25008:93;:::i;:::-;25126:2;25121:3;25117:12;25110:19;;24769:366;;;:::o;25141:419::-;25307:4;25345:2;25334:9;25330:18;25322:26;;25394:9;25388:4;25384:20;25380:1;25369:9;25365:17;25358:47;25422:131;25548:4;25422:131;:::i;:::-;25414:139;;25141:419;;;:::o;25566:233::-;25605:3;25628:24;25646:5;25628:24;:::i;:::-;25619:33;;25674:66;25667:5;25664:77;25661:103;;25744:18;;:::i;:::-;25661:103;25791:1;25784:5;25780:13;25773:20;;25566:233;;;:::o;25805:194::-;25845:4;25865:20;25883:1;25865:20;:::i;:::-;25860:25;;25899:20;25917:1;25899:20;:::i;:::-;25894:25;;25943:1;25940;25936:9;25928:17;;25967:1;25961:4;25958:11;25955:37;;;25972:18;;:::i;:::-;25955:37;25805:194;;;;:::o;26005:180::-;26053:77;26050:1;26043:88;26150:4;26147:1;26140:15;26174:4;26171:1;26164:15;26191:180;26239:77;26236:1;26229:88;26336:4;26333:1;26326:15;26360:4;26357:1;26350:15;26377:114;26444:6;26478:5;26472:12;26462:22;;26377:114;;;:::o;26497:184::-;26596:11;26630:6;26625:3;26618:19;26670:4;26665:3;26661:14;26646:29;;26497:184;;;;:::o;26687:132::-;26754:4;26777:3;26769:11;;26807:4;26802:3;26798:14;26790:22;;26687:132;;;:::o;26825:108::-;26902:24;26920:5;26902:24;:::i;:::-;26897:3;26890:37;26825:108;;:::o;26939:179::-;27008:10;27029:46;27071:3;27063:6;27029:46;:::i;:::-;27107:4;27102:3;27098:14;27084:28;;26939:179;;;;:::o;27124:113::-;27194:4;27226;27221:3;27217:14;27209:22;;27124:113;;;:::o;27273:732::-;27392:3;27421:54;27469:5;27421:54;:::i;:::-;27491:86;27570:6;27565:3;27491:86;:::i;:::-;27484:93;;27601:56;27651:5;27601:56;:::i;:::-;27680:7;27711:1;27696:284;27721:6;27718:1;27715:13;27696:284;;;27797:6;27791:13;27824:63;27883:3;27868:13;27824:63;:::i;:::-;27817:70;;27910:60;27963:6;27910:60;:::i;:::-;27900:70;;27756:224;27743:1;27740;27736:9;27731:14;;27696:284;;;27700:14;27996:3;27989:10;;27397:608;;;27273:732;;;;:::o;28011:831::-;28274:4;28312:3;28301:9;28297:19;28289:27;;28326:71;28394:1;28383:9;28379:17;28370:6;28326:71;:::i;:::-;28407:80;28483:2;28472:9;28468:18;28459:6;28407:80;:::i;:::-;28534:9;28528:4;28524:20;28519:2;28508:9;28504:18;28497:48;28562:108;28665:4;28656:6;28562:108;:::i;:::-;28554:116;;28680:72;28748:2;28737:9;28733:18;28724:6;28680:72;:::i;:::-;28762:73;28830:3;28819:9;28815:19;28806:6;28762:73;:::i;:::-;28011:831;;;;;;;;:::o;28848:180::-;28896:77;28893:1;28886:88;28993:4;28990:1;28983:15;29017:4;29014:1;29007:15;29034:185;29074:1;29091:20;29109:1;29091:20;:::i;:::-;29086:25;;29125:20;29143:1;29125:20;:::i;:::-;29120:25;;29164:1;29154:35;;29169:18;;:::i;:::-;29154:35;29211:1;29208;29204:9;29199:14;;29034:185;;;;:::o;29225:220::-;29365:34;29361:1;29353:6;29349:14;29342:58;29434:3;29429:2;29421:6;29417:15;29410:28;29225:220;:::o;29451:366::-;29593:3;29614:67;29678:2;29673:3;29614:67;:::i;:::-;29607:74;;29690:93;29779:3;29690:93;:::i;:::-;29808:2;29803:3;29799:12;29792:19;;29451:366;;;:::o;29823:419::-;29989:4;30027:2;30016:9;30012:18;30004:26;;30076:9;30070:4;30066:20;30062:1;30051:9;30047:17;30040:47;30104:131;30230:4;30104:131;:::i;:::-;30096:139;;29823:419;;;:::o;30248:177::-;30388:29;30384:1;30376:6;30372:14;30365:53;30248:177;:::o;30431:366::-;30573:3;30594:67;30658:2;30653:3;30594:67;:::i;:::-;30587:74;;30670:93;30759:3;30670:93;:::i;:::-;30788:2;30783:3;30779:12;30772:19;;30431:366;;;:::o;30803:419::-;30969:4;31007:2;30996:9;30992:18;30984:26;;31056:9;31050:4;31046:20;31042:1;31031:9;31027:17;31020:47;31084:131;31210:4;31084:131;:::i;:::-;31076:139;;30803:419;;;:::o
Swarm Source
ipfs://cb52e96a4c6863a0c8631e122ec7faff569063fbdebb9e20c57fe752a0bd90ab
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.