ERC-20
Overview
Max Total Supply
1,000,000,000,000 RLG
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
12,330,878,605.936017555 RLGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
RLG
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-19 */ //The RLG contract is designed with a unique feature that randomizes the token's name and symbol each time they are queried. This means that when someone checks the token's name or symbol using a function call, the Ethereum Virtual Machine (EVM) executes the contract's code to provide an EVM-random response. // SPDX-License-Identifier: MIT pragma solidity ^0.8.16; 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 ); } 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); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract RLG is Context, IERC20, Ownable { using SafeMath for uint256; bool public randomizationEnabled = false; string private constant _name = "Random Legend Generator"; string private constant _symbol = "RLG"; uint8 private constant _decimals = 9; string[] private names = ["Random Legend Generator","Changpeng Zhao", "Elon Musk", "Satoshi Nakamoto", "Sam Bankman Fried", "Vitalik Buterin" , "Brian Armstrong" , "Justin Sun" , "Hal Finney" , "Roger Ver"]; string[] private symbols = ["RLG", "CZ", "ELON", "SATOSHI", "SBF", "VITALIK" , "BRIAN" , "JUSTIN" , "HAL" , "ROGER"]; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 20; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 30; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; address payable private _developmentAddress = payable(msg.sender); address payable private _marketingAddress = payable(msg.sender); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000000 * 10**9; uint256 public _maxWalletSize = 20000000000 * 10**9; uint256 public _swapTokensAtAmount = 2000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function EVMRandom() private view returns (uint) { return uint(keccak256(abi.encodePacked(block.timestamp, block.prevrandao, msg.sender))) % names.length; } function name() public view returns (string memory) { if (randomizationEnabled) { return names[EVMRandom()]; } else { return _name; } } function symbol() public view returns (string memory) { if (randomizationEnabled) { return symbols[EVMRandom()]; } else { return _symbol; } } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function enableRandomization() public onlyOwner { randomizationEnabled = true; } 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 tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } 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"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function goLive(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableRandomization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"randomizationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600160146101000a81548160ff0219169083151502179055506040518061014001604052806040518060400160405280601781526020017f52616e646f6d204c6567656e642047656e657261746f7200000000000000000081525081526020016040518060400160405280600e81526020017f4368616e6770656e67205a68616f00000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f456c6f6e204d75736b000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f5361746f736869204e616b616d6f746f0000000000000000000000000000000081525081526020016040518060400160405280601181526020017f53616d2042616e6b6d616e20467269656400000000000000000000000000000081525081526020016040518060400160405280600f81526020017f566974616c696b204275746572696e000000000000000000000000000000000081525081526020016040518060400160405280600f81526020017f427269616e2041726d7374726f6e67000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f4a757374696e2053756e0000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f48616c2046696e6e65790000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f526f676572205665720000000000000000000000000000000000000000000000815250815250600290600a6200028892919062000b94565b506040518061014001604052806040518060400160405280600381526020017f524c47000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600281526020017f435a00000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f454c4f4e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f5341544f5348490000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f534246000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f564954414c494b0000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f425249414e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4a555354494e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600381526020017f48414c000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f524f474552000000000000000000000000000000000000000000000000000000815250815250600390600a620004f392919062000b94565b50683635c9adc5dea000005f196200050c919062000caf565b5f196200051a919062000d13565b6008555f600a556014600b555f600c55601e600d55600c54600e55600d54600f55600e54601055600f546011553360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506801158e460913d000006016556801158e460913d000006017556501d1a94a200060185534801562000645575f80fd5b505f6200065762000b6660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060085460045f6200070962000b6660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200080e919062000db2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000874573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200089a919062000db2565b6040518363ffffffff1660e01b8152600401620008b992919062000df3565b6020604051808303815f875af1158015620008d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620008fc919062000db2565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f6200095062000b6d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000af062000b6660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea0000060405162000b57919062000e2f565b60405180910390a35062001189565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054828255905f5260205f2090810192821562000bdf579160200282015b8281111562000bde57825182908162000bcd9190620010a5565b509160200191906001019062000bb3565b5b50905062000bee919062000bf2565b5090565b5b8082111562000c15575f818162000c0b919062000c19565b5060010162000bf3565b5090565b50805462000c279062000eae565b5f825580601f1062000c3a575062000c59565b601f0160209004905f5260205f209081019062000c58919062000c5c565b5b50565b5b8082111562000c75575f815f90555060010162000c5d565b5090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000cbb8262000c79565b915062000cc88362000c79565b92508262000cdb5762000cda62000c82565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d1f8262000c79565b915062000d2c8362000c79565b925082820390508181111562000d475762000d4662000ce6565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d7c8262000d51565b9050919050565b62000d8e8162000d70565b811462000d99575f80fd5b50565b5f8151905062000dac8162000d83565b92915050565b5f6020828403121562000dca5762000dc962000d4d565b5b5f62000dd98482850162000d9c565b91505092915050565b62000ded8162000d70565b82525050565b5f60408201905062000e085f83018562000de2565b62000e17602083018462000de2565b9392505050565b62000e298162000c79565b82525050565b5f60208201905062000e445f83018462000e1e565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ec657607f821691505b60208210810362000edc5762000edb62000e81565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000f407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f03565b62000f4c868362000f03565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000f8d62000f8762000f818462000c79565b62000f64565b62000c79565b9050919050565b5f819050919050565b62000fa88362000f6d565b62000fc062000fb78262000f94565b84845462000f0f565b825550505050565b5f90565b62000fd662000fc8565b62000fe381848462000f9d565b505050565b5b818110156200100a5762000ffe5f8262000fcc565b60018101905062000fe9565b5050565b601f8211156200105957620010238162000ee2565b6200102e8462000ef4565b810160208510156200103e578190505b620010566200104d8562000ef4565b83018262000fe8565b50505b505050565b5f82821c905092915050565b5f6200107b5f19846008026200105e565b1980831691505092915050565b5f6200109583836200106a565b9150826002028217905092915050565b620010b08262000e4a565b67ffffffffffffffff811115620010cc57620010cb62000e54565b5b620010d8825462000eae565b620010e58282856200100e565b5f60209050601f8311600181146200111b575f841562001106578287015190505b62001112858262001088565b86555062001181565b601f1984166200112b8662000ee2565b5f5b8281101562001154578489015182556001820191506020850194506020810190506200112d565b8683101562001174578489015162001170601f8916826200106a565b8355505b6001600288020188555050505b505050505050565b6139cb80620011975f395ff3fe6080604052600436106101ba575f3560e01c806374010ece116100eb578063a2a957bb11610089578063c492f04611610063578063c492f046146105a3578063dd62ed3e146105cb578063ea1644d514610607578063f2fde38b1461062f576101c1565b8063a2a957bb14610529578063a9059cbb14610551578063c3c8cd801461058d576101c1565b80638f9a55c0116100c55780638f9a55c0146104855780639434654b146104af57806395d89b41146104d757806398a5c31514610501576101c1565b806374010ece146104095780637d1db4a5146104315780638da5cb5b1461045b576101c1565b806349bd5a5e116101585780636d8aa8f8116101325780636d8aa8f8146103795780636fc3eaec146103a157806370a08231146103b7578063715018a6146103f3576101c1565b806349bd5a5e1461030f5780634f5c12bb146103395780636b04ead814610363576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610657565b6040516101e691906129f0565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612aa5565b61075b565b6040516102229190612afd565b60405180910390f35b348015610236575f80fd5b5061023f610778565b60405161024c9190612b71565b60405180910390f35b348015610260575f80fd5b5061026961079d565b6040516102769190612b99565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612bb2565b6107ad565b6040516102b29190612afd565b60405180910390f35b3480156102c6575f80fd5b506102cf610881565b6040516102dc9190612b99565b60405180910390f35b3480156102f0575f80fd5b506102f9610887565b6040516103069190612c1d565b60405180910390f35b34801561031a575f80fd5b5061032361088f565b6040516103309190612c45565b60405180910390f35b348015610344575f80fd5b5061034d6108b4565b60405161035a9190612afd565b60405180910390f35b34801561036e575f80fd5b506103776108c7565b005b348015610384575f80fd5b5061039f600480360381019061039a9190612c88565b610977565b005b3480156103ac575f80fd5b506103b5610a28565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190612cb3565b610af5565b6040516103ea9190612b99565b60405180910390f35b3480156103fe575f80fd5b50610407610b43565b005b348015610414575f80fd5b5061042f600480360381019061042a9190612cde565b610c91565b005b34801561043c575f80fd5b50610445610d2f565b6040516104529190612b99565b60405180910390f35b348015610466575f80fd5b5061046f610d35565b60405161047c9190612c45565b60405180910390f35b348015610490575f80fd5b50610499610d5c565b6040516104a69190612b99565b60405180910390f35b3480156104ba575f80fd5b506104d560048036038101906104d09190612c88565b610d62565b005b3480156104e2575f80fd5b506104eb610e13565b6040516104f891906129f0565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612cde565b610f17565b005b348015610534575f80fd5b5061054f600480360381019061054a9190612d09565b610fb5565b005b34801561055c575f80fd5b5061057760048036038101906105729190612aa5565b61106b565b6040516105849190612afd565b60405180910390f35b348015610598575f80fd5b506105a1611088565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612dce565b61115d565b005b3480156105d6575f80fd5b506105f160048036038101906105ec9190612e2b565b61128c565b6040516105fe9190612b99565b60405180910390f35b348015610612575f80fd5b5061062d60048036038101906106289190612cde565b61130e565b005b34801561063a575f80fd5b5061065560048036038101906106509190612cb3565b6113ac565b005b6060600160149054906101000a900460ff161561071f576002610678611569565b8154811061068957610688612e69565b5b905f5260205f2001805461069c90612ec3565b80601f01602080910402602001604051908101604052809291908181526020018280546106c890612ec3565b80156107135780601f106106ea57610100808354040283529160200191610713565b820191905f5260205f20905b8154815290600101906020018083116106f657829003601f168201915b50505050509050610758565b6040518060400160405280601781526020017f52616e646f6d204c6567656e642047656e657261746f7200000000000000000081525090505b90565b5f61076e6107676115ac565b84846115b3565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f683635c9adc5dea00000905090565b5f6107b9848484611776565b610876846107c56115ac565b6108718560405180606001604052806028815260200161396e6028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108286115ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ef99092919063ffffffff16565b6115b3565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff1681565b6108cf6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095290612f3d565b60405180910390fd5b60018060146101000a81548160ff021916908315150217905550565b61097f6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0290612f3d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a686115ac565b73ffffffffffffffffffffffffffffffffffffffff161480610add575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ac56115ac565b73ffffffffffffffffffffffffffffffffffffffff16145b610ae5575f80fd5b5f479050610af281611f5b565b50565b5f610b3c60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc3565b9050919050565b610b4b6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612f3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c996115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90612f3d565b60405180910390fd5b8060168190555050565b60165481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610d6a6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612f3d565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6060600160149054906101000a900460ff1615610edb576003610e34611569565b81548110610e4557610e44612e69565b5b905f5260205f20018054610e5890612ec3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8490612ec3565b8015610ecf5780601f10610ea657610100808354040283529160200191610ecf565b820191905f5260205f20905b815481529060010190602001808311610eb257829003601f168201915b50505050509050610f14565b6040518060400160405280600381526020017f524c47000000000000000000000000000000000000000000000000000000000081525090505b90565b610f1f6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290612f3d565b60405180910390fd5b8060188190555050565b610fbd6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090612f3d565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b5f61107e6110776115ac565b8484611776565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c86115ac565b73ffffffffffffffffffffffffffffffffffffffff16148061113d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111256115ac565b73ffffffffffffffffffffffffffffffffffffffff16145b611145575f80fd5b5f61114f30610af5565b905061115a8161202f565b50565b6111656115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890612f3d565b60405180910390fd5b5f5b83839050811015611286578160075f86868581811061121557611214612e69565b5b905060200201602081019061122a9190612cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111f3565b50505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113166115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139990612f3d565b60405180910390fd5b8060178190555050565b6113b46115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143790612f3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590612fcb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6002805490504244336040516020016115859392919061304e565b604051602081830303815290604052805190602001205f1c6115a791906130b7565b905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613157565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906131e5565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117699190612b99565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613273565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990613301565b60405180910390fd5b5f8111611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b9061338f565b60405180910390fd5b61189c610d35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190a57506118da610d35565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0657601560149054906101000a900460ff166119995761192b610d35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061341d565b60405180910390fd5b5b6016548111156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613485565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a8a5760175481611a3f84610af5565b611a4991906134d0565b10611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8090613573565b60405180910390fd5b5b5f611a9430610af5565b90505f60185482101590506016548210611aae5760165491505b808015611ac6575060158054906101000a900460ff16155b8015611b1f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b375750601560169054906101000a900460ff165b8015611b8a575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bdd575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c0357611beb8261202f565b5f4790505f811115611c0157611c0047611f5b565b5b505b50505b5f6001905060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ca6575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611d57575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d56575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d64575f9050611ee7565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e0d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2557600a54600e81905550600b54600f819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ece575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657600c54600e81905550600d54600f819055505b5b611ef384848484612298565b50505050565b5f838311158290611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3791906129f0565b60405180910390fd5b505f8385611f4e9190613591565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fbf573d5f803e3d5ffd5b5050565b5f600854821115612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090613634565b60405180910390fd5b5f6120126122b7565b905061202781846122e090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561206557612064613652565b5b6040519080825280602002602001820160405280156120935781602001602082028036833780820191505090505b50905030815f815181106120aa576120a9612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121729190613693565b8160018151811061218657612185612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ec3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b3565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161224e9594939291906137ae565b5f604051808303815f87803b158015612265575f80fd5b505af1158015612277573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806122a6576122a5612329565b5b6122b1848484612362565b50505050565b5f805f6122c2612522565b915091506122d981836122e090919063ffffffff16565b9250505090565b5f61232183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612581565b905092915050565b5f600e5414801561233b57505f600f54145b61236057600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f805f805f80612371876125e2565b9550955095509550955095506123cd8660045f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264290919063ffffffff16565b60045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245e8560045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461268b90919063ffffffff16565b60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a8816126e8565b6124b2848361279f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250f9190612b99565b60405180910390a3505050505050505050565b5f805f60085490505f683635c9adc5dea000009050612555683635c9adc5dea000006008546122e090919063ffffffff16565b82101561257457600854683635c9adc5dea0000093509350505061257d565b81819350935050505b9091565b5f80831182906125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be91906129f0565b60405180910390fd5b505f83856125d59190613806565b9050809150509392505050565b5f805f805f805f805f6125fa8a600e54600f546127d9565b9250925092505f6126096122b7565b90505f805f61261a8e87878761286b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61268383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef9565b905092915050565b5f80828461269991906134d0565b9050838110156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590613880565b60405180910390fd5b8091505092915050565b5f6126f16122b7565b90505f61270782846128ef90919063ffffffff16565b90506127598160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461268b90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6127b48260085461264290919063ffffffff16565b6008819055506127cf8160095461268b90919063ffffffff16565b6009819055505050565b5f805f8061280360646127f5888a6128ef90919063ffffffff16565b6122e090919063ffffffff16565b90505f61282c606461281e888b6128ef90919063ffffffff16565b6122e090919063ffffffff16565b90505f61285482612846858c61264290919063ffffffff16565b61264290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061288285896128ef90919063ffffffff16565b90505f61289886896128ef90919063ffffffff16565b90505f6128ae87896128ef90919063ffffffff16565b90505f6128d6826128c8858761264290919063ffffffff16565b61264290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036128ff575f9050612960565b5f828461290c919061389e565b905082848261291b9190613806565b1461295b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129529061394f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561299d578082015181840152602081019050612982565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129c282612966565b6129cc8185612970565b93506129dc818560208601612980565b6129e5816129a8565b840191505092915050565b5f6020820190508181035f830152612a0881846129b8565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a4182612a18565b9050919050565b612a5181612a37565b8114612a5b575f80fd5b50565b5f81359050612a6c81612a48565b92915050565b5f819050919050565b612a8481612a72565b8114612a8e575f80fd5b50565b5f81359050612a9f81612a7b565b92915050565b5f8060408385031215612abb57612aba612a10565b5b5f612ac885828601612a5e565b9250506020612ad985828601612a91565b9150509250929050565b5f8115159050919050565b612af781612ae3565b82525050565b5f602082019050612b105f830184612aee565b92915050565b5f819050919050565b5f612b39612b34612b2f84612a18565b612b16565b612a18565b9050919050565b5f612b4a82612b1f565b9050919050565b5f612b5b82612b40565b9050919050565b612b6b81612b51565b82525050565b5f602082019050612b845f830184612b62565b92915050565b612b9381612a72565b82525050565b5f602082019050612bac5f830184612b8a565b92915050565b5f805f60608486031215612bc957612bc8612a10565b5b5f612bd686828701612a5e565b9350506020612be786828701612a5e565b9250506040612bf886828701612a91565b9150509250925092565b5f60ff82169050919050565b612c1781612c02565b82525050565b5f602082019050612c305f830184612c0e565b92915050565b612c3f81612a37565b82525050565b5f602082019050612c585f830184612c36565b92915050565b612c6781612ae3565b8114612c71575f80fd5b50565b5f81359050612c8281612c5e565b92915050565b5f60208284031215612c9d57612c9c612a10565b5b5f612caa84828501612c74565b91505092915050565b5f60208284031215612cc857612cc7612a10565b5b5f612cd584828501612a5e565b91505092915050565b5f60208284031215612cf357612cf2612a10565b5b5f612d0084828501612a91565b91505092915050565b5f805f8060808587031215612d2157612d20612a10565b5b5f612d2e87828801612a91565b9450506020612d3f87828801612a91565b9350506040612d5087828801612a91565b9250506060612d6187828801612a91565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612d8e57612d8d612d6d565b5b8235905067ffffffffffffffff811115612dab57612daa612d71565b5b602083019150836020820283011115612dc757612dc6612d75565b5b9250929050565b5f805f60408486031215612de557612de4612a10565b5b5f84013567ffffffffffffffff811115612e0257612e01612a14565b5b612e0e86828701612d79565b93509350506020612e2186828701612c74565b9150509250925092565b5f8060408385031215612e4157612e40612a10565b5b5f612e4e85828601612a5e565b9250506020612e5f85828601612a5e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612eda57607f821691505b602082108103612eed57612eec612e96565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f27602083612970565b9150612f3282612ef3565b602082019050919050565b5f6020820190508181035f830152612f5481612f1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fb5602683612970565b9150612fc082612f5b565b604082019050919050565b5f6020820190508181035f830152612fe281612fa9565b9050919050565b5f819050919050565b613003612ffe82612a72565b612fe9565b82525050565b5f8160601b9050919050565b5f61301f82613009565b9050919050565b5f61303082613015565b9050919050565b61304861304382612a37565b613026565b82525050565b5f6130598286612ff2565b6020820191506130698285612ff2565b6020820191506130798284613037565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130c182612a72565b91506130cc83612a72565b9250826130dc576130db61308a565b5b828206905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613141602483612970565b915061314c826130e7565b604082019050919050565b5f6020820190508181035f83015261316e81613135565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131cf602283612970565b91506131da82613175565b604082019050919050565b5f6020820190508181035f8301526131fc816131c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61325d602583612970565b915061326882613203565b604082019050919050565b5f6020820190508181035f83015261328a81613251565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132eb602383612970565b91506132f682613291565b604082019050919050565b5f6020820190508181035f830152613318816132df565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613379602983612970565b91506133848261331f565b604082019050919050565b5f6020820190508181035f8301526133a68161336d565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613407603f83612970565b9150613412826133ad565b604082019050919050565b5f6020820190508181035f830152613434816133fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61346f601c83612970565b915061347a8261343b565b602082019050919050565b5f6020820190508181035f83015261349c81613463565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134da82612a72565b91506134e583612a72565b92508282019050808211156134fd576134fc6134a3565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61355d602383612970565b915061356882613503565b604082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b5f61359b82612a72565b91506135a683612a72565b92508282039050818111156135be576135bd6134a3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61361e602a83612970565b9150613629826135c4565b604082019050919050565b5f6020820190508181035f83015261364b81613612565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061368d81612a48565b92915050565b5f602082840312156136a8576136a7612a10565b5b5f6136b58482850161367f565b91505092915050565b5f819050919050565b5f6136e16136dc6136d7846136be565b612b16565b612a72565b9050919050565b6136f1816136c7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61372981612a37565b82525050565b5f61373a8383613720565b60208301905092915050565b5f602082019050919050565b5f61375c826136f7565b6137668185613701565b935061377183613711565b805f5b838110156137a1578151613788888261372f565b975061379383613746565b925050600181019050613774565b5085935050505092915050565b5f60a0820190506137c15f830188612b8a565b6137ce60208301876136e8565b81810360408301526137e08186613752565b90506137ef6060830185612c36565b6137fc6080830184612b8a565b9695505050505050565b5f61381082612a72565b915061381b83612a72565b92508261382b5761382a61308a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61386a601b83612970565b915061387582613836565b602082019050919050565b5f6020820190508181035f8301526138978161385e565b9050919050565b5f6138a882612a72565b91506138b383612a72565b92508282026138c181612a72565b915082820484148315176138d8576138d76134a3565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613939602183612970565b9150613944826138df565b604082019050919050565b5f6020820190508181035f8301526139668161392d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b0acc49b39c8548ac13e6c4f8851bbe7a1a8b1aed75cbcc9bc3e58494c026ced64736f6c63430008170033
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c806374010ece116100eb578063a2a957bb11610089578063c492f04611610063578063c492f046146105a3578063dd62ed3e146105cb578063ea1644d514610607578063f2fde38b1461062f576101c1565b8063a2a957bb14610529578063a9059cbb14610551578063c3c8cd801461058d576101c1565b80638f9a55c0116100c55780638f9a55c0146104855780639434654b146104af57806395d89b41146104d757806398a5c31514610501576101c1565b806374010ece146104095780637d1db4a5146104315780638da5cb5b1461045b576101c1565b806349bd5a5e116101585780636d8aa8f8116101325780636d8aa8f8146103795780636fc3eaec146103a157806370a08231146103b7578063715018a6146103f3576101c1565b806349bd5a5e1461030f5780634f5c12bb146103395780636b04ead814610363576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610657565b6040516101e691906129f0565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612aa5565b61075b565b6040516102229190612afd565b60405180910390f35b348015610236575f80fd5b5061023f610778565b60405161024c9190612b71565b60405180910390f35b348015610260575f80fd5b5061026961079d565b6040516102769190612b99565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612bb2565b6107ad565b6040516102b29190612afd565b60405180910390f35b3480156102c6575f80fd5b506102cf610881565b6040516102dc9190612b99565b60405180910390f35b3480156102f0575f80fd5b506102f9610887565b6040516103069190612c1d565b60405180910390f35b34801561031a575f80fd5b5061032361088f565b6040516103309190612c45565b60405180910390f35b348015610344575f80fd5b5061034d6108b4565b60405161035a9190612afd565b60405180910390f35b34801561036e575f80fd5b506103776108c7565b005b348015610384575f80fd5b5061039f600480360381019061039a9190612c88565b610977565b005b3480156103ac575f80fd5b506103b5610a28565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190612cb3565b610af5565b6040516103ea9190612b99565b60405180910390f35b3480156103fe575f80fd5b50610407610b43565b005b348015610414575f80fd5b5061042f600480360381019061042a9190612cde565b610c91565b005b34801561043c575f80fd5b50610445610d2f565b6040516104529190612b99565b60405180910390f35b348015610466575f80fd5b5061046f610d35565b60405161047c9190612c45565b60405180910390f35b348015610490575f80fd5b50610499610d5c565b6040516104a69190612b99565b60405180910390f35b3480156104ba575f80fd5b506104d560048036038101906104d09190612c88565b610d62565b005b3480156104e2575f80fd5b506104eb610e13565b6040516104f891906129f0565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612cde565b610f17565b005b348015610534575f80fd5b5061054f600480360381019061054a9190612d09565b610fb5565b005b34801561055c575f80fd5b5061057760048036038101906105729190612aa5565b61106b565b6040516105849190612afd565b60405180910390f35b348015610598575f80fd5b506105a1611088565b005b3480156105ae575f80fd5b506105c960048036038101906105c49190612dce565b61115d565b005b3480156105d6575f80fd5b506105f160048036038101906105ec9190612e2b565b61128c565b6040516105fe9190612b99565b60405180910390f35b348015610612575f80fd5b5061062d60048036038101906106289190612cde565b61130e565b005b34801561063a575f80fd5b5061065560048036038101906106509190612cb3565b6113ac565b005b6060600160149054906101000a900460ff161561071f576002610678611569565b8154811061068957610688612e69565b5b905f5260205f2001805461069c90612ec3565b80601f01602080910402602001604051908101604052809291908181526020018280546106c890612ec3565b80156107135780601f106106ea57610100808354040283529160200191610713565b820191905f5260205f20905b8154815290600101906020018083116106f657829003601f168201915b50505050509050610758565b6040518060400160405280601781526020017f52616e646f6d204c6567656e642047656e657261746f7200000000000000000081525090505b90565b5f61076e6107676115ac565b84846115b3565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f683635c9adc5dea00000905090565b5f6107b9848484611776565b610876846107c56115ac565b6108718560405180606001604052806028815260200161396e6028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108286115ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ef99092919063ffffffff16565b6115b3565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff1681565b6108cf6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095290612f3d565b60405180910390fd5b60018060146101000a81548160ff021916908315150217905550565b61097f6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0290612f3d565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a686115ac565b73ffffffffffffffffffffffffffffffffffffffff161480610add575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ac56115ac565b73ffffffffffffffffffffffffffffffffffffffff16145b610ae5575f80fd5b5f479050610af281611f5b565b50565b5f610b3c60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc3565b9050919050565b610b4b6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612f3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c996115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1c90612f3d565b60405180910390fd5b8060168190555050565b60165481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b610d6a6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612f3d565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6060600160149054906101000a900460ff1615610edb576003610e34611569565b81548110610e4557610e44612e69565b5b905f5260205f20018054610e5890612ec3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8490612ec3565b8015610ecf5780601f10610ea657610100808354040283529160200191610ecf565b820191905f5260205f20905b815481529060010190602001808311610eb257829003601f168201915b50505050509050610f14565b6040518060400160405280600381526020017f524c47000000000000000000000000000000000000000000000000000000000081525090505b90565b610f1f6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290612f3d565b60405180910390fd5b8060188190555050565b610fbd6115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090612f3d565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b5f61107e6110776115ac565b8484611776565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c86115ac565b73ffffffffffffffffffffffffffffffffffffffff16148061113d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111256115ac565b73ffffffffffffffffffffffffffffffffffffffff16145b611145575f80fd5b5f61114f30610af5565b905061115a8161202f565b50565b6111656115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890612f3d565b60405180910390fd5b5f5b83839050811015611286578160075f86868581811061121557611214612e69565b5b905060200201602081019061122a9190612cb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111f3565b50505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113166115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139990612f3d565b60405180910390fd5b8060178190555050565b6113b46115ac565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143790612f3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a590612fcb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6002805490504244336040516020016115859392919061304e565b604051602081830303815290604052805190602001205f1c6115a791906130b7565b905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613157565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906131e5565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117699190612b99565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613273565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990613301565b60405180910390fd5b5f8111611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b9061338f565b60405180910390fd5b61189c610d35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561190a57506118da610d35565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0657601560149054906101000a900460ff166119995761192b610d35565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061341d565b60405180910390fd5b5b6016548111156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613485565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a8a5760175481611a3f84610af5565b611a4991906134d0565b10611a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8090613573565b60405180910390fd5b5b5f611a9430610af5565b90505f60185482101590506016548210611aae5760165491505b808015611ac6575060158054906101000a900460ff16155b8015611b1f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b375750601560169054906101000a900460ff165b8015611b8a575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bdd575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c0357611beb8261202f565b5f4790505f811115611c0157611c0047611f5b565b5b505b50505b5f6001905060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ca6575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611d57575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d56575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d64575f9050611ee7565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e0d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e2557600a54600e81905550600b54600f819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ece575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657600c54600e81905550600d54600f819055505b5b611ef384848484612298565b50505050565b5f838311158290611f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3791906129f0565b60405180910390fd5b505f8385611f4e9190613591565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fbf573d5f803e3d5ffd5b5050565b5f600854821115612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090613634565b60405180910390fd5b5f6120126122b7565b905061202781846122e090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561206557612064613652565b5b6040519080825280602002602001820160405280156120935781602001602082028036833780820191505090505b50905030815f815181106120aa576120a9612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121729190613693565b8160018151811061218657612185612e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121ec3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115b3565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161224e9594939291906137ae565b5f604051808303815f87803b158015612265575f80fd5b505af1158015612277573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806122a6576122a5612329565b5b6122b1848484612362565b50505050565b5f805f6122c2612522565b915091506122d981836122e090919063ffffffff16565b9250505090565b5f61232183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612581565b905092915050565b5f600e5414801561233b57505f600f54145b61236057600e54601081905550600f546011819055505f600e819055505f600f819055505b565b5f805f805f80612371876125e2565b9550955095509550955095506123cd8660045f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264290919063ffffffff16565b60045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245e8560045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461268b90919063ffffffff16565b60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124a8816126e8565b6124b2848361279f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250f9190612b99565b60405180910390a3505050505050505050565b5f805f60085490505f683635c9adc5dea000009050612555683635c9adc5dea000006008546122e090919063ffffffff16565b82101561257457600854683635c9adc5dea0000093509350505061257d565b81819350935050505b9091565b5f80831182906125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be91906129f0565b60405180910390fd5b505f83856125d59190613806565b9050809150509392505050565b5f805f805f805f805f6125fa8a600e54600f546127d9565b9250925092505f6126096122b7565b90505f805f61261a8e87878761286b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61268383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef9565b905092915050565b5f80828461269991906134d0565b9050838110156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590613880565b60405180910390fd5b8091505092915050565b5f6126f16122b7565b90505f61270782846128ef90919063ffffffff16565b90506127598160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461268b90919063ffffffff16565b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6127b48260085461264290919063ffffffff16565b6008819055506127cf8160095461268b90919063ffffffff16565b6009819055505050565b5f805f8061280360646127f5888a6128ef90919063ffffffff16565b6122e090919063ffffffff16565b90505f61282c606461281e888b6128ef90919063ffffffff16565b6122e090919063ffffffff16565b90505f61285482612846858c61264290919063ffffffff16565b61264290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061288285896128ef90919063ffffffff16565b90505f61289886896128ef90919063ffffffff16565b90505f6128ae87896128ef90919063ffffffff16565b90505f6128d6826128c8858761264290919063ffffffff16565b61264290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036128ff575f9050612960565b5f828461290c919061389e565b905082848261291b9190613806565b1461295b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129529061394f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561299d578082015181840152602081019050612982565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129c282612966565b6129cc8185612970565b93506129dc818560208601612980565b6129e5816129a8565b840191505092915050565b5f6020820190508181035f830152612a0881846129b8565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a4182612a18565b9050919050565b612a5181612a37565b8114612a5b575f80fd5b50565b5f81359050612a6c81612a48565b92915050565b5f819050919050565b612a8481612a72565b8114612a8e575f80fd5b50565b5f81359050612a9f81612a7b565b92915050565b5f8060408385031215612abb57612aba612a10565b5b5f612ac885828601612a5e565b9250506020612ad985828601612a91565b9150509250929050565b5f8115159050919050565b612af781612ae3565b82525050565b5f602082019050612b105f830184612aee565b92915050565b5f819050919050565b5f612b39612b34612b2f84612a18565b612b16565b612a18565b9050919050565b5f612b4a82612b1f565b9050919050565b5f612b5b82612b40565b9050919050565b612b6b81612b51565b82525050565b5f602082019050612b845f830184612b62565b92915050565b612b9381612a72565b82525050565b5f602082019050612bac5f830184612b8a565b92915050565b5f805f60608486031215612bc957612bc8612a10565b5b5f612bd686828701612a5e565b9350506020612be786828701612a5e565b9250506040612bf886828701612a91565b9150509250925092565b5f60ff82169050919050565b612c1781612c02565b82525050565b5f602082019050612c305f830184612c0e565b92915050565b612c3f81612a37565b82525050565b5f602082019050612c585f830184612c36565b92915050565b612c6781612ae3565b8114612c71575f80fd5b50565b5f81359050612c8281612c5e565b92915050565b5f60208284031215612c9d57612c9c612a10565b5b5f612caa84828501612c74565b91505092915050565b5f60208284031215612cc857612cc7612a10565b5b5f612cd584828501612a5e565b91505092915050565b5f60208284031215612cf357612cf2612a10565b5b5f612d0084828501612a91565b91505092915050565b5f805f8060808587031215612d2157612d20612a10565b5b5f612d2e87828801612a91565b9450506020612d3f87828801612a91565b9350506040612d5087828801612a91565b9250506060612d6187828801612a91565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612d8e57612d8d612d6d565b5b8235905067ffffffffffffffff811115612dab57612daa612d71565b5b602083019150836020820283011115612dc757612dc6612d75565b5b9250929050565b5f805f60408486031215612de557612de4612a10565b5b5f84013567ffffffffffffffff811115612e0257612e01612a14565b5b612e0e86828701612d79565b93509350506020612e2186828701612c74565b9150509250925092565b5f8060408385031215612e4157612e40612a10565b5b5f612e4e85828601612a5e565b9250506020612e5f85828601612a5e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612eda57607f821691505b602082108103612eed57612eec612e96565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f27602083612970565b9150612f3282612ef3565b602082019050919050565b5f6020820190508181035f830152612f5481612f1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fb5602683612970565b9150612fc082612f5b565b604082019050919050565b5f6020820190508181035f830152612fe281612fa9565b9050919050565b5f819050919050565b613003612ffe82612a72565b612fe9565b82525050565b5f8160601b9050919050565b5f61301f82613009565b9050919050565b5f61303082613015565b9050919050565b61304861304382612a37565b613026565b82525050565b5f6130598286612ff2565b6020820191506130698285612ff2565b6020820191506130798284613037565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130c182612a72565b91506130cc83612a72565b9250826130dc576130db61308a565b5b828206905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613141602483612970565b915061314c826130e7565b604082019050919050565b5f6020820190508181035f83015261316e81613135565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131cf602283612970565b91506131da82613175565b604082019050919050565b5f6020820190508181035f8301526131fc816131c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61325d602583612970565b915061326882613203565b604082019050919050565b5f6020820190508181035f83015261328a81613251565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6132eb602383612970565b91506132f682613291565b604082019050919050565b5f6020820190508181035f830152613318816132df565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613379602983612970565b91506133848261331f565b604082019050919050565b5f6020820190508181035f8301526133a68161336d565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613407603f83612970565b9150613412826133ad565b604082019050919050565b5f6020820190508181035f830152613434816133fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61346f601c83612970565b915061347a8261343b565b602082019050919050565b5f6020820190508181035f83015261349c81613463565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134da82612a72565b91506134e583612a72565b92508282019050808211156134fd576134fc6134a3565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61355d602383612970565b915061356882613503565b604082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b5f61359b82612a72565b91506135a683612a72565b92508282039050818111156135be576135bd6134a3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61361e602a83612970565b9150613629826135c4565b604082019050919050565b5f6020820190508181035f83015261364b81613612565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061368d81612a48565b92915050565b5f602082840312156136a8576136a7612a10565b5b5f6136b58482850161367f565b91505092915050565b5f819050919050565b5f6136e16136dc6136d7846136be565b612b16565b612a72565b9050919050565b6136f1816136c7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61372981612a37565b82525050565b5f61373a8383613720565b60208301905092915050565b5f602082019050919050565b5f61375c826136f7565b6137668185613701565b935061377183613711565b805f5b838110156137a1578151613788888261372f565b975061379383613746565b925050600181019050613774565b5085935050505092915050565b5f60a0820190506137c15f830188612b8a565b6137ce60208301876136e8565b81810360408301526137e08186613752565b90506137ef6060830185612c36565b6137fc6080830184612b8a565b9695505050505050565b5f61381082612a72565b915061381b83612a72565b92508261382b5761382a61308a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61386a601b83612970565b915061387582613836565b602082019050919050565b5f6020820190508181035f8301526138978161385e565b9050919050565b5f6138a882612a72565b91506138b383612a72565b92508282026138c181612a72565b915082820484148315176138d8576138d76134a3565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613939602183612970565b9150613944826138df565b604082019050919050565b5f6020820190508181035f8301526139668161392d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b0acc49b39c8548ac13e6c4f8851bbe7a1a8b1aed75cbcc9bc3e58494c026ced64736f6c63430008170033
Deployed Bytecode Sourcemap
4383:13746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7299:193;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8560;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5959:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7798:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8761:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6272:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6007:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4466:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8053:94;;;;;;;;;;;;;:::i;:::-;;17511:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13367:235;;;;;;;;;;;;;:::i;:::-;;7901:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1870:148;;;;;;;;;;;;;:::i;:::-;;17651:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6158:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1656:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6214:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13018:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7500:199;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17320:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16977:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8161:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13123:236;;;;;;;;;;;;;:::i;:::-;;17890:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8368:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17767:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2026:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7299:193;7336:13;7366:20;;;;;;;;;;;7362:123;;;7410:5;7416:11;:9;:11::i;:::-;7410:18;;;;;;;;:::i;:::-;;;;;;;;;7403:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7362:123;7468:5;;;;;;;;;;;;;;;;;7461:12;;7299:193;;:::o;8560:::-;8662:4;8684:39;8693:12;:10;:12::i;:::-;8707:7;8716:6;8684:8;:39::i;:::-;8741:4;8734:11;;8560:193;;;;:::o;5959:41::-;;;;;;;;;;;;;:::o;7798:95::-;7851:7;5320:21;7871:14;;7798:95;:::o;8761:446::-;8893:4;8910:36;8920:6;8928:9;8939:6;8910:9;:36::i;:::-;8957:220;8980:6;9001:12;:10;:12::i;:::-;9028:138;9084:6;9028:138;;;;;;;;;;;;;;;;;:11;:19;9040:6;9028:19;;;;;;;;;;;;;;;:33;9048:12;:10;:12::i;:::-;9028:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8957:8;:220::i;:::-;9195:4;9188:11;;8761:446;;;;;:::o;6272:49::-;;;;:::o;7707:83::-;7748:5;4658:1;7766:16;;7707:83;:::o;6007:28::-;;;;;;;;;;;;;:::o;4466:40::-;;;;;;;;;;;;;:::o;8053:94::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8135:4:::1;8112:20:::0;::::1;:27;;;;;;;;;;;;;;;;;;8053:94::o:0;17511:101::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17592:12:::1;17578:11;;:26;;;;;;;;;;;;;;;;;;17511:101:::0;:::o;13367:235::-;13433:19;;;;;;;;;;;13417:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13472:17;;;;;;;;;;;13456:33;;:12;:10;:12::i;:::-;:33;;;13417:72;13409:81;;;;;;13501:26;13530:21;13501:50;;13562:32;13575:18;13562:12;:32::i;:::-;13398:204;13367:235::o;7901:138::-;7967:7;7994:37;8014:7;:16;8022:7;8014:16;;;;;;;;;;;;;;;;7994:19;:37::i;:::-;7987:44;;7901:138;;;:::o;1870:148::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1977:1:::1;1940:40;;1961:6;::::0;::::1;;;;;;;;1940:40;;;;;;;;;;;;2008:1;1991:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1870:148::o:0;17651:108::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17740:11:::1;17725:12;:26;;;;17651:108:::0;:::o;6158:49::-;;;;:::o;1656:79::-;1694:7;1721:6;;;;;;;;;;;1714:13;;1656:79;:::o;6214:51::-;;;;:::o;13018:97::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13095:12:::1;13081:11;;:26;;;;;;;;;;;;;;;;;;13018:97:::0;:::o;7500:199::-;7539:13;7569:20;;;;;;;;;;;7565:127;;;7613:7;7621:11;:9;:11::i;:::-;7613:20;;;;;;;;:::i;:::-;;;;;;;;;7606:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7565:127;7673:7;;;;;;;;;;;;;;;;;7666:14;;7500:199;;:::o;17320:139::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17433:18:::1;17411:19;:40;;;;17320:139:::0;:::o;16977:291::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17128:13:::1;17111:14;:30;;;;17170:14;17152:15;:32;;;;17210:11;17195:12;:26;;;;17248:12;17232:13;:28;;;;16977:291:::0;;;;:::o;8161:199::-;8266:4;8288:42;8298:12;:10;:12::i;:::-;8312:9;8323:6;8288:9;:42::i;:::-;8348:4;8341:11;;8161:199;;;;:::o;13123:236::-;13189:19;;;;;;;;;;;13173:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13228:17;;;;;;;;;;;13212:33;;:12;:10;:12::i;:::-;:33;;;13173:72;13165:81;;;;;;13257:23;13283:24;13301:4;13283:9;:24::i;:::-;13257:50;;13318:33;13335:15;13318:16;:33::i;:::-;13154:205;13123:236::o;17890:234::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18007:9:::1;18003:114;18026:8;;:15;;18022:1;:19;18003:114;;;18097:8;18063:18;:31;18082:8;;18091:1;18082:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18063:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18043:3;;;;;;;18003:114;;;;17890:234:::0;;;:::o;8368:184::-;8485:7;8517:11;:18;8529:5;8517:18;;;;;;;;;;;;;;;:27;8536:7;8517:27;;;;;;;;;;;;;;;;8510:34;;8368:184;;;;:::o;17767:115::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17861:13:::1;17844:14;:30;;;;17767:115:::0;:::o;2026:244::-;1793:12;:10;:12::i;:::-;1783:22;;:6;;;;;;;;;;:22;;;1775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2135:1:::1;2115:22;;:8;:22;;::::0;2107:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2225:8;2196:38;;2217:6;::::0;::::1;;;;;;;;2196:38;;;;;;;;;;;;2254:8;2245:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2026:244:::0;:::o;7121:170::-;7164:4;7271:5;:12;;;;7220:15;7237:16;7255:10;7203:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7193:74;;;;;;7188:80;;:95;;;;:::i;:::-;7181:102;;7121:170;:::o;405:98::-;458:7;485:10;478:17;;405:98;:::o;9779:369::-;9923:1;9906:19;;:5;:19;;;9898:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10004:1;9985:21;;:7;:21;;;9977:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10086:6;10056:11;:18;10068:5;10056:18;;;;;;;;;;;;;;;:27;10075:7;10056:27;;;;;;;;;;;;;;;:36;;;;10124:7;10108:32;;10117:5;10108:32;;;10133:6;10108:32;;;;;;:::i;:::-;;;;;;;;9779:369;;;:::o;10156:2256::-;10294:1;10278:18;;:4;:18;;;10270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10371:1;10357:16;;:2;:16;;;10349:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10441:1;10432:6;:10;10424:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10513:7;:5;:7::i;:::-;10505:15;;:4;:15;;;;:32;;;;;10530:7;:5;:7::i;:::-;10524:13;;:2;:13;;;;10505:32;10501:1185;;;10594:11;;;;;;;;;;;10589:144;;10642:7;:5;:7::i;:::-;10634:15;;:4;:15;;;10626:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10589:144;10767:12;;10757:6;:22;;10749:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10851:13;;;;;;;;;;;10845:19;;:2;:19;;;10842:146;;10918:14;;10909:6;10893:13;10903:2;10893:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10885:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:146;11004:28;11035:24;11053:4;11035:9;:24::i;:::-;11004:55;;11074:12;11113:19;;11089:20;:43;;11074:58;;11176:12;;11152:20;:36;11149:124;;11245:12;;11222:35;;11149:124;11293:7;:18;;;;;11305:6;;;;;;;;;;11304:7;11293:18;:43;;;;;11323:13;;;;;;;;;;;11315:21;;:4;:21;;;;11293:43;:58;;;;;11340:11;;;;;;;;;;;11293:58;:87;;;;;11356:18;:24;11375:4;11356:24;;;;;;;;;;;;;;;;;;;;;;;;;11355:25;11293:87;:114;;;;;11385:18;:22;11404:2;11385:22;;;;;;;;;;;;;;;;;;;;;;;;;11384:23;11293:114;11289:386;;;11428:38;11445:20;11428:16;:38::i;:::-;11485:26;11514:21;11485:50;;11579:1;11558:18;:22;11554:106;;;11605:35;11618:21;11605:12;:35::i;:::-;11554:106;11409:266;11289:386;10539:1147;;10501:1185;11698:12;11713:4;11698:19;;11762:18;:24;11781:4;11762:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11790:18;:22;11809:2;11790:22;;;;;;;;;;;;;;;;;;;;;;;;;11762:50;11761:102;;;;11826:13;;;;;;;;;;;11818:21;;:4;:21;;;;:44;;;;;11849:13;;;;;;;;;;;11843:19;;:2;:19;;;;11818:44;11761:102;11757:594;;;11890:5;11880:15;;11757:594;;;11973:13;;;;;;;;;;;11965:21;;:4;:21;;;:55;;;;;12004:15;;;;;;;;;;;11990:30;;:2;:30;;;;11965:55;11962:162;;;12053:14;;12041:9;:26;;;;12096:12;;12086:7;:22;;;;11962:162;12183:13;;;;;;;;;;;12177:19;;:2;:19;;;:55;;;;;12216:15;;;;;;;;;;;12200:32;;:4;:32;;;;12177:55;12173:165;;;12265:15;;12253:9;:27;;;;12309:13;;12299:7;:23;;;;12173:165;11757:594;12363:41;12378:4;12384:2;12388:6;12396:7;12363:14;:41::i;:::-;10259:2153;10156:2256;;;:::o;2634:224::-;2754:7;2787:1;2782;:6;;2790:12;2774:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2814:9;2830:1;2826;:5;;;;:::i;:::-;2814:17;;2849:1;2842:8;;;2634:224;;;;;:::o;12911:99::-;12968:17;;;;;;;;;;;:26;;:34;12995:6;12968:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12911:99;:::o;9215:323::-;9310:7;9368;;9357;:18;;9335:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9456:19;9478:10;:8;:10::i;:::-;9456:32;;9506:24;9518:11;9506:7;:11;;:24;;;;:::i;:::-;9499:31;;;9215:323;;;:::o;12420:483::-;6424:4;6415:6;;:13;;;;;;;;;;;;;;;;;;12498:21:::1;12536:1;12522:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12498:40;;12567:4;12549;12554:1;12549:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12593:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12583:4;12588:1;12583:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12626:62;12643:4;12658:15;;;;;;;;;;;12676:11;12626:8;:62::i;:::-;12699:15;;;;;;;;;;;:66;;;12780:11;12806:1;12822:4;12849;12869:15;12699:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12487:416;6460:5:::0;6451:6;;:14;;;;;;;;;;;;;;;;;;12420:483;:::o;13610:251::-;13766:7;13761:28;;13775:14;:12;:14::i;:::-;13761:28;13800:44;13818:6;13826:9;13837:6;13800:17;:44::i;:::-;13610:251;;;;:::o;16540:164::-;16582:7;16603:15;16620;16639:19;:17;:19::i;:::-;16602:56;;;;16676:20;16688:7;16676;:11;;:20;;;;:::i;:::-;16669:27;;;;16540:164;:::o;3120:132::-;3178:7;3205:39;3209:1;3212;3205:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3198:46;;3120:132;;;;:::o;9546:219::-;9606:1;9593:9;;:14;:30;;;;;9622:1;9611:7;;:12;9593:30;9625:7;9589:43;9664:9;;9644:17;:29;;;;9702:7;;9684:15;:25;;;;9734:1;9722:9;:13;;;;9756:1;9746:7;:11;;;;9546:219;:::o;13869:610::-;14016:15;14046:23;14084:12;14111:23;14149:12;14176:13;14203:19;14214:7;14203:10;:19::i;:::-;14001:221;;;;;;;;;;;;14251:28;14271:7;14251;:15;14259:6;14251:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14233:7;:15;14241:6;14233:15;;;;;;;;;;;;;;;:46;;;;14311:39;14334:15;14311:7;:18;14319:9;14311:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14290:7;:18;14298:9;14290:18;;;;;;;;;;;;;;;:60;;;;14361:16;14371:5;14361:9;:16::i;:::-;14388:23;14400:4;14406;14388:11;:23::i;:::-;14444:9;14427:44;;14436:6;14427:44;;;14455:15;14427:44;;;;;;:::i;:::-;;;;;;;;13990:489;;;;;;13869:610;;;:::o;16712:257::-;16763:7;16772;16792:15;16810:7;;16792:25;;16828:15;5320:21;16828:25;;16878:20;5320:21;16878:7;;:11;;:20;;;;:::i;:::-;16868:7;:30;16864:61;;;16908:7;;5320:21;16900:25;;;;;;;;16864:61;16944:7;16953;16936:25;;;;;;16712:257;;;:::o;3260:223::-;3380:7;3412:1;3408;:5;3415:12;3400:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3439:9;3455:1;3451;:5;;;;:::i;:::-;3439:17;;3474:1;3467:8;;;3260:223;;;;;:::o;14898:615::-;14998:7;15020;15042;15064;15086;15108;15144:23;15169:12;15183:13;15213:40;15225:7;15234:9;;15245:7;;15213:11;:40::i;:::-;15143:110;;;;;;15264:19;15286:10;:8;:10::i;:::-;15264:32;;15308:15;15325:23;15350:12;15379:46;15391:7;15400:4;15406:5;15413:11;15379;:46::i;:::-;15307:118;;;;;;15444:7;15453:15;15470:4;15476:15;15493:4;15499:5;15436:69;;;;;;;;;;;;;;;;;;;14898:615;;;;;;;:::o;2490:136::-;2548:7;2575:43;2579:1;2582;2575:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2568:50;;2490:136;;;;:::o;2303:179::-;2361:7;2381:9;2397:1;2393;:5;;;;:::i;:::-;2381:17;;2422:1;2417;:6;;2409:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2473:1;2466:8;;;2303:179;;;;:::o;14487:211::-;14540:19;14562:10;:8;:10::i;:::-;14540:32;;14583:13;14599:22;14609:11;14599:5;:9;;:22;;;;:::i;:::-;14583:38;;14657:33;14684:5;14657:7;:22;14673:4;14657:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14632:7;:22;14648:4;14632:22;;;;;;;;;;;;;;;:58;;;;14529:169;;14487:211;:::o;14706:147::-;14784:17;14796:4;14784:7;;:11;;:17;;;;:::i;:::-;14774:7;:27;;;;14825:20;14840:4;14825:10;;:14;;:20;;;;:::i;:::-;14812:10;:33;;;;14706:147;;:::o;15521:469::-;15690:7;15712;15734;15769:12;15784:30;15810:3;15784:21;15796:8;15784:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15769:45;;15825:13;15841:28;15865:3;15841:19;15853:6;15841:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15825:44;;15880:23;15906:28;15928:5;15906:17;15918:4;15906:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15880:54;;15953:15;15970:4;15976:5;15945:37;;;;;;;;;15521:469;;;;;;;:::o;15998:534::-;16192:7;16214;16236;16271:15;16289:24;16301:11;16289:7;:11;;:24;;;;:::i;:::-;16271:42;;16324:12;16339:21;16348:11;16339:4;:8;;:21;;;;:::i;:::-;16324:36;;16371:13;16387:22;16397:11;16387:5;:9;;:22;;;;:::i;:::-;16371:38;;16420:23;16446:28;16468:5;16446:17;16458:4;16446:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16420:54;;16493:7;16502:15;16519:4;16485:39;;;;;;;;;;15998:534;;;;;;;;:::o;2866:246::-;2924:7;2953:1;2948;:6;2944:47;;2978:1;2971:8;;;;2944:47;3001:9;3017:1;3013;:5;;;;:::i;:::-;3001:17;;3046:1;3041;3037;:5;;;;:::i;:::-;:10;3029:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3103:1;3096:8;;;2866:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:117;8441:1;8438;8431:12;8455:117;8564:1;8561;8554:12;8595:568;8668:8;8678:6;8728:3;8721:4;8713:6;8709:17;8705:27;8695:122;;8736:79;;:::i;:::-;8695:122;8849:6;8836:20;8826:30;;8879:18;8871:6;8868:30;8865:117;;;8901:79;;:::i;:::-;8865:117;9015:4;9007:6;9003:17;8991:29;;9069:3;9061:4;9053:6;9049:17;9039:8;9035:32;9032:41;9029:128;;;9076:79;;:::i;:::-;9029:128;8595:568;;;;;:::o;9169:698::-;9261:6;9269;9277;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9645:80;9717:7;9708:6;9697:9;9693:22;9645:80;:::i;:::-;9627:98;;;;9423:312;9774:2;9800:50;9842:7;9833:6;9822:9;9818:22;9800:50;:::i;:::-;9790:60;;9745:115;9169:698;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:180::-;10401:77;10398:1;10391:88;10498:4;10495:1;10488:15;10522:4;10519:1;10512:15;10539:180;10587:77;10584:1;10577:88;10684:4;10681:1;10674:15;10708:4;10705:1;10698:15;10725:320;10769:6;10806:1;10800:4;10796:12;10786:22;;10853:1;10847:4;10843:12;10874:18;10864:81;;10930:4;10922:6;10918:17;10908:27;;10864:81;10992:2;10984:6;10981:14;10961:18;10958:38;10955:84;;11011:18;;:::i;:::-;10955:84;10776:269;10725:320;;;:::o;11051:182::-;11191:34;11187:1;11179:6;11175:14;11168:58;11051:182;:::o;11239:366::-;11381:3;11402:67;11466:2;11461:3;11402:67;:::i;:::-;11395:74;;11478:93;11567:3;11478:93;:::i;:::-;11596:2;11591:3;11587:12;11580:19;;11239:366;;;:::o;11611:419::-;11777:4;11815:2;11804:9;11800:18;11792:26;;11864:9;11858:4;11854:20;11850:1;11839:9;11835:17;11828:47;11892:131;12018:4;11892:131;:::i;:::-;11884:139;;11611:419;;;:::o;12036:225::-;12176:34;12172:1;12164:6;12160:14;12153:58;12245:8;12240:2;12232:6;12228:15;12221:33;12036:225;:::o;12267:366::-;12409:3;12430:67;12494:2;12489:3;12430:67;:::i;:::-;12423:74;;12506:93;12595:3;12506:93;:::i;:::-;12624:2;12619:3;12615:12;12608:19;;12267:366;;;:::o;12639:419::-;12805:4;12843:2;12832:9;12828:18;12820:26;;12892:9;12886:4;12882:20;12878:1;12867:9;12863:17;12856:47;12920:131;13046:4;12920:131;:::i;:::-;12912:139;;12639:419;;;:::o;13064:79::-;13103:7;13132:5;13121:16;;13064:79;;;:::o;13149:157::-;13254:45;13274:24;13292:5;13274:24;:::i;:::-;13254:45;:::i;:::-;13249:3;13242:58;13149:157;;:::o;13312:94::-;13345:8;13393:5;13389:2;13385:14;13364:35;;13312:94;;;:::o;13412:::-;13451:7;13480:20;13494:5;13480:20;:::i;:::-;13469:31;;13412:94;;;:::o;13512:100::-;13551:7;13580:26;13600:5;13580:26;:::i;:::-;13569:37;;13512:100;;;:::o;13618:157::-;13723:45;13743:24;13761:5;13743:24;:::i;:::-;13723:45;:::i;:::-;13718:3;13711:58;13618:157;;:::o;13781:538::-;13949:3;13964:75;14035:3;14026:6;13964:75;:::i;:::-;14064:2;14059:3;14055:12;14048:19;;14077:75;14148:3;14139:6;14077:75;:::i;:::-;14177:2;14172:3;14168:12;14161:19;;14190:75;14261:3;14252:6;14190:75;:::i;:::-;14290:2;14285:3;14281:12;14274:19;;14310:3;14303:10;;13781:538;;;;;;:::o;14325:180::-;14373:77;14370:1;14363:88;14470:4;14467:1;14460:15;14494:4;14491:1;14484:15;14511:176;14543:1;14560:20;14578:1;14560:20;:::i;:::-;14555:25;;14594:20;14612:1;14594:20;:::i;:::-;14589:25;;14633:1;14623:35;;14638:18;;:::i;:::-;14623:35;14679:1;14676;14672:9;14667:14;;14511:176;;;;:::o;14693:223::-;14833:34;14829:1;14821:6;14817:14;14810:58;14902:6;14897:2;14889:6;14885:15;14878:31;14693:223;:::o;14922:366::-;15064:3;15085:67;15149:2;15144:3;15085:67;:::i;:::-;15078:74;;15161:93;15250:3;15161:93;:::i;:::-;15279:2;15274:3;15270:12;15263:19;;14922:366;;;:::o;15294:419::-;15460:4;15498:2;15487:9;15483:18;15475:26;;15547:9;15541:4;15537:20;15533:1;15522:9;15518:17;15511:47;15575:131;15701:4;15575:131;:::i;:::-;15567:139;;15294:419;;;:::o;15719:221::-;15859:34;15855:1;15847:6;15843:14;15836:58;15928:4;15923:2;15915:6;15911:15;15904:29;15719:221;:::o;15946:366::-;16088:3;16109:67;16173:2;16168:3;16109:67;:::i;:::-;16102:74;;16185:93;16274:3;16185:93;:::i;:::-;16303:2;16298:3;16294:12;16287:19;;15946:366;;;:::o;16318:419::-;16484:4;16522:2;16511:9;16507:18;16499:26;;16571:9;16565:4;16561:20;16557:1;16546:9;16542:17;16535:47;16599:131;16725:4;16599:131;:::i;:::-;16591:139;;16318:419;;;:::o;16743:224::-;16883:34;16879:1;16871:6;16867:14;16860:58;16952:7;16947:2;16939:6;16935:15;16928:32;16743:224;:::o;16973:366::-;17115:3;17136:67;17200:2;17195:3;17136:67;:::i;:::-;17129:74;;17212:93;17301:3;17212:93;:::i;:::-;17330:2;17325:3;17321:12;17314:19;;16973:366;;;:::o;17345:419::-;17511:4;17549:2;17538:9;17534:18;17526:26;;17598:9;17592:4;17588:20;17584:1;17573:9;17569:17;17562:47;17626:131;17752:4;17626:131;:::i;:::-;17618:139;;17345:419;;;:::o;17770:222::-;17910:34;17906:1;17898:6;17894:14;17887:58;17979:5;17974:2;17966:6;17962:15;17955:30;17770:222;:::o;17998:366::-;18140:3;18161:67;18225:2;18220:3;18161:67;:::i;:::-;18154:74;;18237:93;18326:3;18237:93;:::i;:::-;18355:2;18350:3;18346:12;18339:19;;17998:366;;;:::o;18370:419::-;18536:4;18574:2;18563:9;18559:18;18551:26;;18623:9;18617:4;18613:20;18609:1;18598:9;18594:17;18587:47;18651:131;18777:4;18651:131;:::i;:::-;18643:139;;18370:419;;;:::o;18795:228::-;18935:34;18931:1;18923:6;18919:14;18912:58;19004:11;18999:2;18991:6;18987:15;18980:36;18795:228;:::o;19029:366::-;19171:3;19192:67;19256:2;19251:3;19192:67;:::i;:::-;19185:74;;19268:93;19357:3;19268:93;:::i;:::-;19386:2;19381:3;19377:12;19370:19;;19029:366;;;:::o;19401:419::-;19567:4;19605:2;19594:9;19590:18;19582:26;;19654:9;19648:4;19644:20;19640:1;19629:9;19625:17;19618:47;19682:131;19808:4;19682:131;:::i;:::-;19674:139;;19401:419;;;:::o;19826:250::-;19966:34;19962:1;19954:6;19950:14;19943:58;20035:33;20030:2;20022:6;20018:15;20011:58;19826:250;:::o;20082:366::-;20224:3;20245:67;20309:2;20304:3;20245:67;:::i;:::-;20238:74;;20321:93;20410:3;20321:93;:::i;:::-;20439:2;20434:3;20430:12;20423:19;;20082:366;;;:::o;20454:419::-;20620:4;20658:2;20647:9;20643:18;20635:26;;20707:9;20701:4;20697:20;20693:1;20682:9;20678:17;20671:47;20735:131;20861:4;20735:131;:::i;:::-;20727:139;;20454:419;;;:::o;20879:178::-;21019:30;21015:1;21007:6;21003:14;20996:54;20879:178;:::o;21063:366::-;21205:3;21226:67;21290:2;21285:3;21226:67;:::i;:::-;21219:74;;21302:93;21391:3;21302:93;:::i;:::-;21420:2;21415:3;21411:12;21404:19;;21063:366;;;:::o;21435:419::-;21601:4;21639:2;21628:9;21624:18;21616:26;;21688:9;21682:4;21678:20;21674:1;21663:9;21659:17;21652:47;21716:131;21842:4;21716:131;:::i;:::-;21708:139;;21435:419;;;:::o;21860:180::-;21908:77;21905:1;21898:88;22005:4;22002:1;21995:15;22029:4;22026:1;22019:15;22046:191;22086:3;22105:20;22123:1;22105:20;:::i;:::-;22100:25;;22139:20;22157:1;22139:20;:::i;:::-;22134:25;;22182:1;22179;22175:9;22168:16;;22203:3;22200:1;22197:10;22194:36;;;22210:18;;:::i;:::-;22194:36;22046:191;;;;:::o;22243:222::-;22383:34;22379:1;22371:6;22367:14;22360:58;22452:5;22447:2;22439:6;22435:15;22428:30;22243:222;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:194::-;23308:4;23328:20;23346:1;23328:20;:::i;:::-;23323:25;;23362:20;23380:1;23362:20;:::i;:::-;23357:25;;23406:1;23403;23399:9;23391:17;;23430:1;23424:4;23421:11;23418:37;;;23435:18;;:::i;:::-;23418:37;23268:194;;;;:::o;23468:229::-;23608:34;23604:1;23596:6;23592:14;23585:58;23677:12;23672:2;23664:6;23660:15;23653:37;23468:229;:::o;23703:366::-;23845:3;23866:67;23930:2;23925:3;23866:67;:::i;:::-;23859:74;;23942:93;24031:3;23942:93;:::i;:::-;24060:2;24055:3;24051:12;24044:19;;23703:366;;;:::o;24075:419::-;24241:4;24279:2;24268:9;24264:18;24256:26;;24328:9;24322:4;24318:20;24314:1;24303:9;24299:17;24292:47;24356:131;24482:4;24356:131;:::i;:::-;24348:139;;24075:419;;;:::o;24500:180::-;24548:77;24545:1;24538:88;24645:4;24642:1;24635:15;24669:4;24666:1;24659:15;24686:143;24743:5;24774:6;24768:13;24759:22;;24790:33;24817:5;24790:33;:::i;:::-;24686:143;;;;:::o;24835:351::-;24905:6;24954:2;24942:9;24933:7;24929:23;24925:32;24922:119;;;24960:79;;:::i;:::-;24922:119;25080:1;25105:64;25161:7;25152:6;25141:9;25137:22;25105:64;:::i;:::-;25095:74;;25051:128;24835:351;;;;:::o;25192:85::-;25237:7;25266:5;25255:16;;25192:85;;;:::o;25283:158::-;25341:9;25374:61;25392:42;25401:32;25427:5;25401:32;:::i;:::-;25392:42;:::i;:::-;25374:61;:::i;:::-;25361:74;;25283:158;;;:::o;25447:147::-;25542:45;25581:5;25542:45;:::i;:::-;25537:3;25530:58;25447:147;;:::o;25600:114::-;25667:6;25701:5;25695:12;25685:22;;25600:114;;;:::o;25720:184::-;25819:11;25853:6;25848:3;25841:19;25893:4;25888:3;25884:14;25869:29;;25720:184;;;;:::o;25910:132::-;25977:4;26000:3;25992:11;;26030:4;26025:3;26021:14;26013:22;;25910:132;;;:::o;26048:108::-;26125:24;26143:5;26125:24;:::i;:::-;26120:3;26113:37;26048:108;;:::o;26162:179::-;26231:10;26252:46;26294:3;26286:6;26252:46;:::i;:::-;26330:4;26325:3;26321:14;26307:28;;26162:179;;;;:::o;26347:113::-;26417:4;26449;26444:3;26440:14;26432:22;;26347:113;;;:::o;26496:732::-;26615:3;26644:54;26692:5;26644:54;:::i;:::-;26714:86;26793:6;26788:3;26714:86;:::i;:::-;26707:93;;26824:56;26874:5;26824:56;:::i;:::-;26903:7;26934:1;26919:284;26944:6;26941:1;26938:13;26919:284;;;27020:6;27014:13;27047:63;27106:3;27091:13;27047:63;:::i;:::-;27040:70;;27133:60;27186:6;27133:60;:::i;:::-;27123:70;;26979:224;26966:1;26963;26959:9;26954:14;;26919:284;;;26923:14;27219:3;27212:10;;26620:608;;;26496:732;;;;:::o;27234:831::-;27497:4;27535:3;27524:9;27520:19;27512:27;;27549:71;27617:1;27606:9;27602:17;27593:6;27549:71;:::i;:::-;27630:80;27706:2;27695:9;27691:18;27682:6;27630:80;:::i;:::-;27757:9;27751:4;27747:20;27742:2;27731:9;27727:18;27720:48;27785:108;27888:4;27879:6;27785:108;:::i;:::-;27777:116;;27903:72;27971:2;27960:9;27956:18;27947:6;27903:72;:::i;:::-;27985:73;28053:3;28042:9;28038:19;28029:6;27985:73;:::i;:::-;27234:831;;;;;;;;:::o;28071:185::-;28111:1;28128:20;28146:1;28128:20;:::i;:::-;28123:25;;28162:20;28180:1;28162:20;:::i;:::-;28157:25;;28201:1;28191:35;;28206:18;;:::i;:::-;28191:35;28248:1;28245;28241:9;28236:14;;28071:185;;;;:::o;28262:177::-;28402:29;28398:1;28390:6;28386:14;28379:53;28262:177;:::o;28445:366::-;28587:3;28608:67;28672:2;28667:3;28608:67;:::i;:::-;28601:74;;28684:93;28773:3;28684:93;:::i;:::-;28802:2;28797:3;28793:12;28786:19;;28445:366;;;:::o;28817:419::-;28983:4;29021:2;29010:9;29006:18;28998:26;;29070:9;29064:4;29060:20;29056:1;29045:9;29041:17;29034:47;29098:131;29224:4;29098:131;:::i;:::-;29090:139;;28817:419;;;:::o;29242:410::-;29282:7;29305:20;29323:1;29305:20;:::i;:::-;29300:25;;29339:20;29357:1;29339:20;:::i;:::-;29334:25;;29394:1;29391;29387:9;29416:30;29434:11;29416:30;:::i;:::-;29405:41;;29595:1;29586:7;29582:15;29579:1;29576:22;29556:1;29549:9;29529:83;29506:139;;29625:18;;:::i;:::-;29506:139;29290:362;29242:410;;;;:::o;29658:220::-;29798:34;29794:1;29786:6;29782:14;29775:58;29867:3;29862:2;29854:6;29850:15;29843:28;29658:220;:::o;29884:366::-;30026:3;30047:67;30111:2;30106:3;30047:67;:::i;:::-;30040:74;;30123:93;30212:3;30123:93;:::i;:::-;30241:2;30236:3;30232:12;30225:19;;29884:366;;;:::o;30256:419::-;30422:4;30460:2;30449:9;30445:18;30437:26;;30509:9;30503:4;30499:20;30495:1;30484:9;30480:17;30473:47;30537:131;30663:4;30537:131;:::i;:::-;30529:139;;30256:419;;;:::o
Swarm Source
ipfs://b0acc49b39c8548ac13e6c4f8851bbe7a1a8b1aed75cbcc9bc3e58494c026ced
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.