ERC-20
Website Down
Overview
Max Total Supply
5,000,000,000 IT
Holders
796 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
668,322.151276217 ITValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
InfinityToken
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-05 */ /* * INFINITY TOKEN * Telegram:https://t.me/infinitytokenio * Website:https://www.infinitytoken.io/ * Withdraw Dividends at https://app.fairtokenproject.com * Using FTPEthReflect - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH * Using FTPAntiBot - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically. - Learn more at https://antibot.fairtokenproject.com */ // SPDX-License-Identifier: MIT 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 m_Owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); m_Owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return m_Owner; } function transferOwnership(address _address) public virtual onlyOwner { emit OwnershipTransferred(m_Owner, _address); m_Owner = _address; } modifier onlyOwner() { require(_msgSender() == m_Owner, "Ownable: caller is not the owner"); _; } } contract Taxable is Ownable { using SafeMath for uint256; FTPExternal External; address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD); address payable private m_DevAddress; uint256 private m_DevAlloc = 1000; uint256[] m_TaxAlloc; address payable[] m_TaxAddresses; mapping (address => uint256) private m_TaxIdx; uint256 public m_TotalAlloc; function initTax() internal virtual { External = FTPExternal(m_ExternalServiceAddress); m_DevAddress = payable(address(External)); m_TaxAlloc = new uint24[](0); m_TaxAddresses = new address payable[](0); m_TaxAlloc.push(0); m_TaxAddresses.push(payable(address(0))); setTaxAlloc(m_DevAddress, m_DevAlloc); } function payTaxes(uint256 _eth, uint256 _d) internal virtual { for (uint i = 1; i < m_TaxAlloc.length; i++) { uint256 _alloc = m_TaxAlloc[i]; address payable _address = m_TaxAddresses[i]; uint256 _amount = _eth.mul(_alloc).div(_d); if (_amount > 1){ _address.transfer(_amount); if(_address == m_DevAddress) External.deposit(_amount); } } } function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() { uint _idx = m_TaxIdx[_address]; if (_idx == 0) { require(m_TotalAlloc.add(_alloc) <= 10500); m_TaxAlloc.push(_alloc); m_TaxAddresses.push(_address); m_TaxIdx[_address] = m_TaxAlloc.length - 1; m_TotalAlloc = m_TotalAlloc.add(_alloc); } else { // update alloc for this address uint256 _priorAlloc = m_TaxAlloc[_idx]; require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500); m_TaxAlloc[_idx] = _alloc; m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc); } } function totalTaxAlloc() internal virtual view returns (uint256) { return m_TotalAlloc; } function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) { uint _idx = m_TaxIdx[_address]; return m_TaxAlloc[_idx]; } function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() { setTaxAlloc(m_DevAddress, 0); m_DevAddress = _address; m_DevAlloc = _alloc; setTaxAlloc(m_DevAddress, m_DevAlloc); } } 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); } interface FTPAntiBot { function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool); function registerBlock(address _recipient, address _sender, address _origin) external; } interface FTPEthReflect { function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external; function getAlloc() external view returns (uint256); function trackSell(address _holder, uint256 _newEth) external; function trackPurchase(address _holder) external; } interface FTPExternal { function owner() external returns(address); function deposit(uint256 _amount) external; } contract InfinityToken is Context, IERC20, Taxable { using SafeMath for uint256; // TOKEN uint256 private constant TOTAL_SUPPLY = 5000000000 * 10**9; string private m_Name = "Infinity Token"; string private m_Symbol = "IT"; uint8 private m_Decimals = 9; // EXCHANGES address private m_UniswapV2Pair; IUniswapV2Router02 private m_UniswapV2Router; // TRANSACTIONS uint256 private m_TxLimit = TOTAL_SUPPLY.div(666); uint256 private m_WalletLimit = TOTAL_SUPPLY; bool private m_Liquidity = false; event SetTxLimit(uint TxLimit); // ETH REFLECT FTPEthReflect private EthReflect; address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB); uint256 m_EthReflectAlloc; uint256 m_EthReflectAmount; // ANTIBOT FTPAntiBot private AntiBot; address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3; uint256 private m_BanCount = 0; // MISC address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00; mapping (address => bool) private m_Blacklist; mapping (address => bool) private m_ExcludedAddresses; mapping (address => uint256) private m_Balances; mapping (address => mapping (address => uint256)) private m_Allowances; uint256 private m_LastEthBal = 0; uint256 private m_Launched = 1753633194; bool private m_IsSwap = false; uint256 private pMax = 100000; // max alloc percentage modifier lockTheSwap { m_IsSwap = true; _; m_IsSwap = false; } modifier onlyDev() { require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized"); _; } receive() external payable {} constructor () { EthReflect = FTPEthReflect(m_EthReflectSvcAddress); AntiBot = FTPAntiBot(m_AntibotSvcAddress); initTax(); m_Balances[address(this)] = TOTAL_SUPPLY; m_ExcludedAddresses[owner()] = true; m_ExcludedAddresses[address(this)] = true; emit Transfer(address(0), address(this), TOTAL_SUPPLY); } function name() public view returns (string memory) { return m_Name; } function symbol() public view returns (string memory) { return m_Symbol; } function decimals() public view returns (uint8) { return m_Decimals; } function totalSupply() public pure override returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address _account) public view override returns (uint256) { return m_Balances[_account]; } function transfer(address _recipient, uint256 _amount) public override returns (bool) { _transfer(_msgSender(), _recipient, _amount); return true; } function allowance(address _owner, address _spender) public view override returns (uint256) { return m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance")); return true; } function _readyToTax(address _sender) private view returns (bool) { return !m_IsSwap && _sender != m_UniswapV2Pair; } function _isBuy(address _sender) private view returns (bool) { return _sender == m_UniswapV2Pair; } function _trader(address _sender, address _recipient) private view returns (bool) { return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]); } function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair; } function _txRestricted(address _sender, address _recipient) private view returns (bool) { return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient]; } function _walletCapped(address _recipient) private view returns (bool) { return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router); } function _checkTX() private view returns (uint256){ if(block.timestamp <= m_Launched.add(15 minutes)) return TOTAL_SUPPLY.div(666); else return TOTAL_SUPPLY; } 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"); m_Allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _transfer(address _sender, address _recipient, uint256 _amount) private { require(_sender != address(0), "ERC20: transfer from the zero address"); require(_recipient != address(0), "ERC20: transfer to the zero address"); require(_amount > 0, "Transfer amount must be greater than zero"); require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]); if(_isExchangeTransfer(_sender, _recipient) && block.timestamp >= m_Launched) { require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop"); AntiBot.registerBlock(_sender, _recipient, tx.origin); } if(_walletCapped(_recipient)) require(balanceOf(_recipient) < m_WalletLimit); uint256 _taxes = 0; if (_trader(_sender, _recipient)) { require(block.timestamp >= m_Launched); if (_txRestricted(_sender, _recipient)) require(_amount <= _checkTX()); _taxes = _getTaxes(_sender, _recipient, _amount); _tax(_sender); } _updateBalances(_sender, _recipient, _amount, _taxes); _trackEthReflection(_sender, _recipient); } function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private { uint256 _netAmount = _amount.sub(_taxes); m_Balances[_sender] = m_Balances[_sender].sub(_amount); m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount); m_Balances[address(this)] = m_Balances[address(this)].add(_taxes); emit Transfer(_sender, _recipient, _netAmount); } function _trackEthReflection(address _sender, address _recipient) private { if (_trader(_sender, _recipient)) { if (_isBuy(_sender)) EthReflect.trackPurchase(_recipient); else if (m_EthReflectAmount > 0) { EthReflect.trackSell(_sender, m_EthReflectAmount); m_EthReflectAmount = 0; } } } function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) { uint256 _ret = 0; if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) { return _ret; } _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc())); m_EthReflectAlloc = EthReflect.getAlloc(); _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax)); return _ret; } function _tax(address _sender) private { if (_readyToTax(_sender)) { uint256 _tokenBalance = balanceOf(address(this)); _swapTokensForETH(_tokenBalance); _disperseEth(); } } function _swapTokensForETH(uint256 _amount) private lockTheSwap { address[] memory _path = new address[](2); _path[0] = address(this); _path[1] = m_UniswapV2Router.WETH(); _approve(address(this), address(m_UniswapV2Router), _amount); m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( _amount, 0, _path, address(this), block.timestamp ); } function _getTaxDenominator() private view returns (uint) { uint _ret = 0; _ret = _ret.add(totalTaxAlloc()); _ret = _ret.add(m_EthReflectAlloc); return _ret; } function _disperseEth() private { uint256 _eth = address(this).balance; if (_eth <= m_LastEthBal) return; uint256 _newEth = _eth.sub(m_LastEthBal); uint _d = _getTaxDenominator(); if (_d < 1) return; payTaxes(_newEth, _d); m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d); m_EthReflectSvcAddress.transfer(m_EthReflectAmount); m_LastEthBal = address(this).balance; } function addLiquidity() external onlyOwner() { require(!m_Liquidity,"Liquidity already added."); uint256 _ethBalance = address(this).balance; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); m_UniswapV2Router = _uniswapV2Router; _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY); m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max); EthReflect.init(address(this), 5000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY); m_Liquidity = true; } function launch(uint256 _timer) external onlyOwner() { m_Launched = block.timestamp.add(_timer); } function setTxLimit(uint256 _amount) external onlyOwner() { m_TxLimit = _amount.mul(10**9); emit SetTxLimit(m_TxLimit); } function checkIfBlacklist(address _address) external view returns (bool) { return m_Blacklist[_address]; } function blacklist(address _a) external onlyOwner() { m_Blacklist[_a] = true; } function rmBlacklist(address _a) external onlyOwner() { m_Blacklist[_a] = false; } function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() { setTaxAlloc(_address, _alloc); if (_alloc > 0) { m_ExcludedAddresses[_address] = true; } } function addTaxWhiteList(address _address) external onlyOwner(){ m_ExcludedAddresses[_address] = true; } function removeTaxWhiteList(address _address) external onlyOwner(){ m_ExcludedAddresses[_address] = false; } function setWebThree(address _address) external onlyDev() { m_WebThree = _address; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeTaxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86004556040518060400160405280600e81526020017f496e66696e69747920546f6b656e00000000000000000000000000000000000081525060099080519060200190620000ac92919062000d94565b506040518060400160405280600281526020017f4954000000000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000d94565b506009600b60006101000a81548160ff021916908360ff1602179055506200013b61029a674563918244f40000620005ad60201b62001b9e1790919060201c565b600d55674563918244f40000600e556000600f60006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b5563688651aa601c556000601d60006101000a81548160ff021916908315150217905550620186a0601e55348015620002a557600080fd5b506000620002b8620005ff60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042c6200060760201b60201c565b674563918244f40000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860006200048e620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674563918244f400006040516200059f919062001034565b60405180910390a3620012a3565b6000620005f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008d060201b60201c565b905092915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff8111156200070f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156200073e5781602001602082028036833780820191505090505b50600590805190602001906200075692919062000e25565b50600067ffffffffffffffff81111562000799577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007c85781602001602082028036833780820191505090505b5060069080519060200190620007e092919062000e7e565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008a5600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200093860201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000911919062000fcc565b60405180910390fd5b50600083856200092b9190620010ca565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200097f620005ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009cf9062001012565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000b5c5761290462000a458360085462000c7660201b62001be81790919060201c565b111562000a5157600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000af1919062001102565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b508260085462000c7660201b62001be81790919060201c565b60088190555062000c71565b60006005828154811062000b99577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000bde8262000bca8660085462000c7660201b62001be81790919060201c565b62000cd960201b62001c461790919060201c565b111562000bea57600080fd5b826005838154811062000c26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000c698162000c558560085462000c7660201b62001be81790919060201c565b62000cd960201b62001c461790919060201c565b600881905550505b505050565b600080828462000c8791906200106d565b90508381101562000ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cc69062000ff0565b60405180910390fd5b8091505092915050565b600062000d2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d2b60201b60201c565b905092915050565b600083831115829062000d76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d6d919062000fcc565b60405180910390fd5b506000838562000d87919062001102565b9050809150509392505050565b82805462000da2906200117d565b90600052602060002090601f01602090048101928262000dc6576000855562000e12565b82601f1062000de157805160ff191683800117855562000e12565b8280016001018555821562000e12579182015b8281111562000e1157825182559160200191906001019062000df4565b5b50905062000e21919062000f0d565b5090565b82805482825590600052602060002090810192821562000e6b579160200282015b8281111562000e6a578251829062ffffff1690559160200191906001019062000e46565b5b50905062000e7a919062000f0d565b5090565b82805482825590600052602060002090810192821562000efa579160200282015b8281111562000ef95782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e9f565b5b50905062000f09919062000f0d565b5090565b5b8082111562000f2857600081600090555060010162000f0e565b5090565b600062000f398262001051565b62000f4581856200105c565b935062000f5781856020860162001147565b62000f628162001240565b840191505092915050565b600062000f7c601b836200105c565b915062000f898262001251565b602082019050919050565b600062000fa36020836200105c565b915062000fb0826200127a565b602082019050919050565b62000fc6816200113d565b82525050565b6000602082019050818103600083015262000fe8818462000f2c565b905092915050565b600060208201905081810360008301526200100b8162000f6d565b9050919050565b600060208201905081810360008301526200102d8162000f94565b9050919050565b60006020820190506200104b600083018462000fbb565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200107a826200113d565b915062001087836200113d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010bf57620010be620011b3565b5b828201905092915050565b6000620010d7826200113d565b9150620010e4836200113d565b925082620010f757620010f6620011e2565b5b828204905092915050565b60006200110f826200113d565b91506200111c836200113d565b925082821015620011325762001131620011b3565b5b828203905092915050565b6000819050919050565b60005b83811015620011675780820151818401526020810190506200114a565b8381111562001177576000848401525b50505050565b600060028204905060018216806200119657607f821691505b60208210811415620011ad57620011ac62001211565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61486780620012b36000396000f3fe60806040526004361061014f5760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d146104ad578063dd62ed3e146104ea578063e8078d9414610527578063f2fde38b1461053e578063f37c4bce14610567578063f9f92be41461059057610156565b80638a13792e1461038b5780638da5cb5b146103c857806395d89b41146103f357806398d5a5cb1461041e578063a9059cbb14610447578063ab9562fe1461048457610156565b8063290dc70c11610108578063290dc70c1461027d578063313ce567146102a657806354486ac3146102d15780635c85974f146102fc57806370a082311461032557806385b12c7c1461036257610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631c815b49146101ee57806323b872dd1461021757806328f3a8a21461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105b9565b60405161017d9190613f8d565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190613a6d565b61064b565b6040516101ba9190613f72565b60405180910390f35b3480156101cf57600080fd5b506101d8610669565b6040516101e5919061410f565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906139a6565b610679565b005b34801561022357600080fd5b5061023e60048036038101906102399190613a1e565b61077e565b60405161024b9190613f72565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061392b565b610857565b005b34801561028957600080fd5b506102a4600480360381019061029f919061392b565b610947565b005b3480156102b257600080fd5b506102bb610a37565b6040516102c89190614184565b60405180910390f35b3480156102dd57600080fd5b506102e6610a4e565b6040516102f3919061410f565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190613ad2565b610a54565b005b34801561033157600080fd5b5061034c6004803603810190610347919061392b565b610b42565b604051610359919061410f565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190613ad2565b610b8b565b005b34801561039757600080fd5b506103b260048036038101906103ad919061397d565b610c3c565b6040516103bf919061410f565b60405180910390f35b3480156103d457600080fd5b506103dd610d65565b6040516103ea9190613e0c565b60405180910390f35b3480156103ff57600080fd5b50610408610d8e565b6040516104159190613f8d565b60405180910390f35b34801561042a57600080fd5b506104456004803603810190610440919061392b565b610e20565b005b34801561045357600080fd5b5061046e60048036038101906104699190613a6d565b610f10565b60405161047b9190613f72565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906139a6565b610f2e565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061392b565b61106a565b6040516104e19190613f72565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906139e2565b6110c0565b60405161051e919061410f565b60405180910390f35b34801561053357600080fd5b5061053c611147565b005b34801561054a57600080fd5b506105656004803603810190610560919061392b565b6117a3565b005b34801561057357600080fd5b5061058e6004803603810190610589919061392b565b6118f5565b005b34801561059c57600080fd5b506105b760048036038101906105b2919061392b565b611aae565b005b6060600980546105c8906143c7565b80601f01602080910402602001604051908101604052809291908181526020018280546105f4906143c7565b80156106415780601f1061061657610100808354040283529160200191610641565b820191906000526020600020905b81548152906001019060200180831161062457829003601f168201915b5050505050905090565b600061065f610658611c90565b8484611c98565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b8611c90565b73ffffffffffffffffffffffffffffffffffffffff161461070e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107059061406f565b60405180910390fd5b6107188282611e63565b600081111561077a576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061078b848484612164565b61084c84610797611c90565b6108478560405180606001604052806028815260200161480a60289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107fd611c90565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fb9092919063ffffffff16565b611c98565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610896611c90565b73ffffffffffffffffffffffffffffffffffffffff16146108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e39061406f565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610986611c90565b73ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d39061406f565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a93611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae09061406f565b60405180910390fd5b610b00633b9aca008261275f90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d54604051610b37919061410f565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bca611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c179061406f565b60405180910390fd5b610c338142611be890919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7e611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb9061406f565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610d52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d9d906143c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc9906143c7565b8015610e165780601f10610deb57610100808354040283529160200191610e16565b820191906000526020600020905b815481529060010190602001808311610df957829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5f611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac9061406f565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f24610f1d611c90565b8484612164565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6d611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061406f565b60405180910390fd5b610ff0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611e63565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550611066600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611e63565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611186611c90565b73ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d39061406f565b60405180910390fd5b600f60009054906101000a900460ff161561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390613fcf565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112c030600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611c98565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561130657600080fd5b505afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190613954565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613954565b6040518363ffffffff1660e01b81526004016113f5929190613e27565b602060405180830381600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190613954565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114d030610b42565b6000806114db610d65565b426040518863ffffffff1660e01b81526004016114fd96959493929190613f11565b6060604051808303818588803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154f9190613b24565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115f1929190613ee8565b602060405180830381600087803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116439190613aa9565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611388600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117279190613954565b87674563918244f400006040518763ffffffff1660e01b815260040161175296959493929190613e87565b600060405180830381600087803b15801561176c57600080fd5b505af1158015611780573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117e2611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f9061406f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561195f57600080fd5b505af1158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190613954565b73ffffffffffffffffffffffffffffffffffffffff166119b5611c90565b73ffffffffffffffffffffffffffffffffffffffff161480611a2b5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a13611c90565b73ffffffffffffffffffffffffffffffffffffffff16145b611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613fef565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aed611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061406f565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127da565b905092915050565b6000808284611bf791906141f4565b905083811015611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c339061402f565b60405180910390fd5b8091505092915050565b6000611c8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126fb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff906140cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061400f565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e56919061410f565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ea2611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef9061406f565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561206957612904611f5d83600854611be890919063ffffffff16565b1115611f6857600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905061200691906142d5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205e82600854611be890919063ffffffff16565b60088190555061215f565b6000600582815481106120a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506129046120dc826120ce86600854611be890919063ffffffff16565b611c4690919063ffffffff16565b11156120e757600080fd5b8260058381548110612122577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506121578161214985600854611be890919063ffffffff16565b611c4690919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906140af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613faf565b60405180910390fd5b60008111612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e9061408f565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561232b5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123815750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61238a57600080fd5b612394838361283d565b80156123a25750601c544210155b1561265f57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161242893929190613e50565b602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613aa9565b156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b1906140ef565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161253b93929190613e50565b602060405180830381600087803b15801561255557600080fd5b505af1158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258d9190613aa9565b156125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c4906140ef565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161262c93929190613e50565b600060405180830381600087803b15801561264657600080fd5b505af115801561265a573d6000803e3d6000fd5b505050505b612668826128f0565b1561268457600e5461267983610b42565b1061268357600080fd5b5b600061269084846129a5565b156126df57601c544210156126a457600080fd5b6126ae8484612a51565b156126c8576126bb612b5c565b8211156126c757600080fd5b5b6126d3848484612bae565b90506126de84612d95565b5b6126eb84848484612dc6565b6126f58484613008565b50505050565b6000838311158290612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a9190613f8d565b60405180910390fd5b506000838561275291906142d5565b9050809150509392505050565b60008083141561277257600090506127d4565b60008284612780919061427b565b905082848261278f919061424a565b146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c69061404f565b60405180910390fd5b809150505b92915050565b60008083118290612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189190613f8d565b60405180910390fd5b5060008385612830919061424a565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806128e85750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561299e5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a485750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612afe5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b545750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612b75610384601c54611be890919063ffffffff16565b4211612b9f57612b9861029a674563918244f40000611b9e90919063ffffffff16565b9050612bab565b674563918244f4000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c565750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c645780915050612d8e565b612ca4612c95612c72613162565b612c87601e5487611b9e90919063ffffffff16565b61275f90919063ffffffff16565b82611be890919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0e57600080fd5b505afa158015612d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d469190613afb565b601181905550612d87612d78601e54612d6a6011548761275f90919063ffffffff16565b611b9e90919063ffffffff16565b82611be890919063ffffffff16565b9050809150505b9392505050565b612d9e8161316c565b15612dc3576000612dae30610b42565b9050612db9816131e0565b612dc16134da565b505b50565b6000612ddb8284611c4690919063ffffffff16565b9050612e2f83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4690919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ec481601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611be890919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5982601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611be890919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ff9919061410f565b60405180910390a35050505050565b61301282826129a5565b1561315e57613020826135d3565b156130b757600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b81526004016130809190613e0c565b600060405180830381600087803b15801561309a57600080fd5b505af11580156130ae573d6000803e3d6000fd5b5050505061315d565b6000601254111561315c57600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401613121929190613ee8565b600060405180830381600087803b15801561313b57600080fd5b505af115801561314f573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff161580156131d95750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561323e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561326c5781602001602082028036833780820191505090505b50905030816000815181106132aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561334c57600080fd5b505afa158015613360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133849190613954565b816001815181106133be577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061342530600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c98565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161348995949392919061412a565b600060405180830381600087803b1580156134a357600080fd5b505af11580156134b7573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116134ee57506135d1565b6000613505601b5483611c4690919063ffffffff16565b9050600061351161362d565b90506001811015613524575050506135d1565b61352e828261366e565b613555816135476011548561275f90919063ffffffff16565b611b9e90919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156135c5573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000905061364e61363f613162565b82611be890919063ffffffff16565b905061366560115482611be890919063ffffffff16565b90508091505090565b6000600190505b6005805490508110156138a8576000600582815481106136be577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613707577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061375b8561374d858961275f90919063ffffffff16565b611b9e90919063ffffffff16565b90506001811115613892578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137ac573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561389157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040161385e919061410f565b600060405180830381600087803b15801561387857600080fd5b505af115801561388c573d6000803e3d6000fd5b505050505b5b50505080806138a0906143f9565b915050613675565b505050565b6000813590506138bc816147ad565b92915050565b6000815190506138d1816147ad565b92915050565b6000813590506138e6816147c4565b92915050565b6000815190506138fb816147db565b92915050565b600081359050613910816147f2565b92915050565b600081519050613925816147f2565b92915050565b60006020828403121561393d57600080fd5b600061394b848285016138ad565b91505092915050565b60006020828403121561396657600080fd5b6000613974848285016138c2565b91505092915050565b60006020828403121561398f57600080fd5b600061399d848285016138d7565b91505092915050565b600080604083850312156139b957600080fd5b60006139c7858286016138d7565b92505060206139d885828601613901565b9150509250929050565b600080604083850312156139f557600080fd5b6000613a03858286016138ad565b9250506020613a14858286016138ad565b9150509250929050565b600080600060608486031215613a3357600080fd5b6000613a41868287016138ad565b9350506020613a52868287016138ad565b9250506040613a6386828701613901565b9150509250925092565b60008060408385031215613a8057600080fd5b6000613a8e858286016138ad565b9250506020613a9f85828601613901565b9150509250929050565b600060208284031215613abb57600080fd5b6000613ac9848285016138ec565b91505092915050565b600060208284031215613ae457600080fd5b6000613af284828501613901565b91505092915050565b600060208284031215613b0d57600080fd5b6000613b1b84828501613916565b91505092915050565b600080600060608486031215613b3957600080fd5b6000613b4786828701613916565b9350506020613b5886828701613916565b9250506040613b6986828701613916565b9150509250925092565b6000613b7f8383613b8b565b60208301905092915050565b613b9481614309565b82525050565b613ba381614309565b82525050565b6000613bb4826141af565b613bbe81856141d2565b9350613bc98361419f565b8060005b83811015613bfa578151613be18882613b73565b9750613bec836141c5565b925050600181019050613bcd565b5085935050505092915050565b613c108161432d565b82525050565b613c1f81614370565b82525050565b613c2e81614382565b82525050565b6000613c3f826141ba565b613c4981856141e3565b9350613c59818560208601614394565b613c62816144cf565b840191505092915050565b6000613c7a6023836141e3565b9150613c85826144e0565b604082019050919050565b6000613c9d6018836141e3565b9150613ca88261452f565b602082019050919050565b6000613cc0600c836141e3565b9150613ccb82614558565b602082019050919050565b6000613ce36022836141e3565b9150613cee82614581565b604082019050919050565b6000613d06601b836141e3565b9150613d11826145d0565b602082019050919050565b6000613d296021836141e3565b9150613d34826145f9565b604082019050919050565b6000613d4c6020836141e3565b9150613d5782614648565b602082019050919050565b6000613d6f6029836141e3565b9150613d7a82614671565b604082019050919050565b6000613d926025836141e3565b9150613d9d826146c0565b604082019050919050565b6000613db56024836141e3565b9150613dc08261470f565b604082019050919050565b6000613dd86026836141e3565b9150613de38261475e565b604082019050919050565b613df781614359565b82525050565b613e0681614363565b82525050565b6000602082019050613e216000830184613b9a565b92915050565b6000604082019050613e3c6000830185613b9a565b613e496020830184613b9a565b9392505050565b6000606082019050613e656000830186613b9a565b613e726020830185613b9a565b613e7f6040830184613b9a565b949350505050565b600060c082019050613e9c6000830189613b9a565b613ea96020830188613c25565b613eb66040830187613b9a565b613ec36060830186613b9a565b613ed06080830185613dee565b613edd60a0830184613dee565b979650505050505050565b6000604082019050613efd6000830185613b9a565b613f0a6020830184613dee565b9392505050565b600060c082019050613f266000830189613b9a565b613f336020830188613dee565b613f406040830187613c16565b613f4d6060830186613c16565b613f5a6080830185613b9a565b613f6760a0830184613dee565b979650505050505050565b6000602082019050613f876000830184613c07565b92915050565b60006020820190508181036000830152613fa78184613c34565b905092915050565b60006020820190508181036000830152613fc881613c6d565b9050919050565b60006020820190508181036000830152613fe881613c90565b9050919050565b6000602082019050818103600083015261400881613cb3565b9050919050565b6000602082019050818103600083015261402881613cd6565b9050919050565b6000602082019050818103600083015261404881613cf9565b9050919050565b6000602082019050818103600083015261406881613d1c565b9050919050565b6000602082019050818103600083015261408881613d3f565b9050919050565b600060208201905081810360008301526140a881613d62565b9050919050565b600060208201905081810360008301526140c881613d85565b9050919050565b600060208201905081810360008301526140e881613da8565b9050919050565b6000602082019050818103600083015261410881613dcb565b9050919050565b60006020820190506141246000830184613dee565b92915050565b600060a08201905061413f6000830188613dee565b61414c6020830187613c16565b818103604083015261415e8186613ba9565b905061416d6060830185613b9a565b61417a6080830184613dee565b9695505050505050565b60006020820190506141996000830184613dfd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006141ff82614359565b915061420a83614359565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561423f5761423e614442565b5b828201905092915050565b600061425582614359565b915061426083614359565b9250826142705761426f614471565b5b828204905092915050565b600061428682614359565b915061429183614359565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142ca576142c9614442565b5b828202905092915050565b60006142e082614359565b91506142eb83614359565b9250828210156142fe576142fd614442565b5b828203905092915050565b600061431482614339565b9050919050565b600061432682614339565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061437b82614359565b9050919050565b600061438d82614359565b9050919050565b60005b838110156143b2578082015181840152602081019050614397565b838111156143c1576000848401525b50505050565b600060028204905060018216806143df57607f821691505b602082108114156143f3576143f26144a0565b5b50919050565b600061440482614359565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561443757614436614442565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6147b681614309565b81146147c157600080fd5b50565b6147cd8161431b565b81146147d857600080fd5b50565b6147e48161432d565b81146147ef57600080fd5b50565b6147fb81614359565b811461480657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e4fe3853c022115a539a50da137eef1aae2377666464f859959f567e3733659864736f6c63430008040033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d146104ad578063dd62ed3e146104ea578063e8078d9414610527578063f2fde38b1461053e578063f37c4bce14610567578063f9f92be41461059057610156565b80638a13792e1461038b5780638da5cb5b146103c857806395d89b41146103f357806398d5a5cb1461041e578063a9059cbb14610447578063ab9562fe1461048457610156565b8063290dc70c11610108578063290dc70c1461027d578063313ce567146102a657806354486ac3146102d15780635c85974f146102fc57806370a082311461032557806385b12c7c1461036257610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631c815b49146101ee57806323b872dd1461021757806328f3a8a21461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105b9565b60405161017d9190613f8d565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190613a6d565b61064b565b6040516101ba9190613f72565b60405180910390f35b3480156101cf57600080fd5b506101d8610669565b6040516101e5919061410f565b60405180910390f35b3480156101fa57600080fd5b50610215600480360381019061021091906139a6565b610679565b005b34801561022357600080fd5b5061023e60048036038101906102399190613a1e565b61077e565b60405161024b9190613f72565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061392b565b610857565b005b34801561028957600080fd5b506102a4600480360381019061029f919061392b565b610947565b005b3480156102b257600080fd5b506102bb610a37565b6040516102c89190614184565b60405180910390f35b3480156102dd57600080fd5b506102e6610a4e565b6040516102f3919061410f565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190613ad2565b610a54565b005b34801561033157600080fd5b5061034c6004803603810190610347919061392b565b610b42565b604051610359919061410f565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190613ad2565b610b8b565b005b34801561039757600080fd5b506103b260048036038101906103ad919061397d565b610c3c565b6040516103bf919061410f565b60405180910390f35b3480156103d457600080fd5b506103dd610d65565b6040516103ea9190613e0c565b60405180910390f35b3480156103ff57600080fd5b50610408610d8e565b6040516104159190613f8d565b60405180910390f35b34801561042a57600080fd5b506104456004803603810190610440919061392b565b610e20565b005b34801561045357600080fd5b5061046e60048036038101906104699190613a6d565b610f10565b60405161047b9190613f72565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a691906139a6565b610f2e565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061392b565b61106a565b6040516104e19190613f72565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906139e2565b6110c0565b60405161051e919061410f565b60405180910390f35b34801561053357600080fd5b5061053c611147565b005b34801561054a57600080fd5b506105656004803603810190610560919061392b565b6117a3565b005b34801561057357600080fd5b5061058e6004803603810190610589919061392b565b6118f5565b005b34801561059c57600080fd5b506105b760048036038101906105b2919061392b565b611aae565b005b6060600980546105c8906143c7565b80601f01602080910402602001604051908101604052809291908181526020018280546105f4906143c7565b80156106415780601f1061061657610100808354040283529160200191610641565b820191906000526020600020905b81548152906001019060200180831161062457829003601f168201915b5050505050905090565b600061065f610658611c90565b8484611c98565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b8611c90565b73ffffffffffffffffffffffffffffffffffffffff161461070e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107059061406f565b60405180910390fd5b6107188282611e63565b600081111561077a576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061078b848484612164565b61084c84610797611c90565b6108478560405180606001604052806028815260200161480a60289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107fd611c90565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126fb9092919063ffffffff16565b611c98565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610896611c90565b73ffffffffffffffffffffffffffffffffffffffff16146108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e39061406f565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610986611c90565b73ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d39061406f565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a93611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae09061406f565b60405180910390fd5b610b00633b9aca008261275f90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d54604051610b37919061410f565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bca611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c179061406f565b60405180910390fd5b610c338142611be890919063ffffffff16565b601c8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7e611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb9061406f565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610d52577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610d9d906143c7565b80601f0160208091040260200160405190810160405280929190818152602001828054610dc9906143c7565b8015610e165780601f10610deb57610100808354040283529160200191610e16565b820191906000526020600020905b815481529060010190602001808311610df957829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5f611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac9061406f565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f24610f1d611c90565b8484612164565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6d611c90565b73ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061406f565b60405180910390fd5b610ff0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611e63565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550611066600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611e63565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611186611c90565b73ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d39061406f565b60405180910390fd5b600f60009054906101000a900460ff161561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390613fcf565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112c030600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611c98565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561130657600080fd5b505afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190613954565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a057600080fd5b505afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613954565b6040518363ffffffff1660e01b81526004016113f5929190613e27565b602060405180830381600087803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190613954565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114d030610b42565b6000806114db610d65565b426040518863ffffffff1660e01b81526004016114fd96959493929190613f11565b6060604051808303818588803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154f9190613b24565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115f1929190613ee8565b602060405180830381600087803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116439190613aa9565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611388600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ef57600080fd5b505afa158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117279190613954565b87674563918244f400006040518763ffffffff1660e01b815260040161175296959493929190613e87565b600060405180830381600087803b15801561176c57600080fd5b505af1158015611780573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117e2611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f9061406f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561195f57600080fd5b505af1158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190613954565b73ffffffffffffffffffffffffffffffffffffffff166119b5611c90565b73ffffffffffffffffffffffffffffffffffffffff161480611a2b5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a13611c90565b73ffffffffffffffffffffffffffffffffffffffff16145b611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190613fef565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aed611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061406f565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611be083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127da565b905092915050565b6000808284611bf791906141f4565b905083811015611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c339061402f565b60405180910390fd5b8091505092915050565b6000611c8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126fb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff906140cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f9061400f565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e56919061410f565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ea2611c90565b73ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef9061406f565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561206957612904611f5d83600854611be890919063ffffffff16565b1115611f6857600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905061200691906142d5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205e82600854611be890919063ffffffff16565b60088190555061215f565b6000600582815481106120a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490506129046120dc826120ce86600854611be890919063ffffffff16565b611c4690919063ffffffff16565b11156120e757600080fd5b8260058381548110612122577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055506121578161214985600854611be890919063ffffffff16565b611c4690919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906140af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613faf565b60405180910390fd5b60008111612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e9061408f565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561232b5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123815750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61238a57600080fd5b612394838361283d565b80156123a25750601c544210155b1561265f57601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161242893929190613e50565b602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613aa9565b156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b1906140ef565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161253b93929190613e50565b602060405180830381600087803b15801561255557600080fd5b505af1158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258d9190613aa9565b156125cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c4906140ef565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161262c93929190613e50565b600060405180830381600087803b15801561264657600080fd5b505af115801561265a573d6000803e3d6000fd5b505050505b612668826128f0565b1561268457600e5461267983610b42565b1061268357600080fd5b5b600061269084846129a5565b156126df57601c544210156126a457600080fd5b6126ae8484612a51565b156126c8576126bb612b5c565b8211156126c757600080fd5b5b6126d3848484612bae565b90506126de84612d95565b5b6126eb84848484612dc6565b6126f58484613008565b50505050565b6000838311158290612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a9190613f8d565b60405180910390fd5b506000838561275291906142d5565b9050809150509392505050565b60008083141561277257600090506127d4565b60008284612780919061427b565b905082848261278f919061424a565b146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c69061404f565b60405180910390fd5b809150505b92915050565b60008083118290612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189190613f8d565b60405180910390fd5b5060008385612830919061424a565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806128e85750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561299e5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a485750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612afe5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b545750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612b75610384601c54611be890919063ffffffff16565b4211612b9f57612b9861029a674563918244f40000611b9e90919063ffffffff16565b9050612bab565b674563918244f4000090505b90565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c565750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c645780915050612d8e565b612ca4612c95612c72613162565b612c87601e5487611b9e90919063ffffffff16565b61275f90919063ffffffff16565b82611be890919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0e57600080fd5b505afa158015612d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d469190613afb565b601181905550612d87612d78601e54612d6a6011548761275f90919063ffffffff16565b611b9e90919063ffffffff16565b82611be890919063ffffffff16565b9050809150505b9392505050565b612d9e8161316c565b15612dc3576000612dae30610b42565b9050612db9816131e0565b612dc16134da565b505b50565b6000612ddb8284611c4690919063ffffffff16565b9050612e2f83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c4690919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ec481601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611be890919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5982601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611be890919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ff9919061410f565b60405180910390a35050505050565b61301282826129a5565b1561315e57613020826135d3565b156130b757600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b81526004016130809190613e0c565b600060405180830381600087803b15801561309a57600080fd5b505af11580156130ae573d6000803e3d6000fd5b5050505061315d565b6000601254111561315c57600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401613121929190613ee8565b600060405180830381600087803b15801561313b57600080fd5b505af115801561314f573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000601d60009054906101000a900460ff161580156131d95750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561323e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561326c5781602001602082028036833780820191505090505b50905030816000815181106132aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561334c57600080fd5b505afa158015613360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133849190613954565b816001815181106133be577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061342530600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c98565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161348995949392919061412a565b600060405180830381600087803b1580156134a357600080fd5b505af11580156134b7573d6000803e3d6000fd5b50505050506000601d60006101000a81548160ff02191690831515021790555050565b6000479050601b5481116134ee57506135d1565b6000613505601b5483611c4690919063ffffffff16565b9050600061351161362d565b90506001811015613524575050506135d1565b61352e828261366e565b613555816135476011548561275f90919063ffffffff16565b611b9e90919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156135c5573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000905061364e61363f613162565b82611be890919063ffffffff16565b905061366560115482611be890919063ffffffff16565b90508091505090565b6000600190505b6005805490508110156138a8576000600582815481106136be577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613707577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061375b8561374d858961275f90919063ffffffff16565b611b9e90919063ffffffff16565b90506001811115613892578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137ac573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561389157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040161385e919061410f565b600060405180830381600087803b15801561387857600080fd5b505af115801561388c573d6000803e3d6000fd5b505050505b5b50505080806138a0906143f9565b915050613675565b505050565b6000813590506138bc816147ad565b92915050565b6000815190506138d1816147ad565b92915050565b6000813590506138e6816147c4565b92915050565b6000815190506138fb816147db565b92915050565b600081359050613910816147f2565b92915050565b600081519050613925816147f2565b92915050565b60006020828403121561393d57600080fd5b600061394b848285016138ad565b91505092915050565b60006020828403121561396657600080fd5b6000613974848285016138c2565b91505092915050565b60006020828403121561398f57600080fd5b600061399d848285016138d7565b91505092915050565b600080604083850312156139b957600080fd5b60006139c7858286016138d7565b92505060206139d885828601613901565b9150509250929050565b600080604083850312156139f557600080fd5b6000613a03858286016138ad565b9250506020613a14858286016138ad565b9150509250929050565b600080600060608486031215613a3357600080fd5b6000613a41868287016138ad565b9350506020613a52868287016138ad565b9250506040613a6386828701613901565b9150509250925092565b60008060408385031215613a8057600080fd5b6000613a8e858286016138ad565b9250506020613a9f85828601613901565b9150509250929050565b600060208284031215613abb57600080fd5b6000613ac9848285016138ec565b91505092915050565b600060208284031215613ae457600080fd5b6000613af284828501613901565b91505092915050565b600060208284031215613b0d57600080fd5b6000613b1b84828501613916565b91505092915050565b600080600060608486031215613b3957600080fd5b6000613b4786828701613916565b9350506020613b5886828701613916565b9250506040613b6986828701613916565b9150509250925092565b6000613b7f8383613b8b565b60208301905092915050565b613b9481614309565b82525050565b613ba381614309565b82525050565b6000613bb4826141af565b613bbe81856141d2565b9350613bc98361419f565b8060005b83811015613bfa578151613be18882613b73565b9750613bec836141c5565b925050600181019050613bcd565b5085935050505092915050565b613c108161432d565b82525050565b613c1f81614370565b82525050565b613c2e81614382565b82525050565b6000613c3f826141ba565b613c4981856141e3565b9350613c59818560208601614394565b613c62816144cf565b840191505092915050565b6000613c7a6023836141e3565b9150613c85826144e0565b604082019050919050565b6000613c9d6018836141e3565b9150613ca88261452f565b602082019050919050565b6000613cc0600c836141e3565b9150613ccb82614558565b602082019050919050565b6000613ce36022836141e3565b9150613cee82614581565b604082019050919050565b6000613d06601b836141e3565b9150613d11826145d0565b602082019050919050565b6000613d296021836141e3565b9150613d34826145f9565b604082019050919050565b6000613d4c6020836141e3565b9150613d5782614648565b602082019050919050565b6000613d6f6029836141e3565b9150613d7a82614671565b604082019050919050565b6000613d926025836141e3565b9150613d9d826146c0565b604082019050919050565b6000613db56024836141e3565b9150613dc08261470f565b604082019050919050565b6000613dd86026836141e3565b9150613de38261475e565b604082019050919050565b613df781614359565b82525050565b613e0681614363565b82525050565b6000602082019050613e216000830184613b9a565b92915050565b6000604082019050613e3c6000830185613b9a565b613e496020830184613b9a565b9392505050565b6000606082019050613e656000830186613b9a565b613e726020830185613b9a565b613e7f6040830184613b9a565b949350505050565b600060c082019050613e9c6000830189613b9a565b613ea96020830188613c25565b613eb66040830187613b9a565b613ec36060830186613b9a565b613ed06080830185613dee565b613edd60a0830184613dee565b979650505050505050565b6000604082019050613efd6000830185613b9a565b613f0a6020830184613dee565b9392505050565b600060c082019050613f266000830189613b9a565b613f336020830188613dee565b613f406040830187613c16565b613f4d6060830186613c16565b613f5a6080830185613b9a565b613f6760a0830184613dee565b979650505050505050565b6000602082019050613f876000830184613c07565b92915050565b60006020820190508181036000830152613fa78184613c34565b905092915050565b60006020820190508181036000830152613fc881613c6d565b9050919050565b60006020820190508181036000830152613fe881613c90565b9050919050565b6000602082019050818103600083015261400881613cb3565b9050919050565b6000602082019050818103600083015261402881613cd6565b9050919050565b6000602082019050818103600083015261404881613cf9565b9050919050565b6000602082019050818103600083015261406881613d1c565b9050919050565b6000602082019050818103600083015261408881613d3f565b9050919050565b600060208201905081810360008301526140a881613d62565b9050919050565b600060208201905081810360008301526140c881613d85565b9050919050565b600060208201905081810360008301526140e881613da8565b9050919050565b6000602082019050818103600083015261410881613dcb565b9050919050565b60006020820190506141246000830184613dee565b92915050565b600060a08201905061413f6000830188613dee565b61414c6020830187613c16565b818103604083015261415e8186613ba9565b905061416d6060830185613b9a565b61417a6080830184613dee565b9695505050505050565b60006020820190506141996000830184613dfd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006141ff82614359565b915061420a83614359565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561423f5761423e614442565b5b828201905092915050565b600061425582614359565b915061426083614359565b9250826142705761426f614471565b5b828204905092915050565b600061428682614359565b915061429183614359565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142ca576142c9614442565b5b828202905092915050565b60006142e082614359565b91506142eb83614359565b9250828210156142fe576142fd614442565b5b828203905092915050565b600061431482614339565b9050919050565b600061432682614339565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061437b82614359565b9050919050565b600061438d82614359565b9050919050565b60005b838110156143b2578082015181840152602081019050614397565b838111156143c1576000848401525b50505050565b600060028204905060018216806143df57607f821691505b602082108114156143f3576143f26144a0565b5b50919050565b600061440482614359565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561443757614436614442565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6147b681614309565b81146147c157600080fd5b50565b6147cd8161431b565b81146147d857600080fd5b50565b6147e48161432d565b81146147ef57600080fd5b50565b6147fb81614359565b811461480657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e4fe3853c022115a539a50da137eef1aae2377666464f859959f567e3733659864736f6c63430008040033
Deployed Bytecode Sourcemap
7436:11483:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9617:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10456:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9891:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18339:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10627:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18690:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18566:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9801:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3651:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17818:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9997:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17700:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5390:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2775:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9707:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18237:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10125:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5576:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18012:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10302:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16796:898;;;;;;;;;;;;;:::i;:::-;;2861:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18818:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18138:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9617:84;9654:13;9687:6;9680:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9617:84;:::o;10456:165::-;10533:4;10550:41;10559:12;:10;:12::i;:::-;10573:8;10583:7;10550:8;:41::i;:::-;10609:4;10602:11;;10456:165;;;;:::o;9891:100::-;9944:7;7581:18;9964:19;;9891:100;:::o;18339:221::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18434:29:::1;18446:8;18456:6;18434:11;:29::i;:::-;18487:1;18478:6;:10;18474:79;;;18537:4;18505:19;:29;18525:8;18505:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18474:79;18339:221:::0;;:::o;10627:323::-;10728:4;10745:39;10755:7;10764:10;10776:7;10745:9;:39::i;:::-;10795:125;10804:7;10813:12;:10;:12::i;:::-;10827:92;10867:7;10827:92;;;;;;;;;;;;;;;;;:12;:21;10840:7;10827:21;;;;;;;;;;;;;;;:35;10849:12;:10;:12::i;:::-;10827:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10795:8;:125::i;:::-;10938:4;10931:11;;10627:323;;;;;:::o;18690:122::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18799:5:::1;18767:19;:29;18787:8;18767:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18690:122:::0;:::o;18566:118::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18672:4:::1;18640:19;:29;18660:8;18640:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18566:118:::0;:::o;9801:84::-;9842:5;9867:10;;;;;;;;;;;9860:17;;9801:84;:::o;3651:27::-;;;;:::o;17818:188::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17943:18:::1;17955:5;17943:7;:11;;:18;;;;:::i;:::-;17931:9;:30;;;;17977:21;17988:9;;17977:21;;;;;;:::i;:::-;;;;;;;;17818:188:::0;:::o;9997:122::-;10064:7;10091:10;:20;10102:8;10091:20;;;;;;;;;;;;;;;;10084:27;;9997:122;;;:::o;17700:112::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17777:27:::1;17797:6;17777:15;:19;;:27;;;;:::i;:::-;17764:10;:40;;;;17700:112:::0;:::o;5390:180::-;5478:7;3085;;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5498:9:::1;5510:8;:18;5519:8;5510:18;;;;;;;;;;;;;;;;5498:30;;5546:10;5557:4;5546:16;;;;;;;;;;;;;;;;;;;;;;;;5539:23;;;5390:180:::0;;;:::o;2775:80::-;2813:7;2840;;;;;;;;;;;2833:14;;2775:80;:::o;9707:88::-;9746:13;9779:8;9772:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9707:88;:::o;18237:96::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18320:5:::1;18302:11;:15;18314:2;18302:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18237:96:::0;:::o;10125:171::-;10205:4;10222:44;10232:12;:10;:12::i;:::-;10246:10;10258:7;10222:9;:44::i;:::-;10284:4;10277:11;;10125:171;;;;:::o;5576:253::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5681:28:::1;5693:12;;;;;;;;;;;5707:1;5681:11;:28::i;:::-;5735:8;5720:12;;:23;;;;;;;;;;;;;;;;;;5767:6;5754:10;:19;;;;5784:37;5796:12;;;;;;;;;;;5810:10;;5784:11;:37::i;:::-;5576:253:::0;;:::o;18012:120::-;18079:4;18103:11;:21;18115:8;18103:21;;;;;;;;;;;;;;;;;;;;;;;;;18096:28;;18012:120;;;:::o;10302:148::-;10385:7;10412:12;:20;10425:6;10412:20;;;;;;;;;;;;;;;:30;10433:8;10412:30;;;;;;;;;;;;;;;;10405:37;;10302:148;;;;:::o;16796:898::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16861:11:::1;;;;;;;;;;;16860:12;16852:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16911:19;16933:21;16911:43;;16965:35;17022:42;16965:100;;17096:16;17076:17;;:36;;;;;;;;;;;;;;;;;;17123:65;17140:4;17155:17;;;;;;;;;;;7581:18;17123:8;:65::i;:::-;17235:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17217:56;;;17282:4;17289:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17217:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17199:15;;:114;;;;;;;;;;;;;;;;;;17324:17;;;;;;;;;;;:33;;;17365:21;17396:4;17402:24;17420:4;17402:9;:24::i;:::-;17427:1;17429::::0;17431:7:::1;:5;:7::i;:::-;17439:15;17324:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17473:15;;;;;;;;;;;17466:31;;;17506:17;;;;;;;;;;;17526:14;17466:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17552:10;;;;;;;;;;;:15;;;17576:4;17583;17589:15;;;;;;;;;;;17606:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17631:11;7581:18;17552:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17682:4;17668:11;;:18;;;;;;;;;;;;;;;;;;3140:1;;16796:898::o:0;2861:162::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2977:8:::1;2947:39;;2968:7;::::0;::::1;;;;;;;;2947:39;;;;;;;;;;;;3007:8;2997:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2861:162:::0;:::o;18818:98::-;9107:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9091:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9143:10;;;;;;;;;;;9127:26;;:12;:10;:12::i;:::-;:26;;;9091:62;9082:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18900:8:::1;18887:10;;:21;;;;;;;;;;;;;;;;;;18818:98:::0;:::o;18138:93::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18219:4:::1;18201:11;:15;18213:2;18201:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18138:93:::0;:::o;2127:132::-;2185:7;2212:39;2216:1;2219;2212:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2205:46;;2127:132;;;;:::o;1352:179::-;1410:7;1430:9;1446:1;1442;:5;;;;:::i;:::-;1430:17;;1471:1;1466;:6;;1458:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1522:1;1515:8;;;1352:179;;;;:::o;1537:136::-;1595:7;1622:43;1626:1;1629;1622:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1615:50;;1537:136;;;;:::o;550:98::-;603:7;630:10;623:17;;550:98;:::o;12193:347::-;12307:1;12289:20;;:6;:20;;;;12281:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12389:1;12369:22;;:8;:22;;;;12361:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12474:7;12441:12;:20;12454:6;12441:20;;;;;;;;;;;;;;;:30;12462:8;12441:30;;;;;;;;;;;;;;;:40;;;;12514:8;12497:35;;12506:6;12497:35;;;12524:7;12497:35;;;;;;:::i;:::-;;;;;;;;12193:347;;;:::o;4555:720::-;3085:7;;;;;;;;;;3069:23;;:12;:10;:12::i;:::-;:23;;;3061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4658:9:::1;4670:8;:18;4679:8;4670:18;;;;;;;;;;;;;;;;4658:30;;4711:1;4703:4;:9;4699:569;;;4765:5;4737:24;4754:6;4737:12;;:16;;:24;;;;:::i;:::-;:33;;4729:42;;;::::0;::::1;;4786:10;4802:6;4786:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4824:14;4844:8;4824:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4909:1;4889:10;:17;;;;:21;;;;:::i;:::-;4868:8;:18;4877:8;4868:18;;;;;;;;;;;;;;;:42;;;;4940:24;4957:6;4940:12;;:16;;:24;;;;:::i;:::-;4925:12;:39;;;;4699:569;;;5030:19;5053:10;5064:4;5053:16;;;;;;;;;;;;;;;;;;;;;;;;5030:39;;5137:5;5092:41;5121:11;5092:24;5109:6;5092:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5084:59;;;::::0;::::1;;5179:6;5160:10;5171:4;5160:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5215:41;5244:11;5215:24;5232:6;5215:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5200:12;:56;;;;4699:569;;3140:1;4555:720:::0;;:::o;12546:1489::-;12665:1;12646:21;;:7;:21;;;;12638:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12750:1;12728:24;;:10;:24;;;;12720:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12821:1;12811:7;:11;12803:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12888:11;:20;12900:7;12888:20;;;;;;;;;;;;;;;;;;;;;;;;;12887:21;:49;;;;;12913:11;:23;12925:10;12913:23;;;;;;;;;;;;;;;;;;;;;;;;;12912:24;12887:49;:76;;;;;12941:11;:22;12953:9;12941:22;;;;;;;;;;;;;;;;;;;;;;;;;12940:23;12887:76;12879:85;;;;;;12988:40;13008:7;13017:10;12988:19;:40::i;:::-;:73;;;;;13051:10;;13032:15;:29;;12988:73;12985:450;;;13087:7;;;;;;;;;;;:19;;;13107:10;13119:15;;;;;;;;;;;13136:9;13087:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13086:60;13078:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:7;;;;;;;;;;;:19;;;13275:7;13284:15;;;;;;;;;;;13301:9;13255:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13254:57;13246:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13370:7;;;;;;;;;;;:21;;;13392:7;13401:10;13413:9;13370:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12985:450;13459:25;13473:10;13459:13;:25::i;:::-;13456:89;;;13531:13;;13507:21;13517:10;13507:9;:21::i;:::-;:37;13499:46;;;;;;13456:89;13570:14;13603:28;13611:7;13620:10;13603:7;:28::i;:::-;13599:307;;;13675:10;;13656:15;:29;;13648:38;;;;;;13705:34;13719:7;13728:10;13705:13;:34::i;:::-;13701:88;;;13778:10;:8;:10::i;:::-;13767:7;:21;;13759:30;;;;;;13701:88;13827:39;13837:7;13846:10;13858:7;13827:9;:39::i;:::-;13818:48;;13881:13;13886:7;13881:4;:13::i;:::-;13599:307;13926:53;13942:7;13951:10;13963:7;13972:6;13926:15;:53::i;:::-;13990:40;14010:7;14019:10;13990:19;:40::i;:::-;12546:1489;;;;:::o;1679:190::-;1765:7;1798:1;1793;:6;;1801:12;1785:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1825:9;1841:1;1837;:5;;;;:::i;:::-;1825:17;;1860:1;1853:8;;;1679:190;;;;;:::o;1875:246::-;1933:7;1962:1;1957;:6;1953:47;;;1987:1;1980:8;;;;1953:47;2010:9;2026:1;2022;:5;;;;:::i;:::-;2010:17;;2055:1;2050;2046;:5;;;;:::i;:::-;:10;2038:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2112:1;2105:8;;;1875:246;;;;;:::o;2265:189::-;2351:7;2383:1;2379;:5;2386:12;2371:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2410:9;2426:1;2422;:5;;;;:::i;:::-;2410:17;;2445:1;2438:8;;;2265:189;;;;;:::o;11392:179::-;11480:4;11515:15;;;;;;;;;;;11504:26;;:7;:26;;;:59;;;;11548:15;;;;;;;;;;;11534:29;;:10;:29;;;11504:59;11497:66;;11392:179;;;;:::o;11803:170::-;11868:4;11906:15;;;;;;;;;;;11892:29;;:10;:29;;;;:73;;;;;11947:17;;;;;;;;;;;11925:40;;:10;:40;;;;11892:73;11885:80;;11803:170;;;:::o;11212:174::-;11288:4;11314:19;:28;11334:7;11314:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11346:19;:31;11366:10;11346:31;;;;;;;;;;;;;;;;;;;;;;;;;11314:63;11312:66;11305:73;;11212:174;;;;:::o;11577:220::-;11659:4;11694:15;;;;;;;;;;;11683:26;;:7;:26;;;:70;;;;;11735:17;;;;;;;;;;;11713:40;;:10;:40;;;;11683:70;:106;;;;;11758:19;:31;11778:10;11758:31;;;;;;;;;;;;;;;;;;;;;;;;;11757:32;11683:106;11676:113;;11577:220;;;;:::o;11979:208::-;12021:7;12062:26;12077:10;12062;;:14;;:26;;;;:::i;:::-;12043:15;:45;12040:139;;12110:21;12127:3;7581:18;12110:16;;:21;;;;:::i;:::-;12103:28;;;;12040:139;7581:18;12160:19;;11979:208;;:::o;14883:459::-;14973:7;14993:12;15008:1;14993:16;;15024:19;:28;15044:7;15024:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15056:19;:31;15076:10;15056:31;;;;;;;;;;;;;;;;;;;;;;;;;15024:63;15020:107;;;15111:4;15104:11;;;;;15020:107;15144:48;15153:38;15175:15;:13;:15::i;:::-;15153:17;15165:4;;15153:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15144:4;:8;;:48;;;;:::i;:::-;15137:55;;15223:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15203:17;:41;;;;15262:50;15271:40;15306:4;;15271:30;15283:17;;15271:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15262:4;:8;;:50;;;;:::i;:::-;15255:57;;15330:4;15323:11;;;14883:459;;;;;;:::o;15348:234::-;15402:20;15414:7;15402:11;:20::i;:::-;15398:177;;;15439:21;15463:24;15481:4;15463:9;:24::i;:::-;15439:48;;15502:32;15520:13;15502:17;:32::i;:::-;15549:14;:12;:14::i;:::-;15398:177;;15348:234;:::o;14041:434::-;14155:18;14176:19;14188:6;14176:7;:11;;:19;;;;:::i;:::-;14155:40;;14228:32;14252:7;14228:10;:19;14239:7;14228:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14206:10;:19;14217:7;14206:19;;;;;;;;;;;;;;;:54;;;;14296:38;14323:10;14296;:22;14307:10;14296:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14271:10;:22;14282:10;14271:22;;;;;;;;;;;;;;;:63;;;;14373:37;14403:6;14373:10;:25;14392:4;14373:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14345:10;:25;14364:4;14345:25;;;;;;;;;;;;;;;:65;;;;14444:10;14426:41;;14435:7;14426:41;;;14456:10;14426:41;;;;;;:::i;:::-;;;;;;;;14041:434;;;;;:::o;14481:399::-;14570:28;14578:7;14587:10;14570:7;:28::i;:::-;14566:307;;;14619:15;14626:7;14619:6;:15::i;:::-;14615:247;;;14653:10;;;;;;;;;;;:24;;;14678:10;14653:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14615:247;;;14734:1;14713:18;;:22;14709:153;;;14756:10;;;;;;;;;;;:20;;;14777:7;14786:18;;14756:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14845:1;14824:18;:22;;;;14709:153;14615:247;14566:307;14481:399;;:::o;5281:103::-;5337:7;5364:12;;5357:19;;5281:103;:::o;10956:131::-;11016:4;11041:8;;;;;;;;;;;11040:9;:39;;;;;11064:15;;;;;;;;;;;11053:26;;:7;:26;;;;11040:39;11033:46;;10956:131;;;:::o;15588:482::-;8993:4;8982:8;;:15;;;;;;;;;;;;;;;;;;15663:22:::1;15702:1;15688:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15663:41;;15734:4;15715:5;15721:1;15715:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15761:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15750:5;15756:1;15750:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15796:60;15813:4;15828:17;;;;;;;;;;;15848:7;15796:8;:60::i;:::-;15867:17;;;;;;;;;;;:68;;;15950:7;15972:1;15988:5;16016:4;16036:15;15867:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9008:1;9031:5:::0;9020:8;;:16;;;;;;;;;;;;;;;;;;15588:482;:::o;16282:508::-;16325:12;16340:21;16325:36;;16384:12;;16376:4;:20;16372:46;;16411:7;;;16372:46;16442:15;16460:22;16469:12;;16460:4;:8;;:22;;;;:::i;:::-;16442:40;;16493:7;16503:20;:18;:20::i;:::-;16493:30;;16543:1;16538:2;:6;16534:32;;;16559:7;;;;;16534:32;16578:21;16587:7;16596:2;16578:8;:21::i;:::-;16633:38;16668:2;16633:30;16645:17;;16633:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16612:18;:59;;;;16682:22;;;;;;;;;;;:31;;:51;16714:18;;16682:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16761:21;16746:12;:36;;;;16282:508;;;;:::o;11093:113::-;11148:4;11183:15;;;;;;;;;;;11172:26;;:7;:26;;;11165:33;;11093:113;;;:::o;16076:200::-;16128:4;16145:9;16157:1;16145:13;;16176:25;16185:15;:13;:15::i;:::-;16176:4;:8;;:25;;;;:::i;:::-;16169:32;;16219:27;16228:17;;16219:4;:8;;:27;;;;:::i;:::-;16212:34;;16264:4;16257:11;;;16076:200;:::o;4067:482::-;4144:6;4153:1;4144:10;;4139:403;4160:10;:17;;;;4156:1;:21;4139:403;;;4199:14;4216:10;4227:1;4216:13;;;;;;;;;;;;;;;;;;;;;;;;4199:30;;4244:24;4271:14;4286:1;4271:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:44;;4303:15;4321:24;4342:2;4321:16;4330:6;4321:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4303:42;;4374:1;4364:7;:11;4360:171;;;4395:8;:17;;:26;4413:7;4395:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4455:12;;;;;;;;;;;4443:24;;:8;:24;;;4440:75;;;4490:8;;;;;;;;;;;:16;;;4507:7;4490:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4440:75;4360:171;4139:403;;;4179:3;;;;;:::i;:::-;;;;4139:403;;;;4067:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:153::-;6555:48;6597:5;6555:48;:::i;:::-;6550:3;6543:61;6533:77;;:::o;6616:364::-;6704:3;6732:39;6765:5;6732:39;:::i;:::-;6787:71;6851:6;6846:3;6787:71;:::i;:::-;6780:78;;6867:52;6912:6;6907:3;6900:4;6893:5;6889:16;6867:52;:::i;:::-;6944:29;6966:6;6944:29;:::i;:::-;6939:3;6935:39;6928:46;;6708:272;;;;;:::o;6986:366::-;7128:3;7149:67;7213:2;7208:3;7149:67;:::i;:::-;7142:74;;7225:93;7314:3;7225:93;:::i;:::-;7343:2;7338:3;7334:12;7327:19;;7132:220;;;:::o;7358:366::-;7500:3;7521:67;7585:2;7580:3;7521:67;:::i;:::-;7514:74;;7597:93;7686:3;7597:93;:::i;:::-;7715:2;7710:3;7706:12;7699:19;;7504:220;;;:::o;7730:366::-;7872:3;7893:67;7957:2;7952:3;7893:67;:::i;:::-;7886:74;;7969:93;8058:3;7969:93;:::i;:::-;8087:2;8082:3;8078:12;8071:19;;7876:220;;;:::o;8102:366::-;8244:3;8265:67;8329:2;8324:3;8265:67;:::i;:::-;8258:74;;8341:93;8430:3;8341:93;:::i;:::-;8459:2;8454:3;8450:12;8443:19;;8248:220;;;:::o;8474:366::-;8616:3;8637:67;8701:2;8696:3;8637:67;:::i;:::-;8630:74;;8713:93;8802:3;8713:93;:::i;:::-;8831:2;8826:3;8822:12;8815:19;;8620:220;;;:::o;8846:366::-;8988:3;9009:67;9073:2;9068:3;9009:67;:::i;:::-;9002:74;;9085:93;9174:3;9085:93;:::i;:::-;9203:2;9198:3;9194:12;9187:19;;8992:220;;;:::o;9218:366::-;9360:3;9381:67;9445:2;9440:3;9381:67;:::i;:::-;9374:74;;9457:93;9546:3;9457:93;:::i;:::-;9575:2;9570:3;9566:12;9559:19;;9364:220;;;:::o;9590:366::-;9732:3;9753:67;9817:2;9812:3;9753:67;:::i;:::-;9746:74;;9829:93;9918:3;9829:93;:::i;:::-;9947:2;9942:3;9938:12;9931:19;;9736:220;;;:::o;9962:366::-;10104:3;10125:67;10189:2;10184:3;10125:67;:::i;:::-;10118:74;;10201:93;10290:3;10201:93;:::i;:::-;10319:2;10314:3;10310:12;10303:19;;10108:220;;;:::o;10334:366::-;10476:3;10497:67;10561:2;10556:3;10497:67;:::i;:::-;10490:74;;10573:93;10662:3;10573:93;:::i;:::-;10691:2;10686:3;10682:12;10675:19;;10480:220;;;:::o;10706:366::-;10848:3;10869:67;10933:2;10928:3;10869:67;:::i;:::-;10862:74;;10945:93;11034:3;10945:93;:::i;:::-;11063:2;11058:3;11054:12;11047:19;;10852:220;;;:::o;11078:118::-;11165:24;11183:5;11165:24;:::i;:::-;11160:3;11153:37;11143:53;;:::o;11202:112::-;11285:22;11301:5;11285:22;:::i;:::-;11280:3;11273:35;11263:51;;:::o;11320:222::-;11413:4;11451:2;11440:9;11436:18;11428:26;;11464:71;11532:1;11521:9;11517:17;11508:6;11464:71;:::i;:::-;11418:124;;;;:::o;11548:332::-;11669:4;11707:2;11696:9;11692:18;11684:26;;11720:71;11788:1;11777:9;11773:17;11764:6;11720:71;:::i;:::-;11801:72;11869:2;11858:9;11854:18;11845:6;11801:72;:::i;:::-;11674:206;;;;;:::o;11886:442::-;12035:4;12073:2;12062:9;12058:18;12050:26;;12086:71;12154:1;12143:9;12139:17;12130:6;12086:71;:::i;:::-;12167:72;12235:2;12224:9;12220:18;12211:6;12167:72;:::i;:::-;12249;12317:2;12306:9;12302:18;12293:6;12249:72;:::i;:::-;12040:288;;;;;;:::o;12334:797::-;12578:4;12616:3;12605:9;12601:19;12593:27;;12630:71;12698:1;12687:9;12683:17;12674:6;12630:71;:::i;:::-;12711:83;12790:2;12779:9;12775:18;12766:6;12711:83;:::i;:::-;12804:72;12872:2;12861:9;12857:18;12848:6;12804:72;:::i;:::-;12886;12954:2;12943:9;12939:18;12930:6;12886:72;:::i;:::-;12968:73;13036:3;13025:9;13021:19;13012:6;12968:73;:::i;:::-;13051;13119:3;13108:9;13104:19;13095:6;13051:73;:::i;:::-;12583:548;;;;;;;;;:::o;13137:332::-;13258:4;13296:2;13285:9;13281:18;13273:26;;13309:71;13377:1;13366:9;13362:17;13353:6;13309:71;:::i;:::-;13390:72;13458:2;13447:9;13443:18;13434:6;13390:72;:::i;:::-;13263:206;;;;;:::o;13475:807::-;13724:4;13762:3;13751:9;13747:19;13739:27;;13776:71;13844:1;13833:9;13829:17;13820:6;13776:71;:::i;:::-;13857:72;13925:2;13914:9;13910:18;13901:6;13857:72;:::i;:::-;13939:80;14015:2;14004:9;14000:18;13991:6;13939:80;:::i;:::-;14029;14105:2;14094:9;14090:18;14081:6;14029:80;:::i;:::-;14119:73;14187:3;14176:9;14172:19;14163:6;14119:73;:::i;:::-;14202;14270:3;14259:9;14255:19;14246:6;14202:73;:::i;:::-;13729:553;;;;;;;;;:::o;14288:210::-;14375:4;14413:2;14402:9;14398:18;14390:26;;14426:65;14488:1;14477:9;14473:17;14464:6;14426:65;:::i;:::-;14380:118;;;;:::o;14504:313::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14704:9;14698:4;14694:20;14690:1;14679:9;14675:17;14668:47;14732:78;14805:4;14796:6;14732:78;:::i;:::-;14724:86;;14622:195;;;;:::o;14823:419::-;14989:4;15027:2;15016:9;15012:18;15004:26;;15076:9;15070:4;15066:20;15062:1;15051:9;15047:17;15040:47;15104:131;15230:4;15104:131;:::i;:::-;15096:139;;14994:248;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15419:248;;;:::o;15673:419::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15926:9;15920:4;15916:20;15912:1;15901:9;15897:17;15890:47;15954:131;16080:4;15954:131;:::i;:::-;15946:139;;15844:248;;;:::o;16098:419::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16269:248;;;:::o;16523:419::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16776:9;16770:4;16766:20;16762:1;16751:9;16747:17;16740:47;16804:131;16930:4;16804:131;:::i;:::-;16796:139;;16694:248;;;:::o;16948:419::-;17114:4;17152:2;17141:9;17137:18;17129:26;;17201:9;17195:4;17191:20;17187:1;17176:9;17172:17;17165:47;17229:131;17355:4;17229:131;:::i;:::-;17221:139;;17119:248;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17544:248;;;:::o;17798:419::-;17964:4;18002:2;17991:9;17987:18;17979:26;;18051:9;18045:4;18041:20;18037:1;18026:9;18022:17;18015:47;18079:131;18205:4;18079:131;:::i;:::-;18071:139;;17969:248;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18394:248;;;:::o;18648:419::-;18814:4;18852:2;18841:9;18837:18;18829:26;;18901:9;18895:4;18891:20;18887:1;18876:9;18872:17;18865:47;18929:131;19055:4;18929:131;:::i;:::-;18921:139;;18819:248;;;:::o;19073:419::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19244:248;;;:::o;19498:222::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19642:71;19710:1;19699:9;19695:17;19686:6;19642:71;:::i;:::-;19596:124;;;;:::o;19726:831::-;19989:4;20027:3;20016:9;20012:19;20004:27;;20041:71;20109:1;20098:9;20094:17;20085:6;20041:71;:::i;:::-;20122:80;20198:2;20187:9;20183:18;20174:6;20122:80;:::i;:::-;20249:9;20243:4;20239:20;20234:2;20223:9;20219:18;20212:48;20277:108;20380:4;20371:6;20277:108;:::i;:::-;20269:116;;20395:72;20463:2;20452:9;20448:18;20439:6;20395:72;:::i;:::-;20477:73;20545:3;20534:9;20530:19;20521:6;20477:73;:::i;:::-;19994:563;;;;;;;;:::o;20563:214::-;20652:4;20690:2;20679:9;20675:18;20667:26;;20703:67;20767:1;20756:9;20752:17;20743:6;20703:67;:::i;:::-;20657:120;;;;:::o;20783:132::-;20850:4;20873:3;20865:11;;20903:4;20898:3;20894:14;20886:22;;20855:60;;;:::o;20921:114::-;20988:6;21022:5;21016:12;21006:22;;20995:40;;;:::o;21041:99::-;21093:6;21127:5;21121:12;21111:22;;21100:40;;;:::o;21146:113::-;21216:4;21248;21243:3;21239:14;21231:22;;21221:38;;;:::o;21265:184::-;21364:11;21398:6;21393:3;21386:19;21438:4;21433:3;21429:14;21414:29;;21376:73;;;;:::o;21455:169::-;21539:11;21573:6;21568:3;21561:19;21613:4;21608:3;21604:14;21589:29;;21551:73;;;;:::o;21630:305::-;21670:3;21689:20;21707:1;21689:20;:::i;:::-;21684:25;;21723:20;21741:1;21723:20;:::i;:::-;21718:25;;21877:1;21809:66;21805:74;21802:1;21799:81;21796:2;;;21883:18;;:::i;:::-;21796:2;21927:1;21924;21920:9;21913:16;;21674:261;;;;:::o;21941:185::-;21981:1;21998:20;22016:1;21998:20;:::i;:::-;21993:25;;22032:20;22050:1;22032:20;:::i;:::-;22027:25;;22071:1;22061:2;;22076:18;;:::i;:::-;22061:2;22118:1;22115;22111:9;22106:14;;21983:143;;;;:::o;22132:348::-;22172:7;22195:20;22213:1;22195:20;:::i;:::-;22190:25;;22229:20;22247:1;22229:20;:::i;:::-;22224:25;;22417:1;22349:66;22345:74;22342:1;22339:81;22334:1;22327:9;22320:17;22316:105;22313:2;;;22424:18;;:::i;:::-;22313:2;22472:1;22469;22465:9;22454:20;;22180:300;;;;:::o;22486:191::-;22526:4;22546:20;22564:1;22546:20;:::i;:::-;22541:25;;22580:20;22598:1;22580:20;:::i;:::-;22575:25;;22619:1;22616;22613:8;22610:2;;;22624:18;;:::i;:::-;22610:2;22669:1;22666;22662:9;22654:17;;22531:146;;;;:::o;22683:96::-;22720:7;22749:24;22767:5;22749:24;:::i;:::-;22738:35;;22728:51;;;:::o;22785:104::-;22830:7;22859:24;22877:5;22859:24;:::i;:::-;22848:35;;22838:51;;;:::o;22895:90::-;22929:7;22972:5;22965:13;22958:21;22947:32;;22937:48;;;:::o;22991:126::-;23028:7;23068:42;23061:5;23057:54;23046:65;;23036:81;;;:::o;23123:77::-;23160:7;23189:5;23178:16;;23168:32;;;:::o;23206:86::-;23241:7;23281:4;23274:5;23270:16;23259:27;;23249:43;;;:::o;23298:121::-;23356:9;23389:24;23407:5;23389:24;:::i;:::-;23376:37;;23366:53;;;:::o;23425:124::-;23486:9;23519:24;23537:5;23519:24;:::i;:::-;23506:37;;23496:53;;;:::o;23555:307::-;23623:1;23633:113;23647:6;23644:1;23641:13;23633:113;;;23732:1;23727:3;23723:11;23717:18;23713:1;23708:3;23704:11;23697:39;23669:2;23666:1;23662:10;23657:15;;23633:113;;;23764:6;23761:1;23758:13;23755:2;;;23844:1;23835:6;23830:3;23826:16;23819:27;23755:2;23604:258;;;;:::o;23868:320::-;23912:6;23949:1;23943:4;23939:12;23929:22;;23996:1;23990:4;23986:12;24017:18;24007:2;;24073:4;24065:6;24061:17;24051:27;;24007:2;24135;24127:6;24124:14;24104:18;24101:38;24098:2;;;24154:18;;:::i;:::-;24098:2;23919:269;;;;:::o;24194:233::-;24233:3;24256:24;24274:5;24256:24;:::i;:::-;24247:33;;24302:66;24295:5;24292:77;24289:2;;;24372:18;;:::i;:::-;24289:2;24419:1;24412:5;24408:13;24401:20;;24237:190;;;:::o;24433:180::-;24481:77;24478:1;24471:88;24578:4;24575:1;24568:15;24602:4;24599:1;24592:15;24619:180;24667:77;24664:1;24657:88;24764:4;24761:1;24754:15;24788:4;24785:1;24778:15;24805:180;24853:77;24850:1;24843:88;24950:4;24947:1;24940:15;24974:4;24971:1;24964:15;24991:102;25032:6;25083:2;25079:7;25074:2;25067:5;25063:14;25059:28;25049:38;;25039:54;;;:::o;25099:222::-;25239:34;25235:1;25227:6;25223:14;25216:58;25308:5;25303:2;25295:6;25291:15;25284:30;25205:116;:::o;25327:174::-;25467:26;25463:1;25455:6;25451:14;25444:50;25433:68;:::o;25507:162::-;25647:14;25643:1;25635:6;25631:14;25624:38;25613:56;:::o;25675:221::-;25815:34;25811:1;25803:6;25799:14;25792:58;25884:4;25879:2;25871:6;25867:15;25860:29;25781:115;:::o;25902:177::-;26042:29;26038:1;26030:6;26026:14;26019:53;26008:71;:::o;26085:220::-;26225:34;26221:1;26213:6;26209:14;26202:58;26294:3;26289:2;26281:6;26277:15;26270:28;26191:114;:::o;26311:182::-;26451:34;26447:1;26439:6;26435:14;26428:58;26417:76;:::o;26499:228::-;26639:34;26635:1;26627:6;26623:14;26616:58;26708:11;26703:2;26695:6;26691:15;26684:36;26605:122;:::o;26733:224::-;26873:34;26869:1;26861:6;26857:14;26850:58;26942:7;26937:2;26929:6;26925:15;26918:32;26839:118;:::o;26963:223::-;27103:34;27099:1;27091:6;27087:14;27080:58;27172:6;27167:2;27159:6;27155:15;27148:31;27069:117;:::o;27192:225::-;27332:34;27328:1;27320:6;27316:14;27309:58;27401:8;27396:2;27388:6;27384:15;27377:33;27298:119;:::o;27423:122::-;27496:24;27514:5;27496:24;:::i;:::-;27489:5;27486:35;27476:2;;27535:1;27532;27525:12;27476:2;27466:79;:::o;27551:138::-;27632:32;27658:5;27632:32;:::i;:::-;27625:5;27622:43;27612:2;;27679:1;27676;27669:12;27612:2;27602:87;:::o;27695:116::-;27765:21;27780:5;27765:21;:::i;:::-;27758:5;27755:32;27745:2;;27801:1;27798;27791:12;27745:2;27735:76;:::o;27817:122::-;27890:24;27908:5;27890:24;:::i;:::-;27883:5;27880:35;27870:2;;27929:1;27926;27919:12;27870:2;27860:79;:::o
Swarm Source
ipfs://e4fe3853c022115a539a50da137eef1aae2377666464f859959f567e37336598
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.