Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
20,000,000 BBIT
Holders
211
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,505.97293593 BBITValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ZarelaSmartContract
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma experimental ABIEncoderV2; pragma solidity >=0.6.0 <0.8.0; import "./ERC20.sol"; import "./ERC20Burnable.sol"; /// @author Zarela Team /// @title Decentralized marketplace platform for peer-to-peer transferring of Biosignals contract ZarelaSmartContract is ERC20 , ERC20Burnable { // token distribution 17m reward pool and 3m other(2m team , 1m fundraising) constructor() { _mint(msg.sender , 3000000000000000); _mint(address(this) , 17000000000000000); } event orderRegistered( address owner, uint orderId ); event contributed( address contributor, address labrotory, uint orderId, address mage, uint difficulty ); event orderFinished( uint orderId ); event signalsApproved( uint orderId, uint confirmCount ); uint public maxUserDailyReward = 50000000000 ; // Max User Daily Reward As BIOBIT + 50 + _decimals uint public totalTokenReleaseDaily = 14400000000000 ; // Total Tokens That Release From Zarela Reward Pool Per Day address payable[] public paymentQueue; // All addresses pending reward (angels or laboratory) uint public halvingCounter; // Halving Counter uint public countDown24Hours = block.timestamp; // Starting 24 hours Timer By Block Timestamp (From Deploy Zarela) uint public dayCounterOf20Months; // Day Counter Of 20 Months (590 days = 20 months ) uint public indexCounter; // Index Of Entered Contributors Array uint public lastRewardableIndex; // Index Of Last Person Who Should Get Reward Until Yesterday uint public indexOfAddressPendingReward; // Index Of allAngelsAddresses Array Pending For Reward address addressOfPendingReward; // Address Of allAngelsAddresses Array Pending For Reward uint public paymentDay; // Payment Day uint public todayContributionsCount; // Count Of Today Contributions uint[] public dailyContributionsCount; // Count Of Daily Contributions uint public bankBalance; // The Amount of Tokens Remained and Can Add to Rewarding for Next Day uint[] public remainedDailyTokens; // Daily Token Remained uint public indexOfZeroDailyTokens; // Index Of remainedDailyTokens Array That Before Day There is No Token uint public dayOfTokenBurning; // The Day That Token Will be Burned uint public zarelaDayCounter; // The Day Count Of Zarela Age uint[] public burnedTokensPerDay; // Array Of Burned Tokens Per Day uint[] public dailyRewardPerContributor; // Array Of Daily Reward Per Countributor uint[] public dailyBalance; // Array Of Daily Balance uint public zarelaDifficultyOfDay; // The Difficulty Of Zarela Network Per Day bool public isZarelaEnd; // is Zarela End? struct Order { uint orderId; // Order ID string orderTitle; // Order Title address orderOwner; // Order Owner uint tokenPerContributor; // Allcoated Biobit Per Contributor uint tokenPerLaboratory; // Allcoated Biobit Per Laboratory uint totalContributors; // Total Contributors string zPaper; // zPaper string description; // Description Of Order uint totalContributorsRemain; // Total Contributors Remain uint countOfRegisteredContributions; // Count of Registered Contributions uint registrationTime; // Order Registration Time string accessPublicKey; // Encryption Owner Public Key } struct Category { string zarelaCategory; // Zarela Category (Hashtags) uint businessCategory; // Business Category } struct OrderData { uint orderId; // Order ID uint[] dataRegistrationTime; // Data Registration Time string[] ipfsHash; // IPFS Hash Of Data (Stored In IPFS) string[] encryptionKey; // IPFS Hash of Encrypted AES Secret Key (Stored In IPFS) address[] contributorAddresses; // Array Of Contributors addresses address[] laboratoryAddresses; // Array Of laboratory addresses bool[] whoGainedReward; // Array Of addresses that Gained the Reward (true means angel and false means laboratory) bool[] isConfirmedByMage; // is Confirmed By Mage? uint[] zarelaDay; // in Which Zarela Day This Data is Imported } struct User { uint tokenGainedFromSC; // Total Tokens That User Gained From Smart Contract (Reward Pool) uint tokenGainedFromMages; // Total Tokens That User Gained From Mages uint[] angelContributedOrders; // Array Of Orderids That User is Contributed as Angel uint[] laboratoryContributedOrders; // Array Of Orderids That User is Contributed as Hub uint[] ownedOrders; // Array Of Order ids That User is Owned } mapping(uint => OrderData) public orderDataMap; mapping(address => User) public userMap; Order[] public orders; Category[]public Categories; modifier onlyRequester(uint _Order_Number) { Order storage myorder = orders[_Order_Number]; require(myorder.orderOwner == msg.sender, "You Are Not Owner"); _; } modifier checkOrderId(uint _Order_Number) { Order storage myorder = orders[_Order_Number]; require(_Order_Number == myorder.orderId , "This Order Number Is Not Correct"); _; } modifier notNull(address _address) { require(address(0) != _address, "Send To The Zero Address"); _; } /// @dev make any kind of request that may be answered with a file.This function is only called by Mage function submitNewRequest( string memory _orderTitle, string memory _description, string memory _zPaper, uint _tokenPerContributor, uint _tokenPerLaboratory, uint _totalContributors, string memory _zarelaCategory, uint _businessCategory, string memory _accessPublicKey ) public { require(_balances[msg.sender] >= ((_tokenPerContributor + _tokenPerLaboratory) * _totalContributors), "Your Token Is Not Enough"); ERC20.transfer(address(this),((_tokenPerContributor + _tokenPerLaboratory) * _totalContributors)); uint orderId = orders.length; orders.push( Order( orderId, _orderTitle, msg.sender, _tokenPerContributor, _tokenPerLaboratory, _totalContributors, _zPaper, _description, _totalContributors, 0, block.timestamp, _accessPublicKey ) ); userMap[msg.sender].ownedOrders.push(orderId); Categories.push( Category( _zarelaCategory, _businessCategory ) ); emit orderRegistered(msg.sender, orderId); } /// @dev Send the angel signal to mage and save then signal IPFS Hash in the block.Also, due to the difficulty of the Zarela network, /// each user pays the Reward to a number of people in the non-Reward queue function contribute( uint _orderId, address payable _contributorAddress, address payable _laboratoryAddress, bool _isContributorGainReward, address _orderOwner, string memory _ipfsHash, string memory _encryptionKey ) public checkOrderId (_orderId) notNull(_orderOwner) notNull(_contributorAddress) notNull(_laboratoryAddress) { require(orders[_orderId].totalContributorsRemain != 0 ,"Order Was Finished"); require(_orderOwner == orders[_orderId].orderOwner , "Requester Address Was Not Entered Correctly"); require(msg.sender == _laboratoryAddress || msg.sender == _contributorAddress , "You Are Not Angel Or Laboratory"); if (isZarelaEnd != true) { address payable rewardRecipientAddress; if (_isContributorGainReward == true) { rewardRecipientAddress = _contributorAddress; orderDataMap[_orderId].whoGainedReward.push(true); } else { rewardRecipientAddress = _laboratoryAddress; orderDataMap[_orderId].whoGainedReward.push(false); } if (block.timestamp < countDown24Hours + 24 hours) { paymentQueue.push(rewardRecipientAddress); todayContributionsCount++; } else { paymentQueue.push(address(0)); paymentQueue.push(rewardRecipientAddress); dailyContributionsCount.push(todayContributionsCount); if (dayCounterOf20Months >= 589) { //20 month maxUserDailyReward = maxUserDailyReward / 2 ; totalTokenReleaseDaily = totalTokenReleaseDaily / 2 ; halvingCounter++; dayCounterOf20Months = 0 ; } if (_balances[address(this)] >= totalTokenReleaseDaily) { _balances[address(this)] = _balances[address(this)] - totalTokenReleaseDaily; bankBalance+=(totalTokenReleaseDaily); } else if (bankBalance > 0 && _balances[address(this)] < totalTokenReleaseDaily) { bankBalance+= totalTokenReleaseDaily; totalTokenReleaseDaily = 0; } else { totalTokenReleaseDaily = 0; isZarelaEnd = true; } remainedDailyTokens.push(totalTokenReleaseDaily); if (zarelaDayCounter >= 44) { // 45 days bankBalance = bankBalance - (remainedDailyTokens[dayOfTokenBurning]); burnedTokensPerDay.push(remainedDailyTokens[dayOfTokenBurning]); remainedDailyTokens[dayOfTokenBurning] = 0; dayOfTokenBurning++; } dailyBalance.push(bankBalance); if (maxUserDailyReward * dailyContributionsCount[zarelaDayCounter] >= bankBalance) { dailyBalance[zarelaDayCounter] = bankBalance; dailyRewardPerContributor.push(bankBalance/dailyContributionsCount[zarelaDayCounter]); bankBalance = 0; } else { dailyBalance[zarelaDayCounter] = maxUserDailyReward * dailyContributionsCount[zarelaDayCounter]; dailyRewardPerContributor.push(maxUserDailyReward); bankBalance = bankBalance - (maxUserDailyReward * dailyContributionsCount[zarelaDayCounter]); } uint tempPrice = dailyBalance[zarelaDayCounter]; if (tempPrice >= remainedDailyTokens[zarelaDayCounter]) { tempPrice = tempPrice - (remainedDailyTokens[zarelaDayCounter]); remainedDailyTokens[zarelaDayCounter] = 0; while (tempPrice > 0) { if (tempPrice > remainedDailyTokens[indexOfZeroDailyTokens]) { tempPrice = tempPrice - (remainedDailyTokens[indexOfZeroDailyTokens]); remainedDailyTokens[indexOfZeroDailyTokens] = 0; indexOfZeroDailyTokens++; } else { remainedDailyTokens[indexOfZeroDailyTokens] = remainedDailyTokens[indexOfZeroDailyTokens] - (tempPrice); tempPrice = 0; } } } else { remainedDailyTokens[zarelaDayCounter] = remainedDailyTokens[zarelaDayCounter] - tempPrice; } zarelaDifficultyOfDay = (lastRewardableIndex - indexOfAddressPendingReward) / dailyContributionsCount[zarelaDayCounter]; if ((zarelaDayCounter - paymentDay) >= 7 && (lastRewardableIndex - indexOfAddressPendingReward) >= 384 ) { zarelaDifficultyOfDay = 128; } else if (zarelaDifficultyOfDay < 5) { zarelaDifficultyOfDay = 2**zarelaDifficultyOfDay; } else { zarelaDifficultyOfDay = 32; } todayContributionsCount = 0; zarelaDayCounter++; dayCounterOf20Months++; countDown24Hours = block.timestamp; } if (paymentQueue[indexCounter] == address(0)) { lastRewardableIndex = indexCounter; _reward(); indexCounter+=2; todayContributionsCount++; } else if (lastRewardableIndex != indexOfAddressPendingReward) { _reward(); indexCounter++; } else { indexCounter++; } } orderDataMap[_orderId].orderId = _orderId; orders[_orderId].countOfRegisteredContributions++; orderDataMap[_orderId].ipfsHash.push(_ipfsHash); orderDataMap[_orderId].encryptionKey.push(_encryptionKey); orderDataMap[_orderId].contributorAddresses.push(_contributorAddress); orderDataMap[_orderId].laboratoryAddresses.push(_laboratoryAddress); orderDataMap[_orderId].isConfirmedByMage.push(false); orderDataMap[_orderId].dataRegistrationTime.push(block.timestamp); userMap[_contributorAddress].angelContributedOrders.push(_orderId); userMap[_laboratoryAddress].laboratoryContributedOrders.push(_orderId); orderDataMap[_orderId].zarelaDay.push(zarelaDayCounter); emit contributed(_contributorAddress , _laboratoryAddress ,_orderId ,_orderOwner ,zarelaDifficultyOfDay); } /// @dev Calculate and pay the Reward function _reward() private { uint temporary = indexOfAddressPendingReward; if (zarelaDifficultyOfDay == 128) { for (uint i= temporary; i < temporary + zarelaDifficultyOfDay; i++) { if (i >= lastRewardableIndex) { break; } addressOfPendingReward = paymentQueue[i]; if (addressOfPendingReward == address(0)) { paymentDay++; i++; indexOfAddressPendingReward++; addressOfPendingReward = paymentQueue[i]; } _balances[addressOfPendingReward] = _balances[addressOfPendingReward] + ((dailyRewardPerContributor[paymentDay])); userMap[addressOfPendingReward].tokenGainedFromSC += (dailyRewardPerContributor[paymentDay]); indexOfAddressPendingReward++; } } if ((lastRewardableIndex - temporary) >= 16) { for (uint i = temporary ; i < zarelaDifficultyOfDay + temporary ; i++) { if (i >= lastRewardableIndex) { break; } addressOfPendingReward = paymentQueue[i]; if (addressOfPendingReward == address(0)) { paymentDay++; i++; indexOfAddressPendingReward++; addressOfPendingReward = paymentQueue[i]; } _balances[addressOfPendingReward] = _balances[addressOfPendingReward] + ((dailyRewardPerContributor[paymentDay])); userMap[addressOfPendingReward].tokenGainedFromSC += (dailyRewardPerContributor[paymentDay]); indexOfAddressPendingReward++; } } else if ((lastRewardableIndex - temporary) < 16) { for (uint i = temporary ; i < lastRewardableIndex ; i++) { addressOfPendingReward = paymentQueue[i]; if (addressOfPendingReward == address(0)) { paymentDay++; i++; indexOfAddressPendingReward++; addressOfPendingReward = paymentQueue[i]; } _balances[addressOfPendingReward] = _balances[addressOfPendingReward] + ((dailyRewardPerContributor[paymentDay])); userMap[addressOfPendingReward].tokenGainedFromSC += (dailyRewardPerContributor[paymentDay]); indexOfAddressPendingReward++; } } } /// @dev Confirm the signals sent by angels only by Requester (Mage) of that signal. /// The selection of files is based on their index. function confirmContributor( uint _orderId, uint[]memory _index ) public onlyRequester(_orderId) checkOrderId(_orderId) { Order storage myorder = orders[_orderId]; require(_index.length >= 1,"You Should Select One At Least"); require(_index.length <= myorder.totalContributorsRemain,"The number of entries is more than allowed"); require(myorder.totalContributorsRemain != 0,"Your Order Is Done, And You Sent All of Rewards to Users"); myorder.totalContributorsRemain = myorder.totalContributorsRemain - (_index.length); _balances[address(this)] = _balances[address(this)] - ( (myorder.tokenPerContributor + myorder.tokenPerLaboratory) * _index.length); for (uint i;i < _index.length ; i++) { _balances[orderDataMap[_orderId].contributorAddresses[_index[i]]] = _balances[orderDataMap[_orderId].contributorAddresses[_index[i]]] + (myorder.tokenPerContributor); _balances[orderDataMap[_orderId].laboratoryAddresses[_index[i]]] = _balances[orderDataMap[_orderId].laboratoryAddresses[_index[i]]] + (myorder.tokenPerLaboratory); userMap[orderDataMap[_orderId].contributorAddresses[_index[i]]].tokenGainedFromMages+=(myorder.tokenPerContributor); userMap[orderDataMap[_orderId].laboratoryAddresses[_index[i]]].tokenGainedFromMages+=(myorder.tokenPerLaboratory); orderDataMap[_orderId].isConfirmedByMage[_index[i]] = true; } if (myorder.totalContributorsRemain == 0) { emit orderFinished(_orderId); } emit signalsApproved(_orderId,_index.length); } /// @dev retrieves the value of each the specefic order by `_orderId` /// @return the contributors addresses , the Laboratory addresses , Time to send that signal by the angel , Laboratory or angel gained reward? , Status (true , false) of confirmation , Zarela day sent that signal function getOrderData( uint _orderId ) public checkOrderId (_orderId) view returns ( address[] memory, address[] memory, uint[]memory, bool[]memory, bool[] memory, uint[] memory) { return ( orderDataMap[_orderId].contributorAddresses, orderDataMap[_orderId].laboratoryAddresses, orderDataMap[_orderId].dataRegistrationTime, orderDataMap[_orderId].whoGainedReward, orderDataMap[_orderId].isConfirmedByMage, orderDataMap[_orderId].zarelaDay ); } /// @dev Receive angels' signals by entering the orderId and just order's owner can access. /// @return ipfsHash,encryptionKey function ownerSpecificData( uint _orderId ) public onlyRequester(_orderId) checkOrderId(_orderId) view returns ( string[] memory, string[] memory ) { return (orderDataMap[_orderId].ipfsHash,orderDataMap[_orderId].encryptionKey); } /// @dev Check the orders registered and contributed by the user (angel or mage) who calls the function /// @return _ownedOrders and _contributedOrders function orderResult() public view returns (uint[]memory _ownedOrders, uint[]memory _angelContributedOrders, uint[]memory _laboratoryContributedOrders) { return ( userMap[msg.sender].ownedOrders, userMap[msg.sender].angelContributedOrders, userMap[msg.sender].laboratoryContributedOrders ); } /// @dev Total number of orders registered in Zarela /// @return length of all orders that registered in zarela function orderSize() public view returns (uint){ return orders.length; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./Context.sol"; import "./IERC20.sol"; import "./SafeMath.sol"; contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name = "BioBit"; string private _symbol = "BBIT"; uint8 private _decimals = 9; function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view 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, "ERC20: 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, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: 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), "ERC20: 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./ERC20.sol"; import "./Context.sol"; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); _approve(account, _msgSender(), currentAllowance - amount); _burn(account, amount); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; 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; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"address","name":"contributor","type":"address"},{"indexed":false,"internalType":"address","name":"labrotory","type":"address"},{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"address","name":"mage","type":"address"},{"indexed":false,"internalType":"uint256","name":"difficulty","type":"uint256"}],"name":"contributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"}],"name":"orderFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"}],"name":"orderRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"confirmCount","type":"uint256"}],"name":"signalsApproved","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Categories","outputs":[{"internalType":"string","name":"zarelaCategory","type":"string"},{"internalType":"uint256","name":"businessCategory","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bankBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"burnedTokensPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_orderId","type":"uint256"},{"internalType":"uint256[]","name":"_index","type":"uint256[]"}],"name":"confirmContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_orderId","type":"uint256"},{"internalType":"address payable","name":"_contributorAddress","type":"address"},{"internalType":"address payable","name":"_laboratoryAddress","type":"address"},{"internalType":"bool","name":"_isContributorGainReward","type":"bool"},{"internalType":"address","name":"_orderOwner","type":"address"},{"internalType":"string","name":"_ipfsHash","type":"string"},{"internalType":"string","name":"_encryptionKey","type":"string"}],"name":"contribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countDown24Hours","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyContributionsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyRewardPerContributor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dayCounterOf20Months","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dayOfTokenBurning","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":[{"internalType":"uint256","name":"_orderId","type":"uint256"}],"name":"getOrderData","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bool[]","name":"","type":"bool[]"},{"internalType":"bool[]","name":"","type":"bool[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"indexCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"indexOfAddressPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"indexOfZeroDailyTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isZarelaEnd","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardableIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxUserDailyReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderDataMap","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderResult","outputs":[{"internalType":"uint256[]","name":"_ownedOrders","type":"uint256[]"},{"internalType":"uint256[]","name":"_angelContributedOrders","type":"uint256[]"},{"internalType":"uint256[]","name":"_laboratoryContributedOrders","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orders","outputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"string","name":"orderTitle","type":"string"},{"internalType":"address","name":"orderOwner","type":"address"},{"internalType":"uint256","name":"tokenPerContributor","type":"uint256"},{"internalType":"uint256","name":"tokenPerLaboratory","type":"uint256"},{"internalType":"uint256","name":"totalContributors","type":"uint256"},{"internalType":"string","name":"zPaper","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"totalContributorsRemain","type":"uint256"},{"internalType":"uint256","name":"countOfRegisteredContributions","type":"uint256"},{"internalType":"uint256","name":"registrationTime","type":"uint256"},{"internalType":"string","name":"accessPublicKey","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_orderId","type":"uint256"}],"name":"ownerSpecificData","outputs":[{"internalType":"string[]","name":"","type":"string[]"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"paymentQueue","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"remainedDailyTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_orderTitle","type":"string"},{"internalType":"string","name":"_description","type":"string"},{"internalType":"string","name":"_zPaper","type":"string"},{"internalType":"uint256","name":"_tokenPerContributor","type":"uint256"},{"internalType":"uint256","name":"_tokenPerLaboratory","type":"uint256"},{"internalType":"uint256","name":"_totalContributors","type":"uint256"},{"internalType":"string","name":"_zarelaCategory","type":"string"},{"internalType":"uint256","name":"_businessCategory","type":"uint256"},{"internalType":"string","name":"_accessPublicKey","type":"string"}],"name":"submitNewRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"todayContributionsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenReleaseDaily","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMap","outputs":[{"internalType":"uint256","name":"tokenGainedFromSC","type":"uint256"},{"internalType":"uint256","name":"tokenGainedFromMages","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zarelaDayCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zarelaDifficultyOfDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600681526020017f42696f4269740000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000385565b506040518060400160405280600481526020017f4242495400000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000385565b506009600560006101000a81548160ff021916908360ff160217905550640ba43b7400600655650d18c2e2800060075542600a55348015620000e057600080fd5b50620000fa33660aa87bee5380006200011960201b60201c565b6200011330663c6568f12e80006200011960201b60201c565b6200043b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001d160008383620002f760201b60201c565b620001ed81600254620002fc60201b6200384f1790919060201c565b6002819055506200024b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002fc60201b6200384f1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003bd576000855562000409565b82601f10620003d857805160ff191683800117855562000409565b8280016001018555821562000409579182015b8281111562000408578251825591602001919060010190620003eb565b5b5090506200041891906200041c565b5090565b5b80821115620004375760008160009055506001016200041d565b5090565b615e4a806200044b6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c806370a082311161015c578063a43a2d34116100ce578063c6c883c411610087578063c6c883c414610868578063d9f6050a14610888578063dd62ed3e146108b8578063e4104c5c146108e8578063e52d39a814610906578063fe48b7ca146109245761028a565b8063a43a2d3414610761578063a457c2d714610791578063a85c38ef146107c1578063a9059cbb146107fc578063b3988c351461082c578063b765dd5e1461084a5761028a565b8063816d1d5211610120578063816d1d5214610684578063871d1794146106a257806395178c68146106c057806395d89b41146106f55780639af3efd9146107135780639b3ef47e146107435761028a565b806370a08231146105cd57806379cc6790146105fd5780637aa3829c146106195780637d33d8b3146106355780637ecd32dd146106665761028a565b806326f382c21161020057806341114f7b116101b957806341114f7b1461050857806342966c681461052657806357db010814610542578063594a3b8d1461056057806369677af31461057e5780636d86b8a5146105af5761028a565b806326f382c21461041d57806328657aa51461044d5780632bcc23f81461046b578063313ce5671461049c57806334550895146104ba57806339509351146104d85761028a565b806315068ae11161025257806315068ae11461034757806318160ddd146103655780631e801cd8146103835780631f05ff811461039f578063209dfefb146103cf57806323b872dd146103ed5761028a565b806306fdde031461028f578063095ea7b3146102ad5780630a36530f146102dd5780631038e7a4146102fb5780631402b3bd1461032b575b600080fd5b610297610954565b6040516102a491906156f9565b60405180910390f35b6102c760048036038101906102c29190614c9e565b6109f6565b6040516102d491906156de565b60405180910390f35b6102e5610a14565b6040516102f2919061588b565b60405180910390f35b61031560048036038101906103109190614e18565b610a1a565b604051610322919061588b565b60405180910390f35b61034560048036038101906103409190614e41565b610a3e565b005b61034f611ae7565b60405161035c919061588b565b60405180910390f35b61036d611aed565b60405161037a919061588b565b60405180910390f35b61039d60048036038101906103989190614f0f565b611af7565b005b6103b960048036038101906103b49190614e18565b61228e565b6040516103c6919061588b565b60405180910390f35b6103d76122b2565b6040516103e4919061588b565b60405180910390f35b61040760048036038101906104029190614c4f565b6122b8565b60405161041491906156de565b60405180910390f35b61043760048036038101906104329190614e18565b612391565b604051610444919061588b565b60405180910390f35b6104556123af565b604051610462919061588b565b60405180910390f35b61048560048036038101906104809190614bea565b6123b5565b60405161049392919061597c565b60405180910390f35b6104a46123d9565b6040516104b191906159a5565b60405180910390f35b6104c26123f0565b6040516104cf919061588b565b60405180910390f35b6104f260048036038101906104ed9190614c9e565b6123f6565b6040516104ff91906156de565b60405180910390f35b6105106124a9565b60405161051d919061588b565b60405180910390f35b610540600480360381019061053b9190614e18565b6124af565b005b61054a6124c3565b604051610557919061588b565b60405180910390f35b6105686124c9565b604051610575919061588b565b60405180910390f35b61059860048036038101906105939190614e18565b6124cf565b6040516105a692919061571b565b60405180910390f35b6105b761259b565b6040516105c4919061588b565b60405180910390f35b6105e760048036038101906105e29190614bea565b6125a8565b6040516105f4919061588b565b60405180910390f35b61061760048036038101906106129190614c9e565b6125f0565b005b610633600480360381019061062e9190614cda565b612681565b005b61064f600480360381019061064a9190614e18565b6129d1565b60405161065d92919061565b565b60405180910390f35b61066e612ceb565b60405161067b919061588b565b60405180910390f35b61068c612cf1565b604051610699919061588b565b60405180910390f35b6106aa612cf7565b6040516106b7919061588b565b60405180910390f35b6106da60048036038101906106d59190614e18565b612cfd565b6040516106ec969594939291906155d0565b60405180910390f35b6106fd6130a9565b60405161070a91906156f9565b60405180910390f35b61072d60048036038101906107289190614e18565b61314b565b60405161073a919061588b565b60405180910390f35b61074b61316f565b604051610758919061588b565b60405180910390f35b61077b60048036038101906107769190614e18565b613175565b604051610788919061588b565b60405180910390f35b6107ab60048036038101906107a69190614c9e565b613199565b6040516107b891906156de565b60405180910390f35b6107db60048036038101906107d69190614e18565b613266565b6040516107f39c9b9a999897969594939291906158a6565b60405180910390f35b61081660048036038101906108119190614c9e565b613556565b60405161082391906156de565b60405180910390f35b610834613574565b60405161084191906156de565b60405180910390f35b610852613587565b60405161085f919061588b565b60405180910390f35b61087061358d565b60405161087f93929190615692565b60405180910390f35b6108a2600480360381019061089d9190614e18565b613759565b6040516108af919061588b565b60405180910390f35b6108d260048036038101906108cd9190614c13565b61377d565b6040516108df919061588b565b60405180910390f35b6108f0613804565b6040516108fd919061588b565b60405180910390f35b61090e61380a565b60405161091b919061588b565b60405180910390f35b61093e60048036038101906109399190614e18565b613810565b60405161094b9190615539565b60405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109ec5780601f106109c1576101008083540402835291602001916109ec565b820191906000526020600020905b8154815290600101906020018083116109cf57829003601f168201915b5050505050905090565b6000610a0a610a036138d7565b84846138df565b6001905092915050565b60095481565b60128181548110610a2a57600080fd5b906000526020600020016000915090505481565b866000601f8281548110610a4e57fe5b90600052602060002090600c0201905080600001548214610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061586b565b60405180910390fd5b848073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c906157ab565b60405180910390fd5b888073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d906157ab565b60405180910390fd5b888073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906157ab565b60405180910390fd5b6000601f8d81548110610c0657fe5b90600052602060002090600c0201600801541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061584b565b60405180910390fd5b601f8c81548110610c6657fe5b90600052602060002090600c020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc9061580b565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d6a57508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da0906157eb565b60405180910390fd5b60011515601c60009054906101000a900460ff1615151461171a576000600115158a15151415610e34578b9050601d60008e8152602001908152602001600020600601600190806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff021916908315150217905550610e91565b8a9050601d60008e8152602001908152602001600020600601600090806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff0219169083151502179055505b62015180600a5401421015610f1a576008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008154809291906001019190505550611633565b600860009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012601154908060018154018082558091505060019003906000526020600020016000909190919091505561024d600b54106110585760026006548161102357fe5b0460068190555060026007548161103657fe5b046007819055506009600081548092919060010191905055506000600b819055505b6007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061113b576007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007546013600082825401925050819055506111d5565b600060135411801561118c57506007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156111b05760075460136000828254019250508190555060006007819055506111d4565b60006007819055506001601c60006101000a81548160ff0219169083151502179055505b5b60146007549080600181540180825580915050600190039060005260206000200160009091909190915055602c601754106112a25760146016548154811061121957fe5b906000526020600020015460135403601381905550601860146016548154811061123f57fe5b90600052602060002001549080600181540180825580915050600190039060005260206000200160009091909190915055600060146016548154811061128157fe5b90600052602060002001819055506016600081548092919060010191905055505b601a60135490806001815401808255809150506001900390600052602060002001600090919091909150556013546012601754815481106112df57fe5b9060005260206000200154600654021061136d57601354601a6017548154811061130557fe5b9060005260206000200181905550601960126017548154811061132457fe5b90600052602060002001546013548161133957fe5b04908060018154018082558091505060019003906000526020600020016000909190919091505560006013819055506113fc565b60126017548154811061137c57fe5b906000526020600020015460065402601a6017548154811061139a57fe5b9060005260206000200181905550601960065490806001815401808255809150506001900390600052602060002001600090919091909150556012601754815481106113e257fe5b906000526020600020015460065402601354036013819055505b6000601a6017548154811061140d57fe5b9060005260206000200154905060146017548154811061142957fe5b9060005260206000200154811061153e5760146017548154811061144957fe5b906000526020600020015481039050600060146017548154811061146957fe5b90600052602060002001819055505b60008111156115395760146015548154811061149057fe5b90600052602060002001548111156114f6576014601554815481106114b157fe5b90600052602060002001548103905060006014601554815481106114d157fe5b9060005260206000200181905550601560008154809291906001019190505550611534565b8060146015548154811061150657fe5b90600052602060002001540360146015548154811061152157fe5b9060005260206000200181905550600090505b611478565b611578565b8060146017548154811061154e57fe5b90600052602060002001540360146017548154811061156957fe5b90600052602060002001819055505b60126017548154811061158757fe5b9060005260206000200154600e54600d5403816115a057fe5b04601b81905550600760105460175403101580156115c65750610180600e54600d540310155b156115d8576080601b819055506115fe565b6005601b5410156115f457601b5460020a601b819055506115fd565b6020601b819055505b5b6000601181905550601760008154809291906001019190505550600b6000815480929190600101919050555042600a81905550505b600073ffffffffffffffffffffffffffffffffffffffff166008600c548154811061165a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116da57600c54600d819055506116b2613ad6565b6002600c60008282540192505081905550601160008154809291906001019190505550611718565b600e54600d5414611704576116ed613ad6565b600c60008154809291906001019190505550611717565b600c600081548092919060010191905055505b5b505b8b601d60008e815260200190815260200160002060000181905550601f8c8154811061174257fe5b90600052602060002090600c020160090160008154809291906001019190505550601d60008d8152602001908152602001600020600201879080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906117b29291906149ed565b50601d60008d8152602001908152602001600020600301869080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906118029291906149ed565b50601d60008d81526020019081526020016000206004018b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60008d81526020019081526020016000206005018a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60008d8152602001908152602001600020600701600090806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff021916908315150217905550601d60008d8152602001908152602001600020600101429080600181540180825580915050600190039060005260206000200160009091909190915055601e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018c9080600181540180825580915050600190039060005260206000200160009091909190915055601e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018c9080600181540180825580915050600190039060005260206000200160009091909190915055601d60008d815260200190815260200160002060080160175490806001815401808255809150506001900390600052602060002001600090919091909150557f66dbeec37c65bc61ccdfbca47440c029575c6d071f155468f60e3646cdb4d94e8b8b8e8b601b54604051611ad1959493929190615554565b60405180910390a1505050505050505050505050565b60065481565b6000600254905090565b816000601f8281548110611b0757fe5b90600052602060002090600c020190503373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0906157cb565b60405180910390fd5b836000601f8281548110611bb957fe5b90600052602060002090600c0201905080600001548214611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c069061586b565b60405180910390fd5b6000601f8781548110611c1e57fe5b90600052602060002090600c02019050600186511015611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a9061582b565b60405180910390fd5b806008015486511115611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061574b565b60405180910390fd5b600081600801541415611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa9061576b565b60405180910390fd5b8551816008015403816008018190555085518160040154826003015401026000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8651811015612205578160030154600080601d60008c81526020019081526020016000206004018a8581518110611dd957fe5b602002602001015181548110611deb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080601d60008c81526020019081526020016000206004018a8581518110611e7757fe5b602002602001015181548110611e8957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160040154600080601d60008c81526020019081526020016000206005018a8581518110611f1c57fe5b602002602001015181548110611f2e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080601d60008c81526020019081526020016000206005018a8581518110611fba57fe5b602002602001015181548110611fcc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160030154601e6000601d60008c81526020019081526020016000206004018a858151811061206057fe5b60200260200101518154811061207257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055508160040154601e6000601d60008c81526020019081526020016000206005018a858151811061211257fe5b60200260200101518154811061212457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055506001601d60008a81526020019081526020016000206007018883815181106121bd57fe5b6020026020010151815481106121cf57fe5b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080600101915050611da6565b5060008160080154141561224b577f132a5d9c9866d4036b9d7d601f7431e566bb9fa833e1c2a08b3a5fc704048d3887604051612242919061588b565b60405180910390a15b7fb205f344f8f2a0cf04cd315fb3f2a85d9fb56529649b4a6a868ab5412a167b7987875160405161227d92919061597c565b60405180910390a150505050505050565b601a818154811061229e57600080fd5b906000526020600020016000915090505481565b600b5481565b60006122c5848484614459565b612386846122d16138d7565b61238185604051806060016040528060288152602001615d3a60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006123376138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6138df565b600190509392505050565b601d6020528060005260406000206000915090508060000154905081565b60135481565b601e6020528060005260406000206000915090508060000154908060010154905082565b6000600560009054906101000a900460ff16905090565b60155481565b600061249f6124036138d7565b8461249a85600160006124146138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461384f90919063ffffffff16565b6138df565b6001905092915050565b601b5481565b6124c06124ba6138d7565b826147da565b50565b60105481565b60175481565b602081815481106124df57600080fd5b9060005260206000209060020201600091509050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561258b5780601f106125605761010080835404028352916020019161258b565b820191906000526020600020905b81548152906001019060200180831161256e57829003601f168201915b5050505050908060010154905082565b6000601f80549050905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612603836125fe6138d7565b61377d565b90508181101561265e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d626024913960400191505060405180910390fd5b6126728361266a6138d7565b8484036138df565b61267c83836147da565b505050565b83858701026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061578b565b60405180910390fd5b612714308587890102613556565b506000601f805490509050601f6040518061018001604052808381526020018c81526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018a81526020018b8152602001878152602001600081526020014281526020018481525090806001815401808255809150506001900390600052602060002090600c02016000909190919091506000820151816000015560208201518160010190805190602001906127d99291906149ed565b5060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c082015181600601908051906020019061285b9291906149ed565b5060e08201518160070190805190602001906128789291906149ed565b506101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0190805190602001906128b79291906149ed565b505050601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040181908060018154018082558091505060019003906000526020600020016000909190919091505560206040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001908051906020019061297f9291906149ed565b506020820151816001015550507f39af3f9a6413ded65e29399c144c778968d086f8439ae877650a226bcafd43ce33826040516129bd9291906155a7565b60405180910390a150505050505050505050565b606080826000601f82815481106129e457fe5b90600052602060002090600c020190503373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d906157cb565b60405180910390fd5b846000601f8281548110612a9657fe5b90600052602060002090600c0201905080600001548214612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae39061586b565b60405180910390fd5b601d6000888152602001908152602001600020600201601d600089815260200190815260200160002060030181805480602002602001604051908101604052809291908181526020016000905b82821015612bf5578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612be15780601f10612bb657610100808354040283529160200191612be1565b820191906000526020600020905b815481529060010190602001808311612bc457829003601f168201915b505050505081526020019060010190612b39565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015612cd8578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cc45780601f10612c9957610100808354040283529160200191612cc4565b820191906000526020600020905b815481529060010190602001808311612ca757829003601f168201915b505050505081526020019060010190612c1c565b5050505090509550955050505050915091565b60165481565b60115481565b600c5481565b606080606080606080866000601f8281548110612d1657fe5b90600052602060002090600c0201905080600001548214612d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d639061586b565b60405180910390fd5b601d60008a8152602001908152602001600020600401601d60008b8152602001908152602001600020600501601d60008c8152602001908152602001600020600101601d60008d8152602001908152602001600020600601601d60008e8152602001908152602001600020600701601d60008f815260200190815260200160002060080185805480602002602001604051908101604052809291908181526020018280548015612e7157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612e27575b5050505050955084805480602002602001604051908101604052809291908181526020018280548015612ef957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612eaf575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015612f4b57602002820191906000526020600020905b815481526020019060010190808311612f37575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015612fc257602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411612f8c5790505b505050505092508180548060200260200160405190810160405280929190818152602001828054801561303957602002820191906000526020600020906000905b82829054906101000a900460ff161515815260200190600101906020826000010492830192600103820291508084116130035790505b505050505091508080548060200260200160405190810160405280929190818152602001828054801561308b57602002820191906000526020600020905b815481526020019060010190808311613077575b50505050509050975097509750975097509750505091939550919395565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156131415780601f1061311657610100808354040283529160200191613141565b820191906000526020600020905b81548152906001019060200180831161312457829003601f168201915b5050505050905090565b6018818154811061315b57600080fd5b906000526020600020016000915090505481565b60075481565b6014818154811061318557600080fd5b906000526020600020016000915090505481565b600061325c6131a66138d7565b8461325785604051806060016040528060258152602001615df060259139600160006131d06138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6138df565b6001905092915050565b601f818154811061327657600080fd5b90600052602060002090600c0201600091509050806000015490806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133285780601f106132fd57610100808354040283529160200191613328565b820191906000526020600020905b81548152906001019060200180831161330b57829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133fe5780601f106133d3576101008083540402835291602001916133fe565b820191906000526020600020905b8154815290600101906020018083116133e157829003601f168201915b505050505090806007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561349c5780601f106134715761010080835404028352916020019161349c565b820191906000526020600020905b81548152906001019060200180831161347f57829003601f168201915b50505050509080600801549080600901549080600a01549080600b018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561354c5780601f106135215761010080835404028352916020019161354c565b820191906000526020600020905b81548152906001019060200180831161352f57829003601f168201915b505050505090508c565b600061356a6135636138d7565b8484614459565b6001905092915050565b601c60009054906101000a900460ff1681565b600a5481565b6060806060601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301828054806020026020016040519081016040528092919081815260200182805480156136a357602002820191906000526020600020905b81548152602001906001019080831161368f575b50505050509250818054806020026020016040519081016040528092919081815260200182805480156136f557602002820191906000526020600020905b8154815260200190600101908083116136e1575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561374757602002820191906000526020600020905b815481526020019060010190808311613733575b50505050509050925092509250909192565b6019818154811061376957600080fd5b906000526020600020016000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600e5481565b6008818154811061382057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110156138cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613965576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615dcc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615cf26022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600e5490506080601b541415613e085760008190505b601b548201811015613e0657600d548110613b0857613e06565b60088181548110613b1557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c7c576010600081548092919060010191905055508080600101915050600e6000815480929190600101919050555060088181548110613c1057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601960105481548110613c8b57fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960105481548110613d6b57fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e600081548092919060010191905055508080600101915050613aee565b505b601081600d5403106141385760008190505b81601b540181101561413257600d548110613e3457614132565b60088181548110613e4157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613fa8576010600081548092919060010191905055508080600101915050600e6000815480929190600101919050555060088181548110613f3c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601960105481548110613fb757fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060196010548154811061409757fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e600081548092919060010191905055508080600101915050613e1a565b50614456565b601081600d540310156144555760008190505b600d54811015614453576008818154811061416257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142c9576010600081548092919060010191905055508080600101915050600e600081548092919060010191905055506008818154811061425d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6019601054815481106142d857fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506019601054815481106143b857fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e60008154809291906001019190505550808060010191505061414b565b505b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156144df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615da76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614565576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615cad6023913960400191505060405180910390fd5b61457083838361499e565b6145db81604051806060016040528060268152602001615d14602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061466e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461384f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906147c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561478c578082015181840152602081019050614771565b50505050905090810190601f1680156147b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d866021913960400191505060405180910390fd5b61486c8260008361499e565b6148d781604051806060016040528060228152602001615cd0602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061492e816002546149a390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60006149e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061471a565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614a235760008555614a6a565b82601f10614a3c57805160ff1916838001178555614a6a565b82800160010185558215614a6a579182015b82811115614a69578251825591602001919060010190614a4e565b5b509050614a779190614a7b565b5090565b5b80821115614a94576000816000905550600101614a7c565b5090565b6000614aab614aa6846159f1565b6159c0565b90508083825260208201905082856020860282011115614aca57600080fd5b60005b85811015614afa5781614ae08882614bd5565b845260208401935060208301925050600181019050614acd565b5050509392505050565b6000614b17614b1284615a1d565b6159c0565b905082815260208101848484011115614b2f57600080fd5b614b3a848285615bfb565b509392505050565b600081359050614b5181615c50565b92915050565b600081359050614b6681615c67565b92915050565b600082601f830112614b7d57600080fd5b8135614b8d848260208601614a98565b91505092915050565b600081359050614ba581615c7e565b92915050565b600082601f830112614bbc57600080fd5b8135614bcc848260208601614b04565b91505092915050565b600081359050614be481615c95565b92915050565b600060208284031215614bfc57600080fd5b6000614c0a84828501614b42565b91505092915050565b60008060408385031215614c2657600080fd5b6000614c3485828601614b42565b9250506020614c4585828601614b42565b9150509250929050565b600080600060608486031215614c6457600080fd5b6000614c7286828701614b42565b9350506020614c8386828701614b42565b9250506040614c9486828701614bd5565b9150509250925092565b60008060408385031215614cb157600080fd5b6000614cbf85828601614b42565b9250506020614cd085828601614bd5565b9150509250929050565b60008060008060008060008060006101208a8c031215614cf957600080fd5b60008a013567ffffffffffffffff811115614d1357600080fd5b614d1f8c828d01614bab565b99505060208a013567ffffffffffffffff811115614d3c57600080fd5b614d488c828d01614bab565b98505060408a013567ffffffffffffffff811115614d6557600080fd5b614d718c828d01614bab565b9750506060614d828c828d01614bd5565b9650506080614d938c828d01614bd5565b95505060a0614da48c828d01614bd5565b94505060c08a013567ffffffffffffffff811115614dc157600080fd5b614dcd8c828d01614bab565b93505060e0614dde8c828d01614bd5565b9250506101008a013567ffffffffffffffff811115614dfc57600080fd5b614e088c828d01614bab565b9150509295985092959850929598565b600060208284031215614e2a57600080fd5b6000614e3884828501614bd5565b91505092915050565b600080600080600080600060e0888a031215614e5c57600080fd5b6000614e6a8a828b01614bd5565b9750506020614e7b8a828b01614b57565b9650506040614e8c8a828b01614b57565b9550506060614e9d8a828b01614b96565b9450506080614eae8a828b01614b42565b93505060a088013567ffffffffffffffff811115614ecb57600080fd5b614ed78a828b01614bab565b92505060c088013567ffffffffffffffff811115614ef457600080fd5b614f008a828b01614bab565b91505092959891949750929550565b60008060408385031215614f2257600080fd5b6000614f3085828601614bd5565b925050602083013567ffffffffffffffff811115614f4d57600080fd5b614f5985828601614b6c565b9150509250929050565b6000614f6f8383614fdd565b60208301905092915050565b6000614f87838361518a565b60208301905092915050565b6000614f9f83836151a8565b905092915050565b6000614fb3838361550c565b60208301905092915050565b614fc881615bc5565b82525050565b614fd781615b70565b82525050565b614fe681615b5e565b82525050565b614ff581615b5e565b82525050565b600061500682615a8d565b6150108185615af8565b935061501b83615a4d565b8060005b8381101561504c5781516150338882614f63565b975061503e83615ac4565b92505060018101905061501f565b5085935050505092915050565b600061506482615a98565b61506e8185615b09565b935061507983615a5d565b8060005b838110156150aa5781516150918882614f7b565b975061509c83615ad1565b92505060018101905061507d565b5085935050505092915050565b60006150c282615aa3565b6150cc8185615b1a565b9350836020820285016150de85615a6d565b8060005b8581101561511a57848403895281516150fb8582614f93565b945061510683615ade565b925060208a019950506001810190506150e2565b50829750879550505050505092915050565b600061513782615aae565b6151418185615b2b565b935061514c83615a7d565b8060005b8381101561517d5781516151648882614fa7565b975061516f83615aeb565b925050600181019050615150565b5085935050505092915050565b61519381615b82565b82525050565b6151a281615b82565b82525050565b60006151b382615ab9565b6151bd8185615b3c565b93506151cd818560208601615c0a565b6151d681615c3f565b840191505092915050565b60006151ec82615ab9565b6151f68185615b4d565b9350615206818560208601615c0a565b61520f81615c3f565b840191505092915050565b6000615227602a83615b4d565b91507f546865206e756d626572206f6620656e7472696573206973206d6f726520746860008301527f616e20616c6c6f776564000000000000000000000000000000000000000000006020830152604082019050919050565b600061528d603883615b4d565b91507f596f7572204f7264657220497320446f6e652c20416e6420596f752053656e7460008301527f20416c6c206f66205265776172647320746f20557365727300000000000000006020830152604082019050919050565b60006152f3601883615b4d565b91507f596f757220546f6b656e204973204e6f7420456e6f75676800000000000000006000830152602082019050919050565b6000615333601883615b4d565b91507f53656e6420546f20546865205a65726f204164647265737300000000000000006000830152602082019050919050565b6000615373601183615b4d565b91507f596f7520417265204e6f74204f776e65720000000000000000000000000000006000830152602082019050919050565b60006153b3601f83615b4d565b91507f596f7520417265204e6f7420416e67656c204f72204c61626f7261746f7279006000830152602082019050919050565b60006153f3602b83615b4d565b91507f526571756573746572204164647265737320576173204e6f7420456e7465726560008301527f6420436f72726563746c790000000000000000000000000000000000000000006020830152604082019050919050565b6000615459601e83615b4d565b91507f596f752053686f756c642053656c656374204f6e65204174204c6561737400006000830152602082019050919050565b6000615499601283615b4d565b91507f4f72646572205761732046696e697368656400000000000000000000000000006000830152602082019050919050565b60006154d9602083615b4d565b91507f54686973204f72646572204e756d626572204973204e6f7420436f72726563746000830152602082019050919050565b61551581615bae565b82525050565b61552481615bae565b82525050565b61553381615bb8565b82525050565b600060208201905061554e6000830184614fce565b92915050565b600060a0820190506155696000830188614fbf565b6155766020830187614fbf565b615583604083018661551b565b6155906060830185614fec565b61559d608083018461551b565b9695505050505050565b60006040820190506155bc6000830185614fbf565b6155c9602083018461551b565b9392505050565b600060c08201905081810360008301526155ea8189614ffb565b905081810360208301526155fe8188614ffb565b90508181036040830152615612818761512c565b905081810360608301526156268186615059565b9050818103608083015261563a8185615059565b905081810360a083015261564e818461512c565b9050979650505050505050565b6000604082019050818103600083015261567581856150b7565b9050818103602083015261568981846150b7565b90509392505050565b600060608201905081810360008301526156ac818661512c565b905081810360208301526156c0818561512c565b905081810360408301526156d4818461512c565b9050949350505050565b60006020820190506156f36000830184615199565b92915050565b6000602082019050818103600083015261571381846151e1565b905092915050565b6000604082019050818103600083015261573581856151e1565b9050615744602083018461551b565b9392505050565b600060208201905081810360008301526157648161521a565b9050919050565b6000602082019050818103600083015261578481615280565b9050919050565b600060208201905081810360008301526157a4816152e6565b9050919050565b600060208201905081810360008301526157c481615326565b9050919050565b600060208201905081810360008301526157e481615366565b9050919050565b60006020820190508181036000830152615804816153a6565b9050919050565b60006020820190508181036000830152615824816153e6565b9050919050565b600060208201905081810360008301526158448161544c565b9050919050565b600060208201905081810360008301526158648161548c565b9050919050565b60006020820190508181036000830152615884816154cc565b9050919050565b60006020820190506158a0600083018461551b565b92915050565b6000610180820190506158bc600083018f61551b565b81810360208301526158ce818e6151e1565b90506158dd604083018d614fec565b6158ea606083018c61551b565b6158f7608083018b61551b565b61590460a083018a61551b565b81810360c083015261591681896151e1565b905081810360e083015261592a81886151e1565b905061593a61010083018761551b565b61594861012083018661551b565b61595661014083018561551b565b81810361016083015261596981846151e1565b90509d9c50505050505050505050505050565b6000604082019050615991600083018561551b565b61599e602083018461551b565b9392505050565b60006020820190506159ba600083018461552a565b92915050565b6000604051905081810181811067ffffffffffffffff821117156159e7576159e6615c3d565b5b8060405250919050565b600067ffffffffffffffff821115615a0c57615a0b615c3d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615a3857615a37615c3d565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615b6982615b8e565b9050919050565b6000615b7b82615b8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615bd082615bd7565b9050919050565b6000615be282615be9565b9050919050565b6000615bf482615b8e565b9050919050565b82818337600083830152505050565b60005b83811015615c28578082015181840152602081019050615c0d565b83811115615c37576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b615c5981615b5e565b8114615c6457600080fd5b50565b615c7081615b70565b8114615c7b57600080fd5b50565b615c8781615b82565b8114615c9257600080fd5b50565b615c9e81615bae565b8114615ca957600080fd5b5056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206234e2fe8326eb8b5f53d69adbd0fcb3cf67498ecf99544129e361e0d44ff83a64736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061028a5760003560e01c806370a082311161015c578063a43a2d34116100ce578063c6c883c411610087578063c6c883c414610868578063d9f6050a14610888578063dd62ed3e146108b8578063e4104c5c146108e8578063e52d39a814610906578063fe48b7ca146109245761028a565b8063a43a2d3414610761578063a457c2d714610791578063a85c38ef146107c1578063a9059cbb146107fc578063b3988c351461082c578063b765dd5e1461084a5761028a565b8063816d1d5211610120578063816d1d5214610684578063871d1794146106a257806395178c68146106c057806395d89b41146106f55780639af3efd9146107135780639b3ef47e146107435761028a565b806370a08231146105cd57806379cc6790146105fd5780637aa3829c146106195780637d33d8b3146106355780637ecd32dd146106665761028a565b806326f382c21161020057806341114f7b116101b957806341114f7b1461050857806342966c681461052657806357db010814610542578063594a3b8d1461056057806369677af31461057e5780636d86b8a5146105af5761028a565b806326f382c21461041d57806328657aa51461044d5780632bcc23f81461046b578063313ce5671461049c57806334550895146104ba57806339509351146104d85761028a565b806315068ae11161025257806315068ae11461034757806318160ddd146103655780631e801cd8146103835780631f05ff811461039f578063209dfefb146103cf57806323b872dd146103ed5761028a565b806306fdde031461028f578063095ea7b3146102ad5780630a36530f146102dd5780631038e7a4146102fb5780631402b3bd1461032b575b600080fd5b610297610954565b6040516102a491906156f9565b60405180910390f35b6102c760048036038101906102c29190614c9e565b6109f6565b6040516102d491906156de565b60405180910390f35b6102e5610a14565b6040516102f2919061588b565b60405180910390f35b61031560048036038101906103109190614e18565b610a1a565b604051610322919061588b565b60405180910390f35b61034560048036038101906103409190614e41565b610a3e565b005b61034f611ae7565b60405161035c919061588b565b60405180910390f35b61036d611aed565b60405161037a919061588b565b60405180910390f35b61039d60048036038101906103989190614f0f565b611af7565b005b6103b960048036038101906103b49190614e18565b61228e565b6040516103c6919061588b565b60405180910390f35b6103d76122b2565b6040516103e4919061588b565b60405180910390f35b61040760048036038101906104029190614c4f565b6122b8565b60405161041491906156de565b60405180910390f35b61043760048036038101906104329190614e18565b612391565b604051610444919061588b565b60405180910390f35b6104556123af565b604051610462919061588b565b60405180910390f35b61048560048036038101906104809190614bea565b6123b5565b60405161049392919061597c565b60405180910390f35b6104a46123d9565b6040516104b191906159a5565b60405180910390f35b6104c26123f0565b6040516104cf919061588b565b60405180910390f35b6104f260048036038101906104ed9190614c9e565b6123f6565b6040516104ff91906156de565b60405180910390f35b6105106124a9565b60405161051d919061588b565b60405180910390f35b610540600480360381019061053b9190614e18565b6124af565b005b61054a6124c3565b604051610557919061588b565b60405180910390f35b6105686124c9565b604051610575919061588b565b60405180910390f35b61059860048036038101906105939190614e18565b6124cf565b6040516105a692919061571b565b60405180910390f35b6105b761259b565b6040516105c4919061588b565b60405180910390f35b6105e760048036038101906105e29190614bea565b6125a8565b6040516105f4919061588b565b60405180910390f35b61061760048036038101906106129190614c9e565b6125f0565b005b610633600480360381019061062e9190614cda565b612681565b005b61064f600480360381019061064a9190614e18565b6129d1565b60405161065d92919061565b565b60405180910390f35b61066e612ceb565b60405161067b919061588b565b60405180910390f35b61068c612cf1565b604051610699919061588b565b60405180910390f35b6106aa612cf7565b6040516106b7919061588b565b60405180910390f35b6106da60048036038101906106d59190614e18565b612cfd565b6040516106ec969594939291906155d0565b60405180910390f35b6106fd6130a9565b60405161070a91906156f9565b60405180910390f35b61072d60048036038101906107289190614e18565b61314b565b60405161073a919061588b565b60405180910390f35b61074b61316f565b604051610758919061588b565b60405180910390f35b61077b60048036038101906107769190614e18565b613175565b604051610788919061588b565b60405180910390f35b6107ab60048036038101906107a69190614c9e565b613199565b6040516107b891906156de565b60405180910390f35b6107db60048036038101906107d69190614e18565b613266565b6040516107f39c9b9a999897969594939291906158a6565b60405180910390f35b61081660048036038101906108119190614c9e565b613556565b60405161082391906156de565b60405180910390f35b610834613574565b60405161084191906156de565b60405180910390f35b610852613587565b60405161085f919061588b565b60405180910390f35b61087061358d565b60405161087f93929190615692565b60405180910390f35b6108a2600480360381019061089d9190614e18565b613759565b6040516108af919061588b565b60405180910390f35b6108d260048036038101906108cd9190614c13565b61377d565b6040516108df919061588b565b60405180910390f35b6108f0613804565b6040516108fd919061588b565b60405180910390f35b61090e61380a565b60405161091b919061588b565b60405180910390f35b61093e60048036038101906109399190614e18565b613810565b60405161094b9190615539565b60405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109ec5780601f106109c1576101008083540402835291602001916109ec565b820191906000526020600020905b8154815290600101906020018083116109cf57829003601f168201915b5050505050905090565b6000610a0a610a036138d7565b84846138df565b6001905092915050565b60095481565b60128181548110610a2a57600080fd5b906000526020600020016000915090505481565b866000601f8281548110610a4e57fe5b90600052602060002090600c0201905080600001548214610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061586b565b60405180910390fd5b848073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c906157ab565b60405180910390fd5b888073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d906157ab565b60405180910390fd5b888073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906157ab565b60405180910390fd5b6000601f8d81548110610c0657fe5b90600052602060002090600c0201600801541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061584b565b60405180910390fd5b601f8c81548110610c6657fe5b90600052602060002090600c020160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc9061580b565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d6a57508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da0906157eb565b60405180910390fd5b60011515601c60009054906101000a900460ff1615151461171a576000600115158a15151415610e34578b9050601d60008e8152602001908152602001600020600601600190806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff021916908315150217905550610e91565b8a9050601d60008e8152602001908152602001600020600601600090806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff0219169083151502179055505b62015180600a5401421015610f1a576008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008154809291906001019190505550611633565b600860009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012601154908060018154018082558091505060019003906000526020600020016000909190919091505561024d600b54106110585760026006548161102357fe5b0460068190555060026007548161103657fe5b046007819055506009600081548092919060010191905055506000600b819055505b6007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061113b576007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007546013600082825401925050819055506111d5565b600060135411801561118c57506007546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b156111b05760075460136000828254019250508190555060006007819055506111d4565b60006007819055506001601c60006101000a81548160ff0219169083151502179055505b5b60146007549080600181540180825580915050600190039060005260206000200160009091909190915055602c601754106112a25760146016548154811061121957fe5b906000526020600020015460135403601381905550601860146016548154811061123f57fe5b90600052602060002001549080600181540180825580915050600190039060005260206000200160009091909190915055600060146016548154811061128157fe5b90600052602060002001819055506016600081548092919060010191905055505b601a60135490806001815401808255809150506001900390600052602060002001600090919091909150556013546012601754815481106112df57fe5b9060005260206000200154600654021061136d57601354601a6017548154811061130557fe5b9060005260206000200181905550601960126017548154811061132457fe5b90600052602060002001546013548161133957fe5b04908060018154018082558091505060019003906000526020600020016000909190919091505560006013819055506113fc565b60126017548154811061137c57fe5b906000526020600020015460065402601a6017548154811061139a57fe5b9060005260206000200181905550601960065490806001815401808255809150506001900390600052602060002001600090919091909150556012601754815481106113e257fe5b906000526020600020015460065402601354036013819055505b6000601a6017548154811061140d57fe5b9060005260206000200154905060146017548154811061142957fe5b9060005260206000200154811061153e5760146017548154811061144957fe5b906000526020600020015481039050600060146017548154811061146957fe5b90600052602060002001819055505b60008111156115395760146015548154811061149057fe5b90600052602060002001548111156114f6576014601554815481106114b157fe5b90600052602060002001548103905060006014601554815481106114d157fe5b9060005260206000200181905550601560008154809291906001019190505550611534565b8060146015548154811061150657fe5b90600052602060002001540360146015548154811061152157fe5b9060005260206000200181905550600090505b611478565b611578565b8060146017548154811061154e57fe5b90600052602060002001540360146017548154811061156957fe5b90600052602060002001819055505b60126017548154811061158757fe5b9060005260206000200154600e54600d5403816115a057fe5b04601b81905550600760105460175403101580156115c65750610180600e54600d540310155b156115d8576080601b819055506115fe565b6005601b5410156115f457601b5460020a601b819055506115fd565b6020601b819055505b5b6000601181905550601760008154809291906001019190505550600b6000815480929190600101919050555042600a81905550505b600073ffffffffffffffffffffffffffffffffffffffff166008600c548154811061165a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116da57600c54600d819055506116b2613ad6565b6002600c60008282540192505081905550601160008154809291906001019190505550611718565b600e54600d5414611704576116ed613ad6565b600c60008154809291906001019190505550611717565b600c600081548092919060010191905055505b5b505b8b601d60008e815260200190815260200160002060000181905550601f8c8154811061174257fe5b90600052602060002090600c020160090160008154809291906001019190505550601d60008d8152602001908152602001600020600201879080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906117b29291906149ed565b50601d60008d8152602001908152602001600020600301869080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906118029291906149ed565b50601d60008d81526020019081526020016000206004018b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60008d81526020019081526020016000206005018a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60008d8152602001908152602001600020600701600090806001815401808255809150506001900390600052602060002090602091828204019190069091909190916101000a81548160ff021916908315150217905550601d60008d8152602001908152602001600020600101429080600181540180825580915050600190039060005260206000200160009091909190915055601e60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018c9080600181540180825580915050600190039060005260206000200160009091909190915055601e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018c9080600181540180825580915050600190039060005260206000200160009091909190915055601d60008d815260200190815260200160002060080160175490806001815401808255809150506001900390600052602060002001600090919091909150557f66dbeec37c65bc61ccdfbca47440c029575c6d071f155468f60e3646cdb4d94e8b8b8e8b601b54604051611ad1959493929190615554565b60405180910390a1505050505050505050505050565b60065481565b6000600254905090565b816000601f8281548110611b0757fe5b90600052602060002090600c020190503373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0906157cb565b60405180910390fd5b836000601f8281548110611bb957fe5b90600052602060002090600c0201905080600001548214611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c069061586b565b60405180910390fd5b6000601f8781548110611c1e57fe5b90600052602060002090600c02019050600186511015611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a9061582b565b60405180910390fd5b806008015486511115611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061574b565b60405180910390fd5b600081600801541415611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa9061576b565b60405180910390fd5b8551816008015403816008018190555085518160040154826003015401026000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8651811015612205578160030154600080601d60008c81526020019081526020016000206004018a8581518110611dd957fe5b602002602001015181548110611deb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080601d60008c81526020019081526020016000206004018a8581518110611e7757fe5b602002602001015181548110611e8957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160040154600080601d60008c81526020019081526020016000206005018a8581518110611f1c57fe5b602002602001015181548110611f2e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080601d60008c81526020019081526020016000206005018a8581518110611fba57fe5b602002602001015181548110611fcc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160030154601e6000601d60008c81526020019081526020016000206004018a858151811061206057fe5b60200260200101518154811061207257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055508160040154601e6000601d60008c81526020019081526020016000206005018a858151811061211257fe5b60200260200101518154811061212457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055506001601d60008a81526020019081526020016000206007018883815181106121bd57fe5b6020026020010151815481106121cf57fe5b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080600101915050611da6565b5060008160080154141561224b577f132a5d9c9866d4036b9d7d601f7431e566bb9fa833e1c2a08b3a5fc704048d3887604051612242919061588b565b60405180910390a15b7fb205f344f8f2a0cf04cd315fb3f2a85d9fb56529649b4a6a868ab5412a167b7987875160405161227d92919061597c565b60405180910390a150505050505050565b601a818154811061229e57600080fd5b906000526020600020016000915090505481565b600b5481565b60006122c5848484614459565b612386846122d16138d7565b61238185604051806060016040528060288152602001615d3a60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006123376138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6138df565b600190509392505050565b601d6020528060005260406000206000915090508060000154905081565b60135481565b601e6020528060005260406000206000915090508060000154908060010154905082565b6000600560009054906101000a900460ff16905090565b60155481565b600061249f6124036138d7565b8461249a85600160006124146138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461384f90919063ffffffff16565b6138df565b6001905092915050565b601b5481565b6124c06124ba6138d7565b826147da565b50565b60105481565b60175481565b602081815481106124df57600080fd5b9060005260206000209060020201600091509050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561258b5780601f106125605761010080835404028352916020019161258b565b820191906000526020600020905b81548152906001019060200180831161256e57829003601f168201915b5050505050908060010154905082565b6000601f80549050905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612603836125fe6138d7565b61377d565b90508181101561265e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d626024913960400191505060405180910390fd5b6126728361266a6138d7565b8484036138df565b61267c83836147da565b505050565b83858701026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fd9061578b565b60405180910390fd5b612714308587890102613556565b506000601f805490509050601f6040518061018001604052808381526020018c81526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018a81526020018b8152602001878152602001600081526020014281526020018481525090806001815401808255809150506001900390600052602060002090600c02016000909190919091506000820151816000015560208201518160010190805190602001906127d99291906149ed565b5060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c082015181600601908051906020019061285b9291906149ed565b5060e08201518160070190805190602001906128789291906149ed565b506101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0190805190602001906128b79291906149ed565b505050601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040181908060018154018082558091505060019003906000526020600020016000909190919091505560206040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001908051906020019061297f9291906149ed565b506020820151816001015550507f39af3f9a6413ded65e29399c144c778968d086f8439ae877650a226bcafd43ce33826040516129bd9291906155a7565b60405180910390a150505050505050505050565b606080826000601f82815481106129e457fe5b90600052602060002090600c020190503373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d906157cb565b60405180910390fd5b846000601f8281548110612a9657fe5b90600052602060002090600c0201905080600001548214612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae39061586b565b60405180910390fd5b601d6000888152602001908152602001600020600201601d600089815260200190815260200160002060030181805480602002602001604051908101604052809291908181526020016000905b82821015612bf5578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612be15780601f10612bb657610100808354040283529160200191612be1565b820191906000526020600020905b815481529060010190602001808311612bc457829003601f168201915b505050505081526020019060010190612b39565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015612cd8578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cc45780601f10612c9957610100808354040283529160200191612cc4565b820191906000526020600020905b815481529060010190602001808311612ca757829003601f168201915b505050505081526020019060010190612c1c565b5050505090509550955050505050915091565b60165481565b60115481565b600c5481565b606080606080606080866000601f8281548110612d1657fe5b90600052602060002090600c0201905080600001548214612d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d639061586b565b60405180910390fd5b601d60008a8152602001908152602001600020600401601d60008b8152602001908152602001600020600501601d60008c8152602001908152602001600020600101601d60008d8152602001908152602001600020600601601d60008e8152602001908152602001600020600701601d60008f815260200190815260200160002060080185805480602002602001604051908101604052809291908181526020018280548015612e7157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612e27575b5050505050955084805480602002602001604051908101604052809291908181526020018280548015612ef957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612eaf575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015612f4b57602002820191906000526020600020905b815481526020019060010190808311612f37575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015612fc257602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411612f8c5790505b505050505092508180548060200260200160405190810160405280929190818152602001828054801561303957602002820191906000526020600020906000905b82829054906101000a900460ff161515815260200190600101906020826000010492830192600103820291508084116130035790505b505050505091508080548060200260200160405190810160405280929190818152602001828054801561308b57602002820191906000526020600020905b815481526020019060010190808311613077575b50505050509050975097509750975097509750505091939550919395565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156131415780601f1061311657610100808354040283529160200191613141565b820191906000526020600020905b81548152906001019060200180831161312457829003601f168201915b5050505050905090565b6018818154811061315b57600080fd5b906000526020600020016000915090505481565b60075481565b6014818154811061318557600080fd5b906000526020600020016000915090505481565b600061325c6131a66138d7565b8461325785604051806060016040528060258152602001615df060259139600160006131d06138d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6138df565b6001905092915050565b601f818154811061327657600080fd5b90600052602060002090600c0201600091509050806000015490806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133285780601f106132fd57610100808354040283529160200191613328565b820191906000526020600020905b81548152906001019060200180831161330b57829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133fe5780601f106133d3576101008083540402835291602001916133fe565b820191906000526020600020905b8154815290600101906020018083116133e157829003601f168201915b505050505090806007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561349c5780601f106134715761010080835404028352916020019161349c565b820191906000526020600020905b81548152906001019060200180831161347f57829003601f168201915b50505050509080600801549080600901549080600a01549080600b018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561354c5780601f106135215761010080835404028352916020019161354c565b820191906000526020600020905b81548152906001019060200180831161352f57829003601f168201915b505050505090508c565b600061356a6135636138d7565b8484614459565b6001905092915050565b601c60009054906101000a900460ff1681565b600a5481565b6060806060601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301828054806020026020016040519081016040528092919081815260200182805480156136a357602002820191906000526020600020905b81548152602001906001019080831161368f575b50505050509250818054806020026020016040519081016040528092919081815260200182805480156136f557602002820191906000526020600020905b8154815260200190600101908083116136e1575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561374757602002820191906000526020600020905b815481526020019060010190808311613733575b50505050509050925092509250909192565b6019818154811061376957600080fd5b906000526020600020016000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b600e5481565b6008818154811061382057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110156138cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613965576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615dcc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615cf26022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600e5490506080601b541415613e085760008190505b601b548201811015613e0657600d548110613b0857613e06565b60088181548110613b1557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c7c576010600081548092919060010191905055508080600101915050600e6000815480929190600101919050555060088181548110613c1057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601960105481548110613c8b57fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960105481548110613d6b57fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e600081548092919060010191905055508080600101915050613aee565b505b601081600d5403106141385760008190505b81601b540181101561413257600d548110613e3457614132565b60088181548110613e4157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613fa8576010600081548092919060010191905055508080600101915050600e6000815480929190600101919050555060088181548110613f3c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b601960105481548110613fb757fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060196010548154811061409757fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e600081548092919060010191905055508080600101915050613e1a565b50614456565b601081600d540310156144555760008190505b600d54811015614453576008818154811061416257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156142c9576010600081548092919060010191905055508080600101915050600e600081548092919060010191905055506008818154811061425d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6019601054815481106142d857fe5b9060005260206000200154600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506019601054815481106143b857fe5b9060005260206000200154601e6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550600e60008154809291906001019190505550808060010191505061414b565b505b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156144df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615da76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614565576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615cad6023913960400191505060405180910390fd5b61457083838361499e565b6145db81604051806060016040528060268152602001615d14602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061466e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461384f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906147c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561478c578082015181840152602081019050614771565b50505050905090810190601f1680156147b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614860576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d866021913960400191505060405180910390fd5b61486c8260008361499e565b6148d781604051806060016040528060228152602001615cd0602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461471a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061492e816002546149a390919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60006149e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061471a565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614a235760008555614a6a565b82601f10614a3c57805160ff1916838001178555614a6a565b82800160010185558215614a6a579182015b82811115614a69578251825591602001919060010190614a4e565b5b509050614a779190614a7b565b5090565b5b80821115614a94576000816000905550600101614a7c565b5090565b6000614aab614aa6846159f1565b6159c0565b90508083825260208201905082856020860282011115614aca57600080fd5b60005b85811015614afa5781614ae08882614bd5565b845260208401935060208301925050600181019050614acd565b5050509392505050565b6000614b17614b1284615a1d565b6159c0565b905082815260208101848484011115614b2f57600080fd5b614b3a848285615bfb565b509392505050565b600081359050614b5181615c50565b92915050565b600081359050614b6681615c67565b92915050565b600082601f830112614b7d57600080fd5b8135614b8d848260208601614a98565b91505092915050565b600081359050614ba581615c7e565b92915050565b600082601f830112614bbc57600080fd5b8135614bcc848260208601614b04565b91505092915050565b600081359050614be481615c95565b92915050565b600060208284031215614bfc57600080fd5b6000614c0a84828501614b42565b91505092915050565b60008060408385031215614c2657600080fd5b6000614c3485828601614b42565b9250506020614c4585828601614b42565b9150509250929050565b600080600060608486031215614c6457600080fd5b6000614c7286828701614b42565b9350506020614c8386828701614b42565b9250506040614c9486828701614bd5565b9150509250925092565b60008060408385031215614cb157600080fd5b6000614cbf85828601614b42565b9250506020614cd085828601614bd5565b9150509250929050565b60008060008060008060008060006101208a8c031215614cf957600080fd5b60008a013567ffffffffffffffff811115614d1357600080fd5b614d1f8c828d01614bab565b99505060208a013567ffffffffffffffff811115614d3c57600080fd5b614d488c828d01614bab565b98505060408a013567ffffffffffffffff811115614d6557600080fd5b614d718c828d01614bab565b9750506060614d828c828d01614bd5565b9650506080614d938c828d01614bd5565b95505060a0614da48c828d01614bd5565b94505060c08a013567ffffffffffffffff811115614dc157600080fd5b614dcd8c828d01614bab565b93505060e0614dde8c828d01614bd5565b9250506101008a013567ffffffffffffffff811115614dfc57600080fd5b614e088c828d01614bab565b9150509295985092959850929598565b600060208284031215614e2a57600080fd5b6000614e3884828501614bd5565b91505092915050565b600080600080600080600060e0888a031215614e5c57600080fd5b6000614e6a8a828b01614bd5565b9750506020614e7b8a828b01614b57565b9650506040614e8c8a828b01614b57565b9550506060614e9d8a828b01614b96565b9450506080614eae8a828b01614b42565b93505060a088013567ffffffffffffffff811115614ecb57600080fd5b614ed78a828b01614bab565b92505060c088013567ffffffffffffffff811115614ef457600080fd5b614f008a828b01614bab565b91505092959891949750929550565b60008060408385031215614f2257600080fd5b6000614f3085828601614bd5565b925050602083013567ffffffffffffffff811115614f4d57600080fd5b614f5985828601614b6c565b9150509250929050565b6000614f6f8383614fdd565b60208301905092915050565b6000614f87838361518a565b60208301905092915050565b6000614f9f83836151a8565b905092915050565b6000614fb3838361550c565b60208301905092915050565b614fc881615bc5565b82525050565b614fd781615b70565b82525050565b614fe681615b5e565b82525050565b614ff581615b5e565b82525050565b600061500682615a8d565b6150108185615af8565b935061501b83615a4d565b8060005b8381101561504c5781516150338882614f63565b975061503e83615ac4565b92505060018101905061501f565b5085935050505092915050565b600061506482615a98565b61506e8185615b09565b935061507983615a5d565b8060005b838110156150aa5781516150918882614f7b565b975061509c83615ad1565b92505060018101905061507d565b5085935050505092915050565b60006150c282615aa3565b6150cc8185615b1a565b9350836020820285016150de85615a6d565b8060005b8581101561511a57848403895281516150fb8582614f93565b945061510683615ade565b925060208a019950506001810190506150e2565b50829750879550505050505092915050565b600061513782615aae565b6151418185615b2b565b935061514c83615a7d565b8060005b8381101561517d5781516151648882614fa7565b975061516f83615aeb565b925050600181019050615150565b5085935050505092915050565b61519381615b82565b82525050565b6151a281615b82565b82525050565b60006151b382615ab9565b6151bd8185615b3c565b93506151cd818560208601615c0a565b6151d681615c3f565b840191505092915050565b60006151ec82615ab9565b6151f68185615b4d565b9350615206818560208601615c0a565b61520f81615c3f565b840191505092915050565b6000615227602a83615b4d565b91507f546865206e756d626572206f6620656e7472696573206973206d6f726520746860008301527f616e20616c6c6f776564000000000000000000000000000000000000000000006020830152604082019050919050565b600061528d603883615b4d565b91507f596f7572204f7264657220497320446f6e652c20416e6420596f752053656e7460008301527f20416c6c206f66205265776172647320746f20557365727300000000000000006020830152604082019050919050565b60006152f3601883615b4d565b91507f596f757220546f6b656e204973204e6f7420456e6f75676800000000000000006000830152602082019050919050565b6000615333601883615b4d565b91507f53656e6420546f20546865205a65726f204164647265737300000000000000006000830152602082019050919050565b6000615373601183615b4d565b91507f596f7520417265204e6f74204f776e65720000000000000000000000000000006000830152602082019050919050565b60006153b3601f83615b4d565b91507f596f7520417265204e6f7420416e67656c204f72204c61626f7261746f7279006000830152602082019050919050565b60006153f3602b83615b4d565b91507f526571756573746572204164647265737320576173204e6f7420456e7465726560008301527f6420436f72726563746c790000000000000000000000000000000000000000006020830152604082019050919050565b6000615459601e83615b4d565b91507f596f752053686f756c642053656c656374204f6e65204174204c6561737400006000830152602082019050919050565b6000615499601283615b4d565b91507f4f72646572205761732046696e697368656400000000000000000000000000006000830152602082019050919050565b60006154d9602083615b4d565b91507f54686973204f72646572204e756d626572204973204e6f7420436f72726563746000830152602082019050919050565b61551581615bae565b82525050565b61552481615bae565b82525050565b61553381615bb8565b82525050565b600060208201905061554e6000830184614fce565b92915050565b600060a0820190506155696000830188614fbf565b6155766020830187614fbf565b615583604083018661551b565b6155906060830185614fec565b61559d608083018461551b565b9695505050505050565b60006040820190506155bc6000830185614fbf565b6155c9602083018461551b565b9392505050565b600060c08201905081810360008301526155ea8189614ffb565b905081810360208301526155fe8188614ffb565b90508181036040830152615612818761512c565b905081810360608301526156268186615059565b9050818103608083015261563a8185615059565b905081810360a083015261564e818461512c565b9050979650505050505050565b6000604082019050818103600083015261567581856150b7565b9050818103602083015261568981846150b7565b90509392505050565b600060608201905081810360008301526156ac818661512c565b905081810360208301526156c0818561512c565b905081810360408301526156d4818461512c565b9050949350505050565b60006020820190506156f36000830184615199565b92915050565b6000602082019050818103600083015261571381846151e1565b905092915050565b6000604082019050818103600083015261573581856151e1565b9050615744602083018461551b565b9392505050565b600060208201905081810360008301526157648161521a565b9050919050565b6000602082019050818103600083015261578481615280565b9050919050565b600060208201905081810360008301526157a4816152e6565b9050919050565b600060208201905081810360008301526157c481615326565b9050919050565b600060208201905081810360008301526157e481615366565b9050919050565b60006020820190508181036000830152615804816153a6565b9050919050565b60006020820190508181036000830152615824816153e6565b9050919050565b600060208201905081810360008301526158448161544c565b9050919050565b600060208201905081810360008301526158648161548c565b9050919050565b60006020820190508181036000830152615884816154cc565b9050919050565b60006020820190506158a0600083018461551b565b92915050565b6000610180820190506158bc600083018f61551b565b81810360208301526158ce818e6151e1565b90506158dd604083018d614fec565b6158ea606083018c61551b565b6158f7608083018b61551b565b61590460a083018a61551b565b81810360c083015261591681896151e1565b905081810360e083015261592a81886151e1565b905061593a61010083018761551b565b61594861012083018661551b565b61595661014083018561551b565b81810361016083015261596981846151e1565b90509d9c50505050505050505050505050565b6000604082019050615991600083018561551b565b61599e602083018461551b565b9392505050565b60006020820190506159ba600083018461552a565b92915050565b6000604051905081810181811067ffffffffffffffff821117156159e7576159e6615c3d565b5b8060405250919050565b600067ffffffffffffffff821115615a0c57615a0b615c3d565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615a3857615a37615c3d565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615b6982615b8e565b9050919050565b6000615b7b82615b8e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615bd082615bd7565b9050919050565b6000615be282615be9565b9050919050565b6000615bf482615b8e565b9050919050565b82818337600083830152505050565b60005b83811015615c28578082015181840152602081019050615c0d565b83811115615c37576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b615c5981615b5e565b8114615c6457600080fd5b50565b615c7081615b70565b8114615c7b57600080fd5b50565b615c8781615b82565b8114615c9257600080fd5b50565b615c9e81615bae565b8114615ca957600080fd5b5056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206234e2fe8326eb8b5f53d69adbd0fcb3cf67498ecf99544129e361e0d44ff83a64736f6c63430007060033
Deployed Bytecode Sourcemap
266:20478:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:81:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1313:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1249:26:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1991:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7238:6794;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;922:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;751:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16881:1664:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2638:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1419:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1486:317:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4835:46:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2067:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4887:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;664:81:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2230:34:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1810:215:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:33:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;481:89:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1875:22:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2414:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4959:27;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20650:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;855:117:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;876:327:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5645:1360:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19642:336;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2342:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1918:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1511:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18846:651;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;572:85:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2479:32:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1026:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2167:33;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2032:266:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4932:21:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;979:172:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2780:23:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1300:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20148:372;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2551:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1158:149:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1581:31:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1680:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1151:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;485:81:1;522:13;554:5;547:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:81;:::o;1313:166::-;1396:4;1412:39;1421:12;:10;:12::i;:::-;1435:7;1444:6;1412:8;:39::i;:::-;1468:4;1461:11;;1313:166;;;;:::o;1249:26:5:-;;;;:::o;1991:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7238:6794::-;7554:8;5243:21;5267:6;5274:13;5267:21;;;;;;;;;;;;;;;;;;5243:45;;5323:7;:15;;;5306:13;:32;5298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7580:11:::1;5471:8;5457:22;;5465:1;5457:22;;;;5449:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7609:19:::2;5471:8;5457:22;;5465:1;5457:22;;;;5449:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7646:18:::3;5471:8;5457:22;;5465:1;5457:22;;;;5449:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7741:1:::4;7697:6;7704:8;7697:16;;;;;;;;;;;;;;;;;;:40;;;:45;;7689:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:6;7806:8;7799:16;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;7783:43;;:11;:43;;;7775:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7907:18;7893:32;;:10;:32;;;:69;;;;7943:19;7929:33;;:10;:33;;;7893:69;7885:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:4;8013:19;;:11;;;;;;;;;;;:19;;;8009:5145;;8048:38;8132:4;8104:32;;:24;:32;;;8100:332;;;8181:19;8156:44;;8218:12;:22;8231:8;8218:22;;;;;;;;;;;:38;;8262:4;8218:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8100:332;;;8331:18;8306:43;;8367:12;:22;8380:8;8367:22;;;;;;;;;;;:38;;8411:5;8367:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8100:332;8486:8;8467:16;;:27;8449:15;:45;8445:4281;;;8514:12;8532:22;8514:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8573:23;;:25;;;;;;;;;;;;;8445:4281;;;8637:12;8663:1;8637:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8684:12;8702:22;8684:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8743:23;8772;;8743:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8842:3;8818:20;;:27;8814:288;;8922:1;8901:18;;:22;;;;;;8880:18;:43;;;;8996:1;8971:22;;:26;;;;;;8946:22;:51;;;;9020:14;;:16;;;;;;;;;;;;;9081:1;9058:20;:24;;;;8814:288;9151:22;;9123:9;:24:::0;9141:4:::4;9123:24;;;;;;;;;;;;;;;;:50;9119:551;;9251:22;;9224:9;:24:::0;9242:4:::4;9224:24;;;;;;;;;;;;;;;;:49;9197:9;:24:::0;9215:4:::4;9197:24;;;;;;;;;;;;;;;:76;;;;9309:22;;9295:11;;:37;;;;;;;;;;;9119:551;;;9375:1;9361:11;;:15;:68;;;;;9407:22;;9380:9;:24:::0;9398:4:::4;9380:24;;;;;;;;;;;;;;;;:49;9361:68;9357:313;;;9467:22;;9453:11;;:36;;;;;;;;;;;9536:1;9511:22;:26;;;;9357:313;;;9610:1;9585:22;:26;;;;9647:4;9633:11;;:18;;;;;;;;;;;;;;;;;;9357:313;9119:551;9704:19;9729:22;;9704:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9811:2;9791:16;;:22;9787:338;;9877:19;9897:17;;9877:38;;;;;;;;;;;;;;;;9862:11;;:54;9848:11;:68;;;;9938:18;9962:19;9982:17;;9962:38;;;;;;;;;;;;;;;;9938:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10064:1;10023:19;10043:17;;10023:38;;;;;;;;;;;;;;;:42;;;;10087:17;;:19;;;;;;;;;;;;;9787:338;10159:12;10177:11;;10159:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10294:11;;10249:23;10273:16;;10249:41;;;;;;;;;;;;;;;;10228:18;;:62;:77;10224:640;;10362:11;;10329:12;10342:16;;10329:30;;;;;;;;;;;;;;;:44;;;;10395:25;10438:23;10462:16;;10438:41;;;;;;;;;;;;;;;;10426:11;;:53;;;;;;10395:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10516:1;10502:11;:15;;;;10224:640;;;10618:23;10642:16;;10618:41;;;;;;;;;;;;;;;;10597:18;;:62;10564:12;10577:16;;10564:30;;;;;;;;;;;;;;;:95;;;;10681:25;10712:18;;10681:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10803:23;10827:16;;10803:41;;;;;;;;;;;;;;;;10782:18;;:62;10767:11;;:78;10753:11;:92;;;;10224:640;10897:14;10914:12;10927:16;;10914:30;;;;;;;;;;;;;;;;10897:47;;10996:19;11016:16;;10996:37;;;;;;;;;;;;;;;;10983:9;:50;10979:978;;11082:19;11102:16;;11082:37;;;;;;;;;;;;;;;;11069:9;:51;11057:63;;11182:1;11142:19;11162:16;;11142:37;;;;;;;;;;;;;;;:41;;;;11205:598;11224:1;11212:9;:13;11205:598;;;11269:19;11289:22;;11269:43;;;;;;;;;;;;;;;;11257:9;:55;11253:528;;;11369:19;11389:22;;11369:43;;;;;;;;;;;;;;;;11356:9;:57;11344:69;;11489:1;11443:19;11463:22;;11443:43;;;;;;;;;;;;;;;:47;;;;11520:22;;:24;;;;;;;;;;;;;11253:528;;;11701:9;11654:19;11674:22;;11654:43;;;;;;;;;;;;;;;;:57;11607:19;11627:22;;11607:43;;;;;;;;;;;;;;;:104;;;;11753:1;11741:13;;11253:528;11205:598;;;10979:978;;;11929:9;11889:19;11909:16;;11889:37;;;;;;;;;;;;;;;;:49;11849:19;11869:16;;11849:37;;;;;;;;;;;;;;;:89;;;;10979:978;12069:23;12093:16;;12069:41;;;;;;;;;;;;;;;;12038:27;;12016:19;;:49;12015:95;;;;;;11991:21;:119;;;;12184:1;12169:10;;12150:16;;:29;12149:36;;:98;;;;;12244:3;12212:27;;12190:19;;:49;12189:58;;12149:98;12145:372;;;12296:3;12272:21;:27;;;;12145:372;;;12352:1;12328:21;;:25;12324:193;;;12404:21;;12401:1;:24;12377:21;:48;;;;12324:193;;;12496:2;12472:21;:26;;;;12324:193;12145:372;12577:1;12551:23;:27;;;;12596:16;;:18;;;;;;;;;;;;;12632:20;;:22;;;;;;;;;;;;;12691:15;12672:16;:34;;;;8445:4281;;12781:1;12743:40;;:12;12756;;12743:26;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;12739:405;;;12825:12;;12803:19;:34;;;;12855:9;:7;:9::i;:::-;12896:1;12882:12;;:15;;;;;;;;;;;12915:23;;:25;;;;;;;;;;;;;12739:405;;;12988:27;;12965:19;;:50;12961:183;;13035:9;:7;:9::i;:::-;13062:12;;:14;;;;;;;;;;;;;12961:183;;;13115:12;;:14;;;;;;;;;;;;;12961:183;12739:405;8009:5145;;13205:8;13172:12;:22;13185:8;13172:22;;;;;;;;;;;:30;;:41;;;;13223:6;13230:8;13223:16;;;;;;;;;;;;;;;;;;:47;;;:49;;;;;;;;;;;;;13282:12;:22;13295:8;13282:22;;;;;;;;;;;:31;;13319:9;13282:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13339:12;:22;13352:8;13339:22;;;;;;;;;;;:36;;13381:14;13339:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13406:12;:22;13419:8;13406:22;;;;;;;;;;;:43;;13455:19;13406:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13485:12;:22;13498:8;13485:22;;;;;;;;;;;:42;;13533:18;13485:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13562:12;:22;13575:8;13562:22;;;;;;;;;;;:40;;13608:5;13562:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13624:12;:22;13637:8;13624:22;;;;;;;;;;;:43;;13673:15;13624:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13699:7;:28;13707:19;13699:28;;;;;;;;;;;;;;;:51;;13756:8;13699:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13775:7;:27;13783:18;13775:27;;;;;;;;;;;;;;;:55;;13836:8;13775:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13855:12;:22;13868:8;13855:22;;;;;;;;;;;:32;;13893:16;;13855:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13926:99;13938:19;13960:18;13980:8;13990:11;14003:21;;13926:99;;;;;;;;;;:::i;:::-;;;;;;;;5518:1:::3;::::2;5386::::1;7238:6794:::0;;;;;;;;;:::o;922:44::-;;;;:::o;751:98:1:-;804:7;830:12;;823:19;;751:98;:::o;16881:1664:5:-;17005:8;5046:21;5070:6;5077:13;5070:21;;;;;;;;;;;;;;;;;;5046:45;;5131:10;5109:32;;:7;:18;;;;;;;;;;;;:32;;;5101:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17036:8:::1;5243:21;5267:6;5274:13;5267:21;;;;;;;;;;;;;;;;;;5243:45;;5323:7;:15;;;5306:13;:32;5298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17060:21:::2;17084:6;17091:8;17084:16;;;;;;;;;;;;;;;;;;17060:40;;17135:1;17118:6;:13;:18;;17110:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17205:7;:31;;;17188:6;:13;:48;;17180:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;17335:1;17300:7;:31;;;:36;;17292:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;17475:6;:13;17440:7;:31;;;:49;17406:7;:31;;:83;;;;17617:6;:13;17586:7;:26;;;17556:7;:27;;;:56;17555:75;17526:9;:24:::0;17544:4:::2;17526:24;;;;;;;;;;;;;;;;:105;17499:9;:24:::0;17517:4:::2;17499:24;;;;;;;;;;;;;;;:132;;;;17646:6;17641:731;17657:6;:13;17653:1;:17;17641:731;;;17829:7;:27;;;17760:9;:65:::0;17770:12:::2;:22;17783:8;17770:22;;;;;;;;;;;:43;;17814:6;17821:1;17814:9;;;;;;;;;;;;;;17770:54;;;;;;;;;;;;;;;;;;;;;;;;;17760:65;;;;;;;;;;;;;;;;:97;17692:9;:65:::0;17702:12:::2;:22;17715:8;17702:22;;;;;;;;;;;:43;;17746:6;17753:1;17746:9;;;;;;;;;;;;;;17702:54;;;;;;;;;;;;;;;;;;;;;;;;;17692:65;;;;;;;;;;;;;;;:165;;;;18006:7;:26;;;17938:9;:64:::0;17948:12:::2;:22;17961:8;17948:22;;;;;;;;;;;:42;;17991:6;17998:1;17991:9;;;;;;;;;;;;;;17948:53;;;;;;;;;;;;;;;;;;;;;;;;;17938:64;;;;;;;;;;;;;;;;:95;17871:9;:64:::0;17881:12:::2;:22;17894:8;17881:22;;;;;;;;;;;:42;;17924:6;17931:1;17924:9;;;;;;;;;;;;;;17881:53;;;;;;;;;;;;;;;;;;;;;;;;;17871:64;;;;;;;;;;;;;;;:162;;;;18134:7;:27;;;18047:7;:63;18055:12;:22;18068:8;18055:22;;;;;;;;;;;:43;;18099:6;18106:1;18099:9;;;;;;;;;;;;;;18055:54;;;;;;;;;;;;;;;;;;;;;;;;;18047:63;;;;;;;;;;;;;;;:84;;;:115;;;;;;;;;;;18262:7;:26;;;18176:7;:62;18184:12;:22;18197:8;18184:22;;;;;;;;;;;:42;;18227:6;18234:1;18227:9;;;;;;;;;;;;;;18184:53;;;;;;;;;;;;;;;;;;;;;;;;;18176:62;;;;;;;;;;;;;;;:83;;;:113;;;;;;;;;;;18357:4;18303:12;:22;18316:8;18303:22;;;;;;;;;;;:40;;18344:6;18351:1;18344:9;;;;;;;;;;;;;;18303:51;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;17673:3;;;;;;;17641:731;;;;18429:1;18394:7;:31;;;:36;18390:95;;;18451:23;18465:8;18451:23;;;;;;:::i;:::-;;;;;;;;18390:95;18499:39;18515:8;18524:6;:13;18499:39;;;;;;;:::i;:::-;;;;;;;;5386:1;5173::::1;;16881:1664:::0;;;;:::o;2638:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1419:32::-;;;;:::o;1486:317:1:-;1592:4;1608:36;1618:6;1626:9;1637:6;1608:9;:36::i;:::-;1654:121;1663:6;1671:12;:10;:12::i;:::-;1685:89;1723:6;1685:89;;;;;;;;;;;;;;;;;:11;:19;1697:6;1685:19;;;;;;;;;;;;;;;:33;1705:12;:10;:12::i;:::-;1685:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;1654:8;:121::i;:::-;1792:4;1785:11;;1486:317;;;;;:::o;4835:46:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;2067:23::-;;;;:::o;4887:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;664:81:1:-;705:5;729:9;;;;;;;;;;;722:16;;664:81;:::o;2230:34:5:-;;;;:::o;1810:215:1:-;1898:4;1914:83;1923:12;:10;:12::i;:::-;1937:7;1946:50;1985:10;1946:11;:25;1958:12;:10;:12::i;:::-;1946:25;;;;;;;;;;;;;;;:34;1972:7;1946:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;1914:8;:83::i;:::-;2014:4;2007:11;;1810:215;;;;:::o;2697:33:5:-;;;;:::o;481:89:2:-;536:27;542:12;:10;:12::i;:::-;556:6;536:5;:27::i;:::-;481:89;:::o;1875:22:5:-;;;;:::o;2414:28::-;;;;:::o;4959:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20650:92::-;20700:4;20722:6;:13;;;;20715:20;;20650:92;:::o;855:117:1:-;921:7;947:9;:18;957:7;947:18;;;;;;;;;;;;;;;;940:25;;855:117;;;:::o;876:327:2:-;952:24;979:32;989:7;998:12;:10;:12::i;:::-;979:9;:32::i;:::-;952:59;;1049:6;1029:16;:26;;1021:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1106:58;1115:7;1124:12;:10;:12::i;:::-;1157:6;1138:16;:25;1106:8;:58::i;:::-;1174:22;1180:7;1189:6;1174:5;:22::i;:::-;876:327;;;:::o;5645:1360:5:-;6102:18;6079:19;6056:20;:42;6055:65;6029:9;:21;6039:10;6029:21;;;;;;;;;;;;;;;;:92;;6021:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;6160:97;6183:4;6237:18;6214:19;6191:20;:42;6190:65;6160:14;:97::i;:::-;;6267:12;6282:6;:13;;;;6267:28;;6305:6;6330:393;;;;;;;;6353:7;6330:393;;;;6378:11;6330:393;;;;6407:10;6330:393;;;;;;6435:20;6330:393;;;;6473:19;6330:393;;;;6510:18;6330:393;;;;6546:7;6330:393;;;;6571:12;6330:393;;;;6601:18;6330:393;;;;6637:1;6330:393;;;;6656:15;6330:393;;;;6689:16;6330:393;;;6305:432;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6747:7;:19;6755:10;6747:19;;;;;;;;;;;;;;;:31;;6784:7;6747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:10;6831:102;;;;;;;;6861:15;6831:102;;;;6898:17;6831:102;;;6802:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;6962:36;6978:10;6990:7;6962:36;;;;;;;:::i;:::-;;;;;;;;5645:1360;;;;;;;;;;:::o;19642:336::-;19825:15;19854;19740:8;5046:21;5070:6;5077:13;5070:21;;;;;;;;;;;;;;;;;;5046:45;;5131:10;5109:32;;:7;:18;;;;;;;;;;;;:32;;;5101:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19771:8:::1;5243:21;5267:6;5274:13;5267:21;;;;;;;;;;;;;;;;;;5243:45;;5323:7;:15;;;5306:13;:32;5298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19902:12:::2;:22;19915:8;19902:22;;;;;;;;;;;:31;;19934:12;:22;19947:8;19934:22;;;;;;;;;;;:36;;19894:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:1:::1;;19642:336:::0;;;;;:::o;2342:29::-;;;;:::o;1918:35::-;;;;:::o;1511:24::-;;;;:::o;18846:651::-;18979:16;19009;19039:12;19065;19091:13;19118;18934:8;5243:21;5267:6;5274:13;5267:21;;;;;;;;;;;;;;;;;;5243:45;;5323:7;:15;;;5306:13;:32;5298:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19168:12:::1;:22;19181:8;19168:22;;;;;;;;;;;:43;;19225:12;:22;19238:8;19225:22;;;;;;;;;;;:42;;19281:12;:22;19294:8;19281:22;;;;;;;;;;;:43;;19338:12;:22;19351:8;19338:22;;;;;;;;;;;:38;;19390:12;:22;19403:8;19390:22;;;;;;;;;;;:40;;19444:12;:22;19457:8;19444:22;;;;;;;;;;;:32;;19147:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18846:651:::0;;;;;;;;;:::o;572:85:1:-;611:13;643:7;636:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:85;:::o;2479:32:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1026:51::-;;;;:::o;2167:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2032:266:1:-;2125:4;2141:129;2150:12;:10;:12::i;:::-;2164:7;2173:96;2212:15;2173:96;;;;;;;;;;;;;;;;;:11;:25;2185:12;:10;:12::i;:::-;2173:25;;;;;;;;;;;;;;;:34;2199:7;2173:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;2141:8;:129::i;:::-;2287:4;2280:11;;2032:266;;;;:::o;4932:21:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;979:172:1:-;1065:4;1081:42;1091:12;:10;:12::i;:::-;1105:9;1116:6;1081:9;:42::i;:::-;1140:4;1133:11;;979:172;;;;:::o;2780:23:5:-;;;;;;;;;;;;;:::o;1300:46::-;;;;:::o;20148:372::-;20204:25;20235:36;20277:41;20355:7;:19;20363:10;20355:19;;;;;;;;;;;;;;;:31;;20400:7;:19;20408:10;20400:19;;;;;;;;;;;;;;;:42;;20456:7;:19;20464:10;20456:19;;;;;;;;;;;;;;;:47;;20334:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20148:372;;;:::o;2551:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1158:149:1:-;1247:7;1273:11;:18;1285:5;1273:18;;;;;;;;;;;;;;;:27;1292:7;1273:27;;;;;;;;;;;;;;;;1266:34;;1158:149;;;;:::o;1581:31:5:-;;;;:::o;1680:39::-;;;;:::o;1151:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;95:176:4:-;153:7;172:9;188:1;184;:5;172:17;;212:1;207;:6;;199:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:1;256:8;;;95:176;;;;:::o;594:96:0:-;647:7;673:10;666:17;;594:96;:::o;3634:340:1:-;3752:1;3735:19;;:5;:19;;;;3727:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3832:1;3813:21;;:7;:21;;;;3805:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3914:6;3884:11;:18;3896:5;3884:18;;;;;;;;;;;;;;;:27;3903:7;3884:27;;;;;;;;;;;;;;;:36;;;;3951:7;3935:32;;3944:5;3935:32;;;3960:6;3935:32;;;;;;;;;;;;;;;;;;3634:340;;;:::o;14084:2642:5:-;14121:14;14138:27;;14121:44;;14204:3;14179:21;;:28;14175:881;;;14228:6;14236:9;14228:17;;14223:823;14263:21;;14251:9;:33;14247:1;:37;14223:823;;;14318:19;;14313:1;:24;14309:76;;14361:5;;14309:76;14444:12;14457:1;14444:15;;;;;;;;;;;;;;;;;;;;;;;;;14419:22;;:40;;;;;;;;;;;;;;;;;;14532:1;14498:36;;:22;;;;;;;;;;;:36;;;14494:233;;;14558:10;;:12;;;;;;;;;;;;;14592:3;;;;;;;14617:27;;:29;;;;;;;;;;;;;14693:12;14706:1;14693:15;;;;;;;;;;;;;;;;;;;;;;;;;14668:22;;:40;;;;;;;;;;;;;;;;;;14494:233;14835:25;14861:10;;14835:37;;;;;;;;;;;;;;;;14797:9;:33;14807:22;;;;;;;;;;;14797:33;;;;;;;;;;;;;;;;:77;14761:9;:33;14771:22;;;;;;;;;;;14761:33;;;;;;;;;;;;;;;:113;;;;14946:25;14972:10;;14946:37;;;;;;;;;;;;;;;;14892:7;:31;14900:22;;;;;;;;;;;14892:31;;;;;;;;;;;;;;;:49;;;:92;;;;;;;;;;;15002:27;;:29;;;;;;;;;;;;;14286:3;;;;;;;14223:823;;;;14175:881;15106:2;15092:9;15070:19;;:31;15069:39;15065:1655;;15129:6;15138:9;15129:18;;15124:827;15179:9;15155:21;;:33;15151:1;:37;15124:827;;;15223:19;;15218:1;:24;15214:76;;15266:5;;15214:76;15349:12;15362:1;15349:15;;;;;;;;;;;;;;;;;;;;;;;;;15324:22;;:40;;;;;;;;;;;;;;;;;;15437:1;15403:36;;:22;;;;;;;;;;;:36;;;15399:233;;;15463:10;;:12;;;;;;;;;;;;;15497:3;;;;;;;15522:27;;:29;;;;;;;;;;;;;15598:12;15611:1;15598:15;;;;;;;;;;;;;;;;;;;;;;;;;15573:22;;:40;;;;;;;;;;;;;;;;;;15399:233;15740:25;15766:10;;15740:37;;;;;;;;;;;;;;;;15702:9;:33;15712:22;;;;;;;;;;;15702:33;;;;;;;;;;;;;;;;:77;15666:9;:33;15676:22;;;;;;;;;;;15666:33;;;;;;;;;;;;;;;:113;;;;15851:25;15877:10;;15851:37;;;;;;;;;;;;;;;;15797:7;:31;15805:22;;;;;;;;;;;15797:31;;;;;;;;;;;;;;;:49;;;:92;;;;;;;;;;;15907:27;;:29;;;;;;;;;;;;;15191:3;;;;;;;15124:827;;;;15065:1655;;;16007:2;15994:9;15972:19;;:31;15971:38;15967:753;;;16030:6;16039:9;16030:18;;16025:685;16055:19;;16051:1;:23;16025:685;;;16125:12;16138:1;16125:15;;;;;;;;;;;;;;;;;;;;;;;;;16100:22;;:40;;;;;;;;;;;;;;;;;;16196:1;16162:36;;:22;;;;;;;;;;;:36;;;16158:233;;;16222:10;;:12;;;;;;;;;;;;;16256:3;;;;;;;16281:27;;:29;;;;;;;;;;;;;16357:12;16370:1;16357:15;;;;;;;;;;;;;;;;;;;;;;;;;16332:22;;:40;;;;;;;;;;;;;;;;;;16158:233;16499:25;16525:10;;16499:37;;;;;;;;;;;;;;;;16461:9;:33;16471:22;;;;;;;;;;;16461:33;;;;;;;;;;;;;;;;:77;16425:9;:33;16435:22;;;;;;;;;;;16425:33;;;;;;;;;;;;;;;:113;;;;16610:25;16636:10;;16610:37;;;;;;;;;;;;;;;;16556:7;:31;16564:22;;;;;;;;;;;16556:31;;;;;;;;;;;;;;;:49;;;:92;;;;;;;;;;;16666:27;;:29;;;;;;;;;;;;;16077:3;;;;;;;16025:685;;;;15967:753;15065:1655;14084:2642;:::o;2304:530:1:-;2427:1;2409:20;;:6;:20;;;;2401:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:1;2489:23;;:9;:23;;;;2481:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:47;2584:6;2592:9;2603:6;2563:20;:47::i;:::-;2641:71;2663:6;2641:71;;;;;;;;;;;;;;;;;:9;:17;2651:6;2641:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;2621:9;:17;2631:6;2621:17;;;;;;;;;;;;;;;:91;;;;2745:32;2770:6;2745:9;:20;2755:9;2745:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2722:9;:20;2732:9;2722:20;;;;;;;;;;;;;;;:55;;;;2809:9;2792:35;;2801:6;2792:35;;;2820:6;2792:35;;;;;;;;;;;;;;;;;;2304:530;;;:::o;421:187:4:-;507:7;539:1;534;:6;;542:12;526:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;565:9;581:1;577;:5;565:17;;600:1;593:8;;;421:187;;;;;:::o;3217:410:1:-;3319:1;3300:21;;:7;:21;;;;3292:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3370:49;3391:7;3408:1;3412:6;3370:20;:49::i;:::-;3451:68;3474:6;3451:68;;;;;;;;;;;;;;;;;:9;:18;3461:7;3451:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;3430:9;:18;3440:7;3430:18;;;;;;;;;;;;;;;:89;;;;3544:24;3561:6;3544:12;;:16;;:24;;;;:::i;:::-;3529:12;:39;;;;3609:1;3583:37;;3592:7;3583:37;;;3613:6;3583:37;;;;;;;;;;;;;;;;;;3217:410;;:::o;4075:92::-;;;;:::o;277:134:4:-;335:7;361:43;365:1;368;361:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;354:50;;277:134;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:6:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:344::-;;755:65;770:49;812:6;770:49;:::i;:::-;755:65;:::i;:::-;746:74;;843:6;836:5;829:21;881:4;874:5;870:16;919:3;910:6;905:3;901:16;898:25;895:2;;;936:1;933;926:12;895:2;949:41;983:6;978:3;973;949:41;:::i;:::-;736:260;;;;;;:::o;1002:139::-;;1086:6;1073:20;1064:29;;1102:33;1129:5;1102:33;:::i;:::-;1054:87;;;;:::o;1147:155::-;;1239:6;1226:20;1217:29;;1255:41;1290:5;1255:41;:::i;:::-;1207:95;;;;:::o;1325:303::-;;1445:3;1438:4;1430:6;1426:17;1422:27;1412:2;;1463:1;1460;1453:12;1412:2;1503:6;1490:20;1528:94;1618:3;1610:6;1603:4;1595:6;1591:17;1528:94;:::i;:::-;1519:103;;1402:226;;;;;:::o;1634:133::-;;1715:6;1702:20;1693:29;;1731:30;1755:5;1731:30;:::i;:::-;1683:84;;;;:::o;1787:273::-;;1892:3;1885:4;1877:6;1873:17;1869:27;1859:2;;1910:1;1907;1900:12;1859:2;1950:6;1937:20;1975:79;2050:3;2042:6;2035:4;2027:6;2023:17;1975:79;:::i;:::-;1966:88;;1849:211;;;;;:::o;2066:139::-;;2150:6;2137:20;2128:29;;2166:33;2193:5;2166:33;:::i;:::-;2118:87;;;;:::o;2211:262::-;;2319:2;2307:9;2298:7;2294:23;2290:32;2287:2;;;2335:1;2332;2325:12;2287:2;2378:1;2403:53;2448:7;2439:6;2428:9;2424:22;2403:53;:::i;:::-;2393:63;;2349:117;2277:196;;;;:::o;2479:407::-;;;2604:2;2592:9;2583:7;2579:23;2575:32;2572:2;;;2620:1;2617;2610:12;2572:2;2663:1;2688:53;2733:7;2724:6;2713:9;2709:22;2688:53;:::i;:::-;2678:63;;2634:117;2790:2;2816:53;2861:7;2852:6;2841:9;2837:22;2816:53;:::i;:::-;2806:63;;2761:118;2562:324;;;;;:::o;2892:552::-;;;;3034:2;3022:9;3013:7;3009:23;3005:32;3002:2;;;3050:1;3047;3040:12;3002:2;3093:1;3118:53;3163:7;3154:6;3143:9;3139:22;3118:53;:::i;:::-;3108:63;;3064:117;3220:2;3246:53;3291:7;3282:6;3271:9;3267:22;3246:53;:::i;:::-;3236:63;;3191:118;3348:2;3374:53;3419:7;3410:6;3399:9;3395:22;3374:53;:::i;:::-;3364:63;;3319:118;2992:452;;;;;:::o;3450:407::-;;;3575:2;3563:9;3554:7;3550:23;3546:32;3543:2;;;3591:1;3588;3581:12;3543:2;3634:1;3659:53;3704:7;3695:6;3684:9;3680:22;3659:53;:::i;:::-;3649:63;;3605:117;3761:2;3787:53;3832:7;3823:6;3812:9;3808:22;3787:53;:::i;:::-;3777:63;;3732:118;3533:324;;;;;:::o;3863:1993::-;;;;;;;;;;4157:3;4145:9;4136:7;4132:23;4128:33;4125:2;;;4174:1;4171;4164:12;4125:2;4245:1;4234:9;4230:17;4217:31;4275:18;4267:6;4264:30;4261:2;;;4307:1;4304;4297:12;4261:2;4335:63;4390:7;4381:6;4370:9;4366:22;4335:63;:::i;:::-;4325:73;;4188:220;4475:2;4464:9;4460:18;4447:32;4506:18;4498:6;4495:30;4492:2;;;4538:1;4535;4528:12;4492:2;4566:63;4621:7;4612:6;4601:9;4597:22;4566:63;:::i;:::-;4556:73;;4418:221;4706:2;4695:9;4691:18;4678:32;4737:18;4729:6;4726:30;4723:2;;;4769:1;4766;4759:12;4723:2;4797:63;4852:7;4843:6;4832:9;4828:22;4797:63;:::i;:::-;4787:73;;4649:221;4909:2;4935:53;4980:7;4971:6;4960:9;4956:22;4935:53;:::i;:::-;4925:63;;4880:118;5037:3;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5008:119;5166:3;5193:53;5238:7;5229:6;5218:9;5214:22;5193:53;:::i;:::-;5183:63;;5137:119;5323:3;5312:9;5308:19;5295:33;5355:18;5347:6;5344:30;5341:2;;;5387:1;5384;5377:12;5341:2;5415:63;5470:7;5461:6;5450:9;5446:22;5415:63;:::i;:::-;5405:73;;5266:222;5527:3;5554:53;5599:7;5590:6;5579:9;5575:22;5554:53;:::i;:::-;5544:63;;5498:119;5684:3;5673:9;5669:19;5656:33;5716:18;5708:6;5705:30;5702:2;;;5748:1;5745;5738:12;5702:2;5776:63;5831:7;5822:6;5811:9;5807:22;5776:63;:::i;:::-;5766:73;;5627:222;4115:1741;;;;;;;;;;;:::o;5862:262::-;;5970:2;5958:9;5949:7;5945:23;5941:32;5938:2;;;5986:1;5983;5976:12;5938:2;6029:1;6054:53;6099:7;6090:6;6079:9;6075:22;6054:53;:::i;:::-;6044:63;;6000:117;5928:196;;;;:::o;6130:1388::-;;;;;;;;6373:3;6361:9;6352:7;6348:23;6344:33;6341:2;;;6390:1;6387;6380:12;6341:2;6433:1;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6404:117;6560:2;6586:61;6639:7;6630:6;6619:9;6615:22;6586:61;:::i;:::-;6576:71;;6531:126;6696:2;6722:61;6775:7;6766:6;6755:9;6751:22;6722:61;:::i;:::-;6712:71;;6667:126;6832:2;6858:50;6900:7;6891:6;6880:9;6876:22;6858:50;:::i;:::-;6848:60;;6803:115;6957:3;6984:53;7029:7;7020:6;7009:9;7005:22;6984:53;:::i;:::-;6974:63;;6928:119;7114:3;7103:9;7099:19;7086:33;7146:18;7138:6;7135:30;7132:2;;;7178:1;7175;7168:12;7132:2;7206:63;7261:7;7252:6;7241:9;7237:22;7206:63;:::i;:::-;7196:73;;7057:222;7346:3;7335:9;7331:19;7318:33;7378:18;7370:6;7367:30;7364:2;;;7410:1;7407;7400:12;7364:2;7438:63;7493:7;7484:6;7473:9;7469:22;7438:63;:::i;:::-;7428:73;;7289:222;6331:1187;;;;;;;;;;:::o;7524:550::-;;;7674:2;7662:9;7653:7;7649:23;7645:32;7642:2;;;7690:1;7687;7680:12;7642:2;7733:1;7758:53;7803:7;7794:6;7783:9;7779:22;7758:53;:::i;:::-;7748:63;;7704:117;7888:2;7877:9;7873:18;7860:32;7919:18;7911:6;7908:30;7905:2;;;7951:1;7948;7941:12;7905:2;7979:78;8049:7;8040:6;8029:9;8025:22;7979:78;:::i;:::-;7969:88;;7831:236;7632:442;;;;;:::o;8080:179::-;;8170:46;8212:3;8204:6;8170:46;:::i;:::-;8248:4;8243:3;8239:14;8225:28;;8160:99;;;;:::o;8265:167::-;;8349:40;8385:3;8377:6;8349:40;:::i;:::-;8421:4;8416:3;8412:14;8398:28;;8339:93;;;;:::o;8438:196::-;;8562:66;8624:3;8616:6;8562:66;:::i;:::-;8548:80;;8538:96;;;;:::o;8640:179::-;;8730:46;8772:3;8764:6;8730:46;:::i;:::-;8808:4;8803:3;8799:14;8785:28;;8720:99;;;;:::o;8825:147::-;8920:45;8959:5;8920:45;:::i;:::-;8915:3;8908:58;8898:74;;:::o;8978:142::-;9081:32;9107:5;9081:32;:::i;:::-;9076:3;9069:45;9059:61;;:::o;9126:108::-;9203:24;9221:5;9203:24;:::i;:::-;9198:3;9191:37;9181:53;;:::o;9240:118::-;9327:24;9345:5;9327:24;:::i;:::-;9322:3;9315:37;9305:53;;:::o;9394:732::-;;9542:54;9590:5;9542:54;:::i;:::-;9612:86;9691:6;9686:3;9612:86;:::i;:::-;9605:93;;9722:56;9772:5;9722:56;:::i;:::-;9801:7;9832:1;9817:284;9842:6;9839:1;9836:13;9817:284;;;9918:6;9912:13;9945:63;10004:3;9989:13;9945:63;:::i;:::-;9938:70;;10031:60;10084:6;10031:60;:::i;:::-;10021:70;;9877:224;9864:1;9861;9857:9;9852:14;;9817:284;;;9821:14;10117:3;10110:10;;9518:608;;;;;;;:::o;10156:708::-;;10298:51;10343:5;10298:51;:::i;:::-;10365:83;10441:6;10436:3;10365:83;:::i;:::-;10358:90;;10472:53;10519:5;10472:53;:::i;:::-;10548:7;10579:1;10564:275;10589:6;10586:1;10583:13;10564:275;;;10665:6;10659:13;10692:57;10745:3;10730:13;10692:57;:::i;:::-;10685:64;;10772:57;10822:6;10772:57;:::i;:::-;10762:67;;10624:215;10611:1;10608;10604:9;10599:14;;10564:275;;;10568:14;10855:3;10848:10;;10274:590;;;;;;;:::o;10898:991::-;;11066:64;11124:5;11066:64;:::i;:::-;11146:96;11235:6;11230:3;11146:96;:::i;:::-;11139:103;;11268:3;11313:4;11305:6;11301:17;11296:3;11292:27;11343:66;11403:5;11343:66;:::i;:::-;11432:7;11463:1;11448:396;11473:6;11470:1;11467:13;11448:396;;;11544:9;11538:4;11534:20;11529:3;11522:33;11595:6;11589:13;11623:84;11702:4;11687:13;11623:84;:::i;:::-;11615:92;;11730:70;11793:6;11730:70;:::i;:::-;11720:80;;11829:4;11824:3;11820:14;11813:21;;11508:336;11495:1;11492;11488:9;11483:14;;11448:396;;;11452:14;11860:4;11853:11;;11880:3;11873:10;;11042:847;;;;;;;;;:::o;11925:732::-;;12073:54;12121:5;12073:54;:::i;:::-;12143:86;12222:6;12217:3;12143:86;:::i;:::-;12136:93;;12253:56;12303:5;12253:56;:::i;:::-;12332:7;12363:1;12348:284;12373:6;12370:1;12367:13;12348:284;;;12449:6;12443:13;12476:63;12535:3;12520:13;12476:63;:::i;:::-;12469:70;;12562:60;12615:6;12562:60;:::i;:::-;12552:70;;12408:224;12395:1;12392;12388:9;12383:14;;12348:284;;;12352:14;12648:3;12641:10;;12049:608;;;;;;;:::o;12663:99::-;12734:21;12749:5;12734:21;:::i;:::-;12729:3;12722:34;12712:50;;:::o;12768:109::-;12849:21;12864:5;12849:21;:::i;:::-;12844:3;12837:34;12827:50;;:::o;12883:344::-;;12989:39;13022:5;12989:39;:::i;:::-;13044:61;13098:6;13093:3;13044:61;:::i;:::-;13037:68;;13114:52;13159:6;13154:3;13147:4;13140:5;13136:16;13114:52;:::i;:::-;13191:29;13213:6;13191:29;:::i;:::-;13186:3;13182:39;13175:46;;12965:262;;;;;:::o;13233:364::-;;13349:39;13382:5;13349:39;:::i;:::-;13404:71;13468:6;13463:3;13404:71;:::i;:::-;13397:78;;13484:52;13529:6;13524:3;13517:4;13510:5;13506:16;13484:52;:::i;:::-;13561:29;13583:6;13561:29;:::i;:::-;13556:3;13552:39;13545:46;;13325:272;;;;;:::o;13603:374::-;;13766:67;13830:2;13825:3;13766:67;:::i;:::-;13759:74;;13863:34;13859:1;13854:3;13850:11;13843:55;13929:12;13924:2;13919:3;13915:12;13908:34;13968:2;13963:3;13959:12;13952:19;;13749:228;;;:::o;13983:388::-;;14146:67;14210:2;14205:3;14146:67;:::i;:::-;14139:74;;14243:34;14239:1;14234:3;14230:11;14223:55;14309:26;14304:2;14299:3;14295:12;14288:48;14362:2;14357:3;14353:12;14346:19;;14129:242;;;:::o;14377:322::-;;14540:67;14604:2;14599:3;14540:67;:::i;:::-;14533:74;;14637:26;14633:1;14628:3;14624:11;14617:47;14690:2;14685:3;14681:12;14674:19;;14523:176;;;:::o;14705:322::-;;14868:67;14932:2;14927:3;14868:67;:::i;:::-;14861:74;;14965:26;14961:1;14956:3;14952:11;14945:47;15018:2;15013:3;15009:12;15002:19;;14851:176;;;:::o;15033:315::-;;15196:67;15260:2;15255:3;15196:67;:::i;:::-;15189:74;;15293:19;15289:1;15284:3;15280:11;15273:40;15339:2;15334:3;15330:12;15323:19;;15179:169;;;:::o;15354:329::-;;15517:67;15581:2;15576:3;15517:67;:::i;:::-;15510:74;;15614:33;15610:1;15605:3;15601:11;15594:54;15674:2;15669:3;15665:12;15658:19;;15500:183;;;:::o;15689:375::-;;15852:67;15916:2;15911:3;15852:67;:::i;:::-;15845:74;;15949:34;15945:1;15940:3;15936:11;15929:55;16015:13;16010:2;16005:3;16001:12;15994:35;16055:2;16050:3;16046:12;16039:19;;15835:229;;;:::o;16070:328::-;;16233:67;16297:2;16292:3;16233:67;:::i;:::-;16226:74;;16330:32;16326:1;16321:3;16317:11;16310:53;16389:2;16384:3;16380:12;16373:19;;16216:182;;;:::o;16404:316::-;;16567:67;16631:2;16626:3;16567:67;:::i;:::-;16560:74;;16664:20;16660:1;16655:3;16651:11;16644:41;16711:2;16706:3;16702:12;16695:19;;16550:170;;;:::o;16726:330::-;;16889:67;16953:2;16948:3;16889:67;:::i;:::-;16882:74;;16986:34;16982:1;16977:3;16973:11;16966:55;17047:2;17042:3;17038:12;17031:19;;16872:184;;;:::o;17062:108::-;17139:24;17157:5;17139:24;:::i;:::-;17134:3;17127:37;17117:53;;:::o;17176:118::-;17263:24;17281:5;17263:24;:::i;:::-;17258:3;17251:37;17241:53;;:::o;17300:112::-;17383:22;17399:5;17383:22;:::i;:::-;17378:3;17371:35;17361:51;;:::o;17418:254::-;;17565:2;17554:9;17550:18;17542:26;;17578:87;17662:1;17651:9;17647:17;17638:6;17578:87;:::i;:::-;17532:140;;;;:::o;17678:696::-;;17937:3;17926:9;17922:19;17914:27;;17951:79;18027:1;18016:9;18012:17;18003:6;17951:79;:::i;:::-;18040:80;18116:2;18105:9;18101:18;18092:6;18040:80;:::i;:::-;18130:72;18198:2;18187:9;18183:18;18174:6;18130:72;:::i;:::-;18212;18280:2;18269:9;18265:18;18256:6;18212:72;:::i;:::-;18294:73;18362:3;18351:9;18347:19;18338:6;18294:73;:::i;:::-;17904:470;;;;;;;;:::o;18380:348::-;;18547:2;18536:9;18532:18;18524:26;;18560:79;18636:1;18625:9;18621:17;18612:6;18560:79;:::i;:::-;18649:72;18717:2;18706:9;18702:18;18693:6;18649:72;:::i;:::-;18514:214;;;;;:::o;18734:1657::-;;19293:3;19282:9;19278:19;19270:27;;19343:9;19337:4;19333:20;19329:1;19318:9;19314:17;19307:47;19371:108;19474:4;19465:6;19371:108;:::i;:::-;19363:116;;19526:9;19520:4;19516:20;19511:2;19500:9;19496:18;19489:48;19554:108;19657:4;19648:6;19554:108;:::i;:::-;19546:116;;19709:9;19703:4;19699:20;19694:2;19683:9;19679:18;19672:48;19737:108;19840:4;19831:6;19737:108;:::i;:::-;19729:116;;19892:9;19886:4;19882:20;19877:2;19866:9;19862:18;19855:48;19920:102;20017:4;20008:6;19920:102;:::i;:::-;19912:110;;20070:9;20064:4;20060:20;20054:3;20043:9;20039:19;20032:49;20098:102;20195:4;20186:6;20098:102;:::i;:::-;20090:110;;20248:9;20242:4;20238:20;20232:3;20221:9;20217:19;20210:49;20276:108;20379:4;20370:6;20276:108;:::i;:::-;20268:116;;19260:1131;;;;;;;;;:::o;20397:714::-;;20696:2;20685:9;20681:18;20673:26;;20745:9;20739:4;20735:20;20731:1;20720:9;20716:17;20709:47;20773:128;20896:4;20887:6;20773:128;:::i;:::-;20765:136;;20948:9;20942:4;20938:20;20933:2;20922:9;20918:18;20911:48;20976:128;21099:4;21090:6;20976:128;:::i;:::-;20968:136;;20663:448;;;;;:::o;21117:895::-;;21454:2;21443:9;21439:18;21431:26;;21503:9;21497:4;21493:20;21489:1;21478:9;21474:17;21467:47;21531:108;21634:4;21625:6;21531:108;:::i;:::-;21523:116;;21686:9;21680:4;21676:20;21671:2;21660:9;21656:18;21649:48;21714:108;21817:4;21808:6;21714:108;:::i;:::-;21706:116;;21869:9;21863:4;21859:20;21854:2;21843:9;21839:18;21832:48;21897:108;22000:4;21991:6;21897:108;:::i;:::-;21889:116;;21421:591;;;;;;:::o;22018:210::-;;22143:2;22132:9;22128:18;22120:26;;22156:65;22218:1;22207:9;22203:17;22194:6;22156:65;:::i;:::-;22110:118;;;;:::o;22234:313::-;;22385:2;22374:9;22370:18;22362:26;;22434:9;22428:4;22424:20;22420:1;22409:9;22405:17;22398:47;22462:78;22535:4;22526:6;22462:78;:::i;:::-;22454:86;;22352:195;;;;:::o;22553:423::-;;22732:2;22721:9;22717:18;22709:26;;22781:9;22775:4;22771:20;22767:1;22756:9;22752:17;22745:47;22809:78;22882:4;22873:6;22809:78;:::i;:::-;22801:86;;22897:72;22965:2;22954:9;22950:18;22941:6;22897:72;:::i;:::-;22699:277;;;;;:::o;22982:419::-;;23186:2;23175:9;23171:18;23163:26;;23235:9;23229:4;23225:20;23221:1;23210:9;23206:17;23199:47;23263:131;23389:4;23263:131;:::i;:::-;23255:139;;23153:248;;;:::o;23407:419::-;;23611:2;23600:9;23596:18;23588:26;;23660:9;23654:4;23650:20;23646:1;23635:9;23631:17;23624:47;23688:131;23814:4;23688:131;:::i;:::-;23680:139;;23578:248;;;:::o;23832:419::-;;24036:2;24025:9;24021:18;24013:26;;24085:9;24079:4;24075:20;24071:1;24060:9;24056:17;24049:47;24113:131;24239:4;24113:131;:::i;:::-;24105:139;;24003:248;;;:::o;24257:419::-;;24461:2;24450:9;24446:18;24438:26;;24510:9;24504:4;24500:20;24496:1;24485:9;24481:17;24474:47;24538:131;24664:4;24538:131;:::i;:::-;24530:139;;24428:248;;;:::o;24682:419::-;;24886:2;24875:9;24871:18;24863:26;;24935:9;24929:4;24925:20;24921:1;24910:9;24906:17;24899:47;24963:131;25089:4;24963:131;:::i;:::-;24955:139;;24853:248;;;:::o;25107:419::-;;25311:2;25300:9;25296:18;25288:26;;25360:9;25354:4;25350:20;25346:1;25335:9;25331:17;25324:47;25388:131;25514:4;25388:131;:::i;:::-;25380:139;;25278:248;;;:::o;25532:419::-;;25736:2;25725:9;25721:18;25713:26;;25785:9;25779:4;25775:20;25771:1;25760:9;25756:17;25749:47;25813:131;25939:4;25813:131;:::i;:::-;25805:139;;25703:248;;;:::o;25957:419::-;;26161:2;26150:9;26146:18;26138:26;;26210:9;26204:4;26200:20;26196:1;26185:9;26181:17;26174:47;26238:131;26364:4;26238:131;:::i;:::-;26230:139;;26128:248;;;:::o;26382:419::-;;26586:2;26575:9;26571:18;26563:26;;26635:9;26629:4;26625:20;26621:1;26610:9;26606:17;26599:47;26663:131;26789:4;26663:131;:::i;:::-;26655:139;;26553:248;;;:::o;26807:419::-;;27011:2;27000:9;26996:18;26988:26;;27060:9;27054:4;27050:20;27046:1;27035:9;27031:17;27024:47;27088:131;27214:4;27088:131;:::i;:::-;27080:139;;26978:248;;;:::o;27232:222::-;;27363:2;27352:9;27348:18;27340:26;;27376:71;27444:1;27433:9;27429:17;27420:6;27376:71;:::i;:::-;27330:124;;;;:::o;27460:1809::-;;27981:3;27970:9;27966:19;27958:27;;27995:71;28063:1;28052:9;28048:17;28039:6;27995:71;:::i;:::-;28113:9;28107:4;28103:20;28098:2;28087:9;28083:18;28076:48;28141:78;28214:4;28205:6;28141:78;:::i;:::-;28133:86;;28229:72;28297:2;28286:9;28282:18;28273:6;28229:72;:::i;:::-;28311;28379:2;28368:9;28364:18;28355:6;28311:72;:::i;:::-;28393:73;28461:3;28450:9;28446:19;28437:6;28393:73;:::i;:::-;28476;28544:3;28533:9;28529:19;28520:6;28476:73;:::i;:::-;28597:9;28591:4;28587:20;28581:3;28570:9;28566:19;28559:49;28625:78;28698:4;28689:6;28625:78;:::i;:::-;28617:86;;28751:9;28745:4;28741:20;28735:3;28724:9;28720:19;28713:49;28779:78;28852:4;28843:6;28779:78;:::i;:::-;28771:86;;28867:73;28935:3;28924:9;28920:19;28911:6;28867:73;:::i;:::-;28950;29018:3;29007:9;29003:19;28994:6;28950:73;:::i;:::-;29033:74;29102:3;29091:9;29087:19;29077:7;29033:74;:::i;:::-;29155:9;29149:4;29145:20;29139:3;29128:9;29124:19;29117:49;29183:79;29257:4;29247:7;29183:79;:::i;:::-;29175:87;;27948:1321;;;;;;;;;;;;;;;:::o;29275:332::-;;29434:2;29423:9;29419:18;29411:26;;29447:71;29515:1;29504:9;29500:17;29491:6;29447:71;:::i;:::-;29528:72;29596:2;29585:9;29581:18;29572:6;29528:72;:::i;:::-;29401:206;;;;;:::o;29613:214::-;;29740:2;29729:9;29725:18;29717:26;;29753:67;29817:1;29806:9;29802:17;29793:6;29753:67;:::i;:::-;29707:120;;;;:::o;29833:278::-;;29899:2;29893:9;29883:19;;29941:4;29933:6;29929:17;30048:6;30036:10;30033:22;30012:18;30000:10;29997:34;29994:62;29991:2;;;30059:13;;:::i;:::-;29991:2;30094:10;30090:2;30083:22;29873:238;;;;:::o;30117:306::-;;30284:18;30276:6;30273:30;30270:2;;;30306:13;;:::i;:::-;30270:2;30351:4;30343:6;30339:17;30331:25;;30411:4;30405;30401:15;30393:23;;30199:224;;;:::o;30429:327::-;;30581:18;30573:6;30570:30;30567:2;;;30603:13;;:::i;:::-;30567:2;30683:4;30679:9;30672:4;30664:6;30660:17;30656:33;30648:41;;30744:4;30738;30734:15;30726:23;;30496:260;;;:::o;30762:132::-;;30852:3;30844:11;;30882:4;30877:3;30873:14;30865:22;;30834:60;;;:::o;30900:129::-;;30987:3;30979:11;;31017:4;31012:3;31008:14;31000:22;;30969:60;;;:::o;31035:142::-;;31135:3;31127:11;;31165:4;31160:3;31156:14;31148:22;;31117:60;;;:::o;31183:132::-;;31273:3;31265:11;;31303:4;31298:3;31294:14;31286:22;;31255:60;;;:::o;31321:114::-;;31422:5;31416:12;31406:22;;31395:40;;;:::o;31441:111::-;;31539:5;31533:12;31523:22;;31512:40;;;:::o;31558:124::-;;31669:5;31663:12;31653:22;;31642:40;;;:::o;31688:114::-;;31789:5;31783:12;31773:22;;31762:40;;;:::o;31808:99::-;;31894:5;31888:12;31878:22;;31867:40;;;:::o;31913:113::-;;32015:4;32010:3;32006:14;31998:22;;31988:38;;;:::o;32032:110::-;;32131:4;32126:3;32122:14;32114:22;;32104:38;;;:::o;32148:123::-;;32260:4;32255:3;32251:14;32243:22;;32233:38;;;:::o;32277:113::-;;32379:4;32374:3;32370:14;32362:22;;32352:38;;;:::o;32396:184::-;;32529:6;32524:3;32517:19;32569:4;32564:3;32560:14;32545:29;;32507:73;;;;:::o;32586:181::-;;32716:6;32711:3;32704:19;32756:4;32751:3;32747:14;32732:29;;32694:73;;;;:::o;32773:194::-;;32916:6;32911:3;32904:19;32956:4;32951:3;32947:14;32932:29;;32894:73;;;;:::o;32973:184::-;;33106:6;33101:3;33094:19;33146:4;33141:3;33137:14;33122:29;;33084:73;;;;:::o;33163:159::-;;33271:6;33266:3;33259:19;33311:4;33306:3;33302:14;33287:29;;33249:73;;;;:::o;33328:169::-;;33446:6;33441:3;33434:19;33486:4;33481:3;33477:14;33462:29;;33424:73;;;;:::o;33503:96::-;;33569:24;33587:5;33569:24;:::i;:::-;33558:35;;33548:51;;;:::o;33605:104::-;;33679:24;33697:5;33679:24;:::i;:::-;33668:35;;33658:51;;;:::o;33715:90::-;;33792:5;33785:13;33778:21;33767:32;;33757:48;;;:::o;33811:126::-;;33888:42;33881:5;33877:54;33866:65;;33856:81;;;:::o;33943:77::-;;34009:5;33998:16;;33988:32;;;:::o;34026:86::-;;34101:4;34094:5;34090:16;34079:27;;34069:43;;;:::o;34118:134::-;;34209:37;34240:5;34209:37;:::i;:::-;34196:50;;34186:66;;;:::o;34258:126::-;;34341:37;34372:5;34341:37;:::i;:::-;34328:50;;34318:66;;;:::o;34390:113::-;;34473:24;34491:5;34473:24;:::i;:::-;34460:37;;34450:53;;;:::o;34509:154::-;34593:6;34588:3;34583;34570:30;34655:1;34646:6;34641:3;34637:16;34630:27;34560:103;;;:::o;34669:307::-;34737:1;34747:113;34761:6;34758:1;34755:13;34747:113;;;34846:1;34841:3;34837:11;34831:18;34827:1;34822:3;34818:11;34811:39;34783:2;34780:1;34776:10;34771:15;;34747:113;;;34878:6;34875:1;34872:13;34869:2;;;34958:1;34949:6;34944:3;34940:16;34933:27;34869:2;34718:258;;;;:::o;34982:48::-;35015:9;35036:102;;35128:2;35124:7;35119:2;35112:5;35108:14;35104:28;35094:38;;35084:54;;;:::o;35144:122::-;35217:24;35235:5;35217:24;:::i;:::-;35210:5;35207:35;35197:2;;35256:1;35253;35246:12;35197:2;35187:79;:::o;35272:138::-;35353:32;35379:5;35353:32;:::i;:::-;35346:5;35343:43;35333:2;;35400:1;35397;35390:12;35333:2;35323:87;:::o;35416:116::-;35486:21;35501:5;35486:21;:::i;:::-;35479:5;35476:32;35466:2;;35522:1;35519;35512:12;35466:2;35456:76;:::o;35538:122::-;35611:24;35629:5;35611:24;:::i;:::-;35604:5;35601:35;35591:2;;35650:1;35647;35640:12;35591:2;35581:79;:::o
Swarm Source
ipfs://6234e2fe8326eb8b5f53d69adbd0fcb3cf67498ecf99544129e361e0d44ff83a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.