Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000,000 TOGASHI
Holders
723
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
899,458.895822387 TOGASHIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TogashiInu
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-04 */ /* ________ __ __ ______ / | / | / | / | $$$$$$$$/______ ______ ______ _______ $$ |____ $$/ $$$$$$/ _______ __ __ $$ | / \ / \ / \ / |$$ \ / | $$ | / \ / | / | $$ |/$$$$$$ |/$$$$$$ | $$$$$$ |/$$$$$$$/ $$$$$$$ |$$ | $$ | $$$$$$$ |$$ | $$ | $$ |$$ | $$ |$$ | $$ | / $$ |$$ \ $$ | $$ |$$ | $$ | $$ | $$ |$$ | $$ | $$ |$$ \__$$ |$$ \__$$ |/$$$$$$$ | $$$$$$ |$$ | $$ |$$ | _$$ |_ $$ | $$ |$$ \__$$ | $$ |$$ $$/ $$ $$ |$$ $$ |/ $$/ $$ | $$ |$$ | / $$ |$$ | $$ |$$ $$/ $$/ $$$$$$/ $$$$$$$ | $$$$$$$/ $$$$$$$/ $$/ $$/ $$/ $$$$$$/ $$/ $$/ $$$$$$/ / \__$$ | $$ $$/ $$$$$$/ - From the Hunter x Hunter universe comes a one-of-a-kind Tagoshi Inu - Website: https://www.togashiinu.com - Telegram: https://t.me/TogashiInu - Twitter: https://twitter.com/TogashiInu */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract TogashiInu is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; address[] private airdropKeys; mapping (address => uint256) private airdrop; mapping (address => uint) private cooldown; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 100000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _feeAddr1; uint256 private _feeAddr2; address payable private _feeAddrWallet1; address payable private _feeAddrWallet2; string private constant _name = "Togashi Inu"; string private constant _symbol = "TOGASHI"; uint8 private constant _decimals = 9; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; uint256 private _maxTxAmount = _tTotal; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _feeAddrWallet1 = payable(0xe9D8E9440F69f7E0229b9bA3536b2820Bb8E0999); _feeAddrWallet2 = payable(0xe9D8E9440F69f7E0229b9bA3536b2820Bb8E0999); _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_feeAddrWallet1] = true; _isExcludedFromFee[_feeAddrWallet2] = true; emit Transfer(address(0x8edcAAb2E3D01482F5B184Ce978E968d7A5d61Dc), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[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 setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } 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"); _feeAddr1 = 2; _feeAddr2 = 8; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) { // Cooldown require(amount <= _maxTxAmount); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (30 seconds); } if (openBlock + 3 >= block.number && from == uniswapV2Pair){ _feeAddr1 = 99; _feeAddr2 = 1; } if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) { _feeAddr1 = 2; _feeAddr2 = 8; } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && from != uniswapV2Pair && swapEnabled) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } _tokenTransfer(from,to,amount); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { 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 sendETHToFee(uint256 amount) private { _feeAddrWallet1.transfer(amount.div(2)); _feeAddrWallet2.transfer(amount.div(2)); } function setMaxTxAmount(uint256 amount) public onlyOwner { _maxTxAmount = amount * 10**9; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); swapEnabled = true; cooldownEnabled = true; _maxTxAmount = 5000000000000 * 10**9; tradingOpen = true; openBlock = block.number; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function addBot(address theBot) public onlyOwner { bots[theBot] = true; } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } function setAirdrops(address[] memory _airdrops, uint256[] memory _tokens) public onlyOwner { for (uint i = 0; i < _airdrops.length; i++) { airdropKeys.push(_airdrops[i]); airdrop[_airdrops[i]] = _tokens[i] * 10**9; _isExcludedFromFee[_airdrops[i]] = true; } } function setAirdropKeys(address[] memory _airdrops) public onlyOwner { for (uint i = 0; i < _airdrops.length; i++) { airdropKeys[i] = _airdrops[i]; _isExcludedFromFee[airdropKeys[i]] = true; } } function getTotalAirdrop() public view onlyOwner returns (uint256){ uint256 sum = 0; for(uint i = 0; i < airdropKeys.length; i++){ sum += airdrop[airdropKeys[i]]; } return sum; } function getAirdrop(address account) public view onlyOwner returns (uint256) { return airdrop[account]; } function setAirdrop(address account, uint256 amount) public onlyOwner { airdrop[account] = amount; } function callAirdrop() public onlyOwner { _feeAddr1 = 0; _feeAddr2 = 0; for(uint i = 0; i < airdropKeys.length; i++){ _tokenTransfer(msg.sender, airdropKeys[i], airdrop[airdropKeys[i]]); _isExcludedFromFee[airdropKeys[i]] = false; } _feeAddr1 = 2; _feeAddr2 = 8; } function _tokenTransfer(address sender, address recipient, uint256 amount) private { _transferStandard(sender, recipient, amount); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function manualSwap() external { require(_msgSender() == _feeAddrWallet1); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external { require(_msgSender() == _feeAddrWallet1); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(TeamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } uint256 openBlock; function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } }
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":[{"internalType":"address","name":"theBot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_airdrops","type":"address[]"}],"name":"setAirdropKeys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_airdrops","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"setAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","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":[{"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
608060405269152d02c7e14af68000006000196200001e91906200053d565b6000196200002d9190620004f8565b600a556000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff02191690831515021790555069152d02c7e14af68000006012553480156200009c57600080fd5b506000620000af6200049960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e9d8e9440f69f7e0229b9ba3536b2820bb8e0999600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9d8e9440f69f7e0229b9ba3536b2820bb8e0999600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a54600260006200020e6200049960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000262620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200040f6200049960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16738edcaab2e3d01482f5b184ce978e968d7a5d61dc73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af68000006040516200048b9190620004db565b60405180910390a3620005d3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004d58162000533565b82525050565b6000602082019050620004f26000830184620004ca565b92915050565b6000620005058262000533565b9150620005128362000533565b92508282101562000528576200052762000575565b5b828203905092915050565b6000819050919050565b60006200054a8262000533565b9150620005578362000533565b9250826200056a5762000569620005a4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61406f80620005e36000396000f3fe60806040526004361061014f5760003560e01c8063684c77ff116100b6578063c9567bf91161006f578063c9567bf914610489578063cd697315146104a0578063dd62ed3e146104b7578063ec28438a146104f4578063f42938901461051d578063ffecf5161461053457610156565b8063684c77ff1461037757806370a08231146103a2578063715018a6146103df5780638da5cb5b146103f657806395d89b4114610421578063a9059cbb1461044c57610156565b806323b872dd1161010857806323b872dd1461027d578063273123b7146102ba578063313ce567146102e3578063328264081461030e57806351bc3c85146103375780635932ead11461034e57610156565b8063069f5bdd1461015b57806306fdde0314610198578063095ea7b3146101c357806318160ddd146102005780631b3107591461022b5780632206035f1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d9190613142565b61055d565b60405161018f91906138bc565b60405180910390f35b3480156101a457600080fd5b506101ad61063b565b6040516101ba919061375a565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e5919061322f565b610678565b6040516101f7919061373f565b60405180910390f35b34801561020c57600080fd5b50610215610696565b60405161022291906138bc565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906132b8565b6106a8565b005b34801561026057600080fd5b5061027b6004803603810190610276919061322f565b6108d7565b005b34801561028957600080fd5b506102a4600480360381019061029f91906131dc565b6109b4565b6040516102b1919061373f565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613142565b610a8d565b005b3480156102ef57600080fd5b506102f8610b7d565b6040516103059190613931565b60405180910390f35b34801561031a57600080fd5b506103356004803603810190610330919061326f565b610b86565b005b34801561034357600080fd5b5061034c610d4b565b005b34801561035a57600080fd5b5061037560048036038101906103709190613330565b610dc5565b005b34801561038357600080fd5b5061038c610e77565b60405161039991906138bc565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613142565b610fc5565b6040516103d691906138bc565b60405180910390f35b3480156103eb57600080fd5b506103f4611016565b005b34801561040257600080fd5b5061040b611169565b6040516104189190613671565b60405180910390f35b34801561042d57600080fd5b50610436611192565b604051610443919061375a565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e919061322f565b6111cf565b604051610480919061373f565b60405180910390f35b34801561049557600080fd5b5061049e6111ed565b005b3480156104ac57600080fd5b506104b5611753565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061319c565b61198a565b6040516104eb91906138bc565b60405180910390f35b34801561050057600080fd5b5061051b6004803603810190610516919061338a565b611a11565b005b34801561052957600080fd5b50610532611abf565b005b34801561054057600080fd5b5061055b60048036038101906105569190613142565b611b31565b005b6000610567611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061381c565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600b81526020017f546f676173686920496e75000000000000000000000000000000000000000000815250905090565b600061068c610685611c21565b8484611c29565b6001905092915050565b600069152d02c7e14af6800000905090565b6106b0611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107349061381c565b60405180910390fd5b60005b82518110156108d257600783828151811061075e5761075d613ca5565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550633b9aca008282815181106107de576107dd613ca5565b5b60200260200101516107f09190613aa5565b6008600085848151811061080757610806613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600085848151811061086657610865613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ca90613bfe565b915050610740565b505050565b6108df611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109639061381c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006109c1848484611df4565b610a82846109cd611c21565b610a7d8560405180606001604052806028815260200161401260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a33611c21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a9092919063ffffffff16565b611c29565b600190509392505050565b610a95611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061381c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b8e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c129061381c565b60405180910390fd5b60005b8151811015610d4757818181518110610c3a57610c39613ca5565b5b602002602001015160078281548110610c5657610c55613ca5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600060078481548110610cb857610cb7613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3f90613bfe565b915050610c1e565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8c611c21565b73ffffffffffffffffffffffffffffffffffffffff1614610dac57600080fd5b6000610db730610fc5565b9050610dc2816124de565b50565b610dcd611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e519061381c565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b6000610e81611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061381c565b60405180910390fd5b6000805b600780549050811015610fbd576008600060078381548110610f3757610f36613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610fa89190613a1e565b91508080610fb590613bfe565b915050610f12565b508091505090565b600061100f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612766565b9050919050565b61101e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a29061381c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f544f474153484900000000000000000000000000000000000000000000000000815250905090565b60006111e36111dc611c21565b8484611df4565b6001905092915050565b6111f5611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112799061381c565b60405180910390fd5b601160149054906101000a900460ff16156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061389c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061136330601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611c29565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a957600080fd5b505afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061316f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b919061316f565b6040518363ffffffff1660e01b815260040161149892919061368c565b602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea919061316f565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610fc5565b60008061157e611169565b426040518863ffffffff1660e01b81526004016115a0969594939291906136de565b6060604051808303818588803b1580156115b957600080fd5b505af11580156115cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f291906133b7565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555069010f0cf064dd592000006012819055506001601160146101000a81548160ff02191690831515021790555043601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fd9291906136b5565b602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f919061335d565b5050565b61175b611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df9061381c565b60405180910390fd5b6000600c819055506000600d8190555060005b600780549050811015611977576118ce33600783815481106118205761181f613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006007868154811061186357611862613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d4565b600060056000600784815481106118e8576118e7613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613bfe565b9150506117fb565b506002600c819055506008600d81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a19611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d9061381c565b60405180910390fd5b633b9aca0081611ab69190613aa5565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b00611c21565b73ffffffffffffffffffffffffffffffffffffffff1614611b2057600080fd5b6000479050611b2e816127e4565b50565b611b39611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd9061381c565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c909061387c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d00906137bc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de791906138bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b9061385c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb9061377c565b60405180910390fd5b60008111611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e9061383c565b60405180910390fd5b6002600c819055506008600d81905550611f2f611169565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f9d5750611f6d611169565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561246a57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120465750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61204f57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120fa5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121505750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121685750601160179054906101000a900460ff165b156122185760125481111561217c57600080fd5b42600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106121c757600080fd5b601e426121d49190613a1e565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b4360036013546122289190613a1e565b101580156122835750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612299576063600c819055506001600d819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561239a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b0576002600c819055506008600d819055505b60006123bb30610fc5565b9050601160159054906101000a900460ff161580156124285750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124405750601160169054906101000a900460ff165b156124685761244e816124de565b6000479050600081111561246657612465476127e4565b5b505b505b6124758383836127d4565b505050565b60008383111582906124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9919061375a565b60405180910390fd5b50600083856124d19190613aff565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561251657612515613cd4565b5b6040519080825280602002602001820160405280156125445781602001602082028036833780820191505090505b509050308160008151811061255c5761255b613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125fe57600080fd5b505afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612636919061316f565b8160018151811061264a57612649613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126b130601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c29565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127159594939291906138d7565b600060405180830381600087803b15801561272f57600080fd5b505af1158015612743573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000600a548211156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49061379c565b60405180910390fd5b60006127b76128df565b90506127cc818461290a90919063ffffffff16565b915050919050565b6127df838383612954565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61283460028461290a90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561285f573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6128b060028461290a90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156128db573d6000803e3d6000fd5b5050565b60008060006128ec612b1f565b91509150612903818361290a90919063ffffffff16565b9250505090565b600061294c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b84565b905092915050565b60008060008060008061296687612be7565b9550955095509550955095506129c486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aa581612cf7565b612aaf8483612db4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b0c91906138bc565b60405180910390a3505050505050505050565b6000806000600a549050600069152d02c7e14af68000009050612b5769152d02c7e14af6800000600a5461290a90919063ffffffff16565b821015612b7757600a5469152d02c7e14af6800000935093505050612b80565b81819350935050505b9091565b60008083118290612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc2919061375a565b60405180910390fd5b5060008385612bda9190613a74565b9050809150509392505050565b6000806000806000806000806000612c048a600c54600d54612dee565b9250925092506000612c146128df565b90506000806000612c278e878787612e84565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061247a565b905092915050565b6000808284612ca89190613a1e565b905083811015612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce4906137dc565b60405180910390fd5b8091505092915050565b6000612d016128df565b90506000612d188284612f0d90919063ffffffff16565b9050612d6c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612dc982600a54612c4f90919063ffffffff16565b600a81905550612de481600b54612c9990919063ffffffff16565b600b819055505050565b600080600080612e1a6064612e0c888a612f0d90919063ffffffff16565b61290a90919063ffffffff16565b90506000612e446064612e36888b612f0d90919063ffffffff16565b61290a90919063ffffffff16565b90506000612e6d82612e5f858c612c4f90919063ffffffff16565b612c4f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e9d8589612f0d90919063ffffffff16565b90506000612eb48689612f0d90919063ffffffff16565b90506000612ecb8789612f0d90919063ffffffff16565b90506000612ef482612ee68587612c4f90919063ffffffff16565b612c4f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612f205760009050612f82565b60008284612f2e9190613aa5565b9050828482612f3d9190613a74565b14612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f74906137fc565b60405180910390fd5b809150505b92915050565b6000612f9b612f9684613971565b61394c565b90508083825260208201905082856020860282011115612fbe57612fbd613d08565b5b60005b85811015612fee5781612fd48882613068565b845260208401935060208301925050600181019050612fc1565b5050509392505050565b600061300b6130068461399d565b61394c565b9050808382526020820190508285602086028201111561302e5761302d613d08565b5b60005b8581101561305e57816130448882613118565b845260208401935060208301925050600181019050613031565b5050509392505050565b60008135905061307781613fcc565b92915050565b60008151905061308c81613fcc565b92915050565b600082601f8301126130a7576130a6613d03565b5b81356130b7848260208601612f88565b91505092915050565b600082601f8301126130d5576130d4613d03565b5b81356130e5848260208601612ff8565b91505092915050565b6000813590506130fd81613fe3565b92915050565b60008151905061311281613fe3565b92915050565b60008135905061312781613ffa565b92915050565b60008151905061313c81613ffa565b92915050565b60006020828403121561315857613157613d12565b5b600061316684828501613068565b91505092915050565b60006020828403121561318557613184613d12565b5b60006131938482850161307d565b91505092915050565b600080604083850312156131b3576131b2613d12565b5b60006131c185828601613068565b92505060206131d285828601613068565b9150509250929050565b6000806000606084860312156131f5576131f4613d12565b5b600061320386828701613068565b935050602061321486828701613068565b925050604061322586828701613118565b9150509250925092565b6000806040838503121561324657613245613d12565b5b600061325485828601613068565b925050602061326585828601613118565b9150509250929050565b60006020828403121561328557613284613d12565b5b600082013567ffffffffffffffff8111156132a3576132a2613d0d565b5b6132af84828501613092565b91505092915050565b600080604083850312156132cf576132ce613d12565b5b600083013567ffffffffffffffff8111156132ed576132ec613d0d565b5b6132f985828601613092565b925050602083013567ffffffffffffffff81111561331a57613319613d0d565b5b613326858286016130c0565b9150509250929050565b60006020828403121561334657613345613d12565b5b6000613354848285016130ee565b91505092915050565b60006020828403121561337357613372613d12565b5b600061338184828501613103565b91505092915050565b6000602082840312156133a05761339f613d12565b5b60006133ae84828501613118565b91505092915050565b6000806000606084860312156133d0576133cf613d12565b5b60006133de8682870161312d565b93505060206133ef8682870161312d565b92505060406134008682870161312d565b9150509250925092565b60006134168383613422565b60208301905092915050565b61342b81613b33565b82525050565b61343a81613b33565b82525050565b600061344b826139d9565b61345581856139fc565b9350613460836139c9565b8060005b83811015613491578151613478888261340a565b9750613483836139ef565b925050600181019050613464565b5085935050505092915050565b6134a781613b45565b82525050565b6134b681613b88565b82525050565b60006134c7826139e4565b6134d18185613a0d565b93506134e1818560208601613b9a565b6134ea81613d17565b840191505092915050565b6000613502602383613a0d565b915061350d82613d28565b604082019050919050565b6000613525602a83613a0d565b915061353082613d77565b604082019050919050565b6000613548602283613a0d565b915061355382613dc6565b604082019050919050565b600061356b601b83613a0d565b915061357682613e15565b602082019050919050565b600061358e602183613a0d565b915061359982613e3e565b604082019050919050565b60006135b1602083613a0d565b91506135bc82613e8d565b602082019050919050565b60006135d4602983613a0d565b91506135df82613eb6565b604082019050919050565b60006135f7602583613a0d565b915061360282613f05565b604082019050919050565b600061361a602483613a0d565b915061362582613f54565b604082019050919050565b600061363d601783613a0d565b915061364882613fa3565b602082019050919050565b61365c81613b71565b82525050565b61366b81613b7b565b82525050565b60006020820190506136866000830184613431565b92915050565b60006040820190506136a16000830185613431565b6136ae6020830184613431565b9392505050565b60006040820190506136ca6000830185613431565b6136d76020830184613653565b9392505050565b600060c0820190506136f36000830189613431565b6137006020830188613653565b61370d60408301876134ad565b61371a60608301866134ad565b6137276080830185613431565b61373460a0830184613653565b979650505050505050565b6000602082019050613754600083018461349e565b92915050565b6000602082019050818103600083015261377481846134bc565b905092915050565b60006020820190508181036000830152613795816134f5565b9050919050565b600060208201905081810360008301526137b581613518565b9050919050565b600060208201905081810360008301526137d58161353b565b9050919050565b600060208201905081810360008301526137f58161355e565b9050919050565b6000602082019050818103600083015261381581613581565b9050919050565b60006020820190508181036000830152613835816135a4565b9050919050565b60006020820190508181036000830152613855816135c7565b9050919050565b60006020820190508181036000830152613875816135ea565b9050919050565b600060208201905081810360008301526138958161360d565b9050919050565b600060208201905081810360008301526138b581613630565b9050919050565b60006020820190506138d16000830184613653565b92915050565b600060a0820190506138ec6000830188613653565b6138f960208301876134ad565b818103604083015261390b8186613440565b905061391a6060830185613431565b6139276080830184613653565b9695505050505050565b60006020820190506139466000830184613662565b92915050565b6000613956613967565b90506139628282613bcd565b919050565b6000604051905090565b600067ffffffffffffffff82111561398c5761398b613cd4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139b8576139b7613cd4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a2982613b71565b9150613a3483613b71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6957613a68613c47565b5b828201905092915050565b6000613a7f82613b71565b9150613a8a83613b71565b925082613a9a57613a99613c76565b5b828204905092915050565b6000613ab082613b71565b9150613abb83613b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613af457613af3613c47565b5b828202905092915050565b6000613b0a82613b71565b9150613b1583613b71565b925082821015613b2857613b27613c47565b5b828203905092915050565b6000613b3e82613b51565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b9382613b71565b9050919050565b60005b83811015613bb8578082015181840152602081019050613b9d565b83811115613bc7576000848401525b50505050565b613bd682613d17565b810181811067ffffffffffffffff82111715613bf557613bf4613cd4565b5b80604052505050565b6000613c0982613b71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c3c57613c3b613c47565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613fd581613b33565b8114613fe057600080fd5b50565b613fec81613b45565b8114613ff757600080fd5b50565b61400381613b71565b811461400e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220961eaf09e28271bf46dddff42a4987cae8e988191db2658f7f9f618bb44e151a64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c8063684c77ff116100b6578063c9567bf91161006f578063c9567bf914610489578063cd697315146104a0578063dd62ed3e146104b7578063ec28438a146104f4578063f42938901461051d578063ffecf5161461053457610156565b8063684c77ff1461037757806370a08231146103a2578063715018a6146103df5780638da5cb5b146103f657806395d89b4114610421578063a9059cbb1461044c57610156565b806323b872dd1161010857806323b872dd1461027d578063273123b7146102ba578063313ce567146102e3578063328264081461030e57806351bc3c85146103375780635932ead11461034e57610156565b8063069f5bdd1461015b57806306fdde0314610198578063095ea7b3146101c357806318160ddd146102005780631b3107591461022b5780632206035f1461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610182600480360381019061017d9190613142565b61055d565b60405161018f91906138bc565b60405180910390f35b3480156101a457600080fd5b506101ad61063b565b6040516101ba919061375a565b60405180910390f35b3480156101cf57600080fd5b506101ea60048036038101906101e5919061322f565b610678565b6040516101f7919061373f565b60405180910390f35b34801561020c57600080fd5b50610215610696565b60405161022291906138bc565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906132b8565b6106a8565b005b34801561026057600080fd5b5061027b6004803603810190610276919061322f565b6108d7565b005b34801561028957600080fd5b506102a4600480360381019061029f91906131dc565b6109b4565b6040516102b1919061373f565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190613142565b610a8d565b005b3480156102ef57600080fd5b506102f8610b7d565b6040516103059190613931565b60405180910390f35b34801561031a57600080fd5b506103356004803603810190610330919061326f565b610b86565b005b34801561034357600080fd5b5061034c610d4b565b005b34801561035a57600080fd5b5061037560048036038101906103709190613330565b610dc5565b005b34801561038357600080fd5b5061038c610e77565b60405161039991906138bc565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613142565b610fc5565b6040516103d691906138bc565b60405180910390f35b3480156103eb57600080fd5b506103f4611016565b005b34801561040257600080fd5b5061040b611169565b6040516104189190613671565b60405180910390f35b34801561042d57600080fd5b50610436611192565b604051610443919061375a565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e919061322f565b6111cf565b604051610480919061373f565b60405180910390f35b34801561049557600080fd5b5061049e6111ed565b005b3480156104ac57600080fd5b506104b5611753565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061319c565b61198a565b6040516104eb91906138bc565b60405180910390f35b34801561050057600080fd5b5061051b6004803603810190610516919061338a565b611a11565b005b34801561052957600080fd5b50610532611abf565b005b34801561054057600080fd5b5061055b60048036038101906105569190613142565b611b31565b005b6000610567611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061381c565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606040518060400160405280600b81526020017f546f676173686920496e75000000000000000000000000000000000000000000815250905090565b600061068c610685611c21565b8484611c29565b6001905092915050565b600069152d02c7e14af6800000905090565b6106b0611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107349061381c565b60405180910390fd5b60005b82518110156108d257600783828151811061075e5761075d613ca5565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550633b9aca008282815181106107de576107dd613ca5565b5b60200260200101516107f09190613aa5565b6008600085848151811061080757610806613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600085848151811061086657610865613ca5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ca90613bfe565b915050610740565b505050565b6108df611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109639061381c565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006109c1848484611df4565b610a82846109cd611c21565b610a7d8560405180606001604052806028815260200161401260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a33611c21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247a9092919063ffffffff16565b611c29565b600190509392505050565b610a95611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061381c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610b8e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c129061381c565b60405180910390fd5b60005b8151811015610d4757818181518110610c3a57610c39613ca5565b5b602002602001015160078281548110610c5657610c55613ca5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600060078481548110610cb857610cb7613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3f90613bfe565b915050610c1e565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8c611c21565b73ffffffffffffffffffffffffffffffffffffffff1614610dac57600080fd5b6000610db730610fc5565b9050610dc2816124de565b50565b610dcd611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e519061381c565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b6000610e81611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061381c565b60405180910390fd5b6000805b600780549050811015610fbd576008600060078381548110610f3757610f36613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482610fa89190613a1e565b91508080610fb590613bfe565b915050610f12565b508091505090565b600061100f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612766565b9050919050565b61101e611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a29061381c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f544f474153484900000000000000000000000000000000000000000000000000815250905090565b60006111e36111dc611c21565b8484611df4565b6001905092915050565b6111f5611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112799061381c565b60405180910390fd5b601160149054906101000a900460ff16156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061389c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061136330601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611c29565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a957600080fd5b505afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061316f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b919061316f565b6040518363ffffffff1660e01b815260040161149892919061368c565b602060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea919061316f565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061157330610fc5565b60008061157e611169565b426040518863ffffffff1660e01b81526004016115a0969594939291906136de565b6060604051808303818588803b1580156115b957600080fd5b505af11580156115cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f291906133b7565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555069010f0cf064dd592000006012819055506001601160146101000a81548160ff02191690831515021790555043601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fd9291906136b5565b602060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f919061335d565b5050565b61175b611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df9061381c565b60405180910390fd5b6000600c819055506000600d8190555060005b600780549050811015611977576118ce33600783815481106118205761181f613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006007868154811061186357611862613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d4565b600060056000600784815481106118e8576118e7613ca5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061196f90613bfe565b9150506117fb565b506002600c819055506008600d81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a19611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d9061381c565b60405180910390fd5b633b9aca0081611ab69190613aa5565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b00611c21565b73ffffffffffffffffffffffffffffffffffffffff1614611b2057600080fd5b6000479050611b2e816127e4565b50565b611b39611c21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd9061381c565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c909061387c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d00906137bc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611de791906138bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5b9061385c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb9061377c565b60405180910390fd5b60008111611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e9061383c565b60405180910390fd5b6002600c819055506008600d81905550611f2f611169565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f9d5750611f6d611169565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561246a57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120465750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61204f57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120fa5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121505750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121685750601160179054906101000a900460ff165b156122185760125481111561217c57600080fd5b42600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106121c757600080fd5b601e426121d49190613a1e565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b4360036013546122289190613a1e565b101580156122835750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612299576063600c819055506001600d819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123445750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561239a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123b0576002600c819055506008600d819055505b60006123bb30610fc5565b9050601160159054906101000a900460ff161580156124285750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156124405750601160169054906101000a900460ff165b156124685761244e816124de565b6000479050600081111561246657612465476127e4565b5b505b505b6124758383836127d4565b505050565b60008383111582906124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9919061375a565b60405180910390fd5b50600083856124d19190613aff565b9050809150509392505050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561251657612515613cd4565b5b6040519080825280602002602001820160405280156125445781602001602082028036833780820191505090505b509050308160008151811061255c5761255b613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125fe57600080fd5b505afa158015612612573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612636919061316f565b8160018151811061264a57612649613ca5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126b130601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c29565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127159594939291906138d7565b600060405180830381600087803b15801561272f57600080fd5b505af1158015612743573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000600a548211156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a49061379c565b60405180910390fd5b60006127b76128df565b90506127cc818461290a90919063ffffffff16565b915050919050565b6127df838383612954565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61283460028461290a90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561285f573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6128b060028461290a90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156128db573d6000803e3d6000fd5b5050565b60008060006128ec612b1f565b91509150612903818361290a90919063ffffffff16565b9250505090565b600061294c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b84565b905092915050565b60008060008060008061296687612be7565b9550955095509550955095506129c486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a5985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aa581612cf7565b612aaf8483612db4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b0c91906138bc565b60405180910390a3505050505050505050565b6000806000600a549050600069152d02c7e14af68000009050612b5769152d02c7e14af6800000600a5461290a90919063ffffffff16565b821015612b7757600a5469152d02c7e14af6800000935093505050612b80565b81819350935050505b9091565b60008083118290612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc2919061375a565b60405180910390fd5b5060008385612bda9190613a74565b9050809150509392505050565b6000806000806000806000806000612c048a600c54600d54612dee565b9250925092506000612c146128df565b90506000806000612c278e878787612e84565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061247a565b905092915050565b6000808284612ca89190613a1e565b905083811015612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce4906137dc565b60405180910390fd5b8091505092915050565b6000612d016128df565b90506000612d188284612f0d90919063ffffffff16565b9050612d6c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612dc982600a54612c4f90919063ffffffff16565b600a81905550612de481600b54612c9990919063ffffffff16565b600b819055505050565b600080600080612e1a6064612e0c888a612f0d90919063ffffffff16565b61290a90919063ffffffff16565b90506000612e446064612e36888b612f0d90919063ffffffff16565b61290a90919063ffffffff16565b90506000612e6d82612e5f858c612c4f90919063ffffffff16565b612c4f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e9d8589612f0d90919063ffffffff16565b90506000612eb48689612f0d90919063ffffffff16565b90506000612ecb8789612f0d90919063ffffffff16565b90506000612ef482612ee68587612c4f90919063ffffffff16565b612c4f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612f205760009050612f82565b60008284612f2e9190613aa5565b9050828482612f3d9190613a74565b14612f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f74906137fc565b60405180910390fd5b809150505b92915050565b6000612f9b612f9684613971565b61394c565b90508083825260208201905082856020860282011115612fbe57612fbd613d08565b5b60005b85811015612fee5781612fd48882613068565b845260208401935060208301925050600181019050612fc1565b5050509392505050565b600061300b6130068461399d565b61394c565b9050808382526020820190508285602086028201111561302e5761302d613d08565b5b60005b8581101561305e57816130448882613118565b845260208401935060208301925050600181019050613031565b5050509392505050565b60008135905061307781613fcc565b92915050565b60008151905061308c81613fcc565b92915050565b600082601f8301126130a7576130a6613d03565b5b81356130b7848260208601612f88565b91505092915050565b600082601f8301126130d5576130d4613d03565b5b81356130e5848260208601612ff8565b91505092915050565b6000813590506130fd81613fe3565b92915050565b60008151905061311281613fe3565b92915050565b60008135905061312781613ffa565b92915050565b60008151905061313c81613ffa565b92915050565b60006020828403121561315857613157613d12565b5b600061316684828501613068565b91505092915050565b60006020828403121561318557613184613d12565b5b60006131938482850161307d565b91505092915050565b600080604083850312156131b3576131b2613d12565b5b60006131c185828601613068565b92505060206131d285828601613068565b9150509250929050565b6000806000606084860312156131f5576131f4613d12565b5b600061320386828701613068565b935050602061321486828701613068565b925050604061322586828701613118565b9150509250925092565b6000806040838503121561324657613245613d12565b5b600061325485828601613068565b925050602061326585828601613118565b9150509250929050565b60006020828403121561328557613284613d12565b5b600082013567ffffffffffffffff8111156132a3576132a2613d0d565b5b6132af84828501613092565b91505092915050565b600080604083850312156132cf576132ce613d12565b5b600083013567ffffffffffffffff8111156132ed576132ec613d0d565b5b6132f985828601613092565b925050602083013567ffffffffffffffff81111561331a57613319613d0d565b5b613326858286016130c0565b9150509250929050565b60006020828403121561334657613345613d12565b5b6000613354848285016130ee565b91505092915050565b60006020828403121561337357613372613d12565b5b600061338184828501613103565b91505092915050565b6000602082840312156133a05761339f613d12565b5b60006133ae84828501613118565b91505092915050565b6000806000606084860312156133d0576133cf613d12565b5b60006133de8682870161312d565b93505060206133ef8682870161312d565b92505060406134008682870161312d565b9150509250925092565b60006134168383613422565b60208301905092915050565b61342b81613b33565b82525050565b61343a81613b33565b82525050565b600061344b826139d9565b61345581856139fc565b9350613460836139c9565b8060005b83811015613491578151613478888261340a565b9750613483836139ef565b925050600181019050613464565b5085935050505092915050565b6134a781613b45565b82525050565b6134b681613b88565b82525050565b60006134c7826139e4565b6134d18185613a0d565b93506134e1818560208601613b9a565b6134ea81613d17565b840191505092915050565b6000613502602383613a0d565b915061350d82613d28565b604082019050919050565b6000613525602a83613a0d565b915061353082613d77565b604082019050919050565b6000613548602283613a0d565b915061355382613dc6565b604082019050919050565b600061356b601b83613a0d565b915061357682613e15565b602082019050919050565b600061358e602183613a0d565b915061359982613e3e565b604082019050919050565b60006135b1602083613a0d565b91506135bc82613e8d565b602082019050919050565b60006135d4602983613a0d565b91506135df82613eb6565b604082019050919050565b60006135f7602583613a0d565b915061360282613f05565b604082019050919050565b600061361a602483613a0d565b915061362582613f54565b604082019050919050565b600061363d601783613a0d565b915061364882613fa3565b602082019050919050565b61365c81613b71565b82525050565b61366b81613b7b565b82525050565b60006020820190506136866000830184613431565b92915050565b60006040820190506136a16000830185613431565b6136ae6020830184613431565b9392505050565b60006040820190506136ca6000830185613431565b6136d76020830184613653565b9392505050565b600060c0820190506136f36000830189613431565b6137006020830188613653565b61370d60408301876134ad565b61371a60608301866134ad565b6137276080830185613431565b61373460a0830184613653565b979650505050505050565b6000602082019050613754600083018461349e565b92915050565b6000602082019050818103600083015261377481846134bc565b905092915050565b60006020820190508181036000830152613795816134f5565b9050919050565b600060208201905081810360008301526137b581613518565b9050919050565b600060208201905081810360008301526137d58161353b565b9050919050565b600060208201905081810360008301526137f58161355e565b9050919050565b6000602082019050818103600083015261381581613581565b9050919050565b60006020820190508181036000830152613835816135a4565b9050919050565b60006020820190508181036000830152613855816135c7565b9050919050565b60006020820190508181036000830152613875816135ea565b9050919050565b600060208201905081810360008301526138958161360d565b9050919050565b600060208201905081810360008301526138b581613630565b9050919050565b60006020820190506138d16000830184613653565b92915050565b600060a0820190506138ec6000830188613653565b6138f960208301876134ad565b818103604083015261390b8186613440565b905061391a6060830185613431565b6139276080830184613653565b9695505050505050565b60006020820190506139466000830184613662565b92915050565b6000613956613967565b90506139628282613bcd565b919050565b6000604051905090565b600067ffffffffffffffff82111561398c5761398b613cd4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139b8576139b7613cd4565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a2982613b71565b9150613a3483613b71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6957613a68613c47565b5b828201905092915050565b6000613a7f82613b71565b9150613a8a83613b71565b925082613a9a57613a99613c76565b5b828204905092915050565b6000613ab082613b71565b9150613abb83613b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613af457613af3613c47565b5b828202905092915050565b6000613b0a82613b71565b9150613b1583613b71565b925082821015613b2857613b27613c47565b5b828203905092915050565b6000613b3e82613b51565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b9382613b71565b9050919050565b60005b83811015613bb8578082015181840152602081019050613b9d565b83811115613bc7576000848401525b50505050565b613bd682613d17565b810181811067ffffffffffffffff82111715613bf557613bf4613cd4565b5b80604052505050565b6000613c0982613b71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c3c57613c3b613c47565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613fd581613b33565b8114613fe057600080fd5b50565b613fec81613b45565b8114613ff757600080fd5b50565b61400381613b71565b811461400e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220961eaf09e28271bf46dddff42a4987cae8e988191db2658f7f9f618bb44e151a64736f6c63430008070033
Deployed Bytecode Sourcemap
4894:12134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13213:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6880:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7732:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7157:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12380:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13344:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7901:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12280:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7066:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12714:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14901:195;;;;;;;;;;;;;:::i;:::-;;8222:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12969:232;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7260:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3973:148;;;;;;;;;;;;;:::i;:::-;;3759:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6971:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7406:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11316:853;;;;;;;;;;;;;:::i;:::-;;13470:349;;;;;;;;;;;;;:::i;:::-;;7581:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11199:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15108:194;;;;;;;;;;;;;:::i;:::-;;12181:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13213:119;13281:7;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13308:7:::1;:16;13316:7;13308:16;;;;;;;;;;;;;;;;13301:23;;13213:119:::0;;;:::o;6880:83::-;6917:13;6950:5;;;;;;;;;;;;;;;;;6943:12;;6880:83;:::o;7732:161::-;7807:4;7824:39;7833:12;:10;:12::i;:::-;7847:7;7856:6;7824:8;:39::i;:::-;7881:4;7874:11;;7732:161;;;;:::o;7157:95::-;7210:7;5484:23;7230:14;;7157:95;:::o;12380:322::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12488:6:::1;12483:212;12504:9;:16;12500:1;:20;12483:212;;;12542:11;12559:9;12569:1;12559:12;;;;;;;;:::i;:::-;;;;;;;;12542:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12624:5;12611:7;12619:1;12611:10;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;12587:7;:21;12595:9;12605:1;12595:12;;;;;;;;:::i;:::-;;;;;;;;12587:21;;;;;;;;;;;;;;;:42;;;;12679:4;12644:18;:32;12663:9;12673:1;12663:12;;;;;;;;:::i;:::-;;;;;;;;12644:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12522:3;;;;;:::i;:::-;;;;12483:212;;;;12380:322:::0;;:::o;13344:114::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13444:6:::1;13425:7;:16;13433:7;13425:16;;;;;;;;;;;;;;;:25;;;;13344:114:::0;;:::o;7901:313::-;7999:4;8016:36;8026:6;8034:9;8045:6;8016:9;:36::i;:::-;8063:121;8072:6;8080:12;:10;:12::i;:::-;8094:89;8132:6;8094:89;;;;;;;;;;;;;;;;;:11;:19;8106:6;8094:19;;;;;;;;;;;;;;;:33;8114:12;:10;:12::i;:::-;8094:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8063:8;:121::i;:::-;8202:4;8195:11;;7901:313;;;;;:::o;12280:88::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12355:5:::1;12340:4;:12;12345:6;12340:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12280:88:::0;:::o;7066:83::-;7107:5;5908:1;7125:16;;7066:83;:::o;12714:243::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12799:6:::1;12794:156;12815:9;:16;12811:1;:20;12794:156;;;12870:9;12880:1;12870:12;;;;;;;;:::i;:::-;;;;;;;;12853:11;12865:1;12853:14;;;;;;;;:::i;:::-;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12934:4;12897:18;:34;12916:11;12928:1;12916:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12897:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12833:3;;;;;:::i;:::-;;;;12794:156;;;;12714:243:::0;:::o;14901:195::-;14967:15;;;;;;;;;;;14951:31;;:12;:10;:12::i;:::-;:31;;;14943:40;;;;;;14994:23;15020:24;15038:4;15020:9;:24::i;:::-;14994:50;;15055:33;15072:15;15055:16;:33::i;:::-;14932:164;14901:195::o;8222:103::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8312:5:::1;8294:15;;:23;;;;;;;;;;;;;;;;;;8222:103:::0;:::o;12969:232::-;13027:7;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13046:11:::1;13076:6:::0;13072:101:::1;13092:11;:18;;;;13088:1;:22;13072:101;;;13138:7;:23;13146:11;13158:1;13146:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13138:23;;;;;;;;;;;;;;;;13131:30;;;;;:::i;:::-;;;13112:3;;;;;:::i;:::-;;;;13072:101;;;;13190:3;13183:10;;;12969:232:::0;:::o;7260:138::-;7326:7;7353:37;7373:7;:16;7381:7;7373:16;;;;;;;;;;;;;;;;7353:19;:37::i;:::-;7346:44;;7260:138;;;:::o;3973:148::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4080:1:::1;4043:40;;4064:6;::::0;::::1;;;;;;;;4043:40;;;;;;;;;;;;4111:1;4094:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3973:148::o:0;3759:79::-;3797:7;3824:6;;;;;;;;;;;3817:13;;3759:79;:::o;6971:87::-;7010:13;7043:7;;;;;;;;;;;;;;;;;7036:14;;6971:87;:::o;7406:167::-;7484:4;7501:42;7511:12;:10;:12::i;:::-;7525:9;7536:6;7501:9;:42::i;:::-;7561:4;7554:11;;7406:167;;;;:::o;11316:853::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11380:11:::1;;;;;;;;;;;11379:12;11371:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11429:35;11486:42;11429:100;;11558:16;11540:15;;:34;;;;;;;;;;;;;;;;;;11585:58;11602:4;11617:15;;;;;;;;;;;5484:23;11585:8;:58::i;:::-;11688:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11670:56;;;11735:4;11742:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11670:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11654:13;;:112;;;;;;;;;;;;;;;;;;11777:15;;;;;;;;;;;:31;;;11816:21;11847:4;11853:24;11871:4;11853:9;:24::i;:::-;11878:1;11880::::0;11882:7:::1;:5;:7::i;:::-;11890:15;11777:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11931:4;11917:11;;:18;;;;;;;;;;;;;;;;;;11964:4;11946:15;;:22;;;;;;;;;;;;;;;;;;11994:21;11979:12;:36;;;;12040:4;12026:11;;:18;;;;;;;;;;;;;;;;;;12067:12;12055:9;:24;;;;12097:13;;;;;;;;;;;12090:29;;;12128:15;;;;;;;;;;;12146:14;12090:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11360:809;11316:853::o:0;13470:349::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:1:::1;13521:9;:13;;;;13557:1;13545:9;:13;;;;13573:6;13569:195;13589:11;:18;;;;13585:1;:22;13569:195;;;13628:67;13643:10;13655:11;13667:1;13655:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13671:7;:23;13679:11;13691:1;13679:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13671:23;;;;;;;;;;;;;;;;13628:14;:67::i;:::-;13747:5;13710:18;:34;13729:11;13741:1;13729:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13710:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13609:3;;;;;:::i;:::-;;;;13569:195;;;;13786:1;13774:9;:13;;;;13810:1;13798:9;:13;;;;13470:349::o:0;7581:143::-;7662:7;7689:11;:18;7701:5;7689:18;;;;;;;;;;;;;;;:27;7708:7;7689:27;;;;;;;;;;;;;;;;7682:34;;7581:143;;;;:::o;11199:105::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11291:5:::1;11282:6;:14;;;;:::i;:::-;11267:12;:29;;;;11199:105:::0;:::o;15108:194::-;15174:15;;;;;;;;;;;15158:31;;:12;:10;:12::i;:::-;:31;;;15150:40;;;;;;15201:26;15230:21;15201:50;;15262:32;15275:18;15262:12;:32::i;:::-;15139:163;15108:194::o;12181:87::-;3896:12;:10;:12::i;:::-;3886:22;;:6;;;;;;;;;;:22;;;3878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12256:4:::1;12241;:12;12246:6;12241:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12181:87:::0;:::o;1477:98::-;1530:7;1557:10;1550:17;;1477:98;:::o;8595:335::-;8705:1;8688:19;;:5;:19;;;;8680:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8786:1;8767:21;;:7;:21;;;;8759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8868:6;8838:11;:18;8850:5;8838:18;;;;;;;;;;;;;;;:27;8857:7;8838:27;;;;;;;;;;;;;;;:36;;;;8906:7;8890:32;;8899:5;8890:32;;;8915:6;8890:32;;;;;;:::i;:::-;;;;;;;;8595:335;;;:::o;8938:1588::-;9042:1;9026:18;;:4;:18;;;;9018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9119:1;9105:16;;:2;:16;;;;9097:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9189:1;9180:6;:10;9172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:1;9247:9;:13;;;;9283:1;9271:9;:13;;;;9307:7;:5;:7::i;:::-;9299:15;;:4;:15;;;;:32;;;;;9324:7;:5;:7::i;:::-;9318:13;;:2;:13;;;;9299:32;9295:1179;;;9357:4;:10;9362:4;9357:10;;;;;;;;;;;;;;;;;;;;;;;;;9356:11;:24;;;;;9372:4;:8;9377:2;9372:8;;;;;;;;;;;;;;;;;;;;;;;;;9371:9;9356:24;9348:33;;;;;;9408:13;;;;;;;;;;;9400:21;;:4;:21;;;:55;;;;;9439:15;;;;;;;;;;;9425:30;;:2;:30;;;;9400:55;:83;;;;;9461:18;:22;9480:2;9461:22;;;;;;;;;;;;;;;;;;;;;;;;;9459:24;9400:83;:102;;;;;9487:15;;;;;;;;;;;9400:102;9396:325;;;9570:12;;9560:6;:22;;9552:31;;;;;;9625:15;9610:8;:12;9619:2;9610:12;;;;;;;;;;;;;;;;:30;9602:39;;;;;;9694:10;9675:15;:30;;;;:::i;:::-;9660:8;:12;9669:2;9660:12;;;;;;;;;;;;;;;:45;;;;9396:325;9761:12;9756:1;9744:9;;:13;;;;:::i;:::-;:29;;:54;;;;;9785:13;;;;;;;;;;;9777:21;;:4;:21;;;9744:54;9740:117;;;9820:2;9808:9;:14;;;;9846:1;9834:9;:13;;;;9740:117;9886:13;;;;;;;;;;;9880:19;;:2;:19;;;:55;;;;;9919:15;;;;;;;;;;;9903:32;;:4;:32;;;;9880:55;:85;;;;;9941:18;:24;9960:4;9941:24;;;;;;;;;;;;;;;;;;;;;;;;;9939:26;9880:85;9876:171;;;9998:1;9986:9;:13;;;;10030:1;10018:9;:13;;;;9876:171;10075:28;10106:24;10124:4;10106:9;:24::i;:::-;10075:55;;10150:6;;;;;;;;;;;10149:7;:32;;;;;10168:13;;;;;;;;;;;10160:21;;:4;:21;;;;10149:32;:47;;;;;10185:11;;;;;;;;;;;10149:47;10145:318;;;10217:38;10234:20;10217:16;:38::i;:::-;10274:26;10303:21;10274:50;;10367:1;10346:18;:22;10343:105;;;10393:35;10406:21;10393:12;:35::i;:::-;10343:105;10198:265;10145:318;9333:1141;9295:1179;10488:30;10503:4;10508:2;10511:6;10488:14;:30::i;:::-;8938:1588;;;:::o;2614:190::-;2700:7;2733:1;2728;:6;;2736:12;2720:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2760:9;2776:1;2772;:5;;;;:::i;:::-;2760:17;;2795:1;2788:8;;;2614:190;;;;;:::o;10534:483::-;6290:4;6281:6;;:13;;;;;;;;;;;;;;;;;;10612:21:::1;10650:1;10636:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10612:40;;10681:4;10663;10668:1;10663:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10707:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10697:4;10702:1;10697:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10740:62;10757:4;10772:15;;;;;;;;;;;10790:11;10740:8;:62::i;:::-;10813:15;;;;;;;;;;;:66;;;10894:11;10920:1;10936:4;10963;10983:15;10813:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10601:416;6326:5:::0;6317:6;;:14;;;;;;;;;;;;;;;;;;10534:483;:::o;8333:254::-;8400:7;8439;;8428;:18;;8420:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8504:19;8527:10;:8;:10::i;:::-;8504:33;;8555:24;8567:11;8555:7;:11;;:24;;;;:::i;:::-;8548:31;;;8333:254;;;:::o;13835:146::-;13929:44;13947:6;13955:9;13966:6;13929:17;:44::i;:::-;13835:146;;;:::o;11033:154::-;11090:15;;;;;;;;;;;:24;;:39;11115:13;11126:1;11115:6;:10;;:13;;;;:::i;:::-;11090:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11140:15;;;;;;;;;;;:24;;:39;11165:13;11176:1;11165:6;:10;;:13;;;;:::i;:::-;11140:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11033:154;:::o;16592:163::-;16633:7;16654:15;16671;16690:19;:17;:19::i;:::-;16653:56;;;;16727:20;16739:7;16727;:11;;:20;;;;:::i;:::-;16720:27;;;;16592:163;:::o;3066:132::-;3124:7;3151:39;3155:1;3158;3151:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3144:46;;3066:132;;;;:::o;13989:488::-;14088:15;14105:23;14130:12;14144:23;14169:12;14183:13;14200:19;14211:7;14200:10;:19::i;:::-;14087:132;;;;;;;;;;;;14248:28;14268:7;14248;:15;14256:6;14248:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14230:7;:15;14238:6;14230:15;;;;;;;;;;;;;;;:46;;;;14308:39;14331:15;14308:7;:18;14316:9;14308:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14287:7;:18;14295:9;14287:18;;;;;;;;;;;;;;;:60;;;;14359:16;14369:5;14359:9;:16::i;:::-;14386:23;14398:4;14404;14386:11;:23::i;:::-;14442:9;14425:44;;14434:6;14425:44;;;14453:15;14425:44;;;;;;:::i;:::-;;;;;;;;14076:401;;;;;;13989:488;;;:::o;16763:262::-;16813:7;16822;16842:15;16860:7;;16842:25;;16878:15;5484:23;16878:25;;16934:20;5484:23;16934:7;;:11;;:20;;;;:::i;:::-;16924:7;:30;16920:61;;;16964:7;;5484:23;16956:25;;;;;;;;16920:61;17000:7;17009;16992:25;;;;;;16763:262;;;:::o;3206:189::-;3292:7;3324:1;3320;:5;3327:12;3312:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3351:9;3367:1;3363;:5;;;;:::i;:::-;3351:17;;3386:1;3379:8;;;3206:189;;;;;:::o;15316:471::-;15375:7;15384;15393;15402;15411;15420;15441:23;15466:12;15480:13;15497:42;15509:7;15518:9;;15529;;15497:11;:42::i;:::-;15440:99;;;;;;15550:19;15573:10;:8;:10::i;:::-;15550:33;;15595:15;15612:23;15637:12;15653:46;15665:7;15674:4;15680:5;15687:11;15653;:46::i;:::-;15594:105;;;;;;15718:7;15727:15;15744:4;15750:15;15767:4;15773:5;15710:69;;;;;;;;;;;;;;;;;;;15316:471;;;;;;;:::o;2470:136::-;2528:7;2555:43;2559:1;2562;2555:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2548:50;;2470:136;;;;:::o;2283:179::-;2341:7;2361:9;2377:1;2373;:5;;;;:::i;:::-;2361:17;;2402:1;2397;:6;;2389:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2453:1;2446:8;;;2283:179;;;;:::o;14485:212::-;14538:19;14561:10;:8;:10::i;:::-;14538:33;;14582:13;14598:22;14608:11;14598:5;:9;;:22;;;;:::i;:::-;14582:38;;14656:33;14683:5;14656:7;:22;14672:4;14656:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14631:7;:22;14647:4;14631:22;;;;;;;;;;;;;;;:58;;;;14527:170;;14485:212;:::o;14705:147::-;14783:17;14795:4;14783:7;;:11;;:17;;;;:::i;:::-;14773:7;:27;;;;14824:20;14839:4;14824:10;;:14;;:20;;;;:::i;:::-;14811:10;:33;;;;14705:147;;:::o;15795:351::-;15888:7;15897;15906;15926:12;15941:28;15965:3;15941:19;15953:6;15941:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15926:43;;15980:13;15996:29;16021:3;15996:20;16008:7;15996;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15980:45;;16036:23;16062:28;16084:5;16062:17;16074:4;16062:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16036:54;;16109:15;16126:4;16132:5;16101:37;;;;;;;;;15795:351;;;;;;;:::o;16154:409::-;16264:7;16273;16282;16302:15;16320:24;16332:11;16320:7;:11;;:24;;;;:::i;:::-;16302:42;;16355:12;16370:21;16379:11;16370:4;:8;;:21;;;;:::i;:::-;16355:36;;16402:13;16418:22;16428:11;16418:5;:9;;:22;;;;:::i;:::-;16402:38;;16451:23;16477:28;16499:5;16477:17;16489:4;16477:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16451:54;;16524:7;16533:15;16550:4;16516:39;;;;;;;;;;16154:409;;;;;;;;:::o;2812:246::-;2870:7;2899:1;2894;:6;2890:47;;;2924:1;2917:8;;;;2890:47;2947:9;2963:1;2959;:5;;;;:::i;:::-;2947:17;;2992:1;2987;2983;:5;;;;:::i;:::-;:10;2975:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3049:1;3042:8;;;2812:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:139::-;1543:5;1581:6;1568:20;1559:29;;1597:33;1624:5;1597:33;:::i;:::-;1497:139;;;;:::o;1642:143::-;1699:5;1730:6;1724:13;1715:22;;1746:33;1773:5;1746:33;:::i;:::-;1642:143;;;;:::o;1808:370::-;1879:5;1928:3;1921:4;1913:6;1909:17;1905:27;1895:122;;1936:79;;:::i;:::-;1895:122;2053:6;2040:20;2078:94;2168:3;2160:6;2153:4;2145:6;2141:17;2078:94;:::i;:::-;2069:103;;1885:293;1808:370;;;;:::o;2201:::-;2272:5;2321:3;2314:4;2306:6;2302:17;2298:27;2288:122;;2329:79;;:::i;:::-;2288:122;2446:6;2433:20;2471:94;2561:3;2553:6;2546:4;2538:6;2534:17;2471:94;:::i;:::-;2462:103;;2278:293;2201:370;;;;:::o;2577:133::-;2620:5;2658:6;2645:20;2636:29;;2674:30;2698:5;2674:30;:::i;:::-;2577:133;;;;:::o;2716:137::-;2770:5;2801:6;2795:13;2786:22;;2817:30;2841:5;2817:30;:::i;:::-;2716:137;;;;:::o;2859:139::-;2905:5;2943:6;2930:20;2921:29;;2959:33;2986:5;2959:33;:::i;:::-;2859:139;;;;:::o;3004:143::-;3061:5;3092:6;3086:13;3077:22;;3108:33;3135:5;3108:33;:::i;:::-;3004:143;;;;:::o;3153:329::-;3212:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:119;;;3267:79;;:::i;:::-;3229:119;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3153:329;;;;:::o;3488:351::-;3558:6;3607:2;3595:9;3586:7;3582:23;3578:32;3575:119;;;3613:79;;:::i;:::-;3575:119;3733:1;3758:64;3814:7;3805:6;3794:9;3790:22;3758:64;:::i;:::-;3748:74;;3704:128;3488:351;;;;:::o;3845:474::-;3913:6;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;3845:474;;;;;:::o;4325:619::-;4402:6;4410;4418;4467:2;4455:9;4446:7;4442:23;4438:32;4435:119;;;4473:79;;:::i;:::-;4435:119;4593:1;4618:53;4663:7;4654:6;4643:9;4639:22;4618:53;:::i;:::-;4608:63;;4564:117;4720:2;4746:53;4791:7;4782:6;4771:9;4767:22;4746:53;:::i;:::-;4736:63;;4691:118;4848:2;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4819:118;4325:619;;;;;:::o;4950:474::-;5018:6;5026;5075:2;5063:9;5054:7;5050:23;5046:32;5043:119;;;5081:79;;:::i;:::-;5043:119;5201:1;5226:53;5271:7;5262:6;5251:9;5247:22;5226:53;:::i;:::-;5216:63;;5172:117;5328:2;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5299:118;4950:474;;;;;:::o;5430:539::-;5514:6;5563:2;5551:9;5542:7;5538:23;5534:32;5531:119;;;5569:79;;:::i;:::-;5531:119;5717:1;5706:9;5702:17;5689:31;5747:18;5739:6;5736:30;5733:117;;;5769:79;;:::i;:::-;5733:117;5874:78;5944:7;5935:6;5924:9;5920:22;5874:78;:::i;:::-;5864:88;;5660:302;5430:539;;;;:::o;5975:894::-;6093:6;6101;6150:2;6138:9;6129:7;6125:23;6121:32;6118:119;;;6156:79;;:::i;:::-;6118:119;6304:1;6293:9;6289:17;6276:31;6334:18;6326:6;6323:30;6320:117;;;6356:79;;:::i;:::-;6320:117;6461:78;6531:7;6522:6;6511:9;6507:22;6461:78;:::i;:::-;6451:88;;6247:302;6616:2;6605:9;6601:18;6588:32;6647:18;6639:6;6636:30;6633:117;;;6669:79;;:::i;:::-;6633:117;6774:78;6844:7;6835:6;6824:9;6820:22;6774:78;:::i;:::-;6764:88;;6559:303;5975:894;;;;;:::o;6875:323::-;6931:6;6980:2;6968:9;6959:7;6955:23;6951:32;6948:119;;;6986:79;;:::i;:::-;6948:119;7106:1;7131:50;7173:7;7164:6;7153:9;7149:22;7131:50;:::i;:::-;7121:60;;7077:114;6875:323;;;;:::o;7204:345::-;7271:6;7320:2;7308:9;7299:7;7295:23;7291:32;7288:119;;;7326:79;;:::i;:::-;7288:119;7446:1;7471:61;7524:7;7515:6;7504:9;7500:22;7471:61;:::i;:::-;7461:71;;7417:125;7204:345;;;;:::o;7555:329::-;7614:6;7663:2;7651:9;7642:7;7638:23;7634:32;7631:119;;;7669:79;;:::i;:::-;7631:119;7789:1;7814:53;7859:7;7850:6;7839:9;7835:22;7814:53;:::i;:::-;7804:63;;7760:117;7555:329;;;;:::o;7890:663::-;7978:6;7986;7994;8043:2;8031:9;8022:7;8018:23;8014:32;8011:119;;;8049:79;;:::i;:::-;8011:119;8169:1;8194:64;8250:7;8241:6;8230:9;8226:22;8194:64;:::i;:::-;8184:74;;8140:128;8307:2;8333:64;8389:7;8380:6;8369:9;8365:22;8333:64;:::i;:::-;8323:74;;8278:129;8446:2;8472:64;8528:7;8519:6;8508:9;8504:22;8472:64;:::i;:::-;8462:74;;8417:129;7890:663;;;;;:::o;8559:179::-;8628:10;8649:46;8691:3;8683:6;8649:46;:::i;:::-;8727:4;8722:3;8718:14;8704:28;;8559:179;;;;:::o;8744:108::-;8821:24;8839:5;8821:24;:::i;:::-;8816:3;8809:37;8744:108;;:::o;8858:118::-;8945:24;8963:5;8945:24;:::i;:::-;8940:3;8933:37;8858:118;;:::o;9012:732::-;9131:3;9160:54;9208:5;9160:54;:::i;:::-;9230:86;9309:6;9304:3;9230:86;:::i;:::-;9223:93;;9340:56;9390:5;9340:56;:::i;:::-;9419:7;9450:1;9435:284;9460:6;9457:1;9454:13;9435:284;;;9536:6;9530:13;9563:63;9622:3;9607:13;9563:63;:::i;:::-;9556:70;;9649:60;9702:6;9649:60;:::i;:::-;9639:70;;9495:224;9482:1;9479;9475:9;9470:14;;9435:284;;;9439:14;9735:3;9728:10;;9136:608;;;9012:732;;;;:::o;9750:109::-;9831:21;9846:5;9831:21;:::i;:::-;9826:3;9819:34;9750:109;;:::o;9865:147::-;9960:45;9999:5;9960:45;:::i;:::-;9955:3;9948:58;9865:147;;:::o;10018:364::-;10106:3;10134:39;10167:5;10134:39;:::i;:::-;10189:71;10253:6;10248:3;10189:71;:::i;:::-;10182:78;;10269:52;10314:6;10309:3;10302:4;10295:5;10291:16;10269:52;:::i;:::-;10346:29;10368:6;10346:29;:::i;:::-;10341:3;10337:39;10330:46;;10110:272;10018:364;;;;:::o;10388:366::-;10530:3;10551:67;10615:2;10610:3;10551:67;:::i;:::-;10544:74;;10627:93;10716:3;10627:93;:::i;:::-;10745:2;10740:3;10736:12;10729:19;;10388:366;;;:::o;10760:::-;10902:3;10923:67;10987:2;10982:3;10923:67;:::i;:::-;10916:74;;10999:93;11088:3;10999:93;:::i;:::-;11117:2;11112:3;11108:12;11101:19;;10760:366;;;:::o;11132:::-;11274:3;11295:67;11359:2;11354:3;11295:67;:::i;:::-;11288:74;;11371:93;11460:3;11371:93;:::i;:::-;11489:2;11484:3;11480:12;11473:19;;11132:366;;;:::o;11504:::-;11646:3;11667:67;11731:2;11726:3;11667:67;:::i;:::-;11660:74;;11743:93;11832:3;11743:93;:::i;:::-;11861:2;11856:3;11852:12;11845:19;;11504:366;;;:::o;11876:::-;12018:3;12039:67;12103:2;12098:3;12039:67;:::i;:::-;12032:74;;12115:93;12204:3;12115:93;:::i;:::-;12233:2;12228:3;12224:12;12217:19;;11876:366;;;:::o;12248:::-;12390:3;12411:67;12475:2;12470:3;12411:67;:::i;:::-;12404:74;;12487:93;12576:3;12487:93;:::i;:::-;12605:2;12600:3;12596:12;12589:19;;12248:366;;;:::o;12620:::-;12762:3;12783:67;12847:2;12842:3;12783:67;:::i;:::-;12776:74;;12859:93;12948:3;12859:93;:::i;:::-;12977:2;12972:3;12968:12;12961:19;;12620:366;;;:::o;12992:::-;13134:3;13155:67;13219:2;13214:3;13155:67;:::i;:::-;13148:74;;13231:93;13320:3;13231:93;:::i;:::-;13349:2;13344:3;13340:12;13333:19;;12992:366;;;:::o;13364:::-;13506:3;13527:67;13591:2;13586:3;13527:67;:::i;:::-;13520:74;;13603:93;13692:3;13603:93;:::i;:::-;13721:2;13716:3;13712:12;13705:19;;13364:366;;;:::o;13736:::-;13878:3;13899:67;13963:2;13958:3;13899:67;:::i;:::-;13892:74;;13975:93;14064:3;13975:93;:::i;:::-;14093:2;14088:3;14084:12;14077:19;;13736:366;;;:::o;14108:118::-;14195:24;14213:5;14195:24;:::i;:::-;14190:3;14183:37;14108:118;;:::o;14232:112::-;14315:22;14331:5;14315:22;:::i;:::-;14310:3;14303:35;14232:112;;:::o;14350:222::-;14443:4;14481:2;14470:9;14466:18;14458:26;;14494:71;14562:1;14551:9;14547:17;14538:6;14494:71;:::i;:::-;14350:222;;;;:::o;14578:332::-;14699:4;14737:2;14726:9;14722:18;14714:26;;14750:71;14818:1;14807:9;14803:17;14794:6;14750:71;:::i;:::-;14831:72;14899:2;14888:9;14884:18;14875:6;14831:72;:::i;:::-;14578:332;;;;;:::o;14916:::-;15037:4;15075:2;15064:9;15060:18;15052:26;;15088:71;15156:1;15145:9;15141:17;15132:6;15088:71;:::i;:::-;15169:72;15237:2;15226:9;15222:18;15213:6;15169:72;:::i;:::-;14916:332;;;;;:::o;15254:807::-;15503:4;15541:3;15530:9;15526:19;15518:27;;15555:71;15623:1;15612:9;15608:17;15599:6;15555:71;:::i;:::-;15636:72;15704:2;15693:9;15689:18;15680:6;15636:72;:::i;:::-;15718:80;15794:2;15783:9;15779:18;15770:6;15718:80;:::i;:::-;15808;15884:2;15873:9;15869:18;15860:6;15808:80;:::i;:::-;15898:73;15966:3;15955:9;15951:19;15942:6;15898:73;:::i;:::-;15981;16049:3;16038:9;16034:19;16025:6;15981:73;:::i;:::-;15254:807;;;;;;;;;:::o;16067:210::-;16154:4;16192:2;16181:9;16177:18;16169:26;;16205:65;16267:1;16256:9;16252:17;16243:6;16205:65;:::i;:::-;16067:210;;;;:::o;16283:313::-;16396:4;16434:2;16423:9;16419:18;16411:26;;16483:9;16477:4;16473:20;16469:1;16458:9;16454:17;16447:47;16511:78;16584:4;16575:6;16511:78;:::i;:::-;16503:86;;16283:313;;;;:::o;16602:419::-;16768:4;16806:2;16795:9;16791:18;16783:26;;16855:9;16849:4;16845:20;16841:1;16830:9;16826:17;16819:47;16883:131;17009:4;16883:131;:::i;:::-;16875:139;;16602:419;;;:::o;17027:::-;17193:4;17231:2;17220:9;17216:18;17208:26;;17280:9;17274:4;17270:20;17266:1;17255:9;17251:17;17244:47;17308:131;17434:4;17308:131;:::i;:::-;17300:139;;17027:419;;;:::o;17452:::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:::-;18043:4;18081:2;18070:9;18066:18;18058:26;;18130:9;18124:4;18120:20;18116:1;18105:9;18101:17;18094:47;18158:131;18284:4;18158:131;:::i;:::-;18150:139;;17877:419;;;:::o;18302:::-;18468:4;18506:2;18495:9;18491:18;18483:26;;18555:9;18549:4;18545:20;18541:1;18530:9;18526:17;18519:47;18583:131;18709:4;18583:131;:::i;:::-;18575:139;;18302:419;;;:::o;18727:::-;18893:4;18931:2;18920:9;18916:18;18908:26;;18980:9;18974:4;18970:20;18966:1;18955:9;18951:17;18944:47;19008:131;19134:4;19008:131;:::i;:::-;19000:139;;18727:419;;;:::o;19152:::-;19318:4;19356:2;19345:9;19341:18;19333:26;;19405:9;19399:4;19395:20;19391:1;19380:9;19376:17;19369:47;19433:131;19559:4;19433:131;:::i;:::-;19425:139;;19152:419;;;:::o;19577:::-;19743:4;19781:2;19770:9;19766:18;19758:26;;19830:9;19824:4;19820:20;19816:1;19805:9;19801:17;19794:47;19858:131;19984:4;19858:131;:::i;:::-;19850:139;;19577:419;;;:::o;20002:::-;20168:4;20206:2;20195:9;20191:18;20183:26;;20255:9;20249:4;20245:20;20241:1;20230:9;20226:17;20219:47;20283:131;20409:4;20283:131;:::i;:::-;20275:139;;20002:419;;;:::o;20427:::-;20593:4;20631:2;20620:9;20616:18;20608:26;;20680:9;20674:4;20670:20;20666:1;20655:9;20651:17;20644:47;20708:131;20834:4;20708:131;:::i;:::-;20700:139;;20427:419;;;:::o;20852:222::-;20945:4;20983:2;20972:9;20968:18;20960:26;;20996:71;21064:1;21053:9;21049:17;21040:6;20996:71;:::i;:::-;20852:222;;;;:::o;21080:831::-;21343:4;21381:3;21370:9;21366:19;21358:27;;21395:71;21463:1;21452:9;21448:17;21439:6;21395:71;:::i;:::-;21476:80;21552:2;21541:9;21537:18;21528:6;21476:80;:::i;:::-;21603:9;21597:4;21593:20;21588:2;21577:9;21573:18;21566:48;21631:108;21734:4;21725:6;21631:108;:::i;:::-;21623:116;;21749:72;21817:2;21806:9;21802:18;21793:6;21749:72;:::i;:::-;21831:73;21899:3;21888:9;21884:19;21875:6;21831:73;:::i;:::-;21080:831;;;;;;;;:::o;21917:214::-;22006:4;22044:2;22033:9;22029:18;22021:26;;22057:67;22121:1;22110:9;22106:17;22097:6;22057:67;:::i;:::-;21917:214;;;;:::o;22137:129::-;22171:6;22198:20;;:::i;:::-;22188:30;;22227:33;22255:4;22247:6;22227:33;:::i;:::-;22137:129;;;:::o;22272:75::-;22305:6;22338:2;22332:9;22322:19;;22272:75;:::o;22353:311::-;22430:4;22520:18;22512:6;22509:30;22506:56;;;22542:18;;:::i;:::-;22506:56;22592:4;22584:6;22580:17;22572:25;;22652:4;22646;22642:15;22634:23;;22353:311;;;:::o;22670:::-;22747:4;22837:18;22829:6;22826:30;22823:56;;;22859:18;;:::i;:::-;22823:56;22909:4;22901:6;22897:17;22889:25;;22969:4;22963;22959:15;22951:23;;22670:311;;;:::o;22987:132::-;23054:4;23077:3;23069:11;;23107:4;23102:3;23098:14;23090:22;;22987:132;;;:::o;23125:114::-;23192:6;23226:5;23220:12;23210:22;;23125:114;;;:::o;23245:99::-;23297:6;23331:5;23325:12;23315:22;;23245:99;;;:::o;23350:113::-;23420:4;23452;23447:3;23443:14;23435:22;;23350:113;;;:::o;23469:184::-;23568:11;23602:6;23597:3;23590:19;23642:4;23637:3;23633:14;23618:29;;23469:184;;;;:::o;23659:169::-;23743:11;23777:6;23772:3;23765:19;23817:4;23812:3;23808:14;23793:29;;23659:169;;;;:::o;23834:305::-;23874:3;23893:20;23911:1;23893:20;:::i;:::-;23888:25;;23927:20;23945:1;23927:20;:::i;:::-;23922:25;;24081:1;24013:66;24009:74;24006:1;24003:81;24000:107;;;24087:18;;:::i;:::-;24000:107;24131:1;24128;24124:9;24117:16;;23834:305;;;;:::o;24145:185::-;24185:1;24202:20;24220:1;24202:20;:::i;:::-;24197:25;;24236:20;24254:1;24236:20;:::i;:::-;24231:25;;24275:1;24265:35;;24280:18;;:::i;:::-;24265:35;24322:1;24319;24315:9;24310:14;;24145:185;;;;:::o;24336:348::-;24376:7;24399:20;24417:1;24399:20;:::i;:::-;24394:25;;24433:20;24451:1;24433:20;:::i;:::-;24428:25;;24621:1;24553:66;24549:74;24546:1;24543:81;24538:1;24531:9;24524:17;24520:105;24517:131;;;24628:18;;:::i;:::-;24517:131;24676:1;24673;24669:9;24658:20;;24336:348;;;;:::o;24690:191::-;24730:4;24750:20;24768:1;24750:20;:::i;:::-;24745:25;;24784:20;24802:1;24784:20;:::i;:::-;24779:25;;24823:1;24820;24817:8;24814:34;;;24828:18;;:::i;:::-;24814:34;24873:1;24870;24866:9;24858:17;;24690:191;;;;:::o;24887:96::-;24924:7;24953:24;24971:5;24953:24;:::i;:::-;24942:35;;24887:96;;;:::o;24989:90::-;25023:7;25066:5;25059:13;25052:21;25041:32;;24989:90;;;:::o;25085:126::-;25122:7;25162:42;25155:5;25151:54;25140:65;;25085:126;;;:::o;25217:77::-;25254:7;25283:5;25272:16;;25217:77;;;:::o;25300:86::-;25335:7;25375:4;25368:5;25364:16;25353:27;;25300:86;;;:::o;25392:121::-;25450:9;25483:24;25501:5;25483:24;:::i;:::-;25470:37;;25392:121;;;:::o;25519:307::-;25587:1;25597:113;25611:6;25608:1;25605:13;25597:113;;;25696:1;25691:3;25687:11;25681:18;25677:1;25672:3;25668:11;25661:39;25633:2;25630:1;25626:10;25621:15;;25597:113;;;25728:6;25725:1;25722:13;25719:101;;;25808:1;25799:6;25794:3;25790:16;25783:27;25719:101;25568:258;25519:307;;;:::o;25832:281::-;25915:27;25937:4;25915:27;:::i;:::-;25907:6;25903:40;26045:6;26033:10;26030:22;26009:18;25997:10;25994:34;25991:62;25988:88;;;26056:18;;:::i;:::-;25988:88;26096:10;26092:2;26085:22;25875:238;25832:281;;:::o;26119:233::-;26158:3;26181:24;26199:5;26181:24;:::i;:::-;26172:33;;26227:66;26220:5;26217:77;26214:103;;;26297:18;;:::i;:::-;26214:103;26344:1;26337:5;26333:13;26326:20;;26119:233;;;:::o;26358:180::-;26406:77;26403:1;26396:88;26503:4;26500:1;26493:15;26527:4;26524:1;26517:15;26544:180;26592:77;26589:1;26582:88;26689:4;26686:1;26679:15;26713:4;26710:1;26703:15;26730:180;26778:77;26775:1;26768:88;26875:4;26872:1;26865:15;26899:4;26896:1;26889:15;26916:180;26964:77;26961:1;26954:88;27061:4;27058:1;27051:15;27085:4;27082:1;27075:15;27102:117;27211:1;27208;27201:12;27225:117;27334:1;27331;27324:12;27348:117;27457:1;27454;27447:12;27471:117;27580:1;27577;27570:12;27594:102;27635:6;27686:2;27682:7;27677:2;27670:5;27666:14;27662:28;27652:38;;27594:102;;;:::o;27702:222::-;27842:34;27838:1;27830:6;27826:14;27819:58;27911:5;27906:2;27898:6;27894:15;27887:30;27702:222;:::o;27930:229::-;28070:34;28066:1;28058:6;28054:14;28047:58;28139:12;28134:2;28126:6;28122:15;28115:37;27930:229;:::o;28165:221::-;28305:34;28301:1;28293:6;28289:14;28282:58;28374:4;28369:2;28361:6;28357:15;28350:29;28165:221;:::o;28392:177::-;28532:29;28528:1;28520:6;28516:14;28509:53;28392:177;:::o;28575:220::-;28715:34;28711:1;28703:6;28699:14;28692:58;28784:3;28779:2;28771:6;28767:15;28760:28;28575:220;:::o;28801:182::-;28941:34;28937:1;28929:6;28925:14;28918:58;28801:182;:::o;28989:228::-;29129:34;29125:1;29117:6;29113:14;29106:58;29198:11;29193:2;29185:6;29181:15;29174:36;28989:228;:::o;29223:224::-;29363:34;29359:1;29351:6;29347:14;29340:58;29432:7;29427:2;29419:6;29415:15;29408:32;29223:224;:::o;29453:223::-;29593:34;29589:1;29581:6;29577:14;29570:58;29662:6;29657:2;29649:6;29645:15;29638:31;29453:223;:::o;29682:173::-;29822:25;29818:1;29810:6;29806:14;29799:49;29682:173;:::o;29861:122::-;29934:24;29952:5;29934:24;:::i;:::-;29927:5;29924:35;29914:63;;29973:1;29970;29963:12;29914:63;29861:122;:::o;29989:116::-;30059:21;30074:5;30059:21;:::i;:::-;30052:5;30049:32;30039:60;;30095:1;30092;30085:12;30039:60;29989:116;:::o;30111:122::-;30184:24;30202:5;30184:24;:::i;:::-;30177:5;30174:35;30164:63;;30223:1;30220;30213:12;30164:63;30111:122;:::o
Swarm Source
ipfs://961eaf09e28271bf46dddff42a4987cae8e988191db2658f7f9f618bb44e151a
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.