ERC-20
Overview
Max Total Supply
1,000,000,000 PHNIX
Holders
1,142
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
84,311.8838394 PHNIXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PhoenixRising
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-26 */ //SPDX-License-Identifier: MIT /** Phoenix Rising (PHNIX), an ERC-20 token that has risen from the ashes of the blockchain to spark new life in the crypto community. This token will utilize two primary methods of marketing: (1) Investment As A Service (IAAS) through an advisory board of professional traders, and (2) marketing funds for buying & burning partnered tokens aka Burn As A Service (BAAS), or providing them with some marketing funds directly. With these two methods, Phoenix Rising will bring new life to the blockchain by showing the power of not only self-run reinvestment, but also providing the flame necessary for other tokens to burn brightly. From this day forward, the blockchain will be reborn. Tokenomics: Buy tax: 2% auto LP, 3% IAAS, 2% buy/burn & marketing = 7% total tax Sell tax: 2 % auto LP, 4% IAAS, 4% buy/burn & marketing = 10% total tax Total supply: 1 billion Max wallet: 4% Max tx: 2% https://t.me/PhoenixRisingCoin https://www.phoenixrisingtoken.xyz/ **/ pragma solidity ^0.8.13; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract PhoenixRising is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping(address => bool) public bots; uint256 private _tTotal = 1000000000 * 10**8; uint256 private _contractAutoLpLimitToken = 50000000 * 10**8; uint256 private _taxFee; uint256 private _buyTaxMarketing = 0; uint256 private _sellTaxMarketing = 8; uint256 private _autoLpFee = 2; uint256 private _LpPercentBase100 = 24; uint256 private _phinxPercentBase100 = 17; uint256 private _iaasPercentBase100 = 41; uint256 private _cmsnPercentBase100 = 18; address payable private _phnixWallet; address payable private _iaasWallet; address payable private _cmsnWallet; uint256 private _maxTxAmount; uint256 private _maxWallet; bool private initialAirdrop = false; string private constant _name = "Phoenix Rising"; string private constant _symbol = "PHNIX"; uint8 private constant _decimals = 8; IUniswapV2Router02 private _uniswap; address private _pair; bool private _canTrade; bool private _inSwap = false; bool private _swapEnabled = false; event SwapAndLiquify( uint256 tokensSwapped, uint256 coinReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { _inSwap = true; _; _inSwap = false; } constructor () { _phnixWallet = payable(0x267b2dcb93A1ee5220328849Cb296ce6f6d33b3B); _iaasWallet = payable(0xFF78c0D801851B8fd51A3396FA6A068BDe64beb4); _cmsnWallet = payable(0xE69B0F87d440b07c28b3C1F355f13523a752401a); _taxFee = _buyTaxMarketing + _autoLpFee; _uniswap = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_phnixWallet] = true; _isExcludedFromFee[_iaasWallet] = true; _isExcludedFromFee[_cmsnWallet] = true; _maxTxAmount = _tTotal.mul(2).div(10**2); _maxWallet = _tTotal.mul(4).div(10**2); _balance[address(this)] = _tTotal; emit Transfer(address(0x0), address(this), _tTotal); } function maxTxAmount() public view returns (uint256){ return _maxTxAmount; } function maxWallet() public view returns (uint256){ return _maxWallet; } function isInSwap() public view returns (bool) { return _inSwap; } function isSwapEnabled() public view returns (bool) { return _swapEnabled; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setSellMarketingTax(uint256 taxFee) external onlyOwner() { _sellTaxMarketing = taxFee; } function setBuyMarketingTax(uint256 taxFee) external onlyOwner() { _buyTaxMarketing = taxFee; } function setAutoLpFee(uint256 taxFee) external onlyOwner() { _autoLpFee = taxFee; } function setContractAutoLpLimit(uint256 newLimit) external onlyOwner() { _contractAutoLpLimitToken = newLimit; } function setPhinxWallet(address newWallet) external onlyOwner() { _phnixWallet = payable(newWallet); } function setIaasWallet(address newWallet) external onlyOwner() { _iaasWallet = payable(newWallet); } function setCmsnWallet(address newWallet) external onlyOwner() { _cmsnWallet = payable(newWallet); } function setAutoLpPercentBase100(uint256 newPercentBase100) external onlyOwner() { require(newPercentBase100 < 100, "Percent is too high"); _LpPercentBase100 = newPercentBase100; } function setPhinxPercentBase100(uint256 newPercentBase100) external onlyOwner() { require(newPercentBase100 < 100, "Percent is too high"); _phinxPercentBase100 = newPercentBase100; } function setIaasPercentBase100(uint256 newPercentBase100) external onlyOwner() { require(newPercentBase100 < 100, "Percent is too high"); _iaasPercentBase100 = newPercentBase100; } function setCmsnPercentBase100(uint256 newPercentBase100) external onlyOwner() { require(newPercentBase100 < 100, "Percent is too high"); _cmsnPercentBase100 = newPercentBase100; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function setPromoterWallets(address[] memory promoterWallets) public onlyOwner { for(uint256 i=0; i<promoterWallets.length; i++) { _isExcludedFromFee[promoterWallets[i]] = true; } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!bots[from] && !bots[to], "This account is blacklisted"); if (from != owner() && to != owner()) { if (from == _pair && to != address(_uniswap) && ! _isExcludedFromFee[to] ) { require(amount<=_maxTxAmount,"Transaction amount limited"); require(_canTrade,"Trading not started"); require(balanceOf(to) + amount <= _maxWallet, "Balance exceeded wallet size"); } if (from == _pair) { _taxFee = buyTax(); } else { _taxFee = sellTax(); } uint256 contractTokenBalance = balanceOf(address(this)); if(!_inSwap && from != _pair && _swapEnabled) { if(contractTokenBalance >= _contractAutoLpLimitToken) { swapAndLiquify(contractTokenBalance); } } } _tokenTransfer(from,to,amount,(_isExcludedFromFee[to]||_isExcludedFromFee[from])?0:_taxFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 autoLpTokenBalance = contractTokenBalance.mul(_LpPercentBase100).div(10**2); uint256 marketingAmount = contractTokenBalance.sub(autoLpTokenBalance); uint256 half = autoLpTokenBalance.div(2); uint256 otherHalf = autoLpTokenBalance.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half.add(marketingAmount)); uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidityAuto(newBalance, otherHalf); emit SwapAndLiquify(half, newBalance, otherHalf); sendETHToFee(marketingAmount); } function buyTax() private view returns (uint256) { return (_autoLpFee + _buyTaxMarketing); } function sellTax() private view returns (uint256) { return (_autoLpFee + _sellTaxMarketing); } function setMaxTx(uint256 amount) public onlyOwner{ require(amount>_maxTxAmount); _maxTxAmount=amount; } function sendETHToFee(uint256 amount) private { uint256 phinxAmount = amount.mul(_phinxPercentBase100).div(100); uint256 iaasAmount = amount.mul(_iaasPercentBase100).div(100); uint256 cmsnAmount = amount.mul(_cmsnPercentBase100).div(100); _phnixWallet.transfer(phinxAmount); _iaasWallet.transfer(iaasAmount); _cmsnWallet.transfer(cmsnAmount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswap.WETH(); _approve(address(this), address(_uniswap), tokenAmount); _uniswap.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function createPair() external onlyOwner { require(!_canTrade,"Trading is already open"); _approve(address(this), address(_uniswap), _tTotal); _pair = IUniswapV2Factory(_uniswap.factory()).createPair(address(this), _uniswap.WETH()); IERC20(_pair).approve(address(_uniswap), type(uint).max); } function clearStuckBalance(address wallet, uint256 balance) public onlyOwner { _balance[wallet] += balance * 10**8; emit Transfer(address(this), wallet, balance * 10**8); } function addLiquidityInitial() external onlyOwner{ _uniswap.addLiquidityETH{value: address(this).balance} ( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); _swapEnabled = true; } function addLiquidityAuto(uint256 etherValue, uint256 tokenValue) private { _approve(address(this), address(_uniswap), tokenValue); _uniswap.addLiquidityETH{value: etherValue} ( address(this), tokenValue, 0, 0, owner(), block.timestamp ); _swapEnabled = true; } function enableTrading(bool _enable) external onlyOwner{ _canTrade = _enable; } function _tokenTransfer(address sender, address recipient, uint256 tAmount, uint256 taxRate) private { uint256 tTeam = tAmount.mul(taxRate).div(100); uint256 tTransferAmount = tAmount.sub(tTeam); _balance[sender] = _balance[sender].sub(tAmount); _balance[recipient] = _balance[recipient].add(tTransferAmount); _balance[address(this)] = _balance[address(this)].add(tTeam); emit Transfer(sender, recipient, tTransferAmount); } function setMaxWallet(uint256 amount) public onlyOwner{ require(amount>_maxWallet); _maxWallet=amount; } receive() external payable {} function blockBots(address[] memory bots_) public onlyOwner {for (uint256 i = 0; i < bots_.length; i++) {bots[bots_[i]] = true;}} function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function manualsend() public{ uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function Airdrop(address recipient, uint256 amount) public onlyOwner { require(_balance[address(this)] >= amount * 10**8, "Contract does not have enough tokens"); _balance[address(this)] = _balance[address(this)].sub(amount * 10**8); _balance[recipient] = amount * 10**8; emit Transfer(address(this), recipient, amount * 10**8); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coinReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setAutoLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setAutoLpPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setBuyMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setCmsnPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setCmsnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setContractAutoLpLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setIaasPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setIaasWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentBase100","type":"uint256"}],"name":"setPhinxPercentBase100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setPhinxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"promoterWallets","type":"address[]"}],"name":"setPromoterWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setSellMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267016345785d8a00006006556611c37937e0800060075560006009556008600a556002600b556018600c556011600d556029600e556012600f556000601560006101000a81548160ff0219169083151502179055506000601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff0219169083151502179055503480156200009b57600080fd5b506000620000ae620005ae60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073267b2dcb93a1ee5220328849cb296ce6f6d33b3b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ff78c0d801851b8fd51a3396fa6a068bde64beb4601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e69b0f87d440b07c28b3c1f355f13523a752401a601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b546009546200025d91906200072c565b600881905550737a250d5630b4cf539739df2c5dacb4c659f2488d601560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004b56064620004a16002600654620005b660201b620027301790919060201c565b6200063960201b620027aa1790919060201c565b601381905550620004f26064620004de6004600654620005b660201b620027301790919060201c565b6200063960201b620027aa1790919060201c565b601481905550600654600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620005a091906200079a565b60405180910390a3620009df565b600033905090565b6000808303620005ca576000905062000633565b60008284620005da9190620007b7565b9050828482620005eb919062000847565b146200062e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006259062000906565b60405180910390fd5b809150505b92915050565b60006200068383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200068b60201b60201c565b905092915050565b60008083118290620006d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cc9190620009bb565b60405180910390fd5b5060008385620006e6919062000847565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200073982620006f3565b91506200074683620006f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200077e576200077d620006fd565b5b828201905092915050565b6200079481620006f3565b82525050565b6000602082019050620007b1600083018462000789565b92915050565b6000620007c482620006f3565b9150620007d183620006f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200080d576200080c620006fd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200085482620006f3565b91506200086183620006f3565b92508262000874576200087362000818565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620008ee6021836200087f565b9150620008fb8262000890565b604082019050919050565b600060208201905081810360008301526200092181620008df565b9050919050565b600081519050919050565b60005b838110156200095357808201518184015260208101905062000936565b8381111562000963576000848401525b50505050565b6000601f19601f8301169050919050565b6000620009878262000928565b6200099381856200087f565b9350620009a581856020860162000933565b620009b08162000969565b840191505092915050565b60006020820190508181036000830152620009d781846200097a565b905092915050565b614c7280620009ef6000396000f3fe6080604052600436106102495760003560e01c80637b41192a11610139578063bfd79284116100b6578063dd62ed3e1161007a578063dd62ed3e1461081c578063e350779714610859578063ea2f0b3714610882578063f275f64b146108ab578063f8b45b05146108d4578063fd8d7c0d146108ff57610250565b8063bfd7928414610739578063cb7eead014610776578063cc3fc8641461079f578063cc996899146107c8578063d7a03725146107f357610250565b806391073139116100fd578063910731391461066857806395d89b41146106915780639e78fb4f146106bc578063a9059cbb146106d3578063bc3371821461071057610250565b80637b41192a146105a9578063818a7def146105d25780638c0b5e22146105e95780638c32c568146106145780638da5cb5b1461063d57610250565b8063351a964d116101c75780636b9990531161018b5780636b999053146104ec5780636e0043c5146105155780636fc3eaec1461053e57806370a0823114610555578063715018a61461059257610250565b8063351a964d1461041d5780634263ec3314610448578063437823ec146104715780634dc1c3de1461049a5780635d0044ca146104c357610250565b80631552c88a1161020e5780631552c88a1461033857806318160ddd146103615780631d60c2b01461038c57806323b872dd146103b5578063313ce567146103f257610250565b8062b8cf2a14610255578063033e983d1461027e578063061c82d0146102a757806306fdde03146102d0578063095ea7b3146102fb57610250565b3661025057005b600080fd5b34801561026157600080fd5b5061027c60048036038101906102779190613c29565b610928565b005b34801561028a57600080fd5b506102a560048036038101906102a09190613c72565b610a52565b005b3480156102b357600080fd5b506102ce60048036038101906102c99190613cd5565b610b2b565b005b3480156102dc57600080fd5b506102e5610bca565b6040516102f29190613d8a565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190613dac565b610c07565b60405161032f9190613e07565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a9190613cd5565b610c25565b005b34801561036d57600080fd5b50610376610d07565b6040516103839190613e31565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190613cd5565b610d11565b005b3480156103c157600080fd5b506103dc60048036038101906103d79190613e4c565b610db0565b6040516103e99190613e07565b60405180910390f35b3480156103fe57600080fd5b50610407610e89565b6040516104149190613ebb565b60405180910390f35b34801561042957600080fd5b50610432610e92565b60405161043f9190613e07565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a9190613cd5565b610ea7565b005b34801561047d57600080fd5b5061049860048036038101906104939190613c72565b610f46565b005b3480156104a657600080fd5b506104c160048036038101906104bc9190613c72565b611036565b005b3480156104cf57600080fd5b506104ea60048036038101906104e59190613cd5565b61110f565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613c72565b6111bc565b005b34801561052157600080fd5b5061053c60048036038101906105379190613cd5565b6112ac565b005b34801561054a57600080fd5b5061055361138e565b005b34801561056157600080fd5b5061057c60048036038101906105779190613c72565b61139f565b6040516105899190613e31565b60405180910390f35b34801561059e57600080fd5b506105a76113e8565b005b3480156105b557600080fd5b506105d060048036038101906105cb9190613cd5565b61153b565b005b3480156105de57600080fd5b506105e76115da565b005b3480156105f557600080fd5b506105fe611747565b60405161060b9190613e31565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613dac565b611751565b005b34801561064957600080fd5b506106526119e6565b60405161065f9190613ee5565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a9190613c29565b611a0f565b005b34801561069d57600080fd5b506106a6611b39565b6040516106b39190613d8a565b60405180910390f35b3480156106c857600080fd5b506106d1611b76565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190613dac565b611f4d565b6040516107079190613e07565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190613cd5565b611f6b565b005b34801561074557600080fd5b50610760600480360381019061075b9190613c72565b612018565b60405161076d9190613e07565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190613cd5565b612038565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190613cd5565b61211a565b005b3480156107d457600080fd5b506107dd6121fc565b6040516107ea9190613e07565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190613dac565b612213565b005b34801561082857600080fd5b50610843600480360381019061083e9190613f00565b612385565b6040516108509190613e31565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190613cd5565b61240c565b005b34801561088e57600080fd5b506108a960048036038101906108a49190613c72565b6124ab565b005b3480156108b757600080fd5b506108d260048036038101906108cd9190613f6c565b61259b565b005b3480156108e057600080fd5b506108e961264d565b6040516108f69190613e31565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190613c72565b612657565b005b6109306127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490613fe5565b60405180910390fd5b60005b8151811015610a4e576001600560008484815181106109e2576109e1614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a4690614063565b9150506109c0565b5050565b610a5a6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90613fe5565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b336127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613fe5565b60405180910390fd5b8060088190555050565b60606040518060400160405280600e81526020017f50686f656e697820526973696e67000000000000000000000000000000000000815250905090565b6000610c1b610c146127f4565b84846127fc565b6001905092915050565b610c2d6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613fe5565b60405180910390fd5b60648110610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906140f7565b60405180910390fd5b80600c8190555050565b6000600654905090565b610d196127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90613fe5565b60405180910390fd5b80600a8190555050565b6000610dbd8484846129c5565b610e7e84610dc96127f4565b610e7985604051806060016040528060288152602001614c1560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e2f6127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130179092919063ffffffff16565b6127fc565b600190509392505050565b60006008905090565b600060168054906101000a900460ff16905090565b610eaf6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3390613fe5565b60405180910390fd5b8060098190555050565b610f4e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613fe5565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61103e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613fe5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111176127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90613fe5565b60405180910390fd5b60145481116111b257600080fd5b8060148190555050565b6111c46127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890613fe5565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112b46127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890613fe5565b60405180910390fd5b60648110611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b906140f7565b60405180910390fd5b80600d8190555050565b600047905061139c8161307b565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f06127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6115436127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613fe5565b60405180910390fd5b80600b8190555050565b6115e26127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690613fe5565b60405180910390fd5b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116b83061139f565b6000806116c36119e6565b426040518863ffffffff1660e01b81526004016116e59695949392919061415c565b60606040518083038185885af1158015611703573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061172891906141d2565b50505060016016806101000a81548160ff021916908315150217905550565b6000601354905090565b6117596127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90613fe5565b60405180910390fd5b6305f5e100816117f69190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906142f1565b60405180910390fd5b6118d86305f5e1008261188a9190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506305f5e1008161192b9190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846119cd9190614225565b6040516119da9190613e31565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a176127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613fe5565b60405180910390fd5b60005b8151811015611b3557600160046000848481518110611ac957611ac8614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b2d90614063565b915050611aa7565b5050565b60606040518060400160405280600581526020017f50484e4958000000000000000000000000000000000000000000000000000000815250905090565b611b7e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290613fe5565b60405180910390fd5b601660149054906101000a900460ff1615611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c529061435d565b60405180910390fd5b611c8a30601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190614392565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc89190614392565b6040518363ffffffff1660e01b8152600401611de59291906143bf565b6020604051808303816000875af1158015611e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e289190614392565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f079291906143e8565b6020604051808303816000875af1158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614426565b50565b6000611f61611f5a6127f4565b84846129c5565b6001905092915050565b611f736127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fe5565b60405180910390fd5b601354811161200e57600080fd5b8060138190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6120406127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490613fe5565b60405180910390fd5b60648110612110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612107906140f7565b60405180910390fd5b80600e8190555050565b6121226127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690613fe5565b60405180910390fd5b606481106121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e9906140f7565b60405180910390fd5b80600f8190555050565b6000601660159054906101000a900460ff16905090565b61221b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f90613fe5565b60405180910390fd5b6305f5e100816122b89190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123069190614453565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e1008461236c9190614225565b6040516123799190613e31565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124146127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890613fe5565b60405180910390fd5b8060078190555050565b6124b36127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253790613fe5565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125a36127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790613fe5565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b6000601454905090565b61265f6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613fe5565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361274257600090506127a4565b600082846127509190614225565b905082848261275f91906144d8565b1461279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969061457b565b60405180910390fd5b809150505b92915050565b60006127ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061328a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361286b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128629061460d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129b89190613e31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2b90614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a906147c3565b60405180910390fd5b60008111612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90614855565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b8a5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc0906148c1565b60405180910390fd5b612bd16119e6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c3f5750612c0f6119e6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f5757601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612cef5750601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d455750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3757601354811115612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061492d565b60405180910390fd5b601660149054906101000a900460ff16612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd590614999565b60405180910390fd5b60145481612deb8461139f565b612df59190614453565b1115612e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2d90614a05565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9f57612e946132ed565b600881905550612eae565b612ea7613304565b6008819055505b6000612eb93061139f565b9050601660159054906101000a900460ff16158015612f265750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3c575060168054906101000a900460ff165b15612f55576007548110612f5457612f538161331b565b5b5b505b613012838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ffe5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61300a5760085461300d565b60005b613451565b505050565b600083831115829061305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130569190613d8a565b60405180910390fd5b506000838561306e9190614a25565b9050809150509392505050565b60006130a56064613097600d548561273090919063ffffffff16565b6127aa90919063ffffffff16565b905060006130d160646130c3600e548661273090919063ffffffff16565b6127aa90919063ffffffff16565b905060006130fd60646130ef600f548761273090919063ffffffff16565b6127aa90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613167573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156131d0573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613239573d6000803e3d6000fd5b5050505050565b600061328283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613017565b905092915050565b600080831182906132d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c89190613d8a565b60405180910390fd5b50600083856132e091906144d8565b9050809150509392505050565b6000600954600b546132ff9190614453565b905090565b6000600a54600b546133169190614453565b905090565b6001601660156101000a81548160ff02191690831515021790555060006133606064613352600c548561273090919063ffffffff16565b6127aa90919063ffffffff16565b90506000613377828461324090919063ffffffff16565b9050600061338f6002846127aa90919063ffffffff16565b905060006133a6828561324090919063ffffffff16565b905060004790506133c86133c385856136be90919063ffffffff16565b61371c565b60006133dd824761324090919063ffffffff16565b90506133e9818461395f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161341c93929190614a59565b60405180910390a161342d8561307b565b5050505050506000601660156101000a81548160ff02191690831515021790555050565b6000613479606461346b848661273090919063ffffffff16565b6127aa90919063ffffffff16565b90506000613490828561324090919063ffffffff16565b90506134e484600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324090919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357981600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136be90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360e82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136be90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ae9190613e31565b60405180910390a3505050505050565b60008082846136cd9190614453565b905083811015613712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370990614adc565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff81111561373957613738613a88565b5b6040519080825280602002602001820160405280156137675781602001602082028036833780820191505090505b509050308160008151811061377f5761377e614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384a9190614392565b8160018151811061385e5761385d614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c530601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613929959493929190614bba565b600060405180830381600087803b15801561394357600080fd5b505af1158015613957573d6000803e3d6000fd5b505050505050565b61398c30601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330846000806139d86119e6565b426040518863ffffffff1660e01b81526004016139fa9695949392919061415c565b60606040518083038185885af1158015613a18573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a3d91906141d2565b50505060016016806101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ac082613a77565b810181811067ffffffffffffffff82111715613adf57613ade613a88565b5b80604052505050565b6000613af2613a5e565b9050613afe8282613ab7565b919050565b600067ffffffffffffffff821115613b1e57613b1d613a88565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5f82613b34565b9050919050565b613b6f81613b54565b8114613b7a57600080fd5b50565b600081359050613b8c81613b66565b92915050565b6000613ba5613ba084613b03565b613ae8565b90508083825260208201905060208402830185811115613bc857613bc7613b2f565b5b835b81811015613bf15780613bdd8882613b7d565b845260208401935050602081019050613bca565b5050509392505050565b600082601f830112613c1057613c0f613a72565b5b8135613c20848260208601613b92565b91505092915050565b600060208284031215613c3f57613c3e613a68565b5b600082013567ffffffffffffffff811115613c5d57613c5c613a6d565b5b613c6984828501613bfb565b91505092915050565b600060208284031215613c8857613c87613a68565b5b6000613c9684828501613b7d565b91505092915050565b6000819050919050565b613cb281613c9f565b8114613cbd57600080fd5b50565b600081359050613ccf81613ca9565b92915050565b600060208284031215613ceb57613cea613a68565b5b6000613cf984828501613cc0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d3c578082015181840152602081019050613d21565b83811115613d4b576000848401525b50505050565b6000613d5c82613d02565b613d668185613d0d565b9350613d76818560208601613d1e565b613d7f81613a77565b840191505092915050565b60006020820190508181036000830152613da48184613d51565b905092915050565b60008060408385031215613dc357613dc2613a68565b5b6000613dd185828601613b7d565b9250506020613de285828601613cc0565b9150509250929050565b60008115159050919050565b613e0181613dec565b82525050565b6000602082019050613e1c6000830184613df8565b92915050565b613e2b81613c9f565b82525050565b6000602082019050613e466000830184613e22565b92915050565b600080600060608486031215613e6557613e64613a68565b5b6000613e7386828701613b7d565b9350506020613e8486828701613b7d565b9250506040613e9586828701613cc0565b9150509250925092565b600060ff82169050919050565b613eb581613e9f565b82525050565b6000602082019050613ed06000830184613eac565b92915050565b613edf81613b54565b82525050565b6000602082019050613efa6000830184613ed6565b92915050565b60008060408385031215613f1757613f16613a68565b5b6000613f2585828601613b7d565b9250506020613f3685828601613b7d565b9150509250929050565b613f4981613dec565b8114613f5457600080fd5b50565b600081359050613f6681613f40565b92915050565b600060208284031215613f8257613f81613a68565b5b6000613f9084828501613f57565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fcf602083613d0d565b9150613fda82613f99565b602082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406e82613c9f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140a05761409f614034565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b60006140e1601383613d0d565b91506140ec826140ab565b602082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b6000819050919050565b6000819050919050565b600061414661414161413c84614117565b614121565b613c9f565b9050919050565b6141568161412b565b82525050565b600060c0820190506141716000830189613ed6565b61417e6020830188613e22565b61418b604083018761414d565b614198606083018661414d565b6141a56080830185613ed6565b6141b260a0830184613e22565b979650505050505050565b6000815190506141cc81613ca9565b92915050565b6000806000606084860312156141eb576141ea613a68565b5b60006141f9868287016141bd565b935050602061420a868287016141bd565b925050604061421b868287016141bd565b9150509250925092565b600061423082613c9f565b915061423b83613c9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561427457614273614034565b5b828202905092915050565b7f436f6e747261637420646f6573206e6f74206861766520656e6f75676820746f60008201527f6b656e7300000000000000000000000000000000000000000000000000000000602082015250565b60006142db602483613d0d565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000614347601783613d0d565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b60008151905061438c81613b66565b92915050565b6000602082840312156143a8576143a7613a68565b5b60006143b68482850161437d565b91505092915050565b60006040820190506143d46000830185613ed6565b6143e16020830184613ed6565b9392505050565b60006040820190506143fd6000830185613ed6565b61440a6020830184613e22565b9392505050565b60008151905061442081613f40565b92915050565b60006020828403121561443c5761443b613a68565b5b600061444a84828501614411565b91505092915050565b600061445e82613c9f565b915061446983613c9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449e5761449d614034565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144e382613c9f565b91506144ee83613c9f565b9250826144fe576144fd6144a9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614565602183613d0d565b915061457082614509565b604082019050919050565b6000602082019050818103600083015261459481614558565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145f7602483613d0d565b91506146028261459b565b604082019050919050565b60006020820190508181036000830152614626816145ea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614689602283613d0d565b91506146948261462d565b604082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061471b602583613d0d565b9150614726826146bf565b604082019050919050565b6000602082019050818103600083015261474a8161470e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147ad602383613d0d565b91506147b882614751565b604082019050919050565b600060208201905081810360008301526147dc816147a0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061483f602983613d0d565b915061484a826147e3565b604082019050919050565b6000602082019050818103600083015261486e81614832565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006148ab601b83613d0d565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614917601a83613d0d565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000614983601383613d0d565b915061498e8261494d565b602082019050919050565b600060208201905081810360008301526149b281614976565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b60006149ef601c83613d0d565b91506149fa826149b9565b602082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b6000614a3082613c9f565b9150614a3b83613c9f565b925082821015614a4e57614a4d614034565b5b828203905092915050565b6000606082019050614a6e6000830186613e22565b614a7b6020830185613e22565b614a886040830184613e22565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ac6601b83613d0d565b9150614ad182614a90565b602082019050919050565b60006020820190508181036000830152614af581614ab9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b3181613b54565b82525050565b6000614b438383614b28565b60208301905092915050565b6000602082019050919050565b6000614b6782614afc565b614b718185614b07565b9350614b7c83614b18565b8060005b83811015614bad578151614b948882614b37565b9750614b9f83614b4f565b925050600181019050614b80565b5085935050505092915050565b600060a082019050614bcf6000830188613e22565b614bdc602083018761414d565b8181036040830152614bee8186614b5c565b9050614bfd6060830185613ed6565b614c0a6080830184613e22565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e82c59989060a9fbd1327b25d0d5c15060100a97a0791f1327d7f74b171b3b8664736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102495760003560e01c80637b41192a11610139578063bfd79284116100b6578063dd62ed3e1161007a578063dd62ed3e1461081c578063e350779714610859578063ea2f0b3714610882578063f275f64b146108ab578063f8b45b05146108d4578063fd8d7c0d146108ff57610250565b8063bfd7928414610739578063cb7eead014610776578063cc3fc8641461079f578063cc996899146107c8578063d7a03725146107f357610250565b806391073139116100fd578063910731391461066857806395d89b41146106915780639e78fb4f146106bc578063a9059cbb146106d3578063bc3371821461071057610250565b80637b41192a146105a9578063818a7def146105d25780638c0b5e22146105e95780638c32c568146106145780638da5cb5b1461063d57610250565b8063351a964d116101c75780636b9990531161018b5780636b999053146104ec5780636e0043c5146105155780636fc3eaec1461053e57806370a0823114610555578063715018a61461059257610250565b8063351a964d1461041d5780634263ec3314610448578063437823ec146104715780634dc1c3de1461049a5780635d0044ca146104c357610250565b80631552c88a1161020e5780631552c88a1461033857806318160ddd146103615780631d60c2b01461038c57806323b872dd146103b5578063313ce567146103f257610250565b8062b8cf2a14610255578063033e983d1461027e578063061c82d0146102a757806306fdde03146102d0578063095ea7b3146102fb57610250565b3661025057005b600080fd5b34801561026157600080fd5b5061027c60048036038101906102779190613c29565b610928565b005b34801561028a57600080fd5b506102a560048036038101906102a09190613c72565b610a52565b005b3480156102b357600080fd5b506102ce60048036038101906102c99190613cd5565b610b2b565b005b3480156102dc57600080fd5b506102e5610bca565b6040516102f29190613d8a565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190613dac565b610c07565b60405161032f9190613e07565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a9190613cd5565b610c25565b005b34801561036d57600080fd5b50610376610d07565b6040516103839190613e31565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190613cd5565b610d11565b005b3480156103c157600080fd5b506103dc60048036038101906103d79190613e4c565b610db0565b6040516103e99190613e07565b60405180910390f35b3480156103fe57600080fd5b50610407610e89565b6040516104149190613ebb565b60405180910390f35b34801561042957600080fd5b50610432610e92565b60405161043f9190613e07565b60405180910390f35b34801561045457600080fd5b5061046f600480360381019061046a9190613cd5565b610ea7565b005b34801561047d57600080fd5b5061049860048036038101906104939190613c72565b610f46565b005b3480156104a657600080fd5b506104c160048036038101906104bc9190613c72565b611036565b005b3480156104cf57600080fd5b506104ea60048036038101906104e59190613cd5565b61110f565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613c72565b6111bc565b005b34801561052157600080fd5b5061053c60048036038101906105379190613cd5565b6112ac565b005b34801561054a57600080fd5b5061055361138e565b005b34801561056157600080fd5b5061057c60048036038101906105779190613c72565b61139f565b6040516105899190613e31565b60405180910390f35b34801561059e57600080fd5b506105a76113e8565b005b3480156105b557600080fd5b506105d060048036038101906105cb9190613cd5565b61153b565b005b3480156105de57600080fd5b506105e76115da565b005b3480156105f557600080fd5b506105fe611747565b60405161060b9190613e31565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613dac565b611751565b005b34801561064957600080fd5b506106526119e6565b60405161065f9190613ee5565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a9190613c29565b611a0f565b005b34801561069d57600080fd5b506106a6611b39565b6040516106b39190613d8a565b60405180910390f35b3480156106c857600080fd5b506106d1611b76565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190613dac565b611f4d565b6040516107079190613e07565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190613cd5565b611f6b565b005b34801561074557600080fd5b50610760600480360381019061075b9190613c72565b612018565b60405161076d9190613e07565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190613cd5565b612038565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190613cd5565b61211a565b005b3480156107d457600080fd5b506107dd6121fc565b6040516107ea9190613e07565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190613dac565b612213565b005b34801561082857600080fd5b50610843600480360381019061083e9190613f00565b612385565b6040516108509190613e31565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b9190613cd5565b61240c565b005b34801561088e57600080fd5b506108a960048036038101906108a49190613c72565b6124ab565b005b3480156108b757600080fd5b506108d260048036038101906108cd9190613f6c565b61259b565b005b3480156108e057600080fd5b506108e961264d565b6040516108f69190613e31565b60405180910390f35b34801561090b57600080fd5b5061092660048036038101906109219190613c72565b612657565b005b6109306127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490613fe5565b60405180910390fd5b60005b8151811015610a4e576001600560008484815181106109e2576109e1614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a4690614063565b9150506109c0565b5050565b610a5a6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90613fe5565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b336127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613fe5565b60405180910390fd5b8060088190555050565b60606040518060400160405280600e81526020017f50686f656e697820526973696e67000000000000000000000000000000000000815250905090565b6000610c1b610c146127f4565b84846127fc565b6001905092915050565b610c2d6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613fe5565b60405180910390fd5b60648110610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf4906140f7565b60405180910390fd5b80600c8190555050565b6000600654905090565b610d196127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90613fe5565b60405180910390fd5b80600a8190555050565b6000610dbd8484846129c5565b610e7e84610dc96127f4565b610e7985604051806060016040528060288152602001614c1560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e2f6127f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130179092919063ffffffff16565b6127fc565b600190509392505050565b60006008905090565b600060168054906101000a900460ff16905090565b610eaf6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3390613fe5565b60405180910390fd5b8060098190555050565b610f4e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613fe5565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61103e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613fe5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111176127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90613fe5565b60405180910390fd5b60145481116111b257600080fd5b8060148190555050565b6111c46127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890613fe5565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6112b46127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133890613fe5565b60405180910390fd5b60648110611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b906140f7565b60405180910390fd5b80600d8190555050565b600047905061139c8161307b565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f06127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6115436127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613fe5565b60405180910390fd5b80600b8190555050565b6115e26127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690613fe5565b60405180910390fd5b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116b83061139f565b6000806116c36119e6565b426040518863ffffffff1660e01b81526004016116e59695949392919061415c565b60606040518083038185885af1158015611703573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061172891906141d2565b50505060016016806101000a81548160ff021916908315150217905550565b6000601354905090565b6117596127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dd90613fe5565b60405180910390fd5b6305f5e100816117f69190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906142f1565b60405180910390fd5b6118d86305f5e1008261188a9190614225565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506305f5e1008161192b9190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e100846119cd9190614225565b6040516119da9190613e31565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a176127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613fe5565b60405180910390fd5b60005b8151811015611b3557600160046000848481518110611ac957611ac8614005565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b2d90614063565b915050611aa7565b5050565b60606040518060400160405280600581526020017f50484e4958000000000000000000000000000000000000000000000000000000815250905090565b611b7e6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290613fe5565b60405180910390fd5b601660149054906101000a900460ff1615611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c529061435d565b60405180910390fd5b611c8a30601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006546127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190614392565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc89190614392565b6040518363ffffffff1660e01b8152600401611de59291906143bf565b6020604051808303816000875af1158015611e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e289190614392565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f079291906143e8565b6020604051808303816000875af1158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614426565b50565b6000611f61611f5a6127f4565b84846129c5565b6001905092915050565b611f736127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fe5565b60405180910390fd5b601354811161200e57600080fd5b8060138190555050565b60056020528060005260406000206000915054906101000a900460ff1681565b6120406127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490613fe5565b60405180910390fd5b60648110612110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612107906140f7565b60405180910390fd5b80600e8190555050565b6121226127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a690613fe5565b60405180910390fd5b606481106121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e9906140f7565b60405180910390fd5b80600f8190555050565b6000601660159054906101000a900460ff16905090565b61221b6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f90613fe5565b60405180910390fd5b6305f5e100816122b89190614225565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123069190614453565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6305f5e1008461236c9190614225565b6040516123799190613e31565b60405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124146127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890613fe5565b60405180910390fd5b8060078190555050565b6124b36127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253790613fe5565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6125a36127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790613fe5565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b6000601454905090565b61265f6127f4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e390613fe5565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080830361274257600090506127a4565b600082846127509190614225565b905082848261275f91906144d8565b1461279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969061457b565b60405180910390fd5b809150505b92915050565b60006127ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061328a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361286b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128629061460d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061469f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129b89190613e31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2b90614731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a906147c3565b60405180910390fd5b60008111612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add90614855565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b8a5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc0906148c1565b60405180910390fd5b612bd16119e6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c3f5750612c0f6119e6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f5757601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612cef5750601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d455750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e3757601354811115612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061492d565b60405180910390fd5b601660149054906101000a900460ff16612dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd590614999565b60405180910390fd5b60145481612deb8461139f565b612df59190614453565b1115612e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2d90614a05565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9f57612e946132ed565b600881905550612eae565b612ea7613304565b6008819055505b6000612eb93061139f565b9050601660159054906101000a900460ff16158015612f265750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3c575060168054906101000a900460ff165b15612f55576007548110612f5457612f538161331b565b5b5b505b613012838383600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ffe5750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61300a5760085461300d565b60005b613451565b505050565b600083831115829061305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130569190613d8a565b60405180910390fd5b506000838561306e9190614a25565b9050809150509392505050565b60006130a56064613097600d548561273090919063ffffffff16565b6127aa90919063ffffffff16565b905060006130d160646130c3600e548661273090919063ffffffff16565b6127aa90919063ffffffff16565b905060006130fd60646130ef600f548761273090919063ffffffff16565b6127aa90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613167573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156131d0573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613239573d6000803e3d6000fd5b5050505050565b600061328283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613017565b905092915050565b600080831182906132d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c89190613d8a565b60405180910390fd5b50600083856132e091906144d8565b9050809150509392505050565b6000600954600b546132ff9190614453565b905090565b6000600a54600b546133169190614453565b905090565b6001601660156101000a81548160ff02191690831515021790555060006133606064613352600c548561273090919063ffffffff16565b6127aa90919063ffffffff16565b90506000613377828461324090919063ffffffff16565b9050600061338f6002846127aa90919063ffffffff16565b905060006133a6828561324090919063ffffffff16565b905060004790506133c86133c385856136be90919063ffffffff16565b61371c565b60006133dd824761324090919063ffffffff16565b90506133e9818461395f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161341c93929190614a59565b60405180910390a161342d8561307b565b5050505050506000601660156101000a81548160ff02191690831515021790555050565b6000613479606461346b848661273090919063ffffffff16565b6127aa90919063ffffffff16565b90506000613490828561324090919063ffffffff16565b90506134e484600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324090919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357981600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136be90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061360e82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136be90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ae9190613e31565b60405180910390a3505050505050565b60008082846136cd9190614453565b905083811015613712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370990614adc565b60405180910390fd5b8091505092915050565b6000600267ffffffffffffffff81111561373957613738613a88565b5b6040519080825280602002602001820160405280156137675781602001602082028036833780820191505090505b509050308160008151811061377f5761377e614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384a9190614392565b8160018151811061385e5761385d614005565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138c530601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613929959493929190614bba565b600060405180830381600087803b15801561394357600080fd5b505af1158015613957573d6000803e3d6000fd5b505050505050565b61398c30601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127fc565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330846000806139d86119e6565b426040518863ffffffff1660e01b81526004016139fa9695949392919061415c565b60606040518083038185885af1158015613a18573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a3d91906141d2565b50505060016016806101000a81548160ff0219169083151502179055505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ac082613a77565b810181811067ffffffffffffffff82111715613adf57613ade613a88565b5b80604052505050565b6000613af2613a5e565b9050613afe8282613ab7565b919050565b600067ffffffffffffffff821115613b1e57613b1d613a88565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b5f82613b34565b9050919050565b613b6f81613b54565b8114613b7a57600080fd5b50565b600081359050613b8c81613b66565b92915050565b6000613ba5613ba084613b03565b613ae8565b90508083825260208201905060208402830185811115613bc857613bc7613b2f565b5b835b81811015613bf15780613bdd8882613b7d565b845260208401935050602081019050613bca565b5050509392505050565b600082601f830112613c1057613c0f613a72565b5b8135613c20848260208601613b92565b91505092915050565b600060208284031215613c3f57613c3e613a68565b5b600082013567ffffffffffffffff811115613c5d57613c5c613a6d565b5b613c6984828501613bfb565b91505092915050565b600060208284031215613c8857613c87613a68565b5b6000613c9684828501613b7d565b91505092915050565b6000819050919050565b613cb281613c9f565b8114613cbd57600080fd5b50565b600081359050613ccf81613ca9565b92915050565b600060208284031215613ceb57613cea613a68565b5b6000613cf984828501613cc0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d3c578082015181840152602081019050613d21565b83811115613d4b576000848401525b50505050565b6000613d5c82613d02565b613d668185613d0d565b9350613d76818560208601613d1e565b613d7f81613a77565b840191505092915050565b60006020820190508181036000830152613da48184613d51565b905092915050565b60008060408385031215613dc357613dc2613a68565b5b6000613dd185828601613b7d565b9250506020613de285828601613cc0565b9150509250929050565b60008115159050919050565b613e0181613dec565b82525050565b6000602082019050613e1c6000830184613df8565b92915050565b613e2b81613c9f565b82525050565b6000602082019050613e466000830184613e22565b92915050565b600080600060608486031215613e6557613e64613a68565b5b6000613e7386828701613b7d565b9350506020613e8486828701613b7d565b9250506040613e9586828701613cc0565b9150509250925092565b600060ff82169050919050565b613eb581613e9f565b82525050565b6000602082019050613ed06000830184613eac565b92915050565b613edf81613b54565b82525050565b6000602082019050613efa6000830184613ed6565b92915050565b60008060408385031215613f1757613f16613a68565b5b6000613f2585828601613b7d565b9250506020613f3685828601613b7d565b9150509250929050565b613f4981613dec565b8114613f5457600080fd5b50565b600081359050613f6681613f40565b92915050565b600060208284031215613f8257613f81613a68565b5b6000613f9084828501613f57565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613fcf602083613d0d565b9150613fda82613f99565b602082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406e82613c9f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140a05761409f614034565b5b600182019050919050565b7f50657263656e7420697320746f6f206869676800000000000000000000000000600082015250565b60006140e1601383613d0d565b91506140ec826140ab565b602082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b6000819050919050565b6000819050919050565b600061414661414161413c84614117565b614121565b613c9f565b9050919050565b6141568161412b565b82525050565b600060c0820190506141716000830189613ed6565b61417e6020830188613e22565b61418b604083018761414d565b614198606083018661414d565b6141a56080830185613ed6565b6141b260a0830184613e22565b979650505050505050565b6000815190506141cc81613ca9565b92915050565b6000806000606084860312156141eb576141ea613a68565b5b60006141f9868287016141bd565b935050602061420a868287016141bd565b925050604061421b868287016141bd565b9150509250925092565b600061423082613c9f565b915061423b83613c9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561427457614273614034565b5b828202905092915050565b7f436f6e747261637420646f6573206e6f74206861766520656e6f75676820746f60008201527f6b656e7300000000000000000000000000000000000000000000000000000000602082015250565b60006142db602483613d0d565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000614347601783613d0d565b915061435282614311565b602082019050919050565b600060208201905081810360008301526143768161433a565b9050919050565b60008151905061438c81613b66565b92915050565b6000602082840312156143a8576143a7613a68565b5b60006143b68482850161437d565b91505092915050565b60006040820190506143d46000830185613ed6565b6143e16020830184613ed6565b9392505050565b60006040820190506143fd6000830185613ed6565b61440a6020830184613e22565b9392505050565b60008151905061442081613f40565b92915050565b60006020828403121561443c5761443b613a68565b5b600061444a84828501614411565b91505092915050565b600061445e82613c9f565b915061446983613c9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449e5761449d614034565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144e382613c9f565b91506144ee83613c9f565b9250826144fe576144fd6144a9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614565602183613d0d565b915061457082614509565b604082019050919050565b6000602082019050818103600083015261459481614558565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145f7602483613d0d565b91506146028261459b565b604082019050919050565b60006020820190508181036000830152614626816145ea565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614689602283613d0d565b91506146948261462d565b604082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061471b602583613d0d565b9150614726826146bf565b604082019050919050565b6000602082019050818103600083015261474a8161470e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006147ad602383613d0d565b91506147b882614751565b604082019050919050565b600060208201905081810360008301526147dc816147a0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061483f602983613d0d565b915061484a826147e3565b604082019050919050565b6000602082019050818103600083015261486e81614832565b9050919050565b7f54686973206163636f756e7420697320626c61636b6c69737465640000000000600082015250565b60006148ab601b83613d0d565b91506148b682614875565b602082019050919050565b600060208201905081810360008301526148da8161489e565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206c696d69746564000000000000600082015250565b6000614917601a83613d0d565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b7f54726164696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000614983601383613d0d565b915061498e8261494d565b602082019050919050565b600060208201905081810360008301526149b281614976565b9050919050565b7f42616c616e63652065786365656465642077616c6c65742073697a6500000000600082015250565b60006149ef601c83613d0d565b91506149fa826149b9565b602082019050919050565b60006020820190508181036000830152614a1e816149e2565b9050919050565b6000614a3082613c9f565b9150614a3b83613c9f565b925082821015614a4e57614a4d614034565b5b828203905092915050565b6000606082019050614a6e6000830186613e22565b614a7b6020830185613e22565b614a886040830184613e22565b949350505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ac6601b83613d0d565b9150614ad182614a90565b602082019050919050565b60006020820190508181036000830152614af581614ab9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b3181613b54565b82525050565b6000614b438383614b28565b60208301905092915050565b6000602082019050919050565b6000614b6782614afc565b614b718185614b07565b9350614b7c83614b18565b8060005b83811015614bad578151614b948882614b37565b9750614b9f83614b4f565b925050600181019050614b80565b5085935050505092915050565b600060a082019050614bcf6000830188613e22565b614bdc602083018761414d565b8181036040830152614bee8186614b5c565b9050614bfd6060830185613ed6565b614c0a6080830184613e22565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e82c59989060a9fbd1327b25d0d5c15060100a97a0791f1327d7f74b171b3b8664736f6c634300080d0033
Deployed Bytecode Sourcemap
4158:12053:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15472:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8181:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7354:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6774:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9556:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8303:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7015:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7460:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9707:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6936:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6679:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7579:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7109:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7935:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15321:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15605:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8514:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15694:125;;;;;;;;;;;;;:::i;:::-;;9146:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4014:133;;;;;;;;;;;;;:::i;:::-;;7696:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14084:302;;;;;;;;;;;;;:::i;:::-;;6420:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15827:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3830:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10007:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6853:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13593:306;;;;;;;;;;;;;:::i;:::-;;9260:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12701:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4421:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8727:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8938;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6591:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13907:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9417:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7801:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7232:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14781:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6506:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8059:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15472:130;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15539:9:::1;15534:67;15558:5;:12;15554:1;:16;15534:67;;;15595:4;15578;:14;15583:5;15589:1;15583:8;;;;;;;;:::i;:::-;;;;;;;;15578:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15572:3;;;;;:::i;:::-;;;;15534:67;;;;15472:130:::0;:::o;8181:114::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8277:9:::1;8255:11;;:32;;;;;;;;;;;;;;;;;;8181:114:::0;:::o;7354:98::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7438:6:::1;7428:7;:16;;;;7354:98:::0;:::o;6774:74::-;6811:13;6838:5;;;;;;;;;;;;;;;;;6831:12;;6774:74;:::o;9556:146::-;9631:4;9642:39;9651:12;:10;:12::i;:::-;9665:7;9674:6;9642:8;:39::i;:::-;9693:4;9686:11;;9556:146;;;;:::o;8303:203::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8423:3:::1;8403:17;:23;8395:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8481:17;8461;:37;;;;8303:203:::0;:::o;7015:86::-;7068:7;7089;;7082:14;;7015:86;:::o;7460:111::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7557:6:::1;7537:17;:26;;;;7460:111:::0;:::o;9707:292::-;9805:4;9816:36;9826:6;9834:9;9845:6;9816:9;:36::i;:::-;9857:121;9866:6;9874:12;:10;:12::i;:::-;9888:89;9926:6;9888:89;;;;;;;;;;;;;;;;;:11;:19;9900:6;9888:19;;;;;;;;;;;;;;;:33;9908:12;:10;:12::i;:::-;9888:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9857:8;:121::i;:::-;9990:4;9983:11;;9707:292;;;;;:::o;6936:74::-;6977:5;5286:1;6989:16;;6936:74;:::o;6679:90::-;6725:4;6749:12;;;;;;;;;;6742:19;;6679:90;:::o;7579:109::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7674:6:::1;7655:16;:25;;;;7579:109:::0;:::o;7109:111::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7208:4:::1;7178:18;:27;7197:7;7178:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7109:111:::0;:::o;7935:116::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8033:9:::1;8010:12;;:33;;;;;;;;;;;;;;;;;;7935:116:::0;:::o;15321:112::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15395:10:::1;;15388:6;:17;15380:26;;;::::0;::::1;;15422:6;15411:10;:17;;;;15321:112:::0;:::o;15605:84::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15679:5:::1;15664:4;:12;15669:6;15664:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15605:84:::0;:::o;8514:205::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8633:3:::1;8613:17;:23;8605:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8694:17;8671:20;:40;;;;8514:205:::0;:::o;15694:125::-;15727:26;15756:21;15727:50;;15782:32;15795:18;15782:12;:32::i;:::-;15722:97;15694:125::o;9146:109::-;9212:7;9233:8;:17;9242:7;9233:17;;;;;;;;;;;;;;;;9226:24;;9146:109;;;:::o;4014:133::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4115:1:::1;4078:40;;4099:6;::::0;::::1;;;;;;;;4078:40;;;;;;;;;;;;4140:1;4123:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4014:133::o:0;7696:97::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7779:6:::1;7766:10;:19;;;;7696:97:::0;:::o;14084:302::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14138:8:::1;;;;;;;;;;;:24;;;14170:21;14216:4;14236:24;14254:4;14236:9;:24::i;:::-;14275:1;14291::::0;14307:7:::1;:5;:7::i;:::-;14329:15;14138:217;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14377:4;14362:12;::::0;:19:::1;;;;;;;;;;;;;;;;;;14084:302::o:0;6420:81::-;6464:7;6484:12;;6477:19;;6420:81;:::o;15827:381::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15951:5:::1;15942:6;:14;;;;:::i;:::-;15915:8;:23;15932:4;15915:23;;;;;;;;;;;;;;;;:41;;15907:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16044:43;16081:5;16072:6;:14;;;;:::i;:::-;16044:8;:23;16061:4;16044:23;;;;;;;;;;;;;;;;:27;;:43;;;;:::i;:::-;16018:8;:23;16035:4;16018:23;;;;;;;;;;;;;;;:69;;;;16129:5;16120:6;:14;;;;:::i;:::-;16098:8;:19;16107:9;16098:19;;;;;;;;;;;;;;;:36;;;;16174:9;16150:50;;16167:4;16150:50;;;16194:5;16185:6;:14;;;;:::i;:::-;16150:50;;;;;;:::i;:::-;;;;;;;;15827:381:::0;;:::o;3830:70::-;3868:7;3889:6;;;;;;;;;;;3882:13;;3830:70;:::o;10007:181::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10092:9:::1;10088:98;10107:15;:22;10105:1;:24;10088:98;;;10179:4;10138:18;:38;10157:15;10173:1;10157:18;;;;;;;;:::i;:::-;;;;;;;;10138:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;10131:3;;;;;:::i;:::-;;;;10088:98;;;;10007:181:::0;:::o;6853:78::-;6892:13;6919:7;;;;;;;;;;;;;;;;;6912:14;;6853:78;:::o;13593:306::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13648:9:::1;;;;;;;;;;;13647:10;13639:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13689:51;13706:4;13721:8;;;;;;;;;;;13732:7;;13689:8;:51::i;:::-;13771:8;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13753:48;;;13810:4;13817:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13753:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13745:5;;:88;;;;;;;;;;;;;;;;;;13845:5;;;;;;;;;;;13838:21;;;13868:8;;;;;;;;;;;13879:14;13838:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13593:306::o:0;9260:152::-;9338:4;9349:42;9359:12;:10;:12::i;:::-;9373:9;9384:6;9349:9;:42::i;:::-;9403:4;9396:11;;9260:152;;;;:::o;12701:112::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12771:12:::1;;12764:6;:19;12756:28;;;::::0;::::1;;12802:6;12789:12;:19;;;;12701:112:::0;:::o;4421:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;8727:203::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:3:::1;8825:17;:23;8817:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8905:17;8883:19;:39;;;;8727:203:::0;:::o;8938:::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9056:3:::1;9036:17;:23;9028:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9116:17;9094:19;:39;;;;8938:203:::0;:::o;6591:80::-;6632:4;6656:7;;;;;;;;;;;6649:14;;6591:80;:::o;13907:172::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14016:5:::1;14006:7;:15;;;;:::i;:::-;13986:8;:16;13995:6;13986:16;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;14052:6;14028:48;;14045:4;14028:48;;;14070:5;14060:7;:15;;;;:::i;:::-;14028:48;;;;;;:::i;:::-;;;;;;;;13907:172:::0;;:::o;9417:134::-;9498:7;9519:11;:18;9531:5;9519:18;;;;;;;;;;;;;;;:27;9538:7;9519:27;;;;;;;;;;;;;;;;9512:34;;9417:134;;;;:::o;7801:126::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7911:8:::1;7883:25;:36;;;;7801:126:::0;:::o;7232:110::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7329:5:::1;7299:18;:27;7318:7;7299:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7232:110:::0;:::o;14781:84::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14853:7:::1;14841:9;;:19;;;;;;;;;;;;;;;;;;14781:84:::0;:::o;6506:77::-;6548:7;6568:10;;6561:17;;6506:77;:::o;8059:114::-;3949:12;:10;:12::i;:::-;3939:22;;:6;;;;;;;;;;:22;;;3931:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8155:9:::1;8133:11;;:32;;;;;;;;;;;;;;;;;;8059:114:::0;:::o;2997:204::-;3055:7;3078:1;3073;:6;3069:32;;3094:1;3087:8;;;;3069:32;3105:9;3121:1;3117;:5;;;;:::i;:::-;3105:17;;3144:1;3139;3135;:5;;;;:::i;:::-;:10;3127:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3195:1;3188:8;;;2997:204;;;;;:::o;3206:123::-;3264:7;3285:39;3289:1;3292;3285:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3278:46;;3206:123;;;;:::o;1758:89::-;1811:7;1832:10;1825:17;;1758:89;:::o;10193:308::-;10297:1;10280:19;;:5;:19;;;10272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10372:1;10353:21;;:7;:21;;;10345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10448:6;10418:11;:18;10430:5;10418:18;;;;;;;;;;;;;;;:27;10437:7;10418:27;;;;;;;;;;;;;;;:36;;;;10480:7;10464:32;;10473:5;10464:32;;;10489:6;10464:32;;;;;;:::i;:::-;;;;;;;;10193:308;;;:::o;10506:1232::-;10604:1;10588:18;;:4;:18;;;10580:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10675:1;10661:16;;:2;:16;;;10653:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10739:1;10730:6;:10;10722:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10800:4;:10;10805:4;10800:10;;;;;;;;;;;;;;;;;;;;;;;;;10799:11;:24;;;;;10815:4;:8;10820:2;10815:8;;;;;;;;;;;;;;;;;;;;;;;;;10814:9;10799:24;10791:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10874:7;:5;:7::i;:::-;10866:15;;:4;:15;;;;:32;;;;;10891:7;:5;:7::i;:::-;10885:13;;:2;:13;;;;10866:32;10862:774;;;10918:5;;;;;;;;;;;10910:13;;:4;:13;;;:40;;;;;10941:8;;;;;;;;;;;10927:23;;:2;:23;;;;10910:40;:68;;;;;10956:18;:22;10975:2;10956:22;;;;;;;;;;;;;;;;;;;;;;;;;10954:24;10910:68;10906:278;;;11004:12;;10996:6;:20;;10988:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11061:9;;;;;;;;;;;11053:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11134:10;;11124:6;11108:13;11118:2;11108:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;11100:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;10906:278;11212:5;;;;;;;;;;;11204:13;;:4;:13;;;11200:132;;11248:8;:6;:8::i;:::-;11238:7;:18;;;;11200:132;;;11307:9;:7;:9::i;:::-;11297:7;:19;;;;11200:132;11348:28;11379:24;11397:4;11379:9;:24::i;:::-;11348:55;;11422:7;;;;;;;;;;;11421:8;:25;;;;;11441:5;;;;;;;;;;;11433:13;;:4;:13;;;;11421:25;:41;;;;;11450:12;;;;;;;;;;11421:41;11418:213;;;11510:25;;11486:20;:49;11483:133;;11560:36;11575:20;11560:14;:36::i;:::-;11483:133;11418:213;10900:736;10862:774;11642:91;11657:4;11662:2;11665:6;11673:18;:22;11692:2;11673:22;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11697:18;:24;11716:4;11697:24;;;;;;;;;;;;;;;;;;;;;;;;;11673:48;11672:60;;11725:7;;11672:60;;;11723:1;11672:60;11642:14;:91::i;:::-;10506:1232;;;:::o;2823:169::-;2909:7;2936:1;2931;:6;;2939:12;2923:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2957:9;2973:1;2969;:5;;;;:::i;:::-;2957:17;;2986:1;2979:8;;;2823:169;;;;;:::o;12818:396::-;12875:19;12897:41;12934:3;12897:32;12908:20;;12897:6;:10;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;12875:63;;12949:18;12970:40;13006:3;12970:31;12981:19;;12970:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;12949:61;;13021:18;13042:40;13078:3;13042:31;13053:19;;13042:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;13021:61;;13089:12;;;;;;;;;;;:21;;:34;13111:11;13089:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13134:11;;;;;;;;;;;:20;;:32;13155:10;13134:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13177:11;;;;;;;;;;;:20;;:32;13198:10;13177:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12864:350;;;12818:396;:::o;2691:127::-;2749:7;2770:43;2774:1;2777;2770:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2763:50;;2691:127;;;;:::o;3334:168::-;3420:7;3446:1;3442;:5;3449:12;3434:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3467:9;3483:1;3479;:5;;;;:::i;:::-;3467:17;;3496:1;3489:8;;;3334:168;;;;;:::o;12474:106::-;12514:7;12555:16;;12542:10;;:29;;;;:::i;:::-;12534:38;;12474:106;:::o;12588:108::-;12629:7;12670:17;;12657:10;;:30;;;;:::i;:::-;12649:39;;12588:108;:::o;11746:720::-;5626:4;5616:7;;:14;;;;;;;;;;;;;;;;;;11831:26:::1;11860:54;11908:5;11860:43;11885:17;;11860:20;:24;;:43;;;;:::i;:::-;:47;;:54;;;;:::i;:::-;11831:83;;11925:23;11951:44;11976:18;11951:20;:24;;:44;;;;:::i;:::-;11925:70;;12008:12;12023:25;12046:1;12023:18;:22;;:25;;;;:::i;:::-;12008:40;;12059:17;12079:28;12102:4;12079:18;:22;;:28;;;;:::i;:::-;12059:48;;12120:22;12145:21;12120:46;;12179:43;12196:25;12205:15;12196:4;:8;;:25;;;;:::i;:::-;12179:16;:43::i;:::-;12233:18;12254:41;12280:14;12254:21;:25;;:41;;;;:::i;:::-;12233:62;;12308:39;12325:10;12337:9;12308:16;:39::i;:::-;12373:43;12388:4;12394:10;12406:9;12373:43;;;;;;;;:::i;:::-;;;;;;;;12429:29;12442:15;12429:12;:29::i;:::-;11820:646;;;;;;5651:5:::0;5641:7;;:15;;;;;;;;;;;;;;;;;;11746:720;:::o;14870:446::-;14976:13;14992:29;15017:3;14992:20;15004:7;14992;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14976:45;;15026:23;15052:18;15064:5;15052:7;:11;;:18;;;;:::i;:::-;15026:44;;15096:29;15117:7;15096:8;:16;15105:6;15096:16;;;;;;;;;;;;;;;;:20;;:29;;;;:::i;:::-;15077:8;:16;15086:6;15077:16;;;;;;;;;;;;;;;:48;;;;15152:40;15176:15;15152:8;:19;15161:9;15152:19;;;;;;;;;;;;;;;;:23;;:40;;;;:::i;:::-;15130:8;:19;15139:9;15130:19;;;;;;;;;;;;;;;:62;;;;15223:34;15251:5;15223:8;:23;15240:4;15223:23;;;;;;;;;;;;;;;;:27;;:34;;;;:::i;:::-;15197:8;:23;15214:4;15197:23;;;;;;;;;;;;;;;:60;;;;15284:9;15267:44;;15276:6;15267:44;;;15295:15;15267:44;;;;;;:::i;:::-;;;;;;;;14971:345;;14870:446;;;;:::o;2528:158::-;2586:7;2600:9;2616:1;2612;:5;;;;:::i;:::-;2600:17;;2635:1;2630;:6;;2622:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2680:1;2673:8;;;2528:158;;;;:::o;13222:366::-;13282:21;13320:1;13306:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13282:40;;13345:4;13327;13332:1;13327:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13365:8;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13355:4;13360:1;13355:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;13385:55;13402:4;13417:8;;;;;;;;;;;13428:11;13385:8;:55::i;:::-;13445:8;;;;;;;;;;;:59;;;13510:11;13527:1;13534:4;13552;13563:15;13445:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:311;13222:366;:::o;14394:382::-;14479:54;14496:4;14511:8;;;;;;;;;;;14522:10;14479:8;:54::i;:::-;14544:8;;;;;;;;;;;:24;;;14576:10;14611:4;14631:10;14656:1;14672;14688:7;:5;:7::i;:::-;14710:15;14544:192;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14764:4;14749:12;;:19;;;;;;;;;;;;;;;;;;14394:382;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:329::-;3850:6;3899:2;3887:9;3878:7;3874:23;3870:32;3867:119;;;3905:79;;:::i;:::-;3867:119;4025:1;4050:53;4095:7;4086:6;4075:9;4071:22;4050:53;:::i;:::-;4040:63;;3996:117;3791:329;;;;:::o;4126:77::-;4163:7;4192:5;4181:16;;4126:77;;;:::o;4209:122::-;4282:24;4300:5;4282:24;:::i;:::-;4275:5;4272:35;4262:63;;4321:1;4318;4311:12;4262:63;4209:122;:::o;4337:139::-;4383:5;4421:6;4408:20;4399:29;;4437:33;4464:5;4437:33;:::i;:::-;4337:139;;;;:::o;4482:329::-;4541:6;4590:2;4578:9;4569:7;4565:23;4561:32;4558:119;;;4596:79;;:::i;:::-;4558:119;4716:1;4741:53;4786:7;4777:6;4766:9;4762:22;4741:53;:::i;:::-;4731:63;;4687:117;4482:329;;;;:::o;4817:99::-;4869:6;4903:5;4897:12;4887:22;;4817:99;;;:::o;4922:169::-;5006:11;5040:6;5035:3;5028:19;5080:4;5075:3;5071:14;5056:29;;4922:169;;;;:::o;5097:307::-;5165:1;5175:113;5189:6;5186:1;5183:13;5175:113;;;5274:1;5269:3;5265:11;5259:18;5255:1;5250:3;5246:11;5239:39;5211:2;5208:1;5204:10;5199:15;;5175:113;;;5306:6;5303:1;5300:13;5297:101;;;5386:1;5377:6;5372:3;5368:16;5361:27;5297:101;5146:258;5097:307;;;:::o;5410:364::-;5498:3;5526:39;5559:5;5526:39;:::i;:::-;5581:71;5645:6;5640:3;5581:71;:::i;:::-;5574:78;;5661:52;5706:6;5701:3;5694:4;5687:5;5683:16;5661:52;:::i;:::-;5738:29;5760:6;5738:29;:::i;:::-;5733:3;5729:39;5722:46;;5502:272;5410:364;;;;:::o;5780:313::-;5893:4;5931:2;5920:9;5916:18;5908:26;;5980:9;5974:4;5970:20;5966:1;5955:9;5951:17;5944:47;6008:78;6081:4;6072:6;6008:78;:::i;:::-;6000:86;;5780:313;;;;:::o;6099:474::-;6167:6;6175;6224:2;6212:9;6203:7;6199:23;6195:32;6192:119;;;6230:79;;:::i;:::-;6192:119;6350:1;6375:53;6420:7;6411:6;6400:9;6396:22;6375:53;:::i;:::-;6365:63;;6321:117;6477:2;6503:53;6548:7;6539:6;6528:9;6524:22;6503:53;:::i;:::-;6493:63;;6448:118;6099:474;;;;;:::o;6579:90::-;6613:7;6656:5;6649:13;6642:21;6631:32;;6579:90;;;:::o;6675:109::-;6756:21;6771:5;6756:21;:::i;:::-;6751:3;6744:34;6675:109;;:::o;6790:210::-;6877:4;6915:2;6904:9;6900:18;6892:26;;6928:65;6990:1;6979:9;6975:17;6966:6;6928:65;:::i;:::-;6790:210;;;;:::o;7006:118::-;7093:24;7111:5;7093:24;:::i;:::-;7088:3;7081:37;7006:118;;:::o;7130:222::-;7223:4;7261:2;7250:9;7246:18;7238:26;;7274:71;7342:1;7331:9;7327:17;7318:6;7274:71;:::i;:::-;7130:222;;;;:::o;7358:619::-;7435:6;7443;7451;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:53;7696:7;7687:6;7676:9;7672:22;7651:53;:::i;:::-;7641:63;;7597:117;7753:2;7779:53;7824:7;7815:6;7804:9;7800:22;7779:53;:::i;:::-;7769:63;;7724:118;7881:2;7907:53;7952:7;7943:6;7932:9;7928:22;7907:53;:::i;:::-;7897:63;;7852:118;7358:619;;;;;:::o;7983:86::-;8018:7;8058:4;8051:5;8047:16;8036:27;;7983:86;;;:::o;8075:112::-;8158:22;8174:5;8158:22;:::i;:::-;8153:3;8146:35;8075:112;;:::o;8193:214::-;8282:4;8320:2;8309:9;8305:18;8297:26;;8333:67;8397:1;8386:9;8382:17;8373:6;8333:67;:::i;:::-;8193:214;;;;:::o;8413:118::-;8500:24;8518:5;8500:24;:::i;:::-;8495:3;8488:37;8413:118;;:::o;8537:222::-;8630:4;8668:2;8657:9;8653:18;8645:26;;8681:71;8749:1;8738:9;8734:17;8725:6;8681:71;:::i;:::-;8537:222;;;;:::o;8765:474::-;8833:6;8841;8890:2;8878:9;8869:7;8865:23;8861:32;8858:119;;;8896:79;;:::i;:::-;8858:119;9016:1;9041:53;9086:7;9077:6;9066:9;9062:22;9041:53;:::i;:::-;9031:63;;8987:117;9143:2;9169:53;9214:7;9205:6;9194:9;9190:22;9169:53;:::i;:::-;9159:63;;9114:118;8765:474;;;;;:::o;9245:116::-;9315:21;9330:5;9315:21;:::i;:::-;9308:5;9305:32;9295:60;;9351:1;9348;9341:12;9295:60;9245:116;:::o;9367:133::-;9410:5;9448:6;9435:20;9426:29;;9464:30;9488:5;9464:30;:::i;:::-;9367:133;;;;:::o;9506:323::-;9562:6;9611:2;9599:9;9590:7;9586:23;9582:32;9579:119;;;9617:79;;:::i;:::-;9579:119;9737:1;9762:50;9804:7;9795:6;9784:9;9780:22;9762:50;:::i;:::-;9752:60;;9708:114;9506:323;;;;:::o;9835:182::-;9975:34;9971:1;9963:6;9959:14;9952:58;9835:182;:::o;10023:366::-;10165:3;10186:67;10250:2;10245:3;10186:67;:::i;:::-;10179:74;;10262:93;10351:3;10262:93;:::i;:::-;10380:2;10375:3;10371:12;10364:19;;10023:366;;;:::o;10395:419::-;10561:4;10599:2;10588:9;10584:18;10576:26;;10648:9;10642:4;10638:20;10634:1;10623:9;10619:17;10612:47;10676:131;10802:4;10676:131;:::i;:::-;10668:139;;10395:419;;;:::o;10820:180::-;10868:77;10865:1;10858:88;10965:4;10962:1;10955:15;10989:4;10986:1;10979:15;11006:180;11054:77;11051:1;11044:88;11151:4;11148:1;11141:15;11175:4;11172:1;11165:15;11192:233;11231:3;11254:24;11272:5;11254:24;:::i;:::-;11245:33;;11300:66;11293:5;11290:77;11287:103;;11370:18;;:::i;:::-;11287:103;11417:1;11410:5;11406:13;11399:20;;11192:233;;;:::o;11431:169::-;11571:21;11567:1;11559:6;11555:14;11548:45;11431:169;:::o;11606:366::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:419::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:85::-;12448:7;12477:5;12466:16;;12403:85;;;:::o;12494:60::-;12522:3;12543:5;12536:12;;12494:60;;;:::o;12560:158::-;12618:9;12651:61;12669:42;12678:32;12704:5;12678:32;:::i;:::-;12669:42;:::i;:::-;12651:61;:::i;:::-;12638:74;;12560:158;;;:::o;12724:147::-;12819:45;12858:5;12819:45;:::i;:::-;12814:3;12807:58;12724:147;;:::o;12877:807::-;13126:4;13164:3;13153:9;13149:19;13141:27;;13178:71;13246:1;13235:9;13231:17;13222:6;13178:71;:::i;:::-;13259:72;13327:2;13316:9;13312:18;13303:6;13259:72;:::i;:::-;13341:80;13417:2;13406:9;13402:18;13393:6;13341:80;:::i;:::-;13431;13507:2;13496:9;13492:18;13483:6;13431:80;:::i;:::-;13521:73;13589:3;13578:9;13574:19;13565:6;13521:73;:::i;:::-;13604;13672:3;13661:9;13657:19;13648:6;13604:73;:::i;:::-;12877:807;;;;;;;;;:::o;13690:143::-;13747:5;13778:6;13772:13;13763:22;;13794:33;13821:5;13794:33;:::i;:::-;13690:143;;;;:::o;13839:663::-;13927:6;13935;13943;13992:2;13980:9;13971:7;13967:23;13963:32;13960:119;;;13998:79;;:::i;:::-;13960:119;14118:1;14143:64;14199:7;14190:6;14179:9;14175:22;14143:64;:::i;:::-;14133:74;;14089:128;14256:2;14282:64;14338:7;14329:6;14318:9;14314:22;14282:64;:::i;:::-;14272:74;;14227:129;14395:2;14421:64;14477:7;14468:6;14457:9;14453:22;14421:64;:::i;:::-;14411:74;;14366:129;13839:663;;;;;:::o;14508:348::-;14548:7;14571:20;14589:1;14571:20;:::i;:::-;14566:25;;14605:20;14623:1;14605:20;:::i;:::-;14600:25;;14793:1;14725:66;14721:74;14718:1;14715:81;14710:1;14703:9;14696:17;14692:105;14689:131;;;14800:18;;:::i;:::-;14689:131;14848:1;14845;14841:9;14830:20;;14508:348;;;;:::o;14862:223::-;15002:34;14998:1;14990:6;14986:14;14979:58;15071:6;15066:2;15058:6;15054:15;15047:31;14862:223;:::o;15091:366::-;15233:3;15254:67;15318:2;15313:3;15254:67;:::i;:::-;15247:74;;15330:93;15419:3;15330:93;:::i;:::-;15448:2;15443:3;15439:12;15432:19;;15091:366;;;:::o;15463:419::-;15629:4;15667:2;15656:9;15652:18;15644:26;;15716:9;15710:4;15706:20;15702:1;15691:9;15687:17;15680:47;15744:131;15870:4;15744:131;:::i;:::-;15736:139;;15463:419;;;:::o;15888:173::-;16028:25;16024:1;16016:6;16012:14;16005:49;15888:173;:::o;16067:366::-;16209:3;16230:67;16294:2;16289:3;16230:67;:::i;:::-;16223:74;;16306:93;16395:3;16306:93;:::i;:::-;16424:2;16419:3;16415:12;16408:19;;16067:366;;;:::o;16439:419::-;16605:4;16643:2;16632:9;16628:18;16620:26;;16692:9;16686:4;16682:20;16678:1;16667:9;16663:17;16656:47;16720:131;16846:4;16720:131;:::i;:::-;16712:139;;16439:419;;;:::o;16864:143::-;16921:5;16952:6;16946:13;16937:22;;16968:33;16995:5;16968:33;:::i;:::-;16864:143;;;;:::o;17013:351::-;17083:6;17132:2;17120:9;17111:7;17107:23;17103:32;17100:119;;;17138:79;;:::i;:::-;17100:119;17258:1;17283:64;17339:7;17330:6;17319:9;17315:22;17283:64;:::i;:::-;17273:74;;17229:128;17013:351;;;;:::o;17370:332::-;17491:4;17529:2;17518:9;17514:18;17506:26;;17542:71;17610:1;17599:9;17595:17;17586:6;17542:71;:::i;:::-;17623:72;17691:2;17680:9;17676:18;17667:6;17623:72;:::i;:::-;17370:332;;;;;:::o;17708:::-;17829:4;17867:2;17856:9;17852:18;17844:26;;17880:71;17948:1;17937:9;17933:17;17924:6;17880:71;:::i;:::-;17961:72;18029:2;18018:9;18014:18;18005:6;17961:72;:::i;:::-;17708:332;;;;;:::o;18046:137::-;18100:5;18131:6;18125:13;18116:22;;18147:30;18171:5;18147:30;:::i;:::-;18046:137;;;;:::o;18189:345::-;18256:6;18305:2;18293:9;18284:7;18280:23;18276:32;18273:119;;;18311:79;;:::i;:::-;18273:119;18431:1;18456:61;18509:7;18500:6;18489:9;18485:22;18456:61;:::i;:::-;18446:71;;18402:125;18189:345;;;;:::o;18540:305::-;18580:3;18599:20;18617:1;18599:20;:::i;:::-;18594:25;;18633:20;18651:1;18633:20;:::i;:::-;18628:25;;18787:1;18719:66;18715:74;18712:1;18709:81;18706:107;;;18793:18;;:::i;:::-;18706:107;18837:1;18834;18830:9;18823:16;;18540:305;;;;:::o;18851:180::-;18899:77;18896:1;18889:88;18996:4;18993:1;18986:15;19020:4;19017:1;19010:15;19037:185;19077:1;19094:20;19112:1;19094:20;:::i;:::-;19089:25;;19128:20;19146:1;19128:20;:::i;:::-;19123:25;;19167:1;19157:35;;19172:18;;:::i;:::-;19157:35;19214:1;19211;19207:9;19202:14;;19037:185;;;;:::o;19228:220::-;19368:34;19364:1;19356:6;19352:14;19345:58;19437:3;19432:2;19424:6;19420:15;19413:28;19228:220;:::o;19454:366::-;19596:3;19617:67;19681:2;19676:3;19617:67;:::i;:::-;19610:74;;19693:93;19782:3;19693:93;:::i;:::-;19811:2;19806:3;19802:12;19795:19;;19454:366;;;:::o;19826:419::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20079:9;20073:4;20069:20;20065:1;20054:9;20050:17;20043:47;20107:131;20233:4;20107:131;:::i;:::-;20099:139;;19826:419;;;:::o;20251:223::-;20391:34;20387:1;20379:6;20375:14;20368:58;20460:6;20455:2;20447:6;20443:15;20436:31;20251:223;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:221::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:4;21481:2;21473:6;21469:15;21462:29;21277:221;:::o;21504:366::-;21646:3;21667:67;21731:2;21726:3;21667:67;:::i;:::-;21660:74;;21743:93;21832:3;21743:93;:::i;:::-;21861:2;21856:3;21852:12;21845:19;;21504:366;;;:::o;21876:419::-;22042:4;22080:2;22069:9;22065:18;22057:26;;22129:9;22123:4;22119:20;22115:1;22104:9;22100:17;22093:47;22157:131;22283:4;22157:131;:::i;:::-;22149:139;;21876:419;;;:::o;22301:224::-;22441:34;22437:1;22429:6;22425:14;22418:58;22510:7;22505:2;22497:6;22493:15;22486:32;22301:224;:::o;22531:366::-;22673:3;22694:67;22758:2;22753:3;22694:67;:::i;:::-;22687:74;;22770:93;22859:3;22770:93;:::i;:::-;22888:2;22883:3;22879:12;22872:19;;22531:366;;;:::o;22903:419::-;23069:4;23107:2;23096:9;23092:18;23084:26;;23156:9;23150:4;23146:20;23142:1;23131:9;23127:17;23120:47;23184:131;23310:4;23184:131;:::i;:::-;23176:139;;22903:419;;;:::o;23328:222::-;23468:34;23464:1;23456:6;23452:14;23445:58;23537:5;23532:2;23524:6;23520:15;23513:30;23328:222;:::o;23556:366::-;23698:3;23719:67;23783:2;23778:3;23719:67;:::i;:::-;23712:74;;23795:93;23884:3;23795:93;:::i;:::-;23913:2;23908:3;23904:12;23897:19;;23556:366;;;:::o;23928:419::-;24094:4;24132:2;24121:9;24117:18;24109:26;;24181:9;24175:4;24171:20;24167:1;24156:9;24152:17;24145:47;24209:131;24335:4;24209:131;:::i;:::-;24201:139;;23928:419;;;:::o;24353:228::-;24493:34;24489:1;24481:6;24477:14;24470:58;24562:11;24557:2;24549:6;24545:15;24538:36;24353:228;:::o;24587:366::-;24729:3;24750:67;24814:2;24809:3;24750:67;:::i;:::-;24743:74;;24826:93;24915:3;24826:93;:::i;:::-;24944:2;24939:3;24935:12;24928:19;;24587:366;;;:::o;24959:419::-;25125:4;25163:2;25152:9;25148:18;25140:26;;25212:9;25206:4;25202:20;25198:1;25187:9;25183:17;25176:47;25240:131;25366:4;25240:131;:::i;:::-;25232:139;;24959:419;;;:::o;25384:177::-;25524:29;25520:1;25512:6;25508:14;25501:53;25384:177;:::o;25567:366::-;25709:3;25730:67;25794:2;25789:3;25730:67;:::i;:::-;25723:74;;25806:93;25895:3;25806:93;:::i;:::-;25924:2;25919:3;25915:12;25908:19;;25567:366;;;:::o;25939:419::-;26105:4;26143:2;26132:9;26128:18;26120:26;;26192:9;26186:4;26182:20;26178:1;26167:9;26163:17;26156:47;26220:131;26346:4;26220:131;:::i;:::-;26212:139;;25939:419;;;:::o;26364:176::-;26504:28;26500:1;26492:6;26488:14;26481:52;26364:176;:::o;26546:366::-;26688:3;26709:67;26773:2;26768:3;26709:67;:::i;:::-;26702:74;;26785:93;26874:3;26785:93;:::i;:::-;26903:2;26898:3;26894:12;26887:19;;26546:366;;;:::o;26918:419::-;27084:4;27122:2;27111:9;27107:18;27099:26;;27171:9;27165:4;27161:20;27157:1;27146:9;27142:17;27135:47;27199:131;27325:4;27199:131;:::i;:::-;27191:139;;26918:419;;;:::o;27343:169::-;27483:21;27479:1;27471:6;27467:14;27460:45;27343:169;:::o;27518:366::-;27660:3;27681:67;27745:2;27740:3;27681:67;:::i;:::-;27674:74;;27757:93;27846:3;27757:93;:::i;:::-;27875:2;27870:3;27866:12;27859:19;;27518:366;;;:::o;27890:419::-;28056:4;28094:2;28083:9;28079:18;28071:26;;28143:9;28137:4;28133:20;28129:1;28118:9;28114:17;28107:47;28171:131;28297:4;28171:131;:::i;:::-;28163:139;;27890:419;;;:::o;28315:178::-;28455:30;28451:1;28443:6;28439:14;28432:54;28315:178;:::o;28499:366::-;28641:3;28662:67;28726:2;28721:3;28662:67;:::i;:::-;28655:74;;28738:93;28827:3;28738:93;:::i;:::-;28856:2;28851:3;28847:12;28840:19;;28499:366;;;:::o;28871:419::-;29037:4;29075:2;29064:9;29060:18;29052:26;;29124:9;29118:4;29114:20;29110:1;29099:9;29095:17;29088:47;29152:131;29278:4;29152:131;:::i;:::-;29144:139;;28871:419;;;:::o;29296:191::-;29336:4;29356:20;29374:1;29356:20;:::i;:::-;29351:25;;29390:20;29408:1;29390:20;:::i;:::-;29385:25;;29429:1;29426;29423:8;29420:34;;;29434:18;;:::i;:::-;29420:34;29479:1;29476;29472:9;29464:17;;29296:191;;;;:::o;29493:442::-;29642:4;29680:2;29669:9;29665:18;29657:26;;29693:71;29761:1;29750:9;29746:17;29737:6;29693:71;:::i;:::-;29774:72;29842:2;29831:9;29827:18;29818:6;29774:72;:::i;:::-;29856;29924:2;29913:9;29909:18;29900:6;29856:72;:::i;:::-;29493:442;;;;;;:::o;29941:177::-;30081:29;30077:1;30069:6;30065:14;30058:53;29941:177;:::o;30124:366::-;30266:3;30287:67;30351:2;30346:3;30287:67;:::i;:::-;30280:74;;30363:93;30452:3;30363:93;:::i;:::-;30481:2;30476:3;30472:12;30465:19;;30124:366;;;:::o;30496:419::-;30662:4;30700:2;30689:9;30685:18;30677:26;;30749:9;30743:4;30739:20;30735:1;30724:9;30720:17;30713:47;30777:131;30903:4;30777:131;:::i;:::-;30769:139;;30496:419;;;:::o;30921:114::-;30988:6;31022:5;31016:12;31006:22;;30921:114;;;:::o;31041:184::-;31140:11;31174:6;31169:3;31162:19;31214:4;31209:3;31205:14;31190:29;;31041:184;;;;:::o;31231:132::-;31298:4;31321:3;31313:11;;31351:4;31346:3;31342:14;31334:22;;31231:132;;;:::o;31369:108::-;31446:24;31464:5;31446:24;:::i;:::-;31441:3;31434:37;31369:108;;:::o;31483:179::-;31552:10;31573:46;31615:3;31607:6;31573:46;:::i;:::-;31651:4;31646:3;31642:14;31628:28;;31483:179;;;;:::o;31668:113::-;31738:4;31770;31765:3;31761:14;31753:22;;31668:113;;;:::o;31817:732::-;31936:3;31965:54;32013:5;31965:54;:::i;:::-;32035:86;32114:6;32109:3;32035:86;:::i;:::-;32028:93;;32145:56;32195:5;32145:56;:::i;:::-;32224:7;32255:1;32240:284;32265:6;32262:1;32259:13;32240:284;;;32341:6;32335:13;32368:63;32427:3;32412:13;32368:63;:::i;:::-;32361:70;;32454:60;32507:6;32454:60;:::i;:::-;32444:70;;32300:224;32287:1;32284;32280:9;32275:14;;32240:284;;;32244:14;32540:3;32533:10;;31941:608;;;31817:732;;;;:::o;32555:831::-;32818:4;32856:3;32845:9;32841:19;32833:27;;32870:71;32938:1;32927:9;32923:17;32914:6;32870:71;:::i;:::-;32951:80;33027:2;33016:9;33012:18;33003:6;32951:80;:::i;:::-;33078:9;33072:4;33068:20;33063:2;33052:9;33048:18;33041:48;33106:108;33209:4;33200:6;33106:108;:::i;:::-;33098:116;;33224:72;33292:2;33281:9;33277:18;33268:6;33224:72;:::i;:::-;33306:73;33374:3;33363:9;33359:19;33350:6;33306:73;:::i;:::-;32555:831;;;;;;;;:::o
Swarm Source
ipfs://e82c59989060a9fbd1327b25d0d5c15060100a97a0791f1327d7f74b171b3b86
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.