More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 102 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15899582 | 768 days ago | IN | 0 ETH | 0.00071617 | ||||
Approve | 15893792 | 768 days ago | IN | 0 ETH | 0.00071847 | ||||
Approve | 15891370 | 769 days ago | IN | 0 ETH | 0.00086133 | ||||
Approve | 15880587 | 770 days ago | IN | 0 ETH | 0.00047473 | ||||
Transfer | 15877171 | 771 days ago | IN | 0 ETH | 0.00146988 | ||||
Transfer | 15876924 | 771 days ago | IN | 0 ETH | 0.00147858 | ||||
Transfer | 15876915 | 771 days ago | IN | 0 ETH | 0.00167526 | ||||
Approve | 15875649 | 771 days ago | IN | 0 ETH | 0.00104946 | ||||
Approve | 15875425 | 771 days ago | IN | 0 ETH | 0.00055062 | ||||
Transfer | 15875251 | 771 days ago | IN | 0 ETH | 0.00155112 | ||||
Transfer | 15873892 | 771 days ago | IN | 0 ETH | 0.00105457 | ||||
Approve | 15873172 | 771 days ago | IN | 0 ETH | 0.00046673 | ||||
Approve | 15872179 | 771 days ago | IN | 0 ETH | 0.00050723 | ||||
Approve | 15872170 | 771 days ago | IN | 0 ETH | 0.00046201 | ||||
Approve | 15872030 | 771 days ago | IN | 0 ETH | 0.00051854 | ||||
Approve | 15871804 | 771 days ago | IN | 0 ETH | 0.00095853 | ||||
Approve | 15871802 | 771 days ago | IN | 0 ETH | 0.00098539 | ||||
Approve | 15871664 | 771 days ago | IN | 0 ETH | 0.00061227 | ||||
Approve | 15871482 | 772 days ago | IN | 0 ETH | 0.00099571 | ||||
Approve | 15871319 | 772 days ago | IN | 0 ETH | 0.00069906 | ||||
Approve | 15871272 | 772 days ago | IN | 0 ETH | 0.0009356 | ||||
Transfer | 15871236 | 772 days ago | IN | 0 ETH | 0.00190691 | ||||
Transfer | 15871205 | 772 days ago | IN | 0 ETH | 0.00280183 | ||||
Transfer | 15871186 | 772 days ago | IN | 0 ETH | 0.00227884 | ||||
Approve | 15871097 | 772 days ago | IN | 0 ETH | 0.00041414 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15903359 | 767 days ago | 0.00313255 ETH | ||||
15903359 | 767 days ago | 0.00313255 ETH | ||||
15903359 | 767 days ago | 0.00626511 ETH | ||||
15876026 | 771 days ago | 0.00363119 ETH | ||||
15876026 | 771 days ago | 0.00363119 ETH | ||||
15876026 | 771 days ago | 0.00726238 ETH | ||||
15872905 | 771 days ago | 0.00456171 ETH | ||||
15872905 | 771 days ago | 0.00456171 ETH | ||||
15872905 | 771 days ago | 0.00912342 ETH | ||||
15871679 | 771 days ago | 0.00652181 ETH | ||||
15871679 | 771 days ago | 0.00652181 ETH | ||||
15871679 | 771 days ago | 0.01304362 ETH | ||||
15871120 | 772 days ago | 0.00626183 ETH | ||||
15871120 | 772 days ago | 0.00626183 ETH | ||||
15871120 | 772 days ago | 0.01252367 ETH | ||||
15871095 | 772 days ago | 0.00857742 ETH | ||||
15871095 | 772 days ago | 0.00857742 ETH | ||||
15871095 | 772 days ago | 0.01715484 ETH | ||||
15871091 | 772 days ago | 0.01167141 ETH | ||||
15871091 | 772 days ago | 0.01167141 ETH | ||||
15871091 | 772 days ago | 0.02334282 ETH | ||||
15871077 | 772 days ago | 0.01069736 ETH | ||||
15871077 | 772 days ago | 0.01069736 ETH | ||||
15871077 | 772 days ago | 0.02139473 ETH | ||||
15871054 | 772 days ago | 0.007741 ETH |
Loading...
Loading
Contract Name:
DracaF
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-31 */ /* Draca Draca Is the next degen potential token made for the season, of the season and with the season. https://t.me/draca_official */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IBEP20 { 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); } interface IBEP20Metadata is IBEP20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "BEP20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; } contract DracaF is BEP20, Ownable { // using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public DEAD = 0x000000000000000000000000000000000000dEaD; bool private swapping; bool public tradingEnabled = false; uint256 internal sellAmount = 0; uint256 internal buyAmount = 0; uint256 private totalSellFees; uint256 private totalBuyFees; address payable public marketingWallet; // address payable public devWallet; // uint256 public maxWallet; bool public maxWalletEnabled = true; uint256 public swapTokensAtAmount; uint256 public sellMarketingFees; uint256 public sellBurnFee; uint256 public buyMarketingFees; uint256 public buyBurnFee; uint256 public buyDevFee; uint256 public sellDevFee; bool public swapAndLiquifyEnabled = true; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isBot; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private canTransferBeforeTradingIsEnabled; bool public limitsInEffect = false; uint256 private gasPriceLimit = 50 * 1 gwei; // MAX GWEI mapping(address => uint256) private _holderLastTransferBlock; // FOR 1TX PER BLOCK mapping(address => uint256) private _holderLastTransferTimestamp; // FOR COOLDOWN uint256 public launchblock; // FOR DEADBLOCKS uint256 public launchtimestamp; // FOR LAUNCH TIMESTAMP uint256 public cooldowntimer = 0; // DEFAULT COOLDOWN TIMER event EnableSwapAndLiquify(bool enabled); event SetPreSaleWallet(address wallet); event updateMarketingWallet(address wallet); event updateDevWallet(address wallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event TradingEnabled(); event UpdateFees(uint256 sellMarketingFees, uint256 sellBurnFee, uint256 buyMarketingFees, uint256 buyBurnFee, uint256 buyDevFee, uint256 sellDevFee); event Airdrop(address holder, uint256 amount); event ExcludeFromFees(address indexed account, bool isExcluded); event blackList(address); event unblackList(address); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event SendDividends(uint256 opAmount, bool success); constructor() BEP20("Draca", "Draca") { // marketingWallet = payable(0x6e8f78320e9D553C926072650BFEda692784df32); // devWallet = payable(0xd912eBD414b3eF3D689Efc461D48CEBCadD2729E); // address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; /// //INITIAL FEE VALUES HERE buyMarketingFees = 2; sellMarketingFees = 47; buyBurnFee = 0; sellBurnFee = 0; buyDevFee = 3; sellDevFee = 45; // TOTAL BUY AND TOTAL SELL FEE CALCS totalBuyFees = buyMarketingFees.add(buyDevFee); totalSellFees = sellMarketingFees.add(sellDevFee); uniswapV2Router = IUniswapV2Router02(router); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(uniswapV2Pair, true); _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[msg.sender] = true; _isExcludedFromFees[marketingWallet] = true; uint256 totalSupply = (1_000_000_000) * (10**18); // _mint(owner(), totalSupply); // maxWallet = _totalSupply / 50; // 2% swapTokensAtAmount = _totalSupply / 200; // 1%; canTransferBeforeTradingIsEnabled[owner()] = true; canTransferBeforeTradingIsEnabled[address(this)] = true; } function decimals() public view virtual override returns (uint8) { return 18; } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingEnabled); tradingEnabled = true; launchblock = block.number; launchtimestamp = block.timestamp; emit TradingEnabled(); } function setMarketingWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; marketingWallet = payable(wallet); emit updateMarketingWallet(wallet); } function setDevWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; devWallet = payable(wallet); emit updateDevWallet(wallet); } function setExcludeFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function addBot(address account) public onlyOwner { _isBot[account] = true; emit blackList(account); } function removeBot(address account) public onlyOwner { _isBot[account] = false; emit unblackList(account); } function setCanTransferBefore(address wallet, bool enable) external onlyOwner { canTransferBeforeTradingIsEnabled[wallet] = enable; } function setLimitsInEffect(bool value) external onlyOwner { limitsInEffect = value; } function setMaxWalletEnabled(bool value) external onlyOwner { maxWalletEnabled = value; } function setcooldowntimer(uint256 value) external onlyOwner { require(value <= 300, "cooldown timer cannot exceed 5 minutes"); cooldowntimer = value; } function setmaxWallet(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%"); maxWallet = value; } // function Sweep() external onlyOwner { uint256 amountBNB = address(this).balance; payable(msg.sender).transfer(amountBNB); } function setSwapTriggerAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount * (10**18); } function enableSwapAndLiquify(bool enabled) public onlyOwner { require(swapAndLiquifyEnabled != enabled); swapAndLiquifyEnabled = enabled; emit EnableSwapAndLiquify(enabled); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // function transferAdmin(address newOwner) public onlyOwner { _isExcludedFromFees[newOwner] = true; canTransferBeforeTradingIsEnabled[newOwner] = true; transferOwnership(newOwner); } function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 burnBuy, uint256 burnSell, uint256 devBuy, uint256 devSell) public onlyOwner { buyMarketingFees = marketingBuy; buyBurnFee = burnBuy; sellMarketingFees = marketingSell; sellBurnFee = burnSell; buyDevFee = devBuy; sellDevFee = devSell; totalSellFees = sellMarketingFees.add(sellDevFee); totalBuyFees = buyMarketingFees.add(buyDevFee); // require(totalSellFees <= 99 && totalBuyFees <= 15, "%"); emit UpdateFees(sellMarketingFees, sellBurnFee, sellDevFee, buyMarketingFees, buyBurnFee, buyDevFee); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function isBot(address account) public view returns (bool) { return _isBot[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "IBEP20: transfer from the zero address"); require(to != address(0), "IBEP20: transfer to the zero address"); //require(_isBot[from] != true, "IBEP20: You are blacklisted"); //require(_isBot[to] != true, "IBEP20: You are blacklisted"); require(!_isBot[from] && !_isBot[to]); uint256 marketingFees; uint256 burnFee; uint256 devFee; if (!canTransferBeforeTradingIsEnabled[from]) { require(tradingEnabled, "Trading has not yet been enabled"); } if (amount == 0) { super._transfer(from, to, 0); return; } else if ( !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool isSelling = automatedMarketMakerPairs[to]; if (isSelling) { marketingFees = sellMarketingFees; burnFee = sellBurnFee; devFee = sellDevFee; if (limitsInEffect) { require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } else { marketingFees = buyMarketingFees; burnFee = buyBurnFee; devFee = buyDevFee; if (limitsInEffect) { require(block.number > launchblock + 2,"you shall not pass"); require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit."); require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block"); require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferBlock[tx.origin] = block.number; _holderLastTransferTimestamp[tx.origin] = block.timestamp; } if (maxWalletEnabled) { uint256 contractBalanceRecipient = balanceOf(to); require(contractBalanceRecipient + amount <= maxWallet, "Exceeds maximum wallet token amount." ); } } uint256 totalFees = marketingFees.add(devFee); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !automatedMarketMakerPairs[from]) { swapping = true; uint256 swapBalance = swapTokensAtAmount; swapAndSendDividends(swapBalance); buyAmount = 0; sellAmount = 0; swapping = false; } uint256 fees = amount.mul(totalFees).div(100); uint256 burntokens = amount.mul(burnFee).div(100); amount = amount.sub(fees + burntokens); if (isSelling) { sellAmount = sellAmount.add(fees); } else { buyAmount = buyAmount.add(fees); } super._transfer(from, address(this), fees); if (burntokens > 0) { super._transfer(from, DEAD, burntokens); _totalSupply = _totalSupply.sub(burntokens); } } super._transfer(from, to, amount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function forceSwapAndSendDividends(uint256 tokens) public onlyOwner { tokens = tokens * (10**18); uint256 totalAmount = buyAmount.add(sellAmount); uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount); uint256 fromSell = tokens.mul(sellAmount).div(totalAmount); swapAndSendDividends(tokens); buyAmount = buyAmount.sub(fromBuy); sellAmount = sellAmount.sub(fromSell); } // TAX PAYOUT CODE function swapAndSendDividends(uint256 tokens) private { if (tokens == 0) { return; } swapTokensForEth(tokens); bool success = true; bool successOp1 = true; uint256 _marketDevTotal = sellMarketingFees.add(sellDevFee) + buyMarketingFees.add(buyDevFee); uint256 feePortions; if (_marketDevTotal > 0) { feePortions = address(this).balance.div(_marketDevTotal); } uint256 marketingPayout = buyMarketingFees.add(sellMarketingFees) * feePortions; uint256 devPayout = buyDevFee.add(sellDevFee) * feePortions; if (marketingPayout > 0) { (success, ) = address(marketingWallet).call{value: marketingPayout}(""); } if (devPayout > 0) { (successOp1, ) = address(devWallet).call{value: devPayout}(""); } emit SendDividends( marketingPayout, success && successOp1 ); } function airdropToWallets( address[] memory airdropWallets, uint256[] memory amount ) external onlyOwner { require(airdropWallets.length == amount.length, "Arrays must be the same length"); require(airdropWallets.length <= 200, "Wallets list length must be <= 200"); for (uint256 i = 0; i < airdropWallets.length; i++) { address wallet = airdropWallets[i]; uint256 airdropAmount = amount[i] * (10**18); super._transfer(msg.sender, wallet, airdropAmount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"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":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"blackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"unblackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"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"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"burnBuy","type":"uint256"},{"internalType":"uint256","name":"burnSell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860156101000a81548160ff02191690831515021790555060006009556000600a556001601060006101000a81548160ff0219169083151502179055506001601860006101000a81548160ff0219169083151502179055506000601d60006101000a81548160ff021916908315150217905550640ba43b7400601e556000602355348015620000d857600080fd5b506040518060400160405280600581526020017f44726163610000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f447261636100000000000000000000000000000000000000000000000000000081525081600390805190602001906200015d92919062000afe565b5080600490805190602001906200017692919062000afe565b50505060006200018b6200081560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736e8f78320e9d553c926072650bfeda692784df32600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d912ebd414b3ef3d689efc461d48cebcadd2729e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506002601481905550602f601281905550600060158190555060006013819055506003601681905550602d6017819055506200033b6016546014546200081d60201b62002c2e1790919060201c565b600c819055506200035f6017546012546200081d60201b62002c2e1790919060201c565b600b8190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043a919062000c18565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ea919062000c18565b6040518363ffffffff1660e01b81526004016200050992919062000c5b565b6020604051808303816000875af115801562000529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054f919062000c18565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200088060201b60201c565b6001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006b033b2e3c9fd0803ce8000000905062000720620007136200092160201b60201c565b826200094b60201b60201c565b603260025462000731919062000cf0565b600f8190555060c860025462000748919062000cf0565b6011819055506001601c6000620007646200092160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000f0c565b600033905090565b60008082846200082e919062000d28565b90508381101562000876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086d9062000de6565b60405180910390fd5b8091505092915050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b49062000e58565b60405180910390fd5b620009d16000838362000af960201b60201c565b620009ed816002546200081d60201b62002c2e1790919060201c565b60028190555062000a4b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200081d60201b62002c2e1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aed919062000e8b565b60405180910390a35050565b505050565b82805462000b0c9062000ed7565b90600052602060002090601f01602090048101928262000b30576000855562000b7c565b82601f1062000b4b57805160ff191683800117855562000b7c565b8280016001018555821562000b7c579182015b8281111562000b7b57825182559160200191906001019062000b5e565b5b50905062000b8b919062000b8f565b5090565b5b8082111562000baa57600081600090555060010162000b90565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000be08262000bb3565b9050919050565b62000bf28162000bd3565b811462000bfe57600080fd5b50565b60008151905062000c128162000be7565b92915050565b60006020828403121562000c315762000c3062000bae565b5b600062000c418482850162000c01565b91505092915050565b62000c558162000bd3565b82525050565b600060408201905062000c72600083018562000c4a565b62000c81602083018462000c4a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cfd8262000c88565b915062000d0a8362000c88565b92508262000d1d5762000d1c62000c92565b5b828204905092915050565b600062000d358262000c88565b915062000d428362000c88565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d7a5762000d7962000cc1565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000dce601b8362000d85565b915062000ddb8262000d96565b602082019050919050565b6000602082019050818103600083015262000e018162000dbf565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e40601f8362000d85565b915062000e4d8262000e08565b602082019050919050565b6000602082019050818103600083015262000e738162000e31565b9050919050565b62000e858162000c88565b82525050565b600060208201905062000ea2600083018462000e7a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ef057607f821691505b60208210810362000f065762000f0562000ea8565b5b50919050565b6158d68062000f1c6000396000f3fe60806040526004361061036f5760003560e01c806375f0a874116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c91578063f8b45b0514610cba578063fc6b151c14610ce5578063ffecf51614610d0e57610376565b8063dd62ed3e14610bfe578063e2f4560514610c3b578063e71dc3f514610c6657610376565b8063b62496f5116100d1578063b62496f514610b44578063b74e3b1114610b81578063d045a32914610baa578063d5e3725114610bd557610376565b8063a9059cbb14610ab1578063adb873bd14610aee578063b494298814610b1957610376565b806395d89b41116101645780639c3b4fdc1161013e5780639c3b4fdc146109f5578063a0d82dc514610a20578063a457c2d714610a4b578063a614ff7514610a8857610376565b806395d89b4114610978578063992c58e4146109a35780639a7a23d6146109cc57610376565b80638c3c82b2116101a05780638c3c82b2146108cc5780638da5cb5b146108f75780638ea5220f1461092257806395451c291461094d57610376565b806375f0a874146108615780637fdde05c1461088c5780638a8c523c146108b557610376565b806349bd5a5e116102a05780635eee4bae1161023e5780637088fb7f116102185780637088fb7f146107cd57806370a08231146107e4578063715018a61461082157806375829def1461083857610376565b80635eee4bae146107525780635fecd9261461077b578063679ca6e9146107a457610376565b80634ada218b1161027a5780634ada218b146106965780634fbee193146106c15780635124f874146106fe5780635d098b381461072957610376565b806349bd5a5e146106155780634a62bb65146106405780634a74bb021461066b57610376565b80631d7b1fb41161030d57806323b872dd116102e757806323b872dd14610533578063313ce56714610570578063395093511461059b5780633bbac579146105d857610376565b80631d7b1fb4146104b65780631f53ac02146104e15780632307b4411461050a57610376565b806308dfe8a51161034957806308dfe8a5146103fa578063095ea7b3146104235780631694505e1461046057806318160ddd1461048b57610376565b806303fd2a451461037b57806305ca5f08146103a657806306fdde03146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d37565b60405161039d919061416b565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141d0565b610d5d565b005b3480156103db57600080fd5b506103e4610ec0565b6040516103f19190614296565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061431c565b610f52565b005b34801561042f57600080fd5b5061044a6004803603810190610445919061435c565b611092565b60405161045791906143ab565b60405180910390f35b34801561046c57600080fd5b506104756110b0565b6040516104829190614425565b60405180910390f35b34801561049757600080fd5b506104a06110d6565b6040516104ad919061444f565b60405180910390f35b3480156104c257600080fd5b506104cb6110e0565b6040516104d8919061444f565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061446a565b6110e6565b005b34801561051657600080fd5b50610531600480360381019061052c91906146a2565b611250565b005b34801561053f57600080fd5b5061055a6004803603810190610555919061471a565b6113f2565b60405161056791906143ab565b60405180910390f35b34801561057c57600080fd5b506105856114cb565b6040516105929190614789565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061435c565b6114d4565b6040516105cf91906143ab565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061446a565b611587565b60405161060c91906143ab565b60405180910390f35b34801561062157600080fd5b5061062a6115dd565b604051610637919061416b565b60405180910390f35b34801561064c57600080fd5b50610655611603565b60405161066291906143ab565b60405180910390f35b34801561067757600080fd5b50610680611616565b60405161068d91906143ab565b60405180910390f35b3480156106a257600080fd5b506106ab611629565b6040516106b891906143ab565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061446a565b61163c565b6040516106f591906143ab565b60405180910390f35b34801561070a57600080fd5b50610713611692565b604051610720919061444f565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061446a565b611698565b005b34801561075e57600080fd5b50610779600480360381019061077491906141d0565b611802565b005b34801561078757600080fd5b506107a2600480360381019061079d919061446a565b6118b6565b005b3480156107b057600080fd5b506107cb60048036038101906107c691906147a4565b6119df565b005b3480156107d957600080fd5b506107e2611a93565b005b3480156107f057600080fd5b5061080b6004803603810190610806919061446a565b611b79565b604051610818919061444f565b60405180910390f35b34801561082d57600080fd5b50610836611bc1565b005b34801561084457600080fd5b5061085f600480360381019061085a919061446a565b611d19565b005b34801561086d57600080fd5b50610876611e6c565b60405161088391906147f2565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae919061431c565b611e92565b005b3480156108c157600080fd5b506108ca611f84565b005b3480156108d857600080fd5b506108e161208c565b6040516108ee919061444f565b60405180910390f35b34801561090357600080fd5b5061090c612092565b604051610919919061416b565b60405180910390f35b34801561092e57600080fd5b506109376120bc565b60405161094491906147f2565b60405180910390f35b34801561095957600080fd5b506109626120e2565b60405161096f919061444f565b60405180910390f35b34801561098457600080fd5b5061098d6120e8565b60405161099a9190614296565b60405180910390f35b3480156109af57600080fd5b506109ca60048036038101906109c5919061480d565b61217a565b005b3480156109d857600080fd5b506109f360048036038101906109ee919061431c565b61231f565b005b348015610a0157600080fd5b50610a0a6123c4565b604051610a17919061444f565b60405180910390f35b348015610a2c57600080fd5b50610a356123ca565b604051610a42919061444f565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d919061435c565b6123d0565b604051610a7f91906143ab565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa91906147a4565b61249d565b005b348015610abd57600080fd5b50610ad86004803603810190610ad3919061435c565b612551565b604051610ae591906143ab565b60405180910390f35b348015610afa57600080fd5b50610b0361256f565b604051610b10919061444f565b60405180910390f35b348015610b2557600080fd5b50610b2e612575565b604051610b3b919061444f565b60405180910390f35b348015610b5057600080fd5b50610b6b6004803603810190610b66919061446a565b61257b565b604051610b7891906143ab565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba391906141d0565b61259b565b005b348015610bb657600080fd5b50610bbf612681565b604051610bcc91906143ab565b60405180910390f35b348015610be157600080fd5b50610bfc6004803603810190610bf791906147a4565b612694565b005b348015610c0a57600080fd5b50610c256004803603810190610c20919061489a565b61279e565b604051610c32919061444f565b60405180910390f35b348015610c4757600080fd5b50610c50612825565b604051610c5d919061444f565b60405180910390f35b348015610c7257600080fd5b50610c7b61282b565b604051610c88919061444f565b60405180910390f35b348015610c9d57600080fd5b50610cb86004803603810190610cb3919061446a565b612831565b005b348015610cc657600080fd5b50610ccf6129f7565b604051610cdc919061444f565b60405180910390f35b348015610cf157600080fd5b50610d0c6004803603810190610d0791906141d0565b6129fd565b005b348015610d1a57600080fd5b50610d356004803603810190610d30919061446a565b612b05565b005b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d65612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90614926565b60405180910390fd5b670de0b6b3a764000081610e089190614975565b90506000610e23600954600a54612c2e90919063ffffffff16565b90506000610e4e82610e40600a5486612c9490919063ffffffff16565b612d0e90919063ffffffff16565b90506000610e7983610e6b60095487612c9490919063ffffffff16565b612d0e90919063ffffffff16565b9050610e8484612d58565b610e9982600a54612f9a90919063ffffffff16565b600a81905550610eb481600954612f9a90919063ffffffff16565b60098190555050505050565b606060038054610ecf906149fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610efb906149fe565b8015610f485780601f10610f1d57610100808354040283529160200191610f48565b820191906000526020600020905b815481529060010190602001808311610f2b57829003601f168201915b5050505050905090565b610f5a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614926565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161108691906143ab565b60405180910390a25050565b60006110a661109f612c8c565b8484612fe4565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60235481565b6110ee612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa81604051611245919061416b565b60405180910390a150565b611258612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90614926565b60405180910390fd5b805182511461132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132290614a7b565b60405180910390fd5b60c882511115611370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136790614b0d565b60405180910390fd5b60005b82518110156113ed57600083828151811061139157611390614b2d565b5b602002602001015190506000670de0b6b3a76400008484815181106113b9576113b8614b2d565b5b60200260200101516113cb9190614975565b90506113d83383836131ad565b505080806113e590614b5c565b915050611373565b505050565b60006113ff848484613440565b6114c08461140b612c8c565b6114bb8560405180606001604052806028815260200161582e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611471612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b612fe4565b600190509392505050565b60006012905090565b600061157d6114e1612c8c565b8461157885600160006114f2612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2e90919063ffffffff16565b612fe4565b6001905092915050565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900460ff1681565b601860009054906101000a900460ff1681565b600860159054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6116a0612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516117f7919061416b565b60405180910390a150565b61180a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090614926565b60405180910390fd5b670de0b6b3a7640000816118ad9190614975565b60118190555050565b6118be612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194490614926565b60405180910390fd5b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2bfbf4d4860dc855748bb2cddfed0644fc3dcd75aad3625ff609ea9effa5ac89816040516119d4919061416b565b60405180910390a150565b6119e7612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90614926565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b611a9b612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190614926565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b75573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc9612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90614926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611d21612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e6981612831565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e9a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2090614926565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f8c612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290614926565b60405180910390fd5b600860159054906101000a900460ff161561203557600080fd5b6001600860156101000a81548160ff02191690831515021790555043602181905550426022819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60225481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6060600480546120f7906149fe565b80601f0160208091040260200160405190810160405280929190818152602001828054612123906149fe565b80156121705780601f1061214557610100808354040283529160200191612170565b820191906000526020600020905b81548152906001019060200180831161215357829003601f168201915b5050505050905090565b612182612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890614926565b60405180910390fd5b856014819055508360158190555084601281905550826013819055508160168190555080601781905550612252601754601254612c2e90919063ffffffff16565b600b8190555061226f601654601454612c2e90919063ffffffff16565b600c819055506063600b541115801561228b5750600f600c5411155b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190614bf0565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60125460135460175460145460155460165460405161230f96959493929190614c10565b60405180910390a1505050505050565b612327612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad90614926565b60405180910390fd5b6123c08282613dde565b5050565b60165481565b60175481565b60006124936123dd612c8c565b8461248e8560405180606001604052806025815260200161587c6025913960016000612407612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b612fe4565b6001905092915050565b6124a5612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b90614926565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b600061256561255e612c8c565b8484613440565b6001905092915050565b60135481565b60215481565b601b6020528060005260406000206000915054906101000a900460ff1681565b6125a3612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990614926565b60405180910390fd5b61012c811115612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614ce3565b60405180910390fd5b8060238190555050565b601060009054906101000a900460ff1681565b61269c612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290614926565b60405180910390fd5b801515601860009054906101000a900460ff1615150361274a57600080fd5b80601860006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161279391906143ab565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60155481565b612839612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bf90614926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90614d75565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b612a05612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b90614926565b60405180910390fd5b670de0b6b3a764000081612aa89190614975565b90506064600254612ab99190614dc4565b811015612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614e67565b60405180910390fd5b80600f8190555050565b612b0d612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9390614926565b60405180910390fd5b6001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4838d165dc25d6634e3e7c65e13a5db7fa3b845af65cb4816abcb94ce9d569e381604051612c23919061416b565b60405180910390a150565b6000808284612c3d9190614e87565b905083811015612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990614f29565b60405180910390fd5b8091505092915050565b600033905090565b6000808303612ca65760009050612d08565b60008284612cb49190614975565b9050828482612cc39190614dc4565b14612d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfa90614fbb565b60405180910390fd5b809150505b92915050565b6000612d5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e7f565b905092915050565b6000810315612f9757612d6a81613ee2565b6000600190506000600190506000612d8f601654601454612c2e90919063ffffffff16565b612da6601754601254612c2e90919063ffffffff16565b612db09190614e87565b9050600080821115612dd257612dcf8247612d0e90919063ffffffff16565b90505b600081612dec601254601454612c2e90919063ffffffff16565b612df69190614975565b9050600082612e12601754601654612c2e90919063ffffffff16565b612e1c9190614975565b90506000821115612eb657600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612e6d9061500c565b60006040518083038185875af1925050503d8060008114612eaa576040519150601f19603f3d011682016040523d82523d6000602084013e612eaf565b606091505b5050809650505b6000811115612f4e57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f059061500c565b60006040518083038185875af1925050503d8060008114612f42576040519150601f19603f3d011682016040523d82523d6000602084013e612f47565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612f7a5750865b604051612f88929190615021565b60405180910390a15050505050505b50565b6000612fdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d7a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304a906150bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b99061514e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131a0919061444f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361328b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328290615272565b60405180910390fd5b613296838383614125565b61330181604051806060016040528060268152602001615856602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613394816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613433919061444f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a690615304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615396565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135c25750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135cb57600080fd5b6000806000601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661367157600860159054906101000a900460ff16613670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366790615402565b60405180910390fd5b5b6000840361368d57613685868660006131ad565b505050613d75565b600860149054906101000a900460ff161580156136f45750601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561374a5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d66576000601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156138a357601254935060135492506017549150601d60009054906101000a900460ff161561389e57602354602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138179190614e87565b421015613859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138509061546e565b60405180910390fd5b42602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613b6a565b601454935060155492506016549150601d60009054906101000a900460ff1615613af55760026021546138d69190614e87565b4311613917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390e906154da565b60405180910390fd5b601e543a111561395c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395390615546565b60405180910390fd5b43601f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036139dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139d4906155b2565b60405180910390fd5b602354602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a2a9190614e87565b421015613a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a639061546e565b60405180910390fd5b43601f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900460ff1615613b69576000613b1587611b79565b9050600f548682613b269190614e87565b1115613b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5e90615644565b60405180910390fd5b505b5b6000613b7f8386612c2e90919063ffffffff16565b90506000613b8c30611b79565b905060006011548210159050808015613bef5750601b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4c576001600860146101000a81548160ff02191690831515021790555060006011549050613c1f81612d58565b6000600a8190555060006009819055506000600860146101000a81548160ff021916908315150217905550505b6000613c746064613c66868c612c9490919063ffffffff16565b612d0e90919063ffffffff16565b90506000613c9e6064613c908a8d612c9490919063ffffffff16565b612d0e90919063ffffffff16565b9050613cbe8183613caf9190614e87565b8b612f9a90919063ffffffff16565b99508515613ce657613cdb82600954612c2e90919063ffffffff16565b600981905550613d02565b613cfb82600a54612c2e90919063ffffffff16565b600a819055505b613d0d8c30846131ad565b6000811115613d5f57613d438c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836131ad565b613d5881600254612f9a90919063ffffffff16565b6002819055505b5050505050505b613d718686866131ad565b5050505b505050565b6000838311158290613dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613db99190614296565b60405180910390fd5b5060008385613dd19190615664565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebd9190614296565b60405180910390fd5b5060008385613ed59190614dc4565b9050809150509392505050565b6000600267ffffffffffffffff811115613eff57613efe61449c565b5b604051908082528060200260200182016040528015613f2d5781602001602082028036833780820191505090505b5090503081600081518110613f4557613f44614b2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401091906156ad565b8160018151811061402457614023614b2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061408b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fe4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ef9594939291906157d3565b600060405180830381600087803b15801561410957600080fd5b505af115801561411d573d6000803e3d6000fd5b505050505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141558261412a565b9050919050565b6141658161414a565b82525050565b6000602082019050614180600083018461415c565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6141ad8161419a565b81146141b857600080fd5b50565b6000813590506141ca816141a4565b92915050565b6000602082840312156141e6576141e5614190565b5b60006141f4848285016141bb565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561423757808201518184015260208101905061421c565b83811115614246576000848401525b50505050565b6000601f19601f8301169050919050565b6000614268826141fd565b6142728185614208565b9350614282818560208601614219565b61428b8161424c565b840191505092915050565b600060208201905081810360008301526142b0818461425d565b905092915050565b6142c18161414a565b81146142cc57600080fd5b50565b6000813590506142de816142b8565b92915050565b60008115159050919050565b6142f9816142e4565b811461430457600080fd5b50565b600081359050614316816142f0565b92915050565b6000806040838503121561433357614332614190565b5b6000614341858286016142cf565b925050602061435285828601614307565b9150509250929050565b6000806040838503121561437357614372614190565b5b6000614381858286016142cf565b9250506020614392858286016141bb565b9150509250929050565b6143a5816142e4565b82525050565b60006020820190506143c0600083018461439c565b92915050565b6000819050919050565b60006143eb6143e66143e18461412a565b6143c6565b61412a565b9050919050565b60006143fd826143d0565b9050919050565b600061440f826143f2565b9050919050565b61441f81614404565b82525050565b600060208201905061443a6000830184614416565b92915050565b6144498161419a565b82525050565b60006020820190506144646000830184614440565b92915050565b6000602082840312156144805761447f614190565b5b600061448e848285016142cf565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6144d48261424c565b810181811067ffffffffffffffff821117156144f3576144f261449c565b5b80604052505050565b6000614506614186565b905061451282826144cb565b919050565b600067ffffffffffffffff8211156145325761453161449c565b5b602082029050602081019050919050565b600080fd5b600061455b61455684614517565b6144fc565b9050808382526020820190506020840283018581111561457e5761457d614543565b5b835b818110156145a7578061459388826142cf565b845260208401935050602081019050614580565b5050509392505050565b600082601f8301126145c6576145c5614497565b5b81356145d6848260208601614548565b91505092915050565b600067ffffffffffffffff8211156145fa576145f961449c565b5b602082029050602081019050919050565b600061461e614619846145df565b6144fc565b9050808382526020820190506020840283018581111561464157614640614543565b5b835b8181101561466a578061465688826141bb565b845260208401935050602081019050614643565b5050509392505050565b600082601f83011261468957614688614497565b5b813561469984826020860161460b565b91505092915050565b600080604083850312156146b9576146b8614190565b5b600083013567ffffffffffffffff8111156146d7576146d6614195565b5b6146e3858286016145b1565b925050602083013567ffffffffffffffff81111561470457614703614195565b5b61471085828601614674565b9150509250929050565b60008060006060848603121561473357614732614190565b5b6000614741868287016142cf565b9350506020614752868287016142cf565b9250506040614763868287016141bb565b9150509250925092565b600060ff82169050919050565b6147838161476d565b82525050565b600060208201905061479e600083018461477a565b92915050565b6000602082840312156147ba576147b9614190565b5b60006147c884828501614307565b91505092915050565b60006147dc8261412a565b9050919050565b6147ec816147d1565b82525050565b600060208201905061480760008301846147e3565b92915050565b60008060008060008060c0878903121561482a57614829614190565b5b600061483889828a016141bb565b965050602061484989828a016141bb565b955050604061485a89828a016141bb565b945050606061486b89828a016141bb565b935050608061487c89828a016141bb565b92505060a061488d89828a016141bb565b9150509295509295509295565b600080604083850312156148b1576148b0614190565b5b60006148bf858286016142cf565b92505060206148d0858286016142cf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614910602083614208565b915061491b826148da565b602082019050919050565b6000602082019050818103600083015261493f81614903565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149808261419a565b915061498b8361419a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149c4576149c3614946565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1657607f821691505b602082108103614a2957614a286149cf565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614a65601e83614208565b9150614a7082614a2f565b602082019050919050565b60006020820190508181036000830152614a9481614a58565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af7602283614208565b9150614b0282614a9b565b604082019050919050565b60006020820190508181036000830152614b2681614aea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b678261419a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b9957614b98614946565b5b600182019050919050565b7f2500000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bda600183614208565b9150614be582614ba4565b602082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b600060c082019050614c256000830189614440565b614c326020830188614440565b614c3f6040830187614440565b614c4c6060830186614440565b614c596080830185614440565b614c6660a0830184614440565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ccd602683614208565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d5f602683614208565b9150614d6a82614d03565b604082019050919050565b60006020820190508181036000830152614d8e81614d52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614dcf8261419a565b9150614dda8361419a565b925082614dea57614de9614d95565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614e51602883614208565b9150614e5c82614df5565b604082019050919050565b60006020820190508181036000830152614e8081614e44565b9050919050565b6000614e928261419a565b9150614e9d8361419a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ed257614ed1614946565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f13601b83614208565b9150614f1e82614edd565b602082019050919050565b60006020820190508181036000830152614f4281614f06565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fa5602183614208565b9150614fb082614f49565b604082019050919050565b60006020820190508181036000830152614fd481614f98565b9050919050565b600081905092915050565b50565b6000614ff6600083614fdb565b915061500182614fe6565b600082019050919050565b600061501782614fe9565b9150819050919050565b60006040820190506150366000830185614440565b615043602083018461439c565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150a6602483614208565b91506150b18261504a565b604082019050919050565b600060208201905081810360008301526150d581615099565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615138602283614208565b9150615143826150dc565b604082019050919050565b600060208201905081810360008301526151678161512b565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151ca602583614208565b91506151d58261516e565b604082019050919050565b600060208201905081810360008301526151f9816151bd565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061525c602383614208565b915061526782615200565b604082019050919050565b6000602082019050818103600083015261528b8161524f565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006152ee602683614208565b91506152f982615292565b604082019050919050565b6000602082019050818103600083015261531d816152e1565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615380602483614208565b915061538b82615324565b604082019050919050565b600060208201905081810360008301526153af81615373565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b60006153ec602083614208565b91506153f7826153b6565b602082019050919050565b6000602082019050818103600083015261541b816153df565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b6000615458601683614208565b915061546382615422565b602082019050919050565b600060208201905081810360008301526154878161544b565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006154c4601283614208565b91506154cf8261548e565b602082019050919050565b600060208201905081810360008301526154f3816154b7565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b6000615530601883614208565b915061553b826154fa565b602082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b600061559c601483614208565b91506155a782615566565b602082019050919050565b600060208201905081810360008301526155cb8161558f565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b600061562e602483614208565b9150615639826155d2565b604082019050919050565b6000602082019050818103600083015261565d81615621565b9050919050565b600061566f8261419a565b915061567a8361419a565b92508282101561568d5761568c614946565b5b828203905092915050565b6000815190506156a7816142b8565b92915050565b6000602082840312156156c3576156c2614190565b5b60006156d184828501615698565b91505092915050565b6000819050919050565b60006156ff6156fa6156f5846156da565b6143c6565b61419a565b9050919050565b61570f816156e4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61574a8161414a565b82525050565b600061575c8383615741565b60208301905092915050565b6000602082019050919050565b600061578082615715565b61578a8185615720565b935061579583615731565b8060005b838110156157c65781516157ad8882615750565b97506157b883615768565b925050600181019050615799565b5085935050505092915050565b600060a0820190506157e86000830188614440565b6157f56020830187615706565b81810360408301526158078186615775565b9050615816606083018561415c565b6158236080830184614440565b969550505050505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032990e08939b0c933ea411a7928e65e67e628dce1bb9527ac7898f6b2e5baa9d64736f6c634300080d0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806375f0a874116101c6578063a9059cbb116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c91578063f8b45b0514610cba578063fc6b151c14610ce5578063ffecf51614610d0e57610376565b8063dd62ed3e14610bfe578063e2f4560514610c3b578063e71dc3f514610c6657610376565b8063b62496f5116100d1578063b62496f514610b44578063b74e3b1114610b81578063d045a32914610baa578063d5e3725114610bd557610376565b8063a9059cbb14610ab1578063adb873bd14610aee578063b494298814610b1957610376565b806395d89b41116101645780639c3b4fdc1161013e5780639c3b4fdc146109f5578063a0d82dc514610a20578063a457c2d714610a4b578063a614ff7514610a8857610376565b806395d89b4114610978578063992c58e4146109a35780639a7a23d6146109cc57610376565b80638c3c82b2116101a05780638c3c82b2146108cc5780638da5cb5b146108f75780638ea5220f1461092257806395451c291461094d57610376565b806375f0a874146108615780637fdde05c1461088c5780638a8c523c146108b557610376565b806349bd5a5e116102a05780635eee4bae1161023e5780637088fb7f116102185780637088fb7f146107cd57806370a08231146107e4578063715018a61461082157806375829def1461083857610376565b80635eee4bae146107525780635fecd9261461077b578063679ca6e9146107a457610376565b80634ada218b1161027a5780634ada218b146106965780634fbee193146106c15780635124f874146106fe5780635d098b381461072957610376565b806349bd5a5e146106155780634a62bb65146106405780634a74bb021461066b57610376565b80631d7b1fb41161030d57806323b872dd116102e757806323b872dd14610533578063313ce56714610570578063395093511461059b5780633bbac579146105d857610376565b80631d7b1fb4146104b65780631f53ac02146104e15780632307b4411461050a57610376565b806308dfe8a51161034957806308dfe8a5146103fa578063095ea7b3146104235780631694505e1461046057806318160ddd1461048b57610376565b806303fd2a451461037b57806305ca5f08146103a657806306fdde03146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d37565b60405161039d919061416b565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141d0565b610d5d565b005b3480156103db57600080fd5b506103e4610ec0565b6040516103f19190614296565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c919061431c565b610f52565b005b34801561042f57600080fd5b5061044a6004803603810190610445919061435c565b611092565b60405161045791906143ab565b60405180910390f35b34801561046c57600080fd5b506104756110b0565b6040516104829190614425565b60405180910390f35b34801561049757600080fd5b506104a06110d6565b6040516104ad919061444f565b60405180910390f35b3480156104c257600080fd5b506104cb6110e0565b6040516104d8919061444f565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061446a565b6110e6565b005b34801561051657600080fd5b50610531600480360381019061052c91906146a2565b611250565b005b34801561053f57600080fd5b5061055a6004803603810190610555919061471a565b6113f2565b60405161056791906143ab565b60405180910390f35b34801561057c57600080fd5b506105856114cb565b6040516105929190614789565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061435c565b6114d4565b6040516105cf91906143ab565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061446a565b611587565b60405161060c91906143ab565b60405180910390f35b34801561062157600080fd5b5061062a6115dd565b604051610637919061416b565b60405180910390f35b34801561064c57600080fd5b50610655611603565b60405161066291906143ab565b60405180910390f35b34801561067757600080fd5b50610680611616565b60405161068d91906143ab565b60405180910390f35b3480156106a257600080fd5b506106ab611629565b6040516106b891906143ab565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e3919061446a565b61163c565b6040516106f591906143ab565b60405180910390f35b34801561070a57600080fd5b50610713611692565b604051610720919061444f565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b919061446a565b611698565b005b34801561075e57600080fd5b50610779600480360381019061077491906141d0565b611802565b005b34801561078757600080fd5b506107a2600480360381019061079d919061446a565b6118b6565b005b3480156107b057600080fd5b506107cb60048036038101906107c691906147a4565b6119df565b005b3480156107d957600080fd5b506107e2611a93565b005b3480156107f057600080fd5b5061080b6004803603810190610806919061446a565b611b79565b604051610818919061444f565b60405180910390f35b34801561082d57600080fd5b50610836611bc1565b005b34801561084457600080fd5b5061085f600480360381019061085a919061446a565b611d19565b005b34801561086d57600080fd5b50610876611e6c565b60405161088391906147f2565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae919061431c565b611e92565b005b3480156108c157600080fd5b506108ca611f84565b005b3480156108d857600080fd5b506108e161208c565b6040516108ee919061444f565b60405180910390f35b34801561090357600080fd5b5061090c612092565b604051610919919061416b565b60405180910390f35b34801561092e57600080fd5b506109376120bc565b60405161094491906147f2565b60405180910390f35b34801561095957600080fd5b506109626120e2565b60405161096f919061444f565b60405180910390f35b34801561098457600080fd5b5061098d6120e8565b60405161099a9190614296565b60405180910390f35b3480156109af57600080fd5b506109ca60048036038101906109c5919061480d565b61217a565b005b3480156109d857600080fd5b506109f360048036038101906109ee919061431c565b61231f565b005b348015610a0157600080fd5b50610a0a6123c4565b604051610a17919061444f565b60405180910390f35b348015610a2c57600080fd5b50610a356123ca565b604051610a42919061444f565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d919061435c565b6123d0565b604051610a7f91906143ab565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa91906147a4565b61249d565b005b348015610abd57600080fd5b50610ad86004803603810190610ad3919061435c565b612551565b604051610ae591906143ab565b60405180910390f35b348015610afa57600080fd5b50610b0361256f565b604051610b10919061444f565b60405180910390f35b348015610b2557600080fd5b50610b2e612575565b604051610b3b919061444f565b60405180910390f35b348015610b5057600080fd5b50610b6b6004803603810190610b66919061446a565b61257b565b604051610b7891906143ab565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba391906141d0565b61259b565b005b348015610bb657600080fd5b50610bbf612681565b604051610bcc91906143ab565b60405180910390f35b348015610be157600080fd5b50610bfc6004803603810190610bf791906147a4565b612694565b005b348015610c0a57600080fd5b50610c256004803603810190610c20919061489a565b61279e565b604051610c32919061444f565b60405180910390f35b348015610c4757600080fd5b50610c50612825565b604051610c5d919061444f565b60405180910390f35b348015610c7257600080fd5b50610c7b61282b565b604051610c88919061444f565b60405180910390f35b348015610c9d57600080fd5b50610cb86004803603810190610cb3919061446a565b612831565b005b348015610cc657600080fd5b50610ccf6129f7565b604051610cdc919061444f565b60405180910390f35b348015610cf157600080fd5b50610d0c6004803603810190610d0791906141d0565b6129fd565b005b348015610d1a57600080fd5b50610d356004803603810190610d30919061446a565b612b05565b005b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d65612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90614926565b60405180910390fd5b670de0b6b3a764000081610e089190614975565b90506000610e23600954600a54612c2e90919063ffffffff16565b90506000610e4e82610e40600a5486612c9490919063ffffffff16565b612d0e90919063ffffffff16565b90506000610e7983610e6b60095487612c9490919063ffffffff16565b612d0e90919063ffffffff16565b9050610e8484612d58565b610e9982600a54612f9a90919063ffffffff16565b600a81905550610eb481600954612f9a90919063ffffffff16565b60098190555050505050565b606060038054610ecf906149fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610efb906149fe565b8015610f485780601f10610f1d57610100808354040283529160200191610f48565b820191906000526020600020905b815481529060010190602001808311610f2b57829003601f168201915b5050505050905090565b610f5a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614926565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161108691906143ab565b60405180910390a25050565b60006110a661109f612c8c565b8484612fe4565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60235481565b6110ee612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa81604051611245919061416b565b60405180910390a150565b611258612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90614926565b60405180910390fd5b805182511461132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132290614a7b565b60405180910390fd5b60c882511115611370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136790614b0d565b60405180910390fd5b60005b82518110156113ed57600083828151811061139157611390614b2d565b5b602002602001015190506000670de0b6b3a76400008484815181106113b9576113b8614b2d565b5b60200260200101516113cb9190614975565b90506113d83383836131ad565b505080806113e590614b5c565b915050611373565b505050565b60006113ff848484613440565b6114c08461140b612c8c565b6114bb8560405180606001604052806028815260200161582e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611471612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b612fe4565b600190509392505050565b60006012905090565b600061157d6114e1612c8c565b8461157885600160006114f2612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2e90919063ffffffff16565b612fe4565b6001905092915050565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900460ff1681565b601860009054906101000a900460ff1681565b600860159054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6116a0612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516117f7919061416b565b60405180910390a150565b61180a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090614926565b60405180910390fd5b670de0b6b3a7640000816118ad9190614975565b60118190555050565b6118be612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194490614926565b60405180910390fd5b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2bfbf4d4860dc855748bb2cddfed0644fc3dcd75aad3625ff609ea9effa5ac89816040516119d4919061416b565b60405180910390a150565b6119e7612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90614926565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b611a9b612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190614926565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b75573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bc9612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90614926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611d21612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790614926565b60405180910390fd5b6001601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e6981612831565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e9a612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2090614926565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611f8c612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201290614926565b60405180910390fd5b600860159054906101000a900460ff161561203557600080fd5b6001600860156101000a81548160ff02191690831515021790555043602181905550426022819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60225481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6060600480546120f7906149fe565b80601f0160208091040260200160405190810160405280929190818152602001828054612123906149fe565b80156121705780601f1061214557610100808354040283529160200191612170565b820191906000526020600020905b81548152906001019060200180831161215357829003601f168201915b5050505050905090565b612182612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890614926565b60405180910390fd5b856014819055508360158190555084601281905550826013819055508160168190555080601781905550612252601754601254612c2e90919063ffffffff16565b600b8190555061226f601654601454612c2e90919063ffffffff16565b600c819055506063600b541115801561228b5750600f600c5411155b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190614bf0565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60125460135460175460145460155460165460405161230f96959493929190614c10565b60405180910390a1505050505050565b612327612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad90614926565b60405180910390fd5b6123c08282613dde565b5050565b60165481565b60175481565b60006124936123dd612c8c565b8461248e8560405180606001604052806025815260200161587c6025913960016000612407612c8c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b612fe4565b6001905092915050565b6124a5612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b90614926565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b600061256561255e612c8c565b8484613440565b6001905092915050565b60135481565b60215481565b601b6020528060005260406000206000915054906101000a900460ff1681565b6125a3612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990614926565b60405180910390fd5b61012c811115612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614ce3565b60405180910390fd5b8060238190555050565b601060009054906101000a900460ff1681565b61269c612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290614926565b60405180910390fd5b801515601860009054906101000a900460ff1615150361274a57600080fd5b80601860006101000a81548160ff0219169083151502179055507fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef8160405161279391906143ab565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b60155481565b612839612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bf90614926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90614d75565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b612a05612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b90614926565b60405180910390fd5b670de0b6b3a764000081612aa89190614975565b90506064600254612ab99190614dc4565b811015612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290614e67565b60405180910390fd5b80600f8190555050565b612b0d612c8c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9390614926565b60405180910390fd5b6001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4838d165dc25d6634e3e7c65e13a5db7fa3b845af65cb4816abcb94ce9d569e381604051612c23919061416b565b60405180910390a150565b6000808284612c3d9190614e87565b905083811015612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990614f29565b60405180910390fd5b8091505092915050565b600033905090565b6000808303612ca65760009050612d08565b60008284612cb49190614975565b9050828482612cc39190614dc4565b14612d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfa90614fbb565b60405180910390fd5b809150505b92915050565b6000612d5083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e7f565b905092915050565b6000810315612f9757612d6a81613ee2565b6000600190506000600190506000612d8f601654601454612c2e90919063ffffffff16565b612da6601754601254612c2e90919063ffffffff16565b612db09190614e87565b9050600080821115612dd257612dcf8247612d0e90919063ffffffff16565b90505b600081612dec601254601454612c2e90919063ffffffff16565b612df69190614975565b9050600082612e12601754601654612c2e90919063ffffffff16565b612e1c9190614975565b90506000821115612eb657600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612e6d9061500c565b60006040518083038185875af1925050503d8060008114612eaa576040519150601f19603f3d011682016040523d82523d6000602084013e612eaf565b606091505b5050809650505b6000811115612f4e57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f059061500c565b60006040518083038185875af1925050503d8060008114612f42576040519150601f19603f3d011682016040523d82523d6000602084013e612f47565b606091505b5050809550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea982878015612f7a5750865b604051612f88929190615021565b60405180910390a15050505050505b50565b6000612fdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d7a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304a906150bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b99061514e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131a0919061444f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361321c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613213906151e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361328b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328290615272565b60405180910390fd5b613296838383614125565b61330181604051806060016040528060268152602001615856602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d7a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613394816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c2e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613433919061444f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a690615304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361351e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351590615396565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135c25750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135cb57600080fd5b6000806000601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661367157600860159054906101000a900460ff16613670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366790615402565b60405180910390fd5b5b6000840361368d57613685868660006131ad565b505050613d75565b600860149054906101000a900460ff161580156136f45750601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561374a5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d66576000601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905080156138a357601254935060135492506017549150601d60009054906101000a900460ff161561389e57602354602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138179190614e87565b421015613859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138509061546e565b60405180910390fd5b42602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613b6a565b601454935060155492506016549150601d60009054906101000a900460ff1615613af55760026021546138d69190614e87565b4311613917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390e906154da565b60405180910390fd5b601e543a111561395c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395390615546565b60405180910390fd5b43601f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036139dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139d4906155b2565b60405180910390fd5b602354602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a2a9190614e87565b421015613a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a639061546e565b60405180910390fd5b43601f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042602060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900460ff1615613b69576000613b1587611b79565b9050600f548682613b269190614e87565b1115613b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5e90615644565b60405180910390fd5b505b5b6000613b7f8386612c2e90919063ffffffff16565b90506000613b8c30611b79565b905060006011548210159050808015613bef5750601b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c4c576001600860146101000a81548160ff02191690831515021790555060006011549050613c1f81612d58565b6000600a8190555060006009819055506000600860146101000a81548160ff021916908315150217905550505b6000613c746064613c66868c612c9490919063ffffffff16565b612d0e90919063ffffffff16565b90506000613c9e6064613c908a8d612c9490919063ffffffff16565b612d0e90919063ffffffff16565b9050613cbe8183613caf9190614e87565b8b612f9a90919063ffffffff16565b99508515613ce657613cdb82600954612c2e90919063ffffffff16565b600981905550613d02565b613cfb82600a54612c2e90919063ffffffff16565b600a819055505b613d0d8c30846131ad565b6000811115613d5f57613d438c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836131ad565b613d5881600254612f9a90919063ffffffff16565b6002819055505b5050505050505b613d718686866131ad565b5050505b505050565b6000838311158290613dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613db99190614296565b60405180910390fd5b5060008385613dd19190615664565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083118290613ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebd9190614296565b60405180910390fd5b5060008385613ed59190614dc4565b9050809150509392505050565b6000600267ffffffffffffffff811115613eff57613efe61449c565b5b604051908082528060200260200182016040528015613f2d5781602001602082028036833780820191505090505b5090503081600081518110613f4557613f44614b2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401091906156ad565b8160018151811061402457614023614b2d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061408b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fe4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ef9594939291906157d3565b600060405180830381600087803b15801561410957600080fd5b505af115801561411d573d6000803e3d6000fd5b505050505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141558261412a565b9050919050565b6141658161414a565b82525050565b6000602082019050614180600083018461415c565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6141ad8161419a565b81146141b857600080fd5b50565b6000813590506141ca816141a4565b92915050565b6000602082840312156141e6576141e5614190565b5b60006141f4848285016141bb565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561423757808201518184015260208101905061421c565b83811115614246576000848401525b50505050565b6000601f19601f8301169050919050565b6000614268826141fd565b6142728185614208565b9350614282818560208601614219565b61428b8161424c565b840191505092915050565b600060208201905081810360008301526142b0818461425d565b905092915050565b6142c18161414a565b81146142cc57600080fd5b50565b6000813590506142de816142b8565b92915050565b60008115159050919050565b6142f9816142e4565b811461430457600080fd5b50565b600081359050614316816142f0565b92915050565b6000806040838503121561433357614332614190565b5b6000614341858286016142cf565b925050602061435285828601614307565b9150509250929050565b6000806040838503121561437357614372614190565b5b6000614381858286016142cf565b9250506020614392858286016141bb565b9150509250929050565b6143a5816142e4565b82525050565b60006020820190506143c0600083018461439c565b92915050565b6000819050919050565b60006143eb6143e66143e18461412a565b6143c6565b61412a565b9050919050565b60006143fd826143d0565b9050919050565b600061440f826143f2565b9050919050565b61441f81614404565b82525050565b600060208201905061443a6000830184614416565b92915050565b6144498161419a565b82525050565b60006020820190506144646000830184614440565b92915050565b6000602082840312156144805761447f614190565b5b600061448e848285016142cf565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6144d48261424c565b810181811067ffffffffffffffff821117156144f3576144f261449c565b5b80604052505050565b6000614506614186565b905061451282826144cb565b919050565b600067ffffffffffffffff8211156145325761453161449c565b5b602082029050602081019050919050565b600080fd5b600061455b61455684614517565b6144fc565b9050808382526020820190506020840283018581111561457e5761457d614543565b5b835b818110156145a7578061459388826142cf565b845260208401935050602081019050614580565b5050509392505050565b600082601f8301126145c6576145c5614497565b5b81356145d6848260208601614548565b91505092915050565b600067ffffffffffffffff8211156145fa576145f961449c565b5b602082029050602081019050919050565b600061461e614619846145df565b6144fc565b9050808382526020820190506020840283018581111561464157614640614543565b5b835b8181101561466a578061465688826141bb565b845260208401935050602081019050614643565b5050509392505050565b600082601f83011261468957614688614497565b5b813561469984826020860161460b565b91505092915050565b600080604083850312156146b9576146b8614190565b5b600083013567ffffffffffffffff8111156146d7576146d6614195565b5b6146e3858286016145b1565b925050602083013567ffffffffffffffff81111561470457614703614195565b5b61471085828601614674565b9150509250929050565b60008060006060848603121561473357614732614190565b5b6000614741868287016142cf565b9350506020614752868287016142cf565b9250506040614763868287016141bb565b9150509250925092565b600060ff82169050919050565b6147838161476d565b82525050565b600060208201905061479e600083018461477a565b92915050565b6000602082840312156147ba576147b9614190565b5b60006147c884828501614307565b91505092915050565b60006147dc8261412a565b9050919050565b6147ec816147d1565b82525050565b600060208201905061480760008301846147e3565b92915050565b60008060008060008060c0878903121561482a57614829614190565b5b600061483889828a016141bb565b965050602061484989828a016141bb565b955050604061485a89828a016141bb565b945050606061486b89828a016141bb565b935050608061487c89828a016141bb565b92505060a061488d89828a016141bb565b9150509295509295509295565b600080604083850312156148b1576148b0614190565b5b60006148bf858286016142cf565b92505060206148d0858286016142cf565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614910602083614208565b915061491b826148da565b602082019050919050565b6000602082019050818103600083015261493f81614903565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149808261419a565b915061498b8361419a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149c4576149c3614946565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a1657607f821691505b602082108103614a2957614a286149cf565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614a65601e83614208565b9150614a7082614a2f565b602082019050919050565b60006020820190508181036000830152614a9481614a58565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af7602283614208565b9150614b0282614a9b565b604082019050919050565b60006020820190508181036000830152614b2681614aea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b678261419a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b9957614b98614946565b5b600182019050919050565b7f2500000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bda600183614208565b9150614be582614ba4565b602082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b600060c082019050614c256000830189614440565b614c326020830188614440565b614c3f6040830187614440565b614c4c6060830186614440565b614c596080830185614440565b614c6660a0830184614440565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ccd602683614208565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614d5f602683614208565b9150614d6a82614d03565b604082019050919050565b60006020820190508181036000830152614d8e81614d52565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614dcf8261419a565b9150614dda8361419a565b925082614dea57614de9614d95565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614e51602883614208565b9150614e5c82614df5565b604082019050919050565b60006020820190508181036000830152614e8081614e44565b9050919050565b6000614e928261419a565b9150614e9d8361419a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ed257614ed1614946565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f13601b83614208565b9150614f1e82614edd565b602082019050919050565b60006020820190508181036000830152614f4281614f06565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fa5602183614208565b9150614fb082614f49565b604082019050919050565b60006020820190508181036000830152614fd481614f98565b9050919050565b600081905092915050565b50565b6000614ff6600083614fdb565b915061500182614fe6565b600082019050919050565b600061501782614fe9565b9150819050919050565b60006040820190506150366000830185614440565b615043602083018461439c565b9392505050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150a6602483614208565b91506150b18261504a565b604082019050919050565b600060208201905081810360008301526150d581615099565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615138602283614208565b9150615143826150dc565b604082019050919050565b600060208201905081810360008301526151678161512b565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151ca602583614208565b91506151d58261516e565b604082019050919050565b600060208201905081810360008301526151f9816151bd565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061525c602383614208565b915061526782615200565b604082019050919050565b6000602082019050818103600083015261528b8161524f565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006152ee602683614208565b91506152f982615292565b604082019050919050565b6000602082019050818103600083015261531d816152e1565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615380602483614208565b915061538b82615324565b604082019050919050565b600060208201905081810360008301526153af81615373565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b60006153ec602083614208565b91506153f7826153b6565b602082019050919050565b6000602082019050818103600083015261541b816153df565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b6000615458601683614208565b915061546382615422565b602082019050919050565b600060208201905081810360008301526154878161544b565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006154c4601283614208565b91506154cf8261548e565b602082019050919050565b600060208201905081810360008301526154f3816154b7565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b6000615530601883614208565b915061553b826154fa565b602082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b600061559c601483614208565b91506155a782615566565b602082019050919050565b600060208201905081810360008301526155cb8161558f565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b600061562e602483614208565b9150615639826155d2565b604082019050919050565b6000602082019050818103600083015261565d81615621565b9050919050565b600061566f8261419a565b915061567a8361419a565b92508282101561568d5761568c614946565b5b828203905092915050565b6000815190506156a7816142b8565b92915050565b6000602082840312156156c3576156c2614190565b5b60006156d184828501615698565b91505092915050565b6000819050919050565b60006156ff6156fa6156f5846156da565b6143c6565b61419a565b9050919050565b61570f816156e4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61574a8161414a565b82525050565b600061575c8383615741565b60208301905092915050565b6000602082019050919050565b600061578082615715565b61578a8185615720565b935061579583615731565b8060005b838110156157c65781516157ad8882615750565b97506157b883615768565b925050600181019050615799565b5085935050505092915050565b600060a0820190506157e86000830188614440565b6157f56020830187615706565b81810360408301526158078186615775565b9050615816606083018561415c565b6158236080830184614440565b969550505050505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122032990e08939b0c933ea411a7928e65e67e628dce1bb9527ac7898f6b2e5baa9d64736f6c634300080d0033
Deployed Bytecode Sourcemap
15510:15336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15675:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28773:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3393:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20252:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4307:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15590:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3714:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17064:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20053:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30282:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4484:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19458:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4837:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23455:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15640:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16672:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16379:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15774:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23321:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16244:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19840:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21663:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20574:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20868:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21509:146;;;;;;;;;;;;;:::i;:::-;;3830:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7285:148;;;;;;;;;;;;;:::i;:::-;;22360:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15967:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20713:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19596:232;;;;;;;;;;;;;:::i;:::-;;17002:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7071:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16015:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16172;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3501:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22580:733;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22007:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16314:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16345:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5063:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20975:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3965:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16211:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16951;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16533:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21086:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16090:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21791:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4148:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16132:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7441:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16059:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21274:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20441:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15675:64;;;;;;;;;;;;;:::o;28773:443::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28871:6:::1;28861;:17;;;;:::i;:::-;28852:26;;28889:19;28911:25;28925:10;;28911:9;;:13;;:25;;;;:::i;:::-;28889:47;;28947:15;28965:38;28991:11;28965:21;28976:9;;28965:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;28947:56;;29014:16;29033:39;29060:11;29033:22;29044:10;;29033:6;:10;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;29014:58;;29085:28;29106:6;29085:20;:28::i;:::-;29138:22;29152:7;29138:9;;:13;;:22;;;;:::i;:::-;29126:9;:34;;;;29184:24;29199:8;29184:10;;:14;;:24;;;;:::i;:::-;29171:10;:37;;;;28841:375;;;28773:443:::0;:::o;3393:100::-;3447:13;3480:5;3473:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3393:100;:::o;20252:181::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20367:8:::1;20336:19;:28;20356:7;20336:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20407:7;20391:34;;;20416:8;20391:34;;;;;;:::i;:::-;;;;;;;;20252:181:::0;;:::o;4307:169::-;4390:4;4407:39;4416:12;:10;:12::i;:::-;4430:7;4439:6;4407:8;:39::i;:::-;4464:4;4457:11;;4307:169;;;;:::o;15590:41::-;;;;;;;;;;;;;:::o;3714:108::-;3775:7;3802:12;;3795:19;;3714:108;:::o;17064:32::-;;;;:::o;20053:187::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20151:4:::1;20121:19;:27;20141:6;20121:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20186:6;20166:9;;:27;;;;;;;;;;;;;;;;;;20209:23;20225:6;20209:23;;;;;;:::i;:::-;;;;;;;;20053:187:::0;:::o;30282:561::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30454:6:::1;:13;30429:14;:21;:38;30421:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30546:3;30521:14;:21;:28;;30513:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;30604:9;30599:237;30623:14;:21;30619:1;:25;30599:237;;;30666:14;30683;30698:1;30683:17;;;;;;;;:::i;:::-;;;;;;;;30666:34;;30715:21;30752:6;30739;30746:1;30739:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;30715:44;;30774:50;30790:10;30802:6;30810:13;30774:15;:50::i;:::-;30651:185;;30646:3;;;;;:::i;:::-;;;;30599:237;;;;30282:561:::0;;:::o;4484:345::-;4597:4;4614:36;4624:6;4632:9;4643:6;4614:9;:36::i;:::-;4661:138;4670:6;4678:12;:10;:12::i;:::-;4692:106;4730:6;4692:106;;;;;;;;;;;;;;;;;:11;:19;4704:6;4692:19;;;;;;;;;;;;;;;:33;4712:12;:10;:12::i;:::-;4692:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4661:8;:138::i;:::-;4817:4;4810:11;;4484:345;;;;;:::o;19458:93::-;19516:5;19541:2;19534:9;;19458:93;:::o;4837:218::-;4925:4;4942:83;4951:12;:10;:12::i;:::-;4965:7;4974:50;5013:10;4974:11;:25;4986:12;:10;:12::i;:::-;4974:25;;;;;;;;;;;;;;;:34;5000:7;4974:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4942:8;:83::i;:::-;5043:4;5036:11;;4837:218;;;;:::o;23455:100::-;23508:4;23532:6;:15;23539:7;23532:15;;;;;;;;;;;;;;;;;;;;;;;;;23525:22;;23455:100;;;:::o;15640:28::-;;;;;;;;;;;;;:::o;16672:34::-;;;;;;;;;;;;;:::o;16379:40::-;;;;;;;;;;;;;:::o;15774:34::-;;;;;;;;;;;;;:::o;23321:126::-;23387:4;23411:19;:28;23431:7;23411:28;;;;;;;;;;;;;;;;;;;;;;;;;23404:35;;23321:126;;;:::o;16244:31::-;;;;:::o;19840:205::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19944:4:::1;19914:19;:27;19934:6;19914:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19985:6;19959:15;;:33;;;;;;;;;;;;;;;;;;20008:29;20030:6;20008:29;;;;;;:::i;:::-;;;;;;;;19840:205:::0;:::o;21663:120::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21768:6:::1;21758;:17;;;;:::i;:::-;21737:18;:38;;;;21663:120:::0;:::o;20574:131::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20656:5:::1;20638:6;:15;20645:7;20638:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20677:20;20689:7;20677:20;;;;;;:::i;:::-;;;;;;;;20574:131:::0;:::o;20868:99::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20954:5:::1;20937:14;;:22;;;;;;;;;;;;;;;;;;20868:99:::0;:::o;21509:146::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21556:17:::1;21576:21;21556:41;;21616:10;21608:28;;:39;21637:9;21608:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21545:110;21509:146::o:0;3830:127::-;3904:7;3931:9;:18;3941:7;3931:18;;;;;;;;;;;;;;;;3924:25;;3830:127;;;:::o;7285:148::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7392:1:::1;7355:40;;7376:6;;;;;;;;;;;7355:40;;;;;;;;;;;;7423:1;7406:6;;:19;;;;;;;;;;;;;;;;;;7285:148::o:0;22360:212::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22461:4:::1;22429:19;:29;22449:8;22429:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22522:4;22476:33;:43;22510:8;22476:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;22537:27;22555:8;22537:17;:27::i;:::-;22360:212:::0;:::o;15967:38::-;;;;;;;;;;;;;:::o;20713:147::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20846:6:::1;20802:33;:41;20836:6;20802:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20713:147:::0;;:::o;19596:232::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19660:14:::1;;;;;;;;;;;19659:15;19651:24;;;::::0;::::1;;19703:4;19686:14;;:21;;;;;;;;;;;;;;;;;;19732:12;19718:11;:26;;;;19773:15;19755;:33;;;;19804:16;;;;;;;;;;19596:232::o:0;17002:30::-;;;;:::o;7071:79::-;7109:7;7136:6;;;;;;;;;;;7129:13;;7071:79;:::o;16015:32::-;;;;;;;;;;;;;:::o;16172:::-;;;;:::o;3501:104::-;3557:13;3590:7;3583:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3501:104;:::o;22580:733::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22787:12:::1;22768:16;:31;;;;22823:7;22810:10;:20;;;;22861:13;22841:17;:33;;;;22899:8;22885:11;:22;;;;22930:6;22918:9;:18;;;;22960:7;22947:10;:20;;;;22996:33;23018:10;;22996:17;;:21;;:33;;;;:::i;:::-;22980:13;:49;;;;23055:31;23076:9;;23055:16;;:20;;:31;;;;:::i;:::-;23040:12;:46;;;;23137:2;23120:13;;:19;;:41;;;;;23159:2;23143:12;;:18;;23120:41;23112:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;23185:120;23196:17;;23215:11;;23228:10;;23240:16;;23283:10;;23295:9;;23185:120;;;;;;;;;;;:::i;:::-;;;;;;;;22580:733:::0;;;;;;:::o;22007:140::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22098:41:::1;22127:4;22133:5;22098:28;:41::i;:::-;22007:140:::0;;:::o;16314:24::-;;;;:::o;16345:25::-;;;;:::o;5063:286::-;5156:4;5173:146;5182:12;:10;:12::i;:::-;5196:7;5205:113;5244:15;5205:113;;;;;;;;;;;;;;;;;:11;:25;5217:12;:10;:12::i;:::-;5205:25;;;;;;;;;;;;;;;:34;5231:7;5205:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5173:8;:146::i;:::-;5337:4;5330:11;;5063:286;;;;:::o;20975:103::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21065:5:::1;21046:16;;:24;;;;;;;;;;;;;;;;;;20975:103:::0;:::o;3965:175::-;4051:4;4068:42;4078:12;:10;:12::i;:::-;4092:9;4103:6;4068:9;:42::i;:::-;4128:4;4121:11;;3965:175;;;;:::o;16211:26::-;;;;:::o;16951:::-;;;;:::o;16533:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;21086:174::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21174:3:::1;21165:5;:12;;21157:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21247:5;21231:13;:21;;;;21086:174:::0;:::o;16090:35::-;;;;;;;;;;;;;:::o;21791:208::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21896:7:::1;21871:32;;:21;;;;;;;;;;;:32;;::::0;21863:41:::1;;;::::0;::::1;;21939:7;21915:21;;:31;;;;;;;;;;;;;;;;;;21962:29;21983:7;21962:29;;;;;;:::i;:::-;;;;;;;;21791:208:::0;:::o;4148:151::-;4237:7;4264:11;:18;4276:5;4264:18;;;;;;;;;;;;;;;:27;4283:7;4264:27;;;;;;;;;;;;;;;;4257:34;;4148:151;;;;:::o;16132:33::-;;;;:::o;16282:25::-;;;;:::o;7441:244::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7550:1:::1;7530:22;;:8;:22;;::::0;7522:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7640:8;7611:38;;7632:6;;;;;;;;;;;7611:38;;;;;;;;;;;;7669:8;7660:6;;:17;;;;;;;;;;;;;;;;;;7441:244:::0;:::o;16059:24::-;;;;:::o;21274:218::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21358:6:::1;21349:5;:16;;;;:::i;:::-;21341:24;;21408:3;21393:12;;:18;;;;:::i;:::-;21384:5;:27;;21376:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21479:5;21467:9;:17;;;;21274:218:::0;:::o;20441:125::-;7208:12;:10;:12::i;:::-;7198:22;;:6;;;;;;;;;;;:22;;;7190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20520:4:::1;20502:6;:15;20509:7;20502:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20540:18;20550:7;20540:18;;;;;;:::i;:::-;;;;;;;;20441:125:::0;:::o;627:179::-;685:7;705:9;721:1;717;:5;;;;:::i;:::-;705:17;;746:1;741;:6;;733:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;797:1;790:8;;;627:179;;;;:::o;251:98::-;304:7;331:10;324:17;;251:98;:::o;1156:248::-;1214:7;1243:1;1238;:6;1234:47;;1268:1;1261:8;;;;1234:47;1293:9;1309:1;1305;:5;;;;:::i;:::-;1293:17;;1338:1;1333;1329;:5;;;;:::i;:::-;:10;1321:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1395:1;1388:8;;;1156:248;;;;;:::o;1412:132::-;1470:7;1497:39;1501:1;1504;1497:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1490:46;;1412:132;;;;:::o;29249:1025::-;29328:1;29318:6;:11;29314:50;29346:7;29314:50;29374:24;29391:6;29374:16;:24::i;:::-;29411:12;29426:4;29411:19;;29441:15;29459:4;29441:22;;29484:23;29546:31;29567:9;;29546:16;;:20;;:31;;;;:::i;:::-;29510:33;29532:10;;29510:17;;:21;;:33;;;;:::i;:::-;:67;;;;:::i;:::-;29484:93;;29590:19;29642:1;29624:15;:19;29620:108;;;29674:42;29700:15;29674:21;:25;;:42;;;;:::i;:::-;29660:56;;29620:108;29738:23;29806:11;29764:39;29785:17;;29764:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;29738:79;;29828:17;29876:11;29848:25;29862:10;;29848:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;29828:59;;29930:1;29912:15;:19;29908:123;;;29970:15;;;;;;;;;;;29962:29;;29999:15;29962:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29948:71;;;;;29908:123;30067:1;30055:9;:13;30051:108;;;30110:9;;;;;;;;;;;30102:23;;30133:9;30102:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30085:62;;;;;30051:108;30176:90;30204:15;30234:7;:21;;;;;30245:10;30234:21;30176:90;;;;;;;:::i;:::-;;;;;;;;29303:971;;;;;;29249:1025;;:::o;814:136::-;872:7;899:43;903:1;906;899:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;892:50;;814:136;;;;:::o;6289:346::-;6408:1;6391:19;;:5;:19;;;6383:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6489:1;6470:21;;:7;:21;;;6462:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6573:6;6543:11;:18;6555:5;6543:18;;;;;;;;;;;;;;;:27;6562:7;6543:27;;;;;;;;;;;;;;;:36;;;;6611:7;6595:32;;6604:5;6595:32;;;6620:6;6595:32;;;;;;:::i;:::-;;;;;;;;6289:346;;;:::o;5357:538::-;5481:1;5463:20;;:6;:20;;;5455:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5565:1;5544:23;;:9;:23;;;5536:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5620:47;5641:6;5649:9;5660:6;5620:20;:47::i;:::-;5700:70;5722:6;5700:70;;;;;;;;;;;;;;;;;:9;:17;5710:6;5700:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5680:9;:17;5690:6;5680:17;;;;;;;;;;;;;;;:90;;;;5804:32;5829:6;5804:9;:20;5814:9;5804:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5781:9;:20;5791:9;5781:20;;;;;;;;;;;;;;;:55;;;;5869:9;5852:35;;5861:6;5852:35;;;5880:6;5852:35;;;;;;:::i;:::-;;;;;;;;5357:538;;;:::o;23563:3686::-;23679:1;23663:18;;:4;:18;;;23655:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23757:1;23743:16;;:2;:16;;;23735:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23964:6;:12;23971:4;23964:12;;;;;;;;;;;;;;;;;;;;;;;;;23963:13;:28;;;;;23981:6;:10;23988:2;23981:10;;;;;;;;;;;;;;;;;;;;;;;;;23980:11;23963:28;23955:37;;;;;;24005:21;24037:15;24063:14;24095:33;:39;24129:4;24095:39;;;;;;;;;;;;;;;;;;;;;;;;;24090:142;;24159:14;;;;;;;;;;;24151:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24090:142;24258:1;24248:6;:11;24244:2942;;24276:28;24292:4;24298:2;24302:1;24276:15;:28::i;:::-;24319:7;;;;;24244:2942;24382:8;;;;;;;;;;;24381:9;:39;;;;;24395:19;:25;24415:4;24395:25;;;;;;;;;;;;;;;;;;;;;;;;;24394:26;24381:39;:67;;;;;24425:19;:23;24445:2;24425:23;;;;;;;;;;;;;;;;;;;;;;;;;24424:24;24381:67;24363:2823;;;24475:14;24492:25;:29;24518:2;24492:29;;;;;;;;;;;;;;;;;;;;;;;;;24475:46;;24540:9;24536:1494;;;24586:17;;24570:33;;24632:11;;24622:21;;24671:10;;24662:19;;24706:14;;;;;;;;;;;24702:269;;;24810:13;;24768:28;:39;24797:9;24768:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;24749:15;:74;;24741:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24936:15;24894:28;:39;24923:9;24894:39;;;;;;;;;;;;;;;:57;;;;24702:269;24536:1494;;;25055:16;;25039:32;;25100:10;;25090:20;;25138:9;;25129:18;;25172:14;;;;;;;;;;;25168:598;;;25244:1;25230:11;;:15;;;;:::i;:::-;25215:12;:30;25207:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25309:13;;25294:11;:28;;25286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25416:12;25377:24;:35;25402:9;25377:35;;;;;;;;;;;;;;;;:51;25369:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25540:13;;25498:28;:39;25527:9;25498:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;25479:15;:74;;25471:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;25662:12;25624:24;:35;25649:9;25624:35;;;;;;;;;;;;;;;:50;;;;25735:15;25693:28;:39;25722:9;25693:39;;;;;;;;;;;;;;;:57;;;;25168:598;25786:16;;;;;;;;;;;25782:233;;;25819:32;25854:13;25864:2;25854:9;:13::i;:::-;25819:48;;25927:9;;25917:6;25890:24;:33;;;;:::i;:::-;:46;;25882:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25804:211;25782:233;24536:1494;26046:17;26066:25;26084:6;26066:13;:17;;:25;;;;:::i;:::-;26046:45;;26108:28;26139:24;26157:4;26139:9;:24::i;:::-;26108:55;;26180:12;26219:18;;26195:20;:42;;26180:57;;26258:7;:43;;;;;26270:25;:31;26296:4;26270:31;;;;;;;;;;;;;;;;;;;;;;;;;26269:32;26258:43;26254:325;;;26333:4;26322:8;;:15;;;;;;;;;;;;;;;;;;26371:19;26393:18;;26371:40;;26430:33;26451:11;26430:20;:33::i;:::-;26494:1;26482:9;:13;;;;26527:1;26514:10;:14;;;;26558:5;26547:8;;:16;;;;;;;;;;;;;;;;;;26303:276;26254:325;26595:12;26610:30;26636:3;26610:21;26621:9;26610:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;26595:45;;26655:18;26676:28;26700:3;26676:19;26687:7;26676:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;26655:49;;26730:29;26748:10;26741:4;:17;;;;:::i;:::-;26730:6;:10;;:29;;;;:::i;:::-;26721:38;;26780:9;26776:155;;;26823:20;26838:4;26823:10;;:14;;:20;;;;:::i;:::-;26810:10;:33;;;;26776:155;;;26896:19;26910:4;26896:9;;:13;;:19;;;;:::i;:::-;26884:9;:31;;;;26776:155;26947:42;26963:4;26977;26984;26947:15;:42::i;:::-;27023:1;27010:10;:14;27006:156;;;27045:39;27061:4;27067;;;;;;;;;;;27073:10;27045:15;:39::i;:::-;27118:28;27135:10;27118:12;;:16;;:28;;;;:::i;:::-;27103:12;:43;;;;27006:156;24460:2726;;;;;;24363:2823;27198:33;27214:4;27220:2;27224:6;27198:15;:33::i;:::-;23642:3607;;;23563:3686;;;;:::o;958:190::-;1044:7;1077:1;1072;:6;;1080:12;1064:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1104:9;1120:1;1116;:5;;;;:::i;:::-;1104:17;;1139:1;1132:8;;;958:190;;;;;:::o;22155:188::-;22272:5;22238:25;:31;22264:4;22238:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22329:5;22295:40;;22323:4;22295:40;;;;;;;;;;;;22155:188;;:::o;1552:189::-;1638:7;1670:1;1666;:5;1673:12;1658:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1697:9;1713:1;1709;:5;;;;:::i;:::-;1697:17;;1732:1;1725:8;;;1552:189;;;;;:::o;27745:499::-;27811:21;27849:1;27835:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27811:40;;27880:4;27862;27867:1;27862:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27906:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27896:4;27901:1;27896:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27939:62;27956:4;27971:15;;;;;;;;;;;27989:11;27939:8;:62::i;:::-;28012:15;;;;;;;;;;;:66;;;28093:11;28119:1;28163:4;28190;28210:15;28012:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27800:444;27745:499;:::o;6643:91::-;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:75::-;626:6;659:2;653:9;643:19;;593:75;:::o;674:117::-;783:1;780;773:12;797:117;906:1;903;896:12;920:77;957:7;986:5;975:16;;920:77;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:99::-;1663:6;1697:5;1691:12;1681:22;;1611:99;;;:::o;1716:169::-;1800:11;1834:6;1829:3;1822:19;1874:4;1869:3;1865:14;1850:29;;1716:169;;;;:::o;1891:307::-;1959:1;1969:113;1983:6;1980:1;1977:13;1969:113;;;2068:1;2063:3;2059:11;2053:18;2049:1;2044:3;2040:11;2033:39;2005:2;2002:1;1998:10;1993:15;;1969:113;;;2100:6;2097:1;2094:13;2091:101;;;2180:1;2171:6;2166:3;2162:16;2155:27;2091:101;1940:258;1891:307;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:364::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:52;2608:6;2603:3;2596:4;2589:5;2585:16;2563:52;:::i;:::-;2640:29;2662:6;2640:29;:::i;:::-;2635:3;2631:39;2624:46;;2404:272;2312:364;;;;:::o;2682:313::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2882:9;2876:4;2872:20;2868:1;2857:9;2853:17;2846:47;2910:78;2983:4;2974:6;2910:78;:::i;:::-;2902:86;;2682:313;;;;:::o;3001:122::-;3074:24;3092:5;3074:24;:::i;:::-;3067:5;3064:35;3054:63;;3113:1;3110;3103:12;3054:63;3001:122;:::o;3129:139::-;3175:5;3213:6;3200:20;3191:29;;3229:33;3256:5;3229:33;:::i;:::-;3129:139;;;;:::o;3274:90::-;3308:7;3351:5;3344:13;3337:21;3326:32;;3274:90;;;:::o;3370:116::-;3440:21;3455:5;3440:21;:::i;:::-;3433:5;3430:32;3420:60;;3476:1;3473;3466:12;3420:60;3370:116;:::o;3492:133::-;3535:5;3573:6;3560:20;3551:29;;3589:30;3613:5;3589:30;:::i;:::-;3492:133;;;;:::o;3631:468::-;3696:6;3704;3753:2;3741:9;3732:7;3728:23;3724:32;3721:119;;;3759:79;;:::i;:::-;3721:119;3879:1;3904:53;3949:7;3940:6;3929:9;3925:22;3904:53;:::i;:::-;3894:63;;3850:117;4006:2;4032:50;4074:7;4065:6;4054:9;4050:22;4032:50;:::i;:::-;4022:60;;3977:115;3631:468;;;;;:::o;4105:474::-;4173:6;4181;4230:2;4218:9;4209:7;4205:23;4201:32;4198:119;;;4236:79;;:::i;:::-;4198:119;4356:1;4381:53;4426:7;4417:6;4406:9;4402:22;4381:53;:::i;:::-;4371:63;;4327:117;4483:2;4509:53;4554:7;4545:6;4534:9;4530:22;4509:53;:::i;:::-;4499:63;;4454:118;4105:474;;;;;:::o;4585:109::-;4666:21;4681:5;4666:21;:::i;:::-;4661:3;4654:34;4585:109;;:::o;4700:210::-;4787:4;4825:2;4814:9;4810:18;4802:26;;4838:65;4900:1;4889:9;4885:17;4876:6;4838:65;:::i;:::-;4700:210;;;;:::o;4916:60::-;4944:3;4965:5;4958:12;;4916:60;;;:::o;4982:142::-;5032:9;5065:53;5083:34;5092:24;5110:5;5092:24;:::i;:::-;5083:34;:::i;:::-;5065:53;:::i;:::-;5052:66;;4982:142;;;:::o;5130:126::-;5180:9;5213:37;5244:5;5213:37;:::i;:::-;5200:50;;5130:126;;;:::o;5262:153::-;5339:9;5372:37;5403:5;5372:37;:::i;:::-;5359:50;;5262:153;;;:::o;5421:185::-;5535:64;5593:5;5535:64;:::i;:::-;5530:3;5523:77;5421:185;;:::o;5612:276::-;5732:4;5770:2;5759:9;5755:18;5747:26;;5783:98;5878:1;5867:9;5863:17;5854:6;5783:98;:::i;:::-;5612:276;;;;:::o;5894:118::-;5981:24;5999:5;5981:24;:::i;:::-;5976:3;5969:37;5894:118;;:::o;6018:222::-;6111:4;6149:2;6138:9;6134:18;6126:26;;6162:71;6230:1;6219:9;6215:17;6206:6;6162:71;:::i;:::-;6018:222;;;;:::o;6246:329::-;6305:6;6354:2;6342:9;6333:7;6329:23;6325:32;6322:119;;;6360:79;;:::i;:::-;6322:119;6480:1;6505:53;6550:7;6541:6;6530:9;6526:22;6505:53;:::i;:::-;6495:63;;6451:117;6246:329;;;;:::o;6581:117::-;6690:1;6687;6680:12;6704:180;6752:77;6749:1;6742:88;6849:4;6846:1;6839:15;6873:4;6870:1;6863:15;6890:281;6973:27;6995:4;6973:27;:::i;:::-;6965:6;6961:40;7103:6;7091:10;7088:22;7067:18;7055:10;7052:34;7049:62;7046:88;;;7114:18;;:::i;:::-;7046:88;7154:10;7150:2;7143:22;6933:238;6890:281;;:::o;7177:129::-;7211:6;7238:20;;:::i;:::-;7228:30;;7267:33;7295:4;7287:6;7267:33;:::i;:::-;7177:129;;;:::o;7312:311::-;7389:4;7479:18;7471:6;7468:30;7465:56;;;7501:18;;:::i;:::-;7465:56;7551:4;7543:6;7539:17;7531:25;;7611:4;7605;7601:15;7593:23;;7312:311;;;:::o;7629:117::-;7738:1;7735;7728:12;7769:710;7865:5;7890:81;7906:64;7963:6;7906:64;:::i;:::-;7890:81;:::i;:::-;7881:90;;7991:5;8020:6;8013:5;8006:21;8054:4;8047:5;8043:16;8036:23;;8107:4;8099:6;8095:17;8087:6;8083:30;8136:3;8128:6;8125:15;8122:122;;;8155:79;;:::i;:::-;8122:122;8270:6;8253:220;8287:6;8282:3;8279:15;8253:220;;;8362:3;8391:37;8424:3;8412:10;8391:37;:::i;:::-;8386:3;8379:50;8458:4;8453:3;8449:14;8442:21;;8329:144;8313:4;8308:3;8304:14;8297:21;;8253:220;;;8257:21;7871:608;;7769:710;;;;;:::o;8502:370::-;8573:5;8622:3;8615:4;8607:6;8603:17;8599:27;8589:122;;8630:79;;:::i;:::-;8589:122;8747:6;8734:20;8772:94;8862:3;8854:6;8847:4;8839:6;8835:17;8772:94;:::i;:::-;8763:103;;8579:293;8502:370;;;;:::o;8878:311::-;8955:4;9045:18;9037:6;9034:30;9031:56;;;9067:18;;:::i;:::-;9031:56;9117:4;9109:6;9105:17;9097:25;;9177:4;9171;9167:15;9159:23;;8878:311;;;:::o;9212:710::-;9308:5;9333:81;9349:64;9406:6;9349:64;:::i;:::-;9333:81;:::i;:::-;9324:90;;9434:5;9463:6;9456:5;9449:21;9497:4;9490:5;9486:16;9479:23;;9550:4;9542:6;9538:17;9530:6;9526:30;9579:3;9571:6;9568:15;9565:122;;;9598:79;;:::i;:::-;9565:122;9713:6;9696:220;9730:6;9725:3;9722:15;9696:220;;;9805:3;9834:37;9867:3;9855:10;9834:37;:::i;:::-;9829:3;9822:50;9901:4;9896:3;9892:14;9885:21;;9772:144;9756:4;9751:3;9747:14;9740:21;;9696:220;;;9700:21;9314:608;;9212:710;;;;;:::o;9945:370::-;10016:5;10065:3;10058:4;10050:6;10046:17;10042:27;10032:122;;10073:79;;:::i;:::-;10032:122;10190:6;10177:20;10215:94;10305:3;10297:6;10290:4;10282:6;10278:17;10215:94;:::i;:::-;10206:103;;10022:293;9945:370;;;;:::o;10321:894::-;10439:6;10447;10496:2;10484:9;10475:7;10471:23;10467:32;10464:119;;;10502:79;;:::i;:::-;10464:119;10650:1;10639:9;10635:17;10622:31;10680:18;10672:6;10669:30;10666:117;;;10702:79;;:::i;:::-;10666:117;10807:78;10877:7;10868:6;10857:9;10853:22;10807:78;:::i;:::-;10797:88;;10593:302;10962:2;10951:9;10947:18;10934:32;10993:18;10985:6;10982:30;10979:117;;;11015:79;;:::i;:::-;10979:117;11120:78;11190:7;11181:6;11170:9;11166:22;11120:78;:::i;:::-;11110:88;;10905:303;10321:894;;;;;:::o;11221:619::-;11298:6;11306;11314;11363:2;11351:9;11342:7;11338:23;11334:32;11331:119;;;11369:79;;:::i;:::-;11331:119;11489:1;11514:53;11559:7;11550:6;11539:9;11535:22;11514:53;:::i;:::-;11504:63;;11460:117;11616:2;11642:53;11687:7;11678:6;11667:9;11663:22;11642:53;:::i;:::-;11632:63;;11587:118;11744:2;11770:53;11815:7;11806:6;11795:9;11791:22;11770:53;:::i;:::-;11760:63;;11715:118;11221:619;;;;;:::o;11846:86::-;11881:7;11921:4;11914:5;11910:16;11899:27;;11846:86;;;:::o;11938:112::-;12021:22;12037:5;12021:22;:::i;:::-;12016:3;12009:35;11938:112;;:::o;12056:214::-;12145:4;12183:2;12172:9;12168:18;12160:26;;12196:67;12260:1;12249:9;12245:17;12236:6;12196:67;:::i;:::-;12056:214;;;;:::o;12276:323::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12478:114;12276:323;;;;:::o;12605:104::-;12650:7;12679:24;12697:5;12679:24;:::i;:::-;12668:35;;12605:104;;;:::o;12715:142::-;12818:32;12844:5;12818:32;:::i;:::-;12813:3;12806:45;12715:142;;:::o;12863:254::-;12972:4;13010:2;12999:9;12995:18;12987:26;;13023:87;13107:1;13096:9;13092:17;13083:6;13023:87;:::i;:::-;12863:254;;;;:::o;13123:1057::-;13227:6;13235;13243;13251;13259;13267;13316:3;13304:9;13295:7;13291:23;13287:33;13284:120;;;13323:79;;:::i;:::-;13284:120;13443:1;13468:53;13513:7;13504:6;13493:9;13489:22;13468:53;:::i;:::-;13458:63;;13414:117;13570:2;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13541:118;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13826:2;13852:53;13897:7;13888:6;13877:9;13873:22;13852:53;:::i;:::-;13842:63;;13797:118;13954:3;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13925:119;14083:3;14110:53;14155:7;14146:6;14135:9;14131:22;14110:53;:::i;:::-;14100:63;;14054:119;13123:1057;;;;;;;;:::o;14186:474::-;14254:6;14262;14311:2;14299:9;14290:7;14286:23;14282:32;14279:119;;;14317:79;;:::i;:::-;14279:119;14437:1;14462:53;14507:7;14498:6;14487:9;14483:22;14462:53;:::i;:::-;14452:63;;14408:117;14564:2;14590:53;14635:7;14626:6;14615:9;14611:22;14590:53;:::i;:::-;14580:63;;14535:118;14186:474;;;;;:::o;14666:182::-;14806:34;14802:1;14794:6;14790:14;14783:58;14666:182;:::o;14854:366::-;14996:3;15017:67;15081:2;15076:3;15017:67;:::i;:::-;15010:74;;15093:93;15182:3;15093:93;:::i;:::-;15211:2;15206:3;15202:12;15195:19;;14854:366;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15226:419;;;:::o;15651:180::-;15699:77;15696:1;15689:88;15796:4;15793:1;15786:15;15820:4;15817:1;15810:15;15837:348;15877:7;15900:20;15918:1;15900:20;:::i;:::-;15895:25;;15934:20;15952:1;15934:20;:::i;:::-;15929:25;;16122:1;16054:66;16050:74;16047:1;16044:81;16039:1;16032:9;16025:17;16021:105;16018:131;;;16129:18;;:::i;:::-;16018:131;16177:1;16174;16170:9;16159:20;;15837:348;;;;:::o;16191:180::-;16239:77;16236:1;16229:88;16336:4;16333:1;16326:15;16360:4;16357:1;16350:15;16377:320;16421:6;16458:1;16452:4;16448:12;16438:22;;16505:1;16499:4;16495:12;16526:18;16516:81;;16582:4;16574:6;16570:17;16560:27;;16516:81;16644:2;16636:6;16633:14;16613:18;16610:38;16607:84;;16663:18;;:::i;:::-;16607:84;16428:269;16377:320;;;:::o;16703:180::-;16843:32;16839:1;16831:6;16827:14;16820:56;16703:180;:::o;16889:366::-;17031:3;17052:67;17116:2;17111:3;17052:67;:::i;:::-;17045:74;;17128:93;17217:3;17128:93;:::i;:::-;17246:2;17241:3;17237:12;17230:19;;16889:366;;;:::o;17261:419::-;17427:4;17465:2;17454:9;17450:18;17442:26;;17514:9;17508:4;17504:20;17500:1;17489:9;17485:17;17478:47;17542:131;17668:4;17542:131;:::i;:::-;17534:139;;17261:419;;;:::o;17686:221::-;17826:34;17822:1;17814:6;17810:14;17803:58;17895:4;17890:2;17882:6;17878:15;17871:29;17686:221;:::o;17913:366::-;18055:3;18076:67;18140:2;18135:3;18076:67;:::i;:::-;18069:74;;18152:93;18241:3;18152:93;:::i;:::-;18270:2;18265:3;18261:12;18254:19;;17913:366;;;:::o;18285:419::-;18451:4;18489:2;18478:9;18474:18;18466:26;;18538:9;18532:4;18528:20;18524:1;18513:9;18509:17;18502:47;18566:131;18692:4;18566:131;:::i;:::-;18558:139;;18285:419;;;:::o;18710:180::-;18758:77;18755:1;18748:88;18855:4;18852:1;18845:15;18879:4;18876:1;18869:15;18896:233;18935:3;18958:24;18976:5;18958:24;:::i;:::-;18949:33;;19004:66;18997:5;18994:77;18991:103;;19074:18;;:::i;:::-;18991:103;19121:1;19114:5;19110:13;19103:20;;18896:233;;;:::o;19135:151::-;19275:3;19271:1;19263:6;19259:14;19252:27;19135:151;:::o;19292:365::-;19434:3;19455:66;19519:1;19514:3;19455:66;:::i;:::-;19448:73;;19530:93;19619:3;19530:93;:::i;:::-;19648:2;19643:3;19639:12;19632:19;;19292:365;;;:::o;19663:419::-;19829:4;19867:2;19856:9;19852:18;19844:26;;19916:9;19910:4;19906:20;19902:1;19891:9;19887:17;19880:47;19944:131;20070:4;19944:131;:::i;:::-;19936:139;;19663:419;;;:::o;20088:775::-;20321:4;20359:3;20348:9;20344:19;20336:27;;20373:71;20441:1;20430:9;20426:17;20417:6;20373:71;:::i;:::-;20454:72;20522:2;20511:9;20507:18;20498:6;20454:72;:::i;:::-;20536;20604:2;20593:9;20589:18;20580:6;20536:72;:::i;:::-;20618;20686:2;20675:9;20671:18;20662:6;20618:72;:::i;:::-;20700:73;20768:3;20757:9;20753:19;20744:6;20700:73;:::i;:::-;20783;20851:3;20840:9;20836:19;20827:6;20783:73;:::i;:::-;20088:775;;;;;;;;;:::o;20869:225::-;21009:34;21005:1;20997:6;20993:14;20986:58;21078:8;21073:2;21065:6;21061:15;21054:33;20869:225;:::o;21100:366::-;21242:3;21263:67;21327:2;21322:3;21263:67;:::i;:::-;21256:74;;21339:93;21428:3;21339:93;:::i;:::-;21457:2;21452:3;21448:12;21441:19;;21100:366;;;:::o;21472:419::-;21638:4;21676:2;21665:9;21661:18;21653:26;;21725:9;21719:4;21715:20;21711:1;21700:9;21696:17;21689:47;21753:131;21879:4;21753:131;:::i;:::-;21745:139;;21472:419;;;:::o;21897:225::-;22037:34;22033:1;22025:6;22021:14;22014:58;22106:8;22101:2;22093:6;22089:15;22082:33;21897:225;:::o;22128:366::-;22270:3;22291:67;22355:2;22350:3;22291:67;:::i;:::-;22284:74;;22367:93;22456:3;22367:93;:::i;:::-;22485:2;22480:3;22476:12;22469:19;;22128:366;;;:::o;22500:419::-;22666:4;22704:2;22693:9;22689:18;22681:26;;22753:9;22747:4;22743:20;22739:1;22728:9;22724:17;22717:47;22781:131;22907:4;22781:131;:::i;:::-;22773:139;;22500:419;;;:::o;22925:180::-;22973:77;22970:1;22963:88;23070:4;23067:1;23060:15;23094:4;23091:1;23084:15;23111:185;23151:1;23168:20;23186:1;23168:20;:::i;:::-;23163:25;;23202:20;23220:1;23202:20;:::i;:::-;23197:25;;23241:1;23231:35;;23246:18;;:::i;:::-;23231:35;23288:1;23285;23281:9;23276:14;;23111:185;;;;:::o;23302:227::-;23442:34;23438:1;23430:6;23426:14;23419:58;23511:10;23506:2;23498:6;23494:15;23487:35;23302:227;:::o;23535:366::-;23677:3;23698:67;23762:2;23757:3;23698:67;:::i;:::-;23691:74;;23774:93;23863:3;23774:93;:::i;:::-;23892:2;23887:3;23883:12;23876:19;;23535:366;;;:::o;23907:419::-;24073:4;24111:2;24100:9;24096:18;24088:26;;24160:9;24154:4;24150:20;24146:1;24135:9;24131:17;24124:47;24188:131;24314:4;24188:131;:::i;:::-;24180:139;;23907:419;;;:::o;24332:305::-;24372:3;24391:20;24409:1;24391:20;:::i;:::-;24386:25;;24425:20;24443:1;24425:20;:::i;:::-;24420:25;;24579:1;24511:66;24507:74;24504:1;24501:81;24498:107;;;24585:18;;:::i;:::-;24498:107;24629:1;24626;24622:9;24615:16;;24332:305;;;;:::o;24643:177::-;24783:29;24779:1;24771:6;24767:14;24760:53;24643:177;:::o;24826:366::-;24968:3;24989:67;25053:2;25048:3;24989:67;:::i;:::-;24982:74;;25065:93;25154:3;25065:93;:::i;:::-;25183:2;25178:3;25174:12;25167:19;;24826:366;;;:::o;25198:419::-;25364:4;25402:2;25391:9;25387:18;25379:26;;25451:9;25445:4;25441:20;25437:1;25426:9;25422:17;25415:47;25479:131;25605:4;25479:131;:::i;:::-;25471:139;;25198:419;;;:::o;25623:220::-;25763:34;25759:1;25751:6;25747:14;25740:58;25832:3;25827:2;25819:6;25815:15;25808:28;25623:220;:::o;25849:366::-;25991:3;26012:67;26076:2;26071:3;26012:67;:::i;:::-;26005:74;;26088:93;26177:3;26088:93;:::i;:::-;26206:2;26201:3;26197:12;26190:19;;25849:366;;;:::o;26221:419::-;26387:4;26425:2;26414:9;26410:18;26402:26;;26474:9;26468:4;26464:20;26460:1;26449:9;26445:17;26438:47;26502:131;26628:4;26502:131;:::i;:::-;26494:139;;26221:419;;;:::o;26646:147::-;26747:11;26784:3;26769:18;;26646:147;;;;:::o;26799:114::-;;:::o;26919:398::-;27078:3;27099:83;27180:1;27175:3;27099:83;:::i;:::-;27092:90;;27191:93;27280:3;27191:93;:::i;:::-;27309:1;27304:3;27300:11;27293:18;;26919:398;;;:::o;27323:379::-;27507:3;27529:147;27672:3;27529:147;:::i;:::-;27522:154;;27693:3;27686:10;;27323:379;;;:::o;27708:320::-;27823:4;27861:2;27850:9;27846:18;27838:26;;27874:71;27942:1;27931:9;27927:17;27918:6;27874:71;:::i;:::-;27955:66;28017:2;28006:9;28002:18;27993:6;27955:66;:::i;:::-;27708:320;;;;;:::o;28034:223::-;28174:34;28170:1;28162:6;28158:14;28151:58;28243:6;28238:2;28230:6;28226:15;28219:31;28034:223;:::o;28263:366::-;28405:3;28426:67;28490:2;28485:3;28426:67;:::i;:::-;28419:74;;28502:93;28591:3;28502:93;:::i;:::-;28620:2;28615:3;28611:12;28604:19;;28263:366;;;:::o;28635:419::-;28801:4;28839:2;28828:9;28824:18;28816:26;;28888:9;28882:4;28878:20;28874:1;28863:9;28859:17;28852:47;28916:131;29042:4;28916:131;:::i;:::-;28908:139;;28635:419;;;:::o;29060:221::-;29200:34;29196:1;29188:6;29184:14;29177:58;29269:4;29264:2;29256:6;29252:15;29245:29;29060:221;:::o;29287:366::-;29429:3;29450:67;29514:2;29509:3;29450:67;:::i;:::-;29443:74;;29526:93;29615:3;29526:93;:::i;:::-;29644:2;29639:3;29635:12;29628:19;;29287:366;;;:::o;29659:419::-;29825:4;29863:2;29852:9;29848:18;29840:26;;29912:9;29906:4;29902:20;29898:1;29887:9;29883:17;29876:47;29940:131;30066:4;29940:131;:::i;:::-;29932:139;;29659:419;;;:::o;30084:224::-;30224:34;30220:1;30212:6;30208:14;30201:58;30293:7;30288:2;30280:6;30276:15;30269:32;30084:224;:::o;30314:366::-;30456:3;30477:67;30541:2;30536:3;30477:67;:::i;:::-;30470:74;;30553:93;30642:3;30553:93;:::i;:::-;30671:2;30666:3;30662:12;30655:19;;30314:366;;;:::o;30686:419::-;30852:4;30890:2;30879:9;30875:18;30867:26;;30939:9;30933:4;30929:20;30925:1;30914:9;30910:17;30903:47;30967:131;31093:4;30967:131;:::i;:::-;30959:139;;30686:419;;;:::o;31111:222::-;31251:34;31247:1;31239:6;31235:14;31228:58;31320:5;31315:2;31307:6;31303:15;31296:30;31111:222;:::o;31339:366::-;31481:3;31502:67;31566:2;31561:3;31502:67;:::i;:::-;31495:74;;31578:93;31667:3;31578:93;:::i;:::-;31696:2;31691:3;31687:12;31680:19;;31339:366;;;:::o;31711:419::-;31877:4;31915:2;31904:9;31900:18;31892:26;;31964:9;31958:4;31954:20;31950:1;31939:9;31935:17;31928:47;31992:131;32118:4;31992:131;:::i;:::-;31984:139;;31711:419;;;:::o;32136:225::-;32276:34;32272:1;32264:6;32260:14;32253:58;32345:8;32340:2;32332:6;32328:15;32321:33;32136:225;:::o;32367:366::-;32509:3;32530:67;32594:2;32589:3;32530:67;:::i;:::-;32523:74;;32606:93;32695:3;32606:93;:::i;:::-;32724:2;32719:3;32715:12;32708:19;;32367:366;;;:::o;32739:419::-;32905:4;32943:2;32932:9;32928:18;32920:26;;32992:9;32986:4;32982:20;32978:1;32967:9;32963:17;32956:47;33020:131;33146:4;33020:131;:::i;:::-;33012:139;;32739:419;;;:::o;33164:223::-;33304:34;33300:1;33292:6;33288:14;33281:58;33373:6;33368:2;33360:6;33356:15;33349:31;33164:223;:::o;33393:366::-;33535:3;33556:67;33620:2;33615:3;33556:67;:::i;:::-;33549:74;;33632:93;33721:3;33632:93;:::i;:::-;33750:2;33745:3;33741:12;33734:19;;33393:366;;;:::o;33765:419::-;33931:4;33969:2;33958:9;33954:18;33946:26;;34018:9;34012:4;34008:20;34004:1;33993:9;33989:17;33982:47;34046:131;34172:4;34046:131;:::i;:::-;34038:139;;33765:419;;;:::o;34190:182::-;34330:34;34326:1;34318:6;34314:14;34307:58;34190:182;:::o;34378:366::-;34520:3;34541:67;34605:2;34600:3;34541:67;:::i;:::-;34534:74;;34617:93;34706:3;34617:93;:::i;:::-;34735:2;34730:3;34726:12;34719:19;;34378:366;;;:::o;34750:419::-;34916:4;34954:2;34943:9;34939:18;34931:26;;35003:9;34997:4;34993:20;34989:1;34978:9;34974:17;34967:47;35031:131;35157:4;35031:131;:::i;:::-;35023:139;;34750:419;;;:::o;35175:172::-;35315:24;35311:1;35303:6;35299:14;35292:48;35175:172;:::o;35353:366::-;35495:3;35516:67;35580:2;35575:3;35516:67;:::i;:::-;35509:74;;35592:93;35681:3;35592:93;:::i;:::-;35710:2;35705:3;35701:12;35694:19;;35353:366;;;:::o;35725:419::-;35891:4;35929:2;35918:9;35914:18;35906:26;;35978:9;35972:4;35968:20;35964:1;35953:9;35949:17;35942:47;36006:131;36132:4;36006:131;:::i;:::-;35998:139;;35725:419;;;:::o;36150:168::-;36290:20;36286:1;36278:6;36274:14;36267:44;36150:168;:::o;36324:366::-;36466:3;36487:67;36551:2;36546:3;36487:67;:::i;:::-;36480:74;;36563:93;36652:3;36563:93;:::i;:::-;36681:2;36676:3;36672:12;36665:19;;36324:366;;;:::o;36696:419::-;36862:4;36900:2;36889:9;36885:18;36877:26;;36949:9;36943:4;36939:20;36935:1;36924:9;36920:17;36913:47;36977:131;37103:4;36977:131;:::i;:::-;36969:139;;36696:419;;;:::o;37121:174::-;37261:26;37257:1;37249:6;37245:14;37238:50;37121:174;:::o;37301:366::-;37443:3;37464:67;37528:2;37523:3;37464:67;:::i;:::-;37457:74;;37540:93;37629:3;37540:93;:::i;:::-;37658:2;37653:3;37649:12;37642:19;;37301:366;;;:::o;37673:419::-;37839:4;37877:2;37866:9;37862:18;37854:26;;37926:9;37920:4;37916:20;37912:1;37901:9;37897:17;37890:47;37954:131;38080:4;37954:131;:::i;:::-;37946:139;;37673:419;;;:::o;38098:170::-;38238:22;38234:1;38226:6;38222:14;38215:46;38098:170;:::o;38274:366::-;38416:3;38437:67;38501:2;38496:3;38437:67;:::i;:::-;38430:74;;38513:93;38602:3;38513:93;:::i;:::-;38631:2;38626:3;38622:12;38615:19;;38274:366;;;:::o;38646:419::-;38812:4;38850:2;38839:9;38835:18;38827:26;;38899:9;38893:4;38889:20;38885:1;38874:9;38870:17;38863:47;38927:131;39053:4;38927:131;:::i;:::-;38919:139;;38646:419;;;:::o;39071:223::-;39211:34;39207:1;39199:6;39195:14;39188:58;39280:6;39275:2;39267:6;39263:15;39256:31;39071:223;:::o;39300:366::-;39442:3;39463:67;39527:2;39522:3;39463:67;:::i;:::-;39456:74;;39539:93;39628:3;39539:93;:::i;:::-;39657:2;39652:3;39648:12;39641:19;;39300:366;;;:::o;39672:419::-;39838:4;39876:2;39865:9;39861:18;39853:26;;39925:9;39919:4;39915:20;39911:1;39900:9;39896:17;39889:47;39953:131;40079:4;39953:131;:::i;:::-;39945:139;;39672:419;;;:::o;40097:191::-;40137:4;40157:20;40175:1;40157:20;:::i;:::-;40152:25;;40191:20;40209:1;40191:20;:::i;:::-;40186:25;;40230:1;40227;40224:8;40221:34;;;40235:18;;:::i;:::-;40221:34;40280:1;40277;40273:9;40265:17;;40097:191;;;;:::o;40294:143::-;40351:5;40382:6;40376:13;40367:22;;40398:33;40425:5;40398:33;:::i;:::-;40294:143;;;;:::o;40443:351::-;40513:6;40562:2;40550:9;40541:7;40537:23;40533:32;40530:119;;;40568:79;;:::i;:::-;40530:119;40688:1;40713:64;40769:7;40760:6;40749:9;40745:22;40713:64;:::i;:::-;40703:74;;40659:128;40443:351;;;;:::o;40800:85::-;40845:7;40874:5;40863:16;;40800:85;;;:::o;40891:158::-;40949:9;40982:61;41000:42;41009:32;41035:5;41009:32;:::i;:::-;41000:42;:::i;:::-;40982:61;:::i;:::-;40969:74;;40891:158;;;:::o;41055:147::-;41150:45;41189:5;41150:45;:::i;:::-;41145:3;41138:58;41055:147;;:::o;41208:114::-;41275:6;41309:5;41303:12;41293:22;;41208:114;;;:::o;41328:184::-;41427:11;41461:6;41456:3;41449:19;41501:4;41496:3;41492:14;41477:29;;41328:184;;;;:::o;41518:132::-;41585:4;41608:3;41600:11;;41638:4;41633:3;41629:14;41621:22;;41518:132;;;:::o;41656:108::-;41733:24;41751:5;41733:24;:::i;:::-;41728:3;41721:37;41656:108;;:::o;41770:179::-;41839:10;41860:46;41902:3;41894:6;41860:46;:::i;:::-;41938:4;41933:3;41929:14;41915:28;;41770:179;;;;:::o;41955:113::-;42025:4;42057;42052:3;42048:14;42040:22;;41955:113;;;:::o;42104:732::-;42223:3;42252:54;42300:5;42252:54;:::i;:::-;42322:86;42401:6;42396:3;42322:86;:::i;:::-;42315:93;;42432:56;42482:5;42432:56;:::i;:::-;42511:7;42542:1;42527:284;42552:6;42549:1;42546:13;42527:284;;;42628:6;42622:13;42655:63;42714:3;42699:13;42655:63;:::i;:::-;42648:70;;42741:60;42794:6;42741:60;:::i;:::-;42731:70;;42587:224;42574:1;42571;42567:9;42562:14;;42527:284;;;42531:14;42827:3;42820:10;;42228:608;;;42104:732;;;;:::o;42842:831::-;43105:4;43143:3;43132:9;43128:19;43120:27;;43157:71;43225:1;43214:9;43210:17;43201:6;43157:71;:::i;:::-;43238:80;43314:2;43303:9;43299:18;43290:6;43238:80;:::i;:::-;43365:9;43359:4;43355:20;43350:2;43339:9;43335:18;43328:48;43393:108;43496:4;43487:6;43393:108;:::i;:::-;43385:116;;43511:72;43579:2;43568:9;43564:18;43555:6;43511:72;:::i;:::-;43593:73;43661:3;43650:9;43646:19;43637:6;43593:73;:::i;:::-;42842:831;;;;;;;;:::o
Swarm Source
ipfs://32990e08939b0c933ea411a7928e65e67e628dce1bb9527ac7898f6b2e5baa9d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,826.09 | 0.000000000000000006 | <$0.000001 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.