Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
418 CC
Holders
90
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
45 CCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CultureCodes
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-03 */ // SPDX-License-Identifier: MIT pragma solidity 0.7.6; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom(address from, address to, uint256 tokenId) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } interface ERC721TokenReceiver{ function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a); return c; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract CultureCodes is IERC721, Ownable { using SafeMath for uint256; bytes4 internal constant _ERC721_RECEIVED = 0x150b7a02; string public proof; uint256 internal numTokens = 0; uint256 public constant TOKEN_LIMIT = 1000; uint256 public price = 0.15 ether; //1000000000000000000 wei = 1 ETH mapping(bytes4 => bool) internal supportedInterfaces; mapping (uint256 => address) internal idToOwner; mapping (uint256 => address) internal idToApproval; mapping (uint256 => uint256) internal idToOwnerIndex; mapping (address => mapping (address => bool)) internal ownerToOperators; mapping (address => uint256[]) internal ownerToIds; string internal NFTname = "CultureCodes"; string internal NFTsymbol = "CC"; string private _contractURI; string private _tokenBaseURI; bool public locked; bool public publicsale; bool public holdermint; //Grants: mapping(address => bool) internal grants; mapping(address => mapping (uint256 => bool)) private _grantedToken; address private _signerAddress; uint[TOKEN_LIMIT] internal indices; // location where token(the key) is available, the value of map in range from 1 to TOKEN_LIMIT: mapping ( uint256 => uint256) internal availablein; modifier notLocked { require(!locked, "Locked"); _; } bool private reentrancyLock = false; modifier reentrancyGuard { if (reentrancyLock) { revert(); } reentrancyLock = true; _; reentrancyLock = false; } modifier canOperate(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender], "Cannot operate."); _; } modifier canTransfer(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || idToApproval[_tokenId] == msg.sender || ownerToOperators[tokenOwner][msg.sender], "Cannot transfer." ); _; } modifier validNFToken(uint256 _tokenId) { require(idToOwner[_tokenId] != address(0), "Invalid token."); _; } constructor() { supportedInterfaces[0x01ffc9a7] = true; // ERC165 supportedInterfaces[0x80ac58cd] = true; // ERC721 supportedInterfaces[0x780e9d63] = true; // ERC721 Enumerable supportedInterfaces[0x5b5e139f] = true; // ERC721 Metadata grants[0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D] = true; //free mint granted for BAYC _signerAddress = 0xfeFF9016EFBb5fccAdb87444285BFEd17E1a071A; } //ERC 721 and 165 function isContract(address _addr) internal view returns (bool addressCheck) { uint256 size; assembly { size := extcodesize(_addr) } // solhint-disable-line addressCheck = size > 0; } function supportsInterface(bytes4 _interfaceID) external view override returns (bool) { return supportedInterfaces[_interfaceID]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata _data) external override { _safeTransferFrom(_from, _to, _tokenId, _data); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) external override { _safeTransferFrom(_from, _to, _tokenId, ""); } function transferFrom(address _from, address _to, uint256 _tokenId) external override canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, "Wrong from address."); require(_to != address(0), "Cannot send to 0x0."); _transfer(_to, _tokenId); } function approve(address _approved, uint256 _tokenId) external override canOperate(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(_approved != tokenOwner); idToApproval[_tokenId] = _approved; emit Approval(tokenOwner, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) external override { ownerToOperators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } function balanceOf(address _owner) external view override returns (uint256) { require(_owner != address(0)); return _getOwnerNFTCount(_owner); } function ownerOf(uint256 _tokenId) external view override returns (address _owner) { require(idToOwner[_tokenId] != address(0)); _owner = idToOwner[_tokenId]; } function getApproved(uint256 _tokenId) external view override validNFToken(_tokenId) returns (address) { return idToApproval[_tokenId]; } function isApprovedForAll(address _owner, address _operator) external override view returns (bool) { return ownerToOperators[_owner][_operator]; } function _transfer(address _to, uint256 _tokenId) internal { address from = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(from, _tokenId); _addNFToken(_to, _tokenId); emit Transfer(from, _to, _tokenId); } function randomIndex() internal returns (uint) { uint totalSize = TOKEN_LIMIT - numTokens; uint index = uint(keccak256(abi.encodePacked(numTokens, msg.sender, block.difficulty, block.timestamp))) % totalSize; uint value = 0; if (indices[index] != 0) { value = indices[index]; } else { value = index; } if (indices[totalSize - 1] == 0) { indices[index] = totalSize - 1; } else { indices[index] = indices[totalSize - 1]; } return value.add(1); } function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { require(signature.length == 65); bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := byte(0, mload(add(signature, 96))) } if (v < 27) { v += 27; } require(v == 27 || v == 28); return ecrecover(hash, v, r, s); } function HolderMint(bytes calldata signature, uint256 token ) external payable reentrancyGuard { require(holdermint, "HOLDERS MINT CLOSED"); require(idToOwner[token] == address(0),"Token Already Migrated"); bytes32 hash = keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256( abi.encodePacked( msg.sender,token,address(this) ) ) ) ); require(recover(hash, signature)==_signerAddress, "INVALID SIGNATURE"); uint256 index = TOKEN_LIMIT - numTokens - 1 ; uint256 value = indices[index] ;//last available value uint256 loc; if(availablein[token-1] == 0) loc = token-1; else loc = availablein[token-1]-1; if( value == 0 ){ indices[ loc ] = index; } else{ indices[ loc ] = value; } availablein[ indices[loc] ] = loc + 1 ; numTokens = numTokens + 1; _addNFToken(msg.sender, token); emit Transfer(address(0), msg.sender, token); } function HolderMintBatch(bytes calldata signature, uint256[] calldata tokens ) external payable reentrancyGuard { require(holdermint, "HOLDERS MINT CLOSED"); string memory tokenlist = toString(tokens[0]); for(uint256 i = 1; i < tokens.length; i++) { tokenlist = string( abi.encodePacked( tokenlist, ",", toString(tokens[i]) ) ); } bytes32 hash = keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", keccak256( abi.encodePacked( msg.sender,tokenlist,address(this) ) ) ) ); require(recover(hash, signature)==_signerAddress, "INVALID SIGNATURE"); for(uint256 i = 0; i < tokens.length; i++) { if(idToOwner[tokens[i]] == address(0)){ uint256 index = TOKEN_LIMIT - numTokens - 1 ; uint256 value = indices[index] ;//last available value uint256 loc; if(availablein[tokens[i]-1] == 0) loc = tokens[i]-1; else loc = availablein[tokens[i]-1]-1; if( value == 0 ){ indices[ loc ] = index; } else{ indices[ loc ] = value; } availablein[ indices[loc] ] = loc + 1 ; numTokens = numTokens + 1; _addNFToken(msg.sender, tokens[i]); emit Transfer(address(0), msg.sender, tokens[i]); } } } function GrantMint(address collection, uint useId) external payable reentrancyGuard { require(publicsale, "PUBLIC SALE NOT OPEN"); require(grants[collection], "Collection not granted"); require(IERC721(collection).ownerOf(useId) == msg.sender, "Not the token owner"); require(!_grantedToken[collection][useId],"Token Already Granted"); require(numTokens.add(1) <= TOKEN_LIMIT, "Exceed supply"); _mint(msg.sender); _grantedToken[collection][useId] = true; } function PublicMint(uint quantity) external payable reentrancyGuard { require(publicsale, "PUBLIC SALE NOT OPEN"); require(quantity > 0 , "Can't be 0"); require(numTokens.add(quantity) <= TOKEN_LIMIT, "Exceed supply"); require(msg.value >= price.mul(quantity), "Insufficient funds."); for(uint i = 0; i < quantity; i++) { _mint(msg.sender); } } function _mint(address _to ) internal { uint256 _id = randomIndex(); numTokens = numTokens + 1; _addNFToken(_to, _id); emit Transfer(address(0), _to, _id); } function withdraw() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } function _addNFToken(address _to, uint256 _tokenId) internal { require(idToOwner[_tokenId] == address(0), "Already owned."); idToOwner[_tokenId] = _to; ownerToIds[_to].push(_tokenId); idToOwnerIndex[_tokenId] = ownerToIds[_to].length.sub(1); } function _removeNFToken(address _from, uint256 _tokenId) internal { require(idToOwner[_tokenId] == _from, "Incorrect owner."); delete idToOwner[_tokenId]; uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId]; uint256 lastTokenIndex = ownerToIds[_from].length.sub(1); if (lastTokenIndex != tokenToRemoveIndex) { uint256 lastToken = ownerToIds[_from][lastTokenIndex]; ownerToIds[_from][tokenToRemoveIndex] = lastToken; idToOwnerIndex[lastToken] = tokenToRemoveIndex; } ownerToIds[_from].pop(); } function _getOwnerNFTCount(address _owner) internal view returns (uint256) { return ownerToIds[_owner].length; } function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) private canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, "Incorrect owner."); require(_to != address(0)); _transfer(_to, _tokenId); if (isContract(_to)) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == _ERC721_RECEIVED); } } function _clearApproval(uint256 _tokenId) private { if (idToApproval[_tokenId] != address(0)) { delete idToApproval[_tokenId]; } } function totalSupply() public view returns (uint256) { return numTokens; } function tokenByIndex(uint256 index) public pure returns (uint256) { require(index >= 0 && index < TOKEN_LIMIT); return index+1; } function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256) { require(_index < ownerToIds[_owner].length); return ownerToIds[_owner][_index]; } function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); uint256 index = digits - 1; temp = value; while (temp != 0) { buffer[index--] = bytes1(uint8(48 + temp % 10)); temp /= 10; } return string(buffer); } function name() external view returns (string memory _name) { _name = NFTname; } function symbol() external view returns (string memory _symbol) { _symbol = NFTsymbol; } function tokenURI(uint256 _tokenId) external view validNFToken(_tokenId) returns (string memory) { return string(abi.encodePacked(_tokenBaseURI, toString(_tokenId))); } function contractURI() public view returns (string memory) { return _contractURI; } function lockMetadata() external onlyOwner { locked = true; } function setBaseURI(string calldata URI) external onlyOwner notLocked { _tokenBaseURI = URI; } function setContractURI(string calldata URI) external onlyOwner notLocked { _contractURI = URI; } function setSignerAddress(address addr) external onlyOwner { _signerAddress = addr; } function toggleCollection(address collection) external onlyOwner { grants[collection] = !grants[collection]; } function toggleHolderMint() external onlyOwner { holdermint = !holdermint; } function togglePublicSale() external onlyOwner { publicsale = !publicsale; } function setPrice(uint256 _newPrice) public onlyOwner { price = _newPrice; } function setProvenanceHash(string calldata hash) external onlyOwner notLocked { proof = hash; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"useId","type":"uint256"}],"name":"GrantMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"token","type":"uint256"}],"name":"HolderMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"HolderMintBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"PublicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"TOKEN_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdermint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proof","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicsale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"hash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setSignerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collection","type":"address"}],"name":"toggleCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleHolderMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600255670214e8348c4f00006003556040518060400160405280600c81526020017f43756c74757265436f6465730000000000000000000000000000000000000000815250600a908051906020019062000062929190620003d6565b506040518060400160405280600281526020017f4343000000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000b0929190620003d6565b5060006103fb60006101000a81548160ff021916908315150217905550348015620000da57600080fd5b50620000fb620000ef6200030a60201b60201c565b6200031260201b60201c565b6001600460006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600063780e9d6360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600073bc4ca0eda7647a8ab7c2061c2e118a18a936f13d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073feff9016efbb5fccadb87444285bfed17e1a071a601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200040e57600085556200045a565b82601f106200042957805160ff19168380011785556200045a565b828001600101855582156200045a579182015b82811115620004595782518255916020019190600101906200043c565b5b5090506200046991906200046d565b5090565b5b80821115620004885760008160009055506001016200046e565b5090565b6152d5806200049c6000396000f3fe60806040526004361061023b5760003560e01c80638da5cb5b1161012e578063b94805a2116100ab578063e222c7f91161006f578063e222c7f914610ed0578063e8a3d48514610ee7578063e985e9c514610f77578063f2fde38b14610ffe578063faf924cf1461104f5761023b565b8063b94805a214610ca3578063c87b56dd14610cd0578063cdd04a8314610d84578063cf30901214610dd5578063dccc13c214610e025761023b565b80639fb17e34116100f25780639fb17e3414610af0578063a035b1fe14610b1e578063a22cb46514610b49578063a6730ce514610ba6578063b88d4fde14610bd35761023b565b80638da5cb5b1461094757806391b7f5ed14610988578063938e3d7b146109c357806395d89b4114610a49578063989bdbb614610ad95761023b565b80632f745c59116101bc5780636352211e116101805780636352211e146107cc57806370a0823114610831578063715018a6146108965780637d6f389e146108ad5780637dbb1eaa146108c45761023b565b80632f745c59146105f65780633ccfd60b1461066557806342842e0e1461067c5780634f6ccce7146106f757806355f804b3146107465761023b565b8063095ea7b311610203578063095ea7b3146104215780630d3bebae1461047c57806310969523146104ca57806318160ddd1461055057806323b872dd1461057b5761023b565b806301ffc9a714610240578063031bd4c4146102b0578063046dc166146102db57806306fdde031461032c578063081812fc146103bc575b600080fd5b34801561024c57600080fd5b506102986004803603602081101561026357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110df565b60405180821515815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5611147565b6040518082815260200191505060405180910390f35b3480156102e757600080fd5b5061032a600480360360208110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114d565b005b34801561033857600080fd5b50610341611240565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610381578082015181840152602081019050610366565b50505050905090810190601f1680156103ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c857600080fd5b506103f5600480360360208110156103df57600080fd5b81019080803590602001909291905050506112e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042d57600080fd5b5061047a6004803603604081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f7565b005b6104c86004803603604081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175f565b005b3480156104d657600080fd5b5061054e600480360360208110156104ed57600080fd5b810190808035906020019064010000000081111561050a57600080fd5b82018360208201111561051c57600080fd5b8035906020019184600183028401116401000000008311171561053e57600080fd5b9091929391929390505050611bf3565b005b34801561055c57600080fd5b50610565611d3b565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b506105f46004803603606081101561059e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d45565b005b34801561060257600080fd5b5061064f6004803603604081101561061957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061217f565b6040518082815260200191505060405180910390f35b34801561067157600080fd5b5061067a61222c565b005b34801561068857600080fd5b506106f56004803603606081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612324565b005b34801561070357600080fd5b506107306004803603602081101561071a57600080fd5b8101908080359060200190929190505050612344565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b506107ca6004803603602081101561076957600080fd5b810190808035906020019064010000000081111561078657600080fd5b82018360208201111561079857600080fd5b803590602001918460018302840111640100000000831117156107ba57600080fd5b909192939192939050505061236b565b005b3480156107d857600080fd5b50610805600480360360208110156107ef57600080fd5b81019080803590602001909291905050506124b3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083d57600080fd5b506108806004803603602081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061255c565b6040518082815260200191505060405180910390f35b3480156108a257600080fd5b506108ab6125a7565b005b3480156108b957600080fd5b506108c2612662565b005b610945600480360360408110156108da57600080fd5b81019080803590602001906401000000008111156108f757600080fd5b82018360208201111561090957600080fd5b8035906020019184600183028401116401000000008311171561092b57600080fd5b90919293919293908035906020019092919050505061273d565b005b34801561095357600080fd5b5061095c612bfb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099457600080fd5b506109c1600480360360208110156109ab57600080fd5b8101908080359060200190929190505050612c24565b005b3480156109cf57600080fd5b50610a47600480360360208110156109e657600080fd5b8101908080359060200190640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846001830284011164010000000083111715610a3757600080fd5b9091929391929390505050612cdd565b005b348015610a5557600080fd5b50610a5e612e25565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a9e578082015181840152602081019050610a83565b50505050905090810190601f168015610acb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ae557600080fd5b50610aee612ec7565b005b610b1c60048036036020811015610b0657600080fd5b8101908080359060200190929190505050612f93565b005b348015610b2a57600080fd5b50610b33613219565b6040518082815260200191505060405180910390f35b348015610b5557600080fd5b50610ba460048036036040811015610b6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061321f565b005b348015610bb257600080fd5b50610bbb61331e565b60405180821515815260200191505060405180910390f35b348015610bdf57600080fd5b50610ca160048036036080811015610bf657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c5d57600080fd5b820183602082011115610c6f57600080fd5b80359060200191846001830284011164010000000083111715610c9157600080fd5b9091929391929390505050613331565b005b348015610caf57600080fd5b50610cb8613388565b60405180821515815260200191505060405180910390f35b348015610cdc57600080fd5b50610d0960048036036020811015610cf357600080fd5b810190808035906020019092919050505061339b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d49578082015181840152602081019050610d2e565b50505050905090810190601f168015610d765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d9057600080fd5b50610dd360048036036020811015610da757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061354b565b005b348015610de157600080fd5b50610dea6136a1565b60405180821515815260200191505060405180910390f35b610ece60048036036040811015610e1857600080fd5b8101908080359060200190640100000000811115610e3557600080fd5b820183602082011115610e4757600080fd5b80359060200191846001830284011164010000000083111715610e6957600080fd5b909192939192939080359060200190640100000000811115610e8a57600080fd5b820183602082011115610e9c57600080fd5b80359060200191846020830284011164010000000083111715610ebe57600080fd5b90919293919293905050506136b4565b005b348015610edc57600080fd5b50610ee5613d1d565b005b348015610ef357600080fd5b50610efc613df8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f3c578082015181840152602081019050610f21565b50505050905090810190601f168015610f695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f8357600080fd5b50610fe660048036036040811015610f9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e9a565b60405180821515815260200191505060405180910390f35b34801561100a57600080fd5b5061104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f2e565b005b34801561105b57600080fd5b5061106461406f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a4578082015181840152602081019050611089565b50505050905090810190601f1680156110d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060046000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6103e881565b61115561410d565b73ffffffffffffffffffffffffffffffffffffffff16611173612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112d85780601f106112ad576101008083540402835291602001916112d8565b820191906000526020600020905b8154815290600101906020018083116112bb57829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b6006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b8060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806114f05750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43616e6e6f74206f7065726174652e000000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156116aa57600080fd5b856006600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b6103fb60009054906101000a900460ff161561177a57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16611818576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5055424c49432053414c45204e4f54204f50454e00000000000000000000000081525060200191505060405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436f6c6c656374696f6e206e6f74206772616e7465640000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d602081101561196957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f742074686520746f6b656e206f776e65720000000000000000000000000081525060200191505060405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009054906101000a900460ff1615611ad4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e20416c7265616479204772616e746564000000000000000000000081525060200191505060405180910390fd5b6103e8611aed600160025461411590919063ffffffff16565b1115611b61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f45786365656420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b611b6a3361412f565b6001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060006103fb60006101000a81548160ff0219169083151502179055505050565b611bfb61410d565b73ffffffffffffffffffffffffffffffffffffffff16611c19612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614611ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff1615611d25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818160019190611d369291906151ce565b505050565b6000600254905090565b8060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611e1657503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611ea75750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ff0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f57726f6e672066726f6d20616464726573732e0000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561216c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f742073656e6420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b61217686866141b1565b50505050505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082106121cf57600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061221957fe5b9060005260206000200154905092915050565b61223461410d565b73ffffffffffffffffffffffffffffffffffffffff16612252612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612321573d6000803e3d6000fd5b50565b61233f83838360405180602001604052806000815250614266565b505050565b600080821015801561235757506103e882105b61236057600080fd5b600182019050919050565b61237361410d565b73ffffffffffffffffffffffffffffffffffffffff16612391612bfb565b73ffffffffffffffffffffffffffffffffffffffff161461241a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff161561249d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8181600d91906124ae9291906151ce565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561252157600080fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561259757600080fd5b6125a0826147d4565b9050919050565b6125af61410d565b73ffffffffffffffffffffffffffffffffffffffff166125cd612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6126606000614820565b565b61266a61410d565b73ffffffffffffffffffffffffffffffffffffffff16612688612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612711576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b6103fb60009054906101000a900460ff161561275857600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60029054906101000a900460ff166127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f484f4c44455253204d494e5420434c4f5345440000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f546f6b656e20416c7265616479204d696772617465640000000000000000000081525060200191505060405180910390fd5b6000338230604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140193505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a0d8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506148e4565b73ffffffffffffffffffffffffffffffffffffffff1614612a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f494e56414c4944205349474e415455524500000000000000000000000000000081525060200191505060405180910390fd5b600060016002546103e80303905060006012826103e88110612ab457fe5b015490506000806103fa6000600188038152602001908152602001600020541415612ae457600185039050612b02565b60016103fa6000600188038152602001908152602001600020540390505b6000821415612b2457826012826103e88110612b1a57fe5b0181905550612b39565b816012826103e88110612b3357fe5b01819055505b600181016103fa60006012846103e88110612b5057fe5b0154815260200190815260200160002081905550600160025401600281905550612b7a33866149b1565b843373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505060006103fb60006101000a81548160ff021916908315150217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612c2c61410d565b73ffffffffffffffffffffffffffffffffffffffff16612c4a612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060038190555050565b612ce561410d565b73ffffffffffffffffffffffffffffffffffffffff16612d03612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612d8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff1615612e0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8181600c9190612e209291906151ce565b505050565b6060600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ebd5780601f10612e9257610100808354040283529160200191612ebd565b820191906000526020600020905b815481529060010190602001808311612ea057829003601f168201915b5050505050905090565b612ecf61410d565b73ffffffffffffffffffffffffffffffffffffffff16612eed612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612f76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600e60006101000a81548160ff021916908315150217905550565b6103fb60009054906101000a900460ff1615612fae57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff1661304c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5055424c49432053414c45204e4f54204f50454e00000000000000000000000081525060200191505060405180910390fd5b600081116130c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f43616e277420626520300000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e86130da8260025461411590919063ffffffff16565b111561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f45786365656420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b61316381600354614baf90919063ffffffff16565b3410156131d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e742066756e64732e0000000000000000000000000081525060200191505060405180910390fd5b60005b818110156131f9576131ec3361412f565b80806001019150506131db565b5060006103fb60006101000a81548160ff02191690831515021790555050565b60035481565b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b600e60029054906101000a900460ff1681565b61338185858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614266565b5050505050565b600e60019054906101000a900460ff1681565b606081600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b600d61347f84614be3565b60405160200180838054600181600116156101000203166002900480156134dd5780601f106134bb5761010080835404028352918201916134dd565b820191906000526020600020905b8154815290600101906020018083116134c9575b505082805190602001908083835b6020831061350e57805182526020820191506020810190506020830392506134eb565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b61355361410d565b73ffffffffffffffffffffffffffffffffffffffff16613571612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146135fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e60009054906101000a900460ff1681565b6103fb60009054906101000a900460ff16156136cf57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60029054906101000a900460ff1661376d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f484f4c44455253204d494e5420434c4f5345440000000000000000000000000081525060200191505060405180910390fd5b600061378b8383600081811061377f57fe5b90506020020135614be3565b90506000600190505b838390508110156138ae57816137bb8585848181106137af57fe5b90506020020135614be3565b6040516020018083805190602001908083835b602083106137f157805182526020820191506020810190506020830392506137ce565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831061386a5780518252602082019150602081019050602083039250613847565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291508080600101915050613794565b506000338230604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b6020831061390957805182526020820191506020810190506020830392506138e6565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140193505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a3c8288888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506148e4565b73ffffffffffffffffffffffffffffffffffffffff1614613ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f494e56414c4944205349474e415455524500000000000000000000000000000081525060200191505060405180910390fd5b60005b84849050811015613cf857600073ffffffffffffffffffffffffffffffffffffffff1660056000878785818110613afb57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ceb57600060016002546103e80303905060006012826103e88110613b6b57fe5b015490506000806103fa600060018b8b89818110613b8557fe5b90506020020135038152602001908152602001600020541415613bbf576001888886818110613bb057fe5b90506020020135039050613bef565b60016103fa600060018b8b89818110613bd457fe5b90506020020135038152602001908152602001600020540390505b6000821415613c1157826012826103e88110613c0757fe5b0181905550613c26565b816012826103e88110613c2057fe5b01819055505b600181016103fa60006012846103e88110613c3d57fe5b0154815260200190815260200160002081905550600160025401600281905550613c7933898987818110613c6d57fe5b905060200201356149b1565b878785818110613c8557fe5b905060200201353373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505b8080600101915050613ac8565b50505060006103fb60006101000a81548160ff02191690831515021790555050505050565b613d2561410d565b73ffffffffffffffffffffffffffffffffffffffff16613d43612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614613dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e905780601f10613e6557610100808354040283529160200191613e90565b820191906000526020600020905b815481529060010190602001808311613e7357829003601f168201915b5050505050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613f3661410d565b73ffffffffffffffffffffffffffffffffffffffff16613f54612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614613fdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061527a6026913960400191505060405180910390fd5b61406c81614820565b50565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141055780601f106140da57610100808354040283529160200191614105565b820191906000526020600020905b8154815290600101906020018083116140e857829003601f168201915b505050505081565b600033905090565b600081830190508281101561412957600080fd5b92915050565b6000614139614d2a565b905060016002540160028190555061415182826149b1565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506141f282614e4d565b6141fc8183614eee565b61420683836149b1565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061433757503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806143c85750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61443a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146145ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561462457600080fd5b61462e87876141b1565b614637876151a1565b156147ca5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156146eb5780820151818401526020810190506146d0565b50505050905090810190601f1680156147185780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561473a57600080fd5b505af115801561474e573d6000803e3d6000fd5b505050506040513d602081101561476457600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146147c857600080fd5b505b5050505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060418251146148f457600080fd5b60008060006020850151925060408501519150606085015160001a9050601b8160ff16101561492457601b810190505b601b8160ff1614806149395750601c8160ff16145b61494257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561499c573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c7265616479206f776e65642e00000000000000000000000000000000000081525060200191505060405180910390fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055614b946001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506151b490919063ffffffff16565b60076000838152602001908152602001600020819055505050565b600080831415614bc25760009050614bdd565b818302905081838281614bd157fe5b0414614bdc57600080fd5b5b92915050565b60606000821415614c2b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050614d25565b600082905060005b60008214614c55578080600101915050600a8281614c4d57fe5b049150614c33565b60008167ffffffffffffffff81118015614c6e57600080fd5b506040519080825280601f01601f191660200182016040528015614ca15781602001600182028036833780820191505090505b50905060006001830390508593505b60008414614d1d57600a8481614cc257fe5b0660300160f81b82828060019003935081518110614cdc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481614d1557fe5b049350614cb0565b819450505050505b919050565b6000806002546103e8039050600081600254334442604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c81614d9d57fe5b0690506000806012836103e88110614db157fe5b015414614dcf576012826103e88110614dc657fe5b01549050614dd3565b8190505b60006012600185036103e88110614de657fe5b01541415614e0a57600183036012836103e88110614e0057fe5b0181905550614e31565b6012600184036103e88110614e1b57fe5b01546012836103e88110614e2b57fe5b01819055505b614e4560018261411590919063ffffffff16565b935050505090565b600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614eeb576006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50565b8173ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560006007600083815260200190815260200160002054905060006150686001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506151b490919063ffffffff16565b905081811461513d576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106150bd57fe5b9060005260206000200154905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061511557fe5b9060005260206000200181905550826007600083815260200190815260200160002081905550505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061518557fe5b6001900381819060005260206000200160009055905550505050565b600080823b905060008111915050919050565b6000828211156151c357600080fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615204576000855561524b565b82601f1061521d57803560ff191683800117855561524b565b8280016001018555821561524b579182015b8281111561524a57823582559160200191906001019061522f565b5b509050615258919061525c565b5090565b5b8082111561527557600081600090555060010161525d565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220fd093b68607fe0239bf0ea5e8320bda8ad01fb0943d4df07c06649216dd8246d64736f6c63430007060033
Deployed Bytecode
0x60806040526004361061023b5760003560e01c80638da5cb5b1161012e578063b94805a2116100ab578063e222c7f91161006f578063e222c7f914610ed0578063e8a3d48514610ee7578063e985e9c514610f77578063f2fde38b14610ffe578063faf924cf1461104f5761023b565b8063b94805a214610ca3578063c87b56dd14610cd0578063cdd04a8314610d84578063cf30901214610dd5578063dccc13c214610e025761023b565b80639fb17e34116100f25780639fb17e3414610af0578063a035b1fe14610b1e578063a22cb46514610b49578063a6730ce514610ba6578063b88d4fde14610bd35761023b565b80638da5cb5b1461094757806391b7f5ed14610988578063938e3d7b146109c357806395d89b4114610a49578063989bdbb614610ad95761023b565b80632f745c59116101bc5780636352211e116101805780636352211e146107cc57806370a0823114610831578063715018a6146108965780637d6f389e146108ad5780637dbb1eaa146108c45761023b565b80632f745c59146105f65780633ccfd60b1461066557806342842e0e1461067c5780634f6ccce7146106f757806355f804b3146107465761023b565b8063095ea7b311610203578063095ea7b3146104215780630d3bebae1461047c57806310969523146104ca57806318160ddd1461055057806323b872dd1461057b5761023b565b806301ffc9a714610240578063031bd4c4146102b0578063046dc166146102db57806306fdde031461032c578063081812fc146103bc575b600080fd5b34801561024c57600080fd5b506102986004803603602081101561026357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506110df565b60405180821515815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5611147565b6040518082815260200191505060405180910390f35b3480156102e757600080fd5b5061032a600480360360208110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114d565b005b34801561033857600080fd5b50610341611240565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610381578082015181840152602081019050610366565b50505050905090810190601f1680156103ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c857600080fd5b506103f5600480360360208110156103df57600080fd5b81019080803590602001909291905050506112e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042d57600080fd5b5061047a6004803603604081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f7565b005b6104c86004803603604081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061175f565b005b3480156104d657600080fd5b5061054e600480360360208110156104ed57600080fd5b810190808035906020019064010000000081111561050a57600080fd5b82018360208201111561051c57600080fd5b8035906020019184600183028401116401000000008311171561053e57600080fd5b9091929391929390505050611bf3565b005b34801561055c57600080fd5b50610565611d3b565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b506105f46004803603606081101561059e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d45565b005b34801561060257600080fd5b5061064f6004803603604081101561061957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061217f565b6040518082815260200191505060405180910390f35b34801561067157600080fd5b5061067a61222c565b005b34801561068857600080fd5b506106f56004803603606081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612324565b005b34801561070357600080fd5b506107306004803603602081101561071a57600080fd5b8101908080359060200190929190505050612344565b6040518082815260200191505060405180910390f35b34801561075257600080fd5b506107ca6004803603602081101561076957600080fd5b810190808035906020019064010000000081111561078657600080fd5b82018360208201111561079857600080fd5b803590602001918460018302840111640100000000831117156107ba57600080fd5b909192939192939050505061236b565b005b3480156107d857600080fd5b50610805600480360360208110156107ef57600080fd5b81019080803590602001909291905050506124b3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083d57600080fd5b506108806004803603602081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061255c565b6040518082815260200191505060405180910390f35b3480156108a257600080fd5b506108ab6125a7565b005b3480156108b957600080fd5b506108c2612662565b005b610945600480360360408110156108da57600080fd5b81019080803590602001906401000000008111156108f757600080fd5b82018360208201111561090957600080fd5b8035906020019184600183028401116401000000008311171561092b57600080fd5b90919293919293908035906020019092919050505061273d565b005b34801561095357600080fd5b5061095c612bfb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099457600080fd5b506109c1600480360360208110156109ab57600080fd5b8101908080359060200190929190505050612c24565b005b3480156109cf57600080fd5b50610a47600480360360208110156109e657600080fd5b8101908080359060200190640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846001830284011164010000000083111715610a3757600080fd5b9091929391929390505050612cdd565b005b348015610a5557600080fd5b50610a5e612e25565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a9e578082015181840152602081019050610a83565b50505050905090810190601f168015610acb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ae557600080fd5b50610aee612ec7565b005b610b1c60048036036020811015610b0657600080fd5b8101908080359060200190929190505050612f93565b005b348015610b2a57600080fd5b50610b33613219565b6040518082815260200191505060405180910390f35b348015610b5557600080fd5b50610ba460048036036040811015610b6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061321f565b005b348015610bb257600080fd5b50610bbb61331e565b60405180821515815260200191505060405180910390f35b348015610bdf57600080fd5b50610ca160048036036080811015610bf657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c5d57600080fd5b820183602082011115610c6f57600080fd5b80359060200191846001830284011164010000000083111715610c9157600080fd5b9091929391929390505050613331565b005b348015610caf57600080fd5b50610cb8613388565b60405180821515815260200191505060405180910390f35b348015610cdc57600080fd5b50610d0960048036036020811015610cf357600080fd5b810190808035906020019092919050505061339b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d49578082015181840152602081019050610d2e565b50505050905090810190601f168015610d765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d9057600080fd5b50610dd360048036036020811015610da757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061354b565b005b348015610de157600080fd5b50610dea6136a1565b60405180821515815260200191505060405180910390f35b610ece60048036036040811015610e1857600080fd5b8101908080359060200190640100000000811115610e3557600080fd5b820183602082011115610e4757600080fd5b80359060200191846001830284011164010000000083111715610e6957600080fd5b909192939192939080359060200190640100000000811115610e8a57600080fd5b820183602082011115610e9c57600080fd5b80359060200191846020830284011164010000000083111715610ebe57600080fd5b90919293919293905050506136b4565b005b348015610edc57600080fd5b50610ee5613d1d565b005b348015610ef357600080fd5b50610efc613df8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f3c578082015181840152602081019050610f21565b50505050905090810190601f168015610f695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f8357600080fd5b50610fe660048036036040811015610f9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e9a565b60405180821515815260200191505060405180910390f35b34801561100a57600080fd5b5061104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f2e565b005b34801561105b57600080fd5b5061106461406f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a4578082015181840152602081019050611089565b50505050905090810190601f1680156110d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060046000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6103e881565b61115561410d565b73ffffffffffffffffffffffffffffffffffffffff16611173612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112d85780601f106112ad576101008083540402835291602001916112d8565b820191906000526020600020905b8154815290600101906020018083116112bb57829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b6006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b8060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806114f05750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43616e6e6f74206f7065726174652e000000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156116aa57600080fd5b856006600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b6103fb60009054906101000a900460ff161561177a57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16611818576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5055424c49432053414c45204e4f54204f50454e00000000000000000000000081525060200191505060405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f436f6c6c656374696f6e206e6f74206772616e7465640000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d602081101561196957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f742074686520746f6b656e206f776e65720000000000000000000000000081525060200191505060405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060009054906101000a900460ff1615611ad4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e20416c7265616479204772616e746564000000000000000000000081525060200191505060405180910390fd5b6103e8611aed600160025461411590919063ffffffff16565b1115611b61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f45786365656420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b611b6a3361412f565b6001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060006103fb60006101000a81548160ff0219169083151502179055505050565b611bfb61410d565b73ffffffffffffffffffffffffffffffffffffffff16611c19612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614611ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff1615611d25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818160019190611d369291906151ce565b505050565b6000600254905090565b8060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611e1657503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611ea75750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ff0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f57726f6e672066726f6d20616464726573732e0000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561216c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f742073656e6420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b61217686866141b1565b50505050505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082106121cf57600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061221957fe5b9060005260206000200154905092915050565b61223461410d565b73ffffffffffffffffffffffffffffffffffffffff16612252612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612321573d6000803e3d6000fd5b50565b61233f83838360405180602001604052806000815250614266565b505050565b600080821015801561235757506103e882105b61236057600080fd5b600182019050919050565b61237361410d565b73ffffffffffffffffffffffffffffffffffffffff16612391612bfb565b73ffffffffffffffffffffffffffffffffffffffff161461241a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff161561249d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8181600d91906124ae9291906151ce565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561252157600080fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561259757600080fd5b6125a0826147d4565b9050919050565b6125af61410d565b73ffffffffffffffffffffffffffffffffffffffff166125cd612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6126606000614820565b565b61266a61410d565b73ffffffffffffffffffffffffffffffffffffffff16612688612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612711576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b6103fb60009054906101000a900460ff161561275857600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60029054906101000a900460ff166127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f484f4c44455253204d494e5420434c4f5345440000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f546f6b656e20416c7265616479204d696772617465640000000000000000000081525060200191505060405180910390fd5b6000338230604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140193505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a0d8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506148e4565b73ffffffffffffffffffffffffffffffffffffffff1614612a96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f494e56414c4944205349474e415455524500000000000000000000000000000081525060200191505060405180910390fd5b600060016002546103e80303905060006012826103e88110612ab457fe5b015490506000806103fa6000600188038152602001908152602001600020541415612ae457600185039050612b02565b60016103fa6000600188038152602001908152602001600020540390505b6000821415612b2457826012826103e88110612b1a57fe5b0181905550612b39565b816012826103e88110612b3357fe5b01819055505b600181016103fa60006012846103e88110612b5057fe5b0154815260200190815260200160002081905550600160025401600281905550612b7a33866149b1565b843373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505060006103fb60006101000a81548160ff021916908315150217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612c2c61410d565b73ffffffffffffffffffffffffffffffffffffffff16612c4a612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060038190555050565b612ce561410d565b73ffffffffffffffffffffffffffffffffffffffff16612d03612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612d8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60009054906101000a900460ff1615612e0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4c6f636b6564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8181600c9190612e209291906151ce565b505050565b6060600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ebd5780601f10612e9257610100808354040283529160200191612ebd565b820191906000526020600020905b815481529060010190602001808311612ea057829003601f168201915b5050505050905090565b612ecf61410d565b73ffffffffffffffffffffffffffffffffffffffff16612eed612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614612f76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600e60006101000a81548160ff021916908315150217905550565b6103fb60009054906101000a900460ff1615612fae57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60019054906101000a900460ff1661304c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5055424c49432053414c45204e4f54204f50454e00000000000000000000000081525060200191505060405180910390fd5b600081116130c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f43616e277420626520300000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6103e86130da8260025461411590919063ffffffff16565b111561314e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f45786365656420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b61316381600354614baf90919063ffffffff16565b3410156131d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e73756666696369656e742066756e64732e0000000000000000000000000081525060200191505060405180910390fd5b60005b818110156131f9576131ec3361412f565b80806001019150506131db565b5060006103fb60006101000a81548160ff02191690831515021790555050565b60035481565b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b600e60029054906101000a900460ff1681565b61338185858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614266565b5050505050565b600e60019054906101000a900460ff1681565b606081600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b600d61347f84614be3565b60405160200180838054600181600116156101000203166002900480156134dd5780601f106134bb5761010080835404028352918201916134dd565b820191906000526020600020905b8154815290600101906020018083116134c9575b505082805190602001908083835b6020831061350e57805182526020820191506020810190506020830392506134eb565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b61355361410d565b73ffffffffffffffffffffffffffffffffffffffff16613571612bfb565b73ffffffffffffffffffffffffffffffffffffffff16146135fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e60009054906101000a900460ff1681565b6103fb60009054906101000a900460ff16156136cf57600080fd5b60016103fb60006101000a81548160ff021916908315150217905550600e60029054906101000a900460ff1661376d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f484f4c44455253204d494e5420434c4f5345440000000000000000000000000081525060200191505060405180910390fd5b600061378b8383600081811061377f57fe5b90506020020135614be3565b90506000600190505b838390508110156138ae57816137bb8585848181106137af57fe5b90506020020135614be3565b6040516020018083805190602001908083835b602083106137f157805182526020820191506020810190506020830392506137ce565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831061386a5780518252602082019150602081019050602083039250613847565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291508080600101915050613794565b506000338230604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b6020831061390957805182526020820191506020810190506020830392506138e6565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140193505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a3c8288888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506148e4565b73ffffffffffffffffffffffffffffffffffffffff1614613ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f494e56414c4944205349474e415455524500000000000000000000000000000081525060200191505060405180910390fd5b60005b84849050811015613cf857600073ffffffffffffffffffffffffffffffffffffffff1660056000878785818110613afb57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ceb57600060016002546103e80303905060006012826103e88110613b6b57fe5b015490506000806103fa600060018b8b89818110613b8557fe5b90506020020135038152602001908152602001600020541415613bbf576001888886818110613bb057fe5b90506020020135039050613bef565b60016103fa600060018b8b89818110613bd457fe5b90506020020135038152602001908152602001600020540390505b6000821415613c1157826012826103e88110613c0757fe5b0181905550613c26565b816012826103e88110613c2057fe5b01819055505b600181016103fa60006012846103e88110613c3d57fe5b0154815260200190815260200160002081905550600160025401600281905550613c7933898987818110613c6d57fe5b905060200201356149b1565b878785818110613c8557fe5b905060200201353373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505b8080600101915050613ac8565b50505060006103fb60006101000a81548160ff02191690831515021790555050505050565b613d2561410d565b73ffffffffffffffffffffffffffffffffffffffff16613d43612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614613dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e905780601f10613e6557610100808354040283529160200191613e90565b820191906000526020600020905b815481529060010190602001808311613e7357829003601f168201915b5050505050905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613f3661410d565b73ffffffffffffffffffffffffffffffffffffffff16613f54612bfb565b73ffffffffffffffffffffffffffffffffffffffff1614613fdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061527a6026913960400191505060405180910390fd5b61406c81614820565b50565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141055780601f106140da57610100808354040283529160200191614105565b820191906000526020600020905b8154815290600101906020018083116140e857829003601f168201915b505050505081565b600033905090565b600081830190508281101561412957600080fd5b92915050565b6000614139614d2a565b905060016002540160028190555061415182826149b1565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506141f282614e4d565b6141fc8183614eee565b61420683836149b1565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061433757503373ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806143c85750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61443a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006005600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146145ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561462457600080fd5b61462e87876141b1565b614637876151a1565b156147ca5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156146eb5780820151818401526020810190506146d0565b50505050905090810190601f1680156147185780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561473a57600080fd5b505af115801561474e573d6000803e3d6000fd5b505050506040513d602081101561476457600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146147c857600080fd5b505b5050505050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060418251146148f457600080fd5b60008060006020850151925060408501519150606085015160001a9050601b8160ff16101561492457601b810190505b601b8160ff1614806149395750601c8160ff16145b61494257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561499c573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f416c7265616479206f776e65642e00000000000000000000000000000000000081525060200191505060405180910390fd5b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055614b946001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506151b490919063ffffffff16565b60076000838152602001908152602001600020819055505050565b600080831415614bc25760009050614bdd565b818302905081838281614bd157fe5b0414614bdc57600080fd5b5b92915050565b60606000821415614c2b576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050614d25565b600082905060005b60008214614c55578080600101915050600a8281614c4d57fe5b049150614c33565b60008167ffffffffffffffff81118015614c6e57600080fd5b506040519080825280601f01601f191660200182016040528015614ca15781602001600182028036833780820191505090505b50905060006001830390508593505b60008414614d1d57600a8481614cc257fe5b0660300160f81b82828060019003935081518110614cdc57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8481614d1557fe5b049350614cb0565b819450505050505b919050565b6000806002546103e8039050600081600254334442604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c81614d9d57fe5b0690506000806012836103e88110614db157fe5b015414614dcf576012826103e88110614dc657fe5b01549050614dd3565b8190505b60006012600185036103e88110614de657fe5b01541415614e0a57600183036012836103e88110614e0057fe5b0181905550614e31565b6012600184036103e88110614e1b57fe5b01546012836103e88110614e2b57fe5b01819055505b614e4560018261411590919063ffffffff16565b935050505090565b600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614eeb576006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50565b8173ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6005600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560006007600083815260200190815260200160002054905060006150686001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506151b490919063ffffffff16565b905081811461513d576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106150bd57fe5b9060005260206000200154905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061511557fe5b9060005260206000200181905550826007600083815260200190815260200160002081905550505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061518557fe5b6001900381819060005260206000200160009055905550505050565b600080823b905060008111915050919050565b6000828211156151c357600080fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282615204576000855561524b565b82601f1061521d57803560ff191683800117855561524b565b8280016001018555821561524b579182015b8281111561524a57823582559160200191906001019061522f565b5b509050615258919061525c565b5090565b5b8082111561527557600081600090555060010161525d565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220fd093b68607fe0239bf0ea5e8320bda8ad01fb0943d4df07c06649216dd8246d64736f6c63430007060033
Deployed Bytecode Sourcemap
3260:14561:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6247:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3464:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17184:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16354:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8016:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7100:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12304:496;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17706:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15318:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6745:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15575:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13426:99;;;;;;;;;;;;;:::i;:::-;;6585:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15414:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16953:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7825:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7650:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2738:103;;;;;;;;;;;;;:::i;:::-;;17419:90;;;;;;;;;;;;;:::i;:::-;;9775:1078;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2515:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17610:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17067:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16456:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16872:75;;;;;;;;;;;;;:::i;:::-;;12805:401;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3510:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7428:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4153:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6400:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4124:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16566:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17289:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4102:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10862:1434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17514:90;;;;;;;;;;;;;:::i;:::-;;16754:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8175:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2849:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3407:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6247:145;6327:4;6351:19;:33;6371:12;6351:33;;;;;;;;;;;;;;;;;;;;;;;;;;;6344:40;;6247:145;;;:::o;3464:42::-;3502:4;3464:42;:::o;17184:99::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17271:4:::1;17254:14;;:21;;;;;;;;;;;;;;;;;;17184:99:::0;:::o;16354:94::-;16393:19;16433:7;16425:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16354:94;:::o;8016:151::-;8110:7;8091:8;5506:1;5475:33;;:9;:19;5485:8;5475:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5467:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8137:12:::1;:22;8150:8;8137:22;;;;;;;;;;;;;;;;;;;;;8130:29;;8016:151:::0;;;;:::o;7100:320::-;7183:8;4925:18;4946:9;:19;4956:8;4946:19;;;;;;;;;;;;;;;;;;;;;4925:40;;4998:10;4984:24;;:10;:24;;;:68;;;;5012:16;:28;5029:10;5012:28;;;;;;;;;;;;;;;:40;5041:10;5012:40;;;;;;;;;;;;;;;;;;;;;;;;;4984:68;4976:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7206:8:::1;5506:1;5475:33;;:9;:19;5485:8;5475:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5467:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7227:18:::2;7248:9;:19;7258:8;7248:19;;;;;;;;;;;;;;;;;;;;;7227:40;;7299:10;7286:23;;:9;:23;;;;7278:32;;;::::0;::::2;;7346:9;7321:12;:22;7334:8;7321:22;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7403:8;7392:9;7371:41;;7380:10;7371:41;;;;;;;;;;;;5538:1;5083::::1;7100:320:::0;;;;:::o;12304:496::-;4733:14;;;;;;;;;;;4729:55;;;4764:8;;;4729:55;4811:4;4794:14;;:21;;;;;;;;;;;;;;;;;;12401:10:::1;;;;;;;;;;;12393:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12449:6;:18;12456:10;12449:18;;;;;;;;;;;;;;;;;;;;;;;;;12441:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12545:10;12507:48;;12515:10;12507:27;;;12535:5;12507:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:48;;;12499:80;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12593:13;:25;12607:10;12593:25;;;;;;;;;;;;;;;:32;12619:5;12593:32;;;;;;;;;;;;;;;;;;;;;12592:33;12584:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;3502:4;12669:16;12683:1;12669:9;;:13;;:16;;;;:::i;:::-;:31;;12661:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12727:17;12733:10;12727:5;:17::i;:::-;12788:4;12753:13;:25;12767:10;12753:25;;;;;;;;;;;;;;;:32;12779:5;12753:32;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;4855:5:::0;4838:14;;:22;;;;;;;;;;;;;;;;;;12304:496;;:::o;17706:109::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4601:6:::1;;;;;;;;;;;4600:7;4592:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17803:4:::2;;17795:5;:12;;;;;;;:::i;:::-;;17706:109:::0;;:::o;15318:88::-;15362:7;15389:9;;15382:16;;15318:88;:::o;6745:347::-;6843:8;5150:18;5171:9;:19;5181:8;5171:19;;;;;;;;;;;;;;;;;;;;;5150:40;;5237:10;5223:24;;:10;:24;;;:77;;;;5290:10;5264:36;;:12;:22;5277:8;5264:22;;;;;;;;;;;;;;;;;;;;;:36;;;5223:77;:134;;;;5317:16;:28;5334:10;5317:28;;;;;;;;;;;;;;;:40;5346:10;5317:40;;;;;;;;;;;;;;;;;;;;;;;;;5223:134;5201:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6866:8:::1;5506:1;5475:33;;:9;:19;5485:8;5475:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5467:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;6887:18:::2;6908:9;:19;6918:8;6908:19;;;;;;;;;;;;;;;;;;;;;6887:40;;6960:5;6946:19;;:10;:19;;;6938:51;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;7023:1;7008:17;;:3;:17;;;;7000:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;7060:24;7070:3;7075:8;7060:9;:24::i;:::-;5538:1;5399::::1;6745:347:::0;;;;;:::o;15575:199::-;15659:7;15696:10;:18;15707:6;15696:18;;;;;;;;;;;;;;;:25;;;;15687:6;:34;15679:43;;;;;;15740:10;:18;15751:6;15740:18;;;;;;;;;;;;;;;15759:6;15740:26;;;;;;;;;;;;;;;;15733:33;;15575:199;;;;:::o;13426:99::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:10:::1;13468:28;;:51;13497:21;13468:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13426:99::o:0;6585:152::-;6686:43;6704:5;6711:3;6716:8;6686:43;;;;;;;;;;;;:17;:43::i;:::-;6585:152;;;:::o;15414:153::-;15472:7;15509:1;15500:5;:10;;:33;;;;;3502:4;15514:5;:19;15500:33;15492:42;;;;;;15558:1;15552:5;:7;15545:14;;15414:153;;;:::o;16953:108::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4601:6:::1;;;;;;;;;;;4600:7;4592:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17050:3:::2;;17034:13;:19;;;;;;;:::i;:::-;;16953:108:::0;;:::o;7825:183::-;7892:14;7958:1;7927:33;;:9;:19;7937:8;7927:19;;;;;;;;;;;;;;;;;;;;;:33;;;;7919:42;;;;;;7981:9;:19;7991:8;7981:19;;;;;;;;;;;;;;;;;;;;;7972:28;;7825:183;;;:::o;7650:167::-;7717:7;7763:1;7745:20;;:6;:20;;;;7737:29;;;;;;7784:25;7802:6;7784:17;:25::i;:::-;7777:32;;7650:167;;;:::o;2738:103::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:30:::1;2830:1;2803:18;:30::i;:::-;2738:103::o:0;17419:90::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17491:10:::1;;;;;;;;;;;17490:11;17477:10;;:24;;;;;;;;;;;;;;;;;;17419:90::o:0;9775:1078::-;4733:14;;;;;;;;;;;4729:55;;;4764:8;;;4729:55;4811:4;4794:14;;:21;;;;;;;;;;;;;;;;;;9883:10:::1;;;;;;;;;;;9875:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;9958:1;9930:30;;:9;:16;9940:5;9930:16;;;;;;;;;;;;;;;;;;;;;:30;;;9922:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;9995:12;10161:10;10172:5;10186:4;10123:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10096:134;;;;;;10030:215;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;10010:246;;;;;;9995:261;;10297:14;;;;;;;;;;;10271:40;;:24;10279:4;10285:9;;10271:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:24::i;:::-;:40;;;10263:70;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10340:13;10382:1;10370:9;;3502:4;10356:23;:27;10340:43;;10389:13;10405:7;10413:5;10405:14;;;;;;;;;10389:30;;10453:11;10498:1:::0;10474:11:::1;:20;10492:1;10486:5;:7;10474:20;;;;;;;;;;;;:25;10471:89;;;10517:1;10511:5;:7;10505:13;;10471:89;;;10559:1;10538:11;:20;10556:1;10550:5;:7;10538:20;;;;;;;;;;;;:22;10532:28;;10471:89;10582:1;10573:5;:10;10569:96;;;10608:5;10591:7;10600:3;10591:14;;;;;;;;:22;;;;10569:96;;;10653:5;10636:7;10645:3;10636:14;;;;;;;;:22;;;;10569:96;10705:1;10699:3;:7;10669:11;:27;10682:7;10690:3;10682:12;;;;;;;;;10669:27;;;;;;;;;;;:37;;;;10746:1;10734:9;;:13;10722:9;:25;;;;10758:30;10770:10;10782:5;10758:11;:30::i;:::-;10837:5;10825:10;10804:39;;10821:1;10804:39;;;;;;;;;;;;4826:1;;;;4855:5:::0;4838:14;;:22;;;;;;;;;;;;;;;;;;9775:1078;;;:::o;2515:87::-;2561:7;2588:6;;;;;;;;;;;2581:13;;2515:87;:::o;17610:90::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17683:9:::1;17675:5;:17;;;;17610:90:::0;:::o;17067:111::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4601:6:::1;;;;;;;;;;;4600:7;4592:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17167:3:::2;;17152:12;:18;;;;;;;:::i;:::-;;17067:111:::0;;:::o;16456:102::-;16497:21;16541:9;16531:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16456:102;:::o;16872:75::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16935:4:::1;16926:6;;:13;;;;;;;;;;;;;;;;;;16872:75::o:0;12805:401::-;4733:14;;;;;;;;;;;4729:55;;;4764:8;;;4729:55;4811:4;4794:14;;:21;;;;;;;;;;;;;;;;;;12886:10:::1;;;;;;;;;;;12878:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12951:1;12940:8;:12;12932:36;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;3502:4;12987:23;13001:8;12987:9;;:13;;:23;;;;:::i;:::-;:38;;12979:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13075:19;13085:8;13075:5;;:9;;:19;;;;:::i;:::-;13062:9;:32;;13054:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13127:6;13123:76;13143:8;13139:1;:12;13123:76;;;13167:17;13173:10;13167:5;:17::i;:::-;13153:3;;;;;;;13123:76;;;;4855:5:::0;4838:14;;:22;;;;;;;;;;;;;;;;;;12805:401;:::o;3510:33::-;;;;:::o;7428:214::-;7561:9;7519:16;:28;7536:10;7519:28;;;;;;;;;;;;;;;:39;7548:9;7519:39;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;7613:9;7586:48;;7601:10;7586:48;;;7624:9;7586:48;;;;;;;;;;;;;;;;;;;;7428:214;;:::o;4153:22::-;;;;;;;;;;;;;:::o;6400:177::-;6523:46;6541:5;6548:3;6553:8;6563:5;;6523:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:46::i;:::-;6400:177;;;;;:::o;4124:22::-;;;;;;;;;;;;;:::o;16566:182::-;16648:13;16629:8;5506:1;5475:33;;:9;:19;5485:8;5475:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5467:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16705:13:::1;16720:18;16729:8;16720;:18::i;:::-;16688:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16674:66;;16566:182:::0;;;;:::o;17289:124::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17387:6:::1;:18;17394:10;17387:18;;;;;;;;;;;;;;;;;;;;;;;;;17386:19;17365:6;:18;17372:10;17365:18;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;17289:124:::0;:::o;4102:18::-;;;;;;;;;;;;;:::o;10862:1434::-;4733:14;;;;;;;;;;;4729:55;;;4764:8;;;4729:55;4811:4;4794:14;;:21;;;;;;;;;;;;;;;;;;10987:10:::1;;;;;;;;;;;10979:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11030:23;11056:19;11065:6;;11072:1;11065:9;;;;;;;;;;;;;11056:8;:19::i;:::-;11030:45;;11084:9;11096:1;11084:13;;11080:183;11103:6;;:13;;11099:1;:17;11080:183;;;11200:9;11216:19;11225:6;;11232:1;11225:9;;;;;;;;;;;;;11216:8;:19::i;:::-;11182:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11129:127;;11118:3;;;;;;;11080:183;;;;11275:12;11441:10;11452:9;11470:4;11403:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11376:138;;;;;;11310:219;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;11290:250;;;;;;11275:265;;11581:14;;;;;;;;;;;11555:40;;:24;11563:4;11569:9;;11555:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:24::i;:::-;:40;;;11547:70;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11628:9;11624:657;11647:6;;:13;;11643:1;:17;11624:657;;;11709:1;11677:34;;:9;:20;11687:6;;11694:1;11687:9;;;;;;;;;;;;;11677:20;;;;;;;;;;;;;;;;;;;;;:34;;;11674:602;;;11725:13;11767:1;11755:9;;3502:4;11741:23;:27;11725:43;;11776:13;11792:7;11800:5;11792:14;;;;;;;;;11776:30;;11842:11;11895:1:::0;11867:11:::1;:24;11889:1;11879:6;;11886:1;11879:9;;;;;;;;;;;;;:11;11867:24;;;;;;;;;;;;:29;11864:107;;;11920:1;11910:6;;11917:1;11910:9;;;;;;;;;;;;;:11;11904:17;;11864:107;;;11970:1;11945:11;:24;11967:1;11957:6;;11964:1;11957:9;;;;;;;;;;;;;:11;11945:24;;;;;;;;;;;;:26;11939:32;;11864:107;11995:1;11986:5;:10;11982:106;;;12023:5;12006:7;12015:3;12006:14;;;;;;;;:22;;;;11982:106;;;12074:5;12057:7;12066:3;12057:14;;;;;;;;:22;;;;11982:106;12130:1;12124:3;:7;12094:11;:27;12107:7;12115:3;12107:12;;;;;;;;;12094:27;;;;;;;;;;;:37;;;;12171:1;12159:9;;:13;12147:9;:25;;;;12179:34;12191:10;12203:6;;12210:1;12203:9;;;;;;;;;;;;;12179:11;:34::i;:::-;12258:6;;12265:1;12258:9;;;;;;;;;;;;;12246:10;12225:43;;12242:1;12225:43;;;;;;;;;;;;11674:602;;;;11662:3;;;;;;;11624:657;;;;4826:1;;4855:5:::0;4838:14;;:22;;;;;;;;;;;;;;;;;;10862:1434;;;;:::o;17514:90::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17586:10:::1;;;;;;;;;;;17585:11;17572:10;;:24;;;;;;;;;;;;;;;;;;17514:90::o:0;16754:97::-;16798:13;16831:12;16824:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16754:97;:::o;8175:160::-;8268:4;8292:16;:24;8309:6;8292:24;;;;;;;;;;;;;;;:35;8317:9;8292:35;;;;;;;;;;;;;;;;;;;;;;;;;8285:42;;8175:160;;;;:::o;2849:201::-;2661:12;:10;:12::i;:::-;2650:23;;:7;:5;:7::i;:::-;:23;;;2642:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2958:1:::1;2938:22;;:8;:22;;;;2930:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3014:28;3033:8;3014:18;:28::i;:::-;2849:201:::0;:::o;3407:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2057:98::-;2110:7;2137:10;2130:17;;2057:98;:::o;1871:142::-;1929:9;1959:1;1955;:5;1951:9;;1984:1;1979;:6;;1971:15;;;;;;1871:142;;;;:::o;13216:198::-;13270:11;13284:13;:11;:13::i;:::-;13270:27;;13327:1;13315:9;;:13;13303:9;:25;;;;13339:21;13351:3;13356;13339:11;:21::i;:::-;13402:3;13397;13376:30;;13393:1;13376:30;;;;;;;;;;;;13216:198;;:::o;8343:274::-;8413:12;8428:9;:19;8438:8;8428:19;;;;;;;;;;;;;;;;;;;;;8413:34;;8458:24;8473:8;8458:14;:24::i;:::-;8495:30;8510:4;8516:8;8495:14;:30::i;:::-;8536:26;8548:3;8553:8;8536:11;:26::i;:::-;8600:8;8595:3;8580:29;;8589:4;8580:29;;;;;;;;;;;;8343:274;;;:::o;14584:544::-;14700:8;5150:18;5171:9;:19;5181:8;5171:19;;;;;;;;;;;;;;;;;;;;;5150:40;;5237:10;5223:24;;:10;:24;;;:77;;;;5290:10;5264:36;;:12;:22;5277:8;5264:22;;;;;;;;;;;;;;;;;;;;;:36;;;5223:77;:134;;;;5317:16;:28;5334:10;5317:28;;;;;;;;;;;;;;;:40;5346:10;5317:40;;;;;;;;;;;;;;;;;;;;;;;;;5223:134;5201:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14723:8:::1;5506:1;5475:33;;:9;:19;5485:8;5475:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5467:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14744:18:::2;14765:9;:19;14775:8;14765:19;;;;;;;;;;;;;;;;;;;;;14744:40;;14817:5;14803:19;;:10;:19;;;14795:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;14877:1;14862:17;;:3;:17;;;;14854:26;;;::::0;::::2;;14893:24;14903:3;14908:8;14893:9;:24::i;:::-;14934:15;14945:3;14934:10;:15::i;:::-;14930:191;;;14966:13;15002:3;14982:41;;;15024:10;15036:5;15043:8;15053:5;14982:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;14966:93;;3390:10;15092:16;;15082:26;;;:6;:26;;;;15074:35;;;::::0;::::2;;14930:191;;5538:1;5399::::1;14584:544:::0;;;;;;:::o;14450:126::-;14516:7;14543:10;:18;14554:6;14543:18;;;;;;;;;;;;;;;:25;;;;14536:32;;14450:126;;;:::o;3058:191::-;3132:16;3151:6;;;;;;;;;;;3132:25;;3177:8;3168:6;;:17;;;;;;;;;;;;;;;;;;3232:8;3201:40;;3222:8;3201:40;;;;;;;;;;;;3058:191;;:::o;9251:513::-;9329:7;9373:2;9353:9;:16;:22;9345:31;;;;;;9395:9;9415;9435:7;9503:2;9492:9;9488:18;9482:25;9477:30;;9547:2;9536:9;9532:18;9526:25;9521:30;;9599:2;9588:9;9584:18;9578:25;9575:1;9570:34;9565:39;;9635:2;9631:1;:6;;;9627:46;;;9659:2;9654:7;;;;9627:46;9698:2;9693:1;:7;;;:18;;;;9709:2;9704:1;:7;;;9693:18;9685:27;;;;;;9730:24;9740:4;9746:1;9749;9752;9730:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9723:31;;;;;9251:513;;;;:::o;13541:286::-;13652:1;13621:33;;:9;:19;13631:8;13621:19;;;;;;;;;;;;;;;;;;;;;:33;;;13613:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13706:3;13684:9;:19;13694:8;13684:19;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13722:10;:15;13733:3;13722:15;;;;;;;;;;;;;;;13743:8;13722:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13790:29;13817:1;13790:10;:15;13801:3;13790:15;;;;;;;;;;;;;;;:22;;;;:26;;:29;;;;:::i;:::-;13763:14;:24;13778:8;13763:24;;;;;;;;;;;:56;;;;13541:286;;:::o;1419:203::-;1477:9;1508:1;1503;:6;1499:47;;;1533:1;1526:8;;;;1499:47;1564:1;1560;:5;1556:9;;1593:1;1588;1584;:5;;;;;;:10;1576:19;;;;;;1419:203;;;;;:::o;15791:555::-;15847:13;15886:1;15877:5;:10;15873:53;;;15904:10;;;;;;;;;;;;;;;;;;;;;15873:53;15936:12;15951:5;15936:20;;15967:14;15992:78;16007:1;15999:4;:9;15992:78;;16025:8;;;;;;;16056:2;16048:10;;;;;;;;;15992:78;;;16080:19;16112:6;16102:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16080:39;;16130:13;16155:1;16146:6;:10;16130:26;;16174:5;16167:12;;16190:117;16205:1;16197:4;:9;16190:117;;16266:2;16259:4;:9;;;;;;16254:2;:14;16241:29;;16223:6;16230:7;;;;;;;16223:15;;;;;;;;;;;:47;;;;;;;;;;;16293:2;16285:10;;;;;;;;;16190:117;;;16331:6;16317:21;;;;;;15791:555;;;;:::o;8635:601::-;8676:4;8693:14;8724:9;;3502:4;8710:23;8693:40;;8744:10;8851:9;8789;;8800:10;8812:16;8830:15;8772:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8762:85;;;;;;8757:91;;:103;;;;;;8744:116;;8871:10;8918:1;8900:7;8908:5;8900:14;;;;;;;;;:19;8896:120;;8944:7;8952:5;8944:14;;;;;;;;;8936:22;;8896:120;;;8999:5;8991:13;;8896:120;9058:1;9032:7;9052:1;9040:9;:13;9032:22;;;;;;;;;:27;9028:162;;;9105:1;9093:9;:13;9076:7;9084:5;9076:14;;;;;;;;:30;;;;9028:162;;;9156:7;9176:1;9164:9;:13;9156:22;;;;;;;;;9139:7;9147:5;9139:14;;;;;;;;:39;;;;9028:162;9216:12;9226:1;9216:5;:9;;:12;;;;:::i;:::-;9209:19;;;;;8635:601;:::o;15136:166::-;15235:1;15201:36;;:12;:22;15214:8;15201:22;;;;;;;;;;;;;;;;;;;;;:36;;;15197:98;;15261:12;:22;15274:8;15261:22;;;;;;;;;;;;15254:29;;;;;;;;;;;15197:98;15136:166;:::o;13835:607::-;13943:5;13920:28;;:9;:19;13930:8;13920:19;;;;;;;;;;;;;;;;;;;;;:28;;;13912:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13987:9;:19;13997:8;13987:19;;;;;;;;;;;;13980:26;;;;;;;;;;;14019;14048:14;:24;14063:8;14048:24;;;;;;;;;;;;14019:53;;14083:22;14108:31;14137:1;14108:10;:17;14119:5;14108:17;;;;;;;;;;;;;;;:24;;;;:28;;:31;;;;:::i;:::-;14083:56;;14174:18;14156:14;:36;14152:247;;14209:17;14229:10;:17;14240:5;14229:17;;;;;;;;;;;;;;;14247:14;14229:33;;;;;;;;;;;;;;;;14209:53;;14317:9;14277:10;:17;14288:5;14277:17;;;;;;;;;;;;;;;14295:18;14277:37;;;;;;;;;;;;;;;:49;;;;14369:18;14341:14;:25;14356:9;14341:25;;;;;;;;;;;:46;;;;14152:247;;14411:10;:17;14422:5;14411:17;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;13835:607;;;;:::o;6024:215::-;6082:17;6112:12;6166:5;6154:18;6146:26;;6230:1;6223:4;:8;6208:23;;6024:215;;;;:::o;1739:124::-;1797:7;1830:1;1825;:6;;1817:15;;;;;;1854:1;1850;:5;1843:12;;1739:124;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://fd093b68607fe0239bf0ea5e8320bda8ad01fb0943d4df07c06649216dd8246d
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.