[ { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "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": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "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": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "Airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "_royaltyAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "addWhitelistAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "addressMinted", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "freeMintedCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "hiddenMetadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMintAmountPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reservePieces", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "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": [], "name": "sale", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "_hiddenMetadataUri", "type": "string" } ], "name": "setHiddenMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintAmountPerTx", "type": "uint256" } ], "name": "setMaxMintAmountPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setRevealed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_sale", "type": "bool" } ], "name": "setSaleStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uriSuffix", "type": "string" } ], "name": "setUriSuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_supplyLimit", "type": "uint256" } ], "name": "setsupplyLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_whitelistOnly", "type": "bool" } ], "name": "setwloStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "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": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uriSuffix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistOnly", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526706f05b59d3b20000600a556107d0600b55600a600c556102bb600d5560405180602001604052806000815250600f908162000041919062000622565b506040518060400160405280600481526020017f736f6f6e000000000000000000000000000000000000000000000000000000008152506010908162000088919062000622565b506000601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff021916908315150217905550348015620000e757600080fd5b50604051620051ef380380620051ef83398181016040528101906200010d919062000877565b6040518060400160405280600681526020017f44756d70797300000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444d50590000000000000000000000000000000000000000000000000000000081525081600290816200018a919062000622565b5080600390816200019c919062000622565b50620001ad620001f560201b60201c565b6000819055505050620001d5620001c9620001fa60201b60201c565b6200020260201b60201c565b6001600981905550620001ee81620002c860201b60201c565b506200094b565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002d8620002ed60201b60201c565b80600e9081620002e9919062000622565b5050565b620002fd620001fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003236200037e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200037c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003739062000929565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200042a57607f821691505b60208210810362000440576200043f620003e2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200046b565b620004b686836200046b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000503620004fd620004f784620004ce565b620004d8565b620004ce565b9050919050565b6000819050919050565b6200051f83620004e2565b620005376200052e826200050a565b84845462000478565b825550505050565b600090565b6200054e6200053f565b6200055b81848462000514565b505050565b5b8181101562000583576200057760008262000544565b60018101905062000561565b5050565b601f821115620005d2576200059c8162000446565b620005a7846200045b565b81016020851015620005b7578190505b620005cf620005c6856200045b565b83018262000560565b50505b505050565b600082821c905092915050565b6000620005f760001984600802620005d7565b1980831691505092915050565b6000620006128383620005e4565b9150826002028217905092915050565b6200062d82620003a8565b67ffffffffffffffff811115620006495762000648620003b3565b5b62000655825462000411565b6200066282828562000587565b600060209050601f8311600181146200069a576000841562000685578287015190505b62000691858262000604565b86555062000701565b601f198416620006aa8662000446565b60005b82811015620006d457848901518255600182019150602085019450602081019050620006ad565b86831015620006f45784890151620006f0601f891682620005e4565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620007438262000727565b810181811067ffffffffffffffff82111715620007655762000764620003b3565b5b80604052505050565b60006200077a62000709565b905062000788828262000738565b919050565b600067ffffffffffffffff821115620007ab57620007aa620003b3565b5b620007b68262000727565b9050602081019050919050565b60005b83811015620007e3578082015181840152602081019050620007c6565b83811115620007f3576000848401525b50505050565b6000620008106200080a846200078d565b6200076e565b9050828152602081018484840111156200082f576200082e62000722565b5b6200083c848285620007c3565b509392505050565b600082601f8301126200085c576200085b6200071d565b5b81516200086e848260208601620007f9565b91505092915050565b60006020828403121562000890576200088f62000713565b5b600082015167ffffffffffffffff811115620008b157620008b062000718565b5b620008bf8482850162000844565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000911602083620008c8565b91506200091e82620008d9565b602082019050919050565b60006020820190508181036000830152620009448162000902565b9050919050565b614894806200095b6000396000f3fe6080604052600436106102ad5760003560e01c806369b5382411610175578063a22cb465116100dc578063d897833e11610095578063eac989f81161006f578063eac989f814610ac3578063f2fde38b14610aee578063f4a0a52814610b17578063fa30297e14610b40576102ad565b8063d897833e14610a34578063e0a8085314610a5d578063e985e9c514610a86576102ad565b8063a22cb46514610914578063a45ba8e71461093d578063b071401b14610968578063b88d4fde14610991578063c23dc68f146109ba578063c87b56dd146109f7576102ad565b80638da5cb5b1161012e5780638da5cb5b146107fd57806394354fd01461082857806395d89b4114610853578063981332351461087e57806399a2557a146108bb578063a0712d68146108f8576102ad565b806369b53824146106ed5780636ad1fe021461071857806370a0823114610743578063715018a6146107805780637871e154146107975780638462151c146107c0576102ad565b806339cc97b51161021957806351830227116101d257806351830227146105c95780635503a0e8146105f457806355f804b31461061f5780635bbb2177146106485780636352211e146106855780636817c76c146106c2576102ad565b806339cc97b5146104e15780633af32abf146104f85780633ccfd60b1461053557806342842e0e1461054c5780634b4687b5146105755780634fdd43cb146105a0576102ad565b806316ba10e01161026b57806316ba10e0146103d257806318160ddd146103fb57806319d1997a1461042657806323b872dd146104515780632523bf2f1461047a5780632a55205a146104a3576102ad565b806275770a146102b257806301ffc9a7146102db57806306fdde0314610318578063081812fc14610343578063095ea7b3146103805780630e256a5e146103a9575b600080fd5b3480156102be57600080fd5b506102d960048036038101906102d49190613089565b610b7d565b005b3480156102e757600080fd5b5061030260048036038101906102fd919061310e565b610b8f565b60405161030f9190613156565b60405180910390f35b34801561032457600080fd5b5061032d610c09565b60405161033a919061320a565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190613089565b610c9b565b604051610377919061326d565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a291906132b4565b610d1a565b005b3480156103b557600080fd5b506103d060048036038101906103cb9190613359565b610e5e565b005b3480156103de57600080fd5b506103f960048036038101906103f491906134d6565b610f0c565b005b34801561040757600080fd5b50610410610f27565b60405161041d919061352e565b60405180910390f35b34801561043257600080fd5b5061043b610f3e565b604051610448919061352e565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613549565b610f44565b005b34801561048657600080fd5b506104a1600480360381019061049c91906135c8565b611266565b005b3480156104af57600080fd5b506104ca60048036038101906104c591906135f5565b61128b565b6040516104d8929190613635565b60405180910390f35b3480156104ed57600080fd5b506104f66112bc565b005b34801561050457600080fd5b5061051f600480360381019061051a919061365e565b61131b565b60405161052c91906136a7565b60405180910390f35b34801561054157600080fd5b5061054a611371565b005b34801561055857600080fd5b50610573600480360381019061056e9190613549565b61144b565b005b34801561058157600080fd5b5061058a61146b565b6040516105979190613156565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c291906134d6565b61147e565b005b3480156105d557600080fd5b506105de611499565b6040516105eb9190613156565b60405180910390f35b34801561060057600080fd5b506106096114ac565b604051610616919061320a565b60405180910390f35b34801561062b57600080fd5b50610646600480360381019061064191906134d6565b61153a565b005b34801561065457600080fd5b5061066f600480360381019061066a9190613718565b611555565b60405161067c91906138c8565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a79190613089565b611618565b6040516106b9919061326d565b60405180910390f35b3480156106ce57600080fd5b506106d761162a565b6040516106e4919061352e565b60405180910390f35b3480156106f957600080fd5b50610702611630565b60405161070f919061352e565b60405180910390f35b34801561072457600080fd5b5061072d611636565b60405161073a9190613156565b60405180910390f35b34801561074f57600080fd5b5061076a6004803603810190610765919061365e565b611649565b604051610777919061352e565b60405180910390f35b34801561078c57600080fd5b50610795611701565b005b3480156107a357600080fd5b506107be60048036038101906107b991906138ea565b611715565b005b3480156107cc57600080fd5b506107e760048036038101906107e2919061365e565b611782565b6040516107f491906139e8565b60405180910390f35b34801561080957600080fd5b506108126118c5565b60405161081f919061326d565b60405180910390f35b34801561083457600080fd5b5061083d6118ef565b60405161084a919061352e565b60405180910390f35b34801561085f57600080fd5b506108686118f5565b604051610875919061320a565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a0919061365e565b611987565b6040516108b2919061352e565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613a0a565b6119d0565b6040516108ef91906139e8565b60405180910390f35b610912600480360381019061090d9190613089565b611bdc565b005b34801561092057600080fd5b5061093b60048036038101906109369190613a5d565b611ec3565b005b34801561094957600080fd5b5061095261203a565b60405161095f919061320a565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a9190613089565b6120c8565b005b34801561099d57600080fd5b506109b860048036038101906109b39190613b3e565b6120da565b005b3480156109c657600080fd5b506109e160048036038101906109dc9190613089565b61214d565b6040516109ee9190613c16565b60405180910390f35b348015610a0357600080fd5b50610a1e6004803603810190610a199190613089565b6121b7565b604051610a2b919061320a565b60405180910390f35b348015610a4057600080fd5b50610a5b6004803603810190610a5691906135c8565b6122de565b005b348015610a6957600080fd5b50610a846004803603810190610a7f91906135c8565b612303565b005b348015610a9257600080fd5b50610aad6004803603810190610aa89190613c31565b612328565b604051610aba9190613156565b60405180910390f35b348015610acf57600080fd5b50610ad86123bc565b604051610ae5919061320a565b60405180910390f35b348015610afa57600080fd5b50610b156004803603810190610b10919061365e565b61244a565b005b348015610b2357600080fd5b50610b3e6004803603810190610b399190613089565b6124cd565b005b348015610b4c57600080fd5b50610b676004803603810190610b62919061365e565b6124df565b604051610b7491906136a7565b60405180910390f35b610b85612535565b80600b8190555050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c025750610c01826125b3565b5b9050919050565b606060028054610c1890613ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4490613ca0565b8015610c915780601f10610c6657610100808354040283529160200191610c91565b820191906000526020600020905b815481529060010190602001808311610c7457829003601f168201915b5050505050905090565b6000610ca682612645565b610cdc576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d2582611618565b90508073ffffffffffffffffffffffffffffffffffffffff16610d466126a4565b73ffffffffffffffffffffffffffffffffffffffff1614610da957610d7281610d6d6126a4565b612328565b610da8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610e66612535565b60005b82829050811015610f0757600160126000858585818110610e8d57610e8c613cd1565b5b9050602002016020810190610ea2919061365e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055508080610eff90613d2f565b915050610e69565b505050565b610f14612535565b80600f9081610f239190613f23565b5050565b6000610f316126ac565b6001546000540303905090565b600b5481565b6000610f4f826126b1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610fc28461277d565b91509150610fd88187610fd36126a4565b6127a4565b61102457610fed86610fe86126a4565b612328565b611023576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361108a576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61109786868660016127e8565b80156110a257600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506111708561114c8888876127ee565b7c020000000000000000000000000000000000000000000000000000000017612816565b600460008681526020019081526020016000208190555060007c02000000000000000000000000000000000000000000000000000000008416036111f657600060018501905060006004600083815260200190815260200160002054036111f45760005481146111f3578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461125e8686866001612841565b505050505050565b61126e612535565b80601160016101000a81548160ff02191690831515021790555050565b6000806112966118c5565b612710600d54856112a79190613ff5565b6112b1919061407e565b915091509250929050565b6112c4612535565b60006112ce610f27565b1461130e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611305906140fb565b60405180910390fd5b611319336002612847565b565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611379612535565b6002600954036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590614167565b60405180910390fd5b60026009819055506113ce6118c5565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906141d3565b60405180910390fd5b6001600981905550565b611466838383604051806020016040528060008152506120da565b505050565b601160019054906101000a900460ff1681565b611486612535565b80601090816114959190613f23565b5050565b601160029054906101000a900460ff1681565b600f80546114b990613ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546114e590613ca0565b80156115325780601f1061150757610100808354040283529160200191611532565b820191906000526020600020905b81548152906001019060200180831161151557829003601f168201915b505050505081565b611542612535565b80600e90816115519190613f23565b5050565b6060600083839050905060008167ffffffffffffffff81111561157b5761157a6133ab565b5b6040519080825280602002602001820160405280156115b457816020015b6115a1612ff0565b8152602001906001900390816115995790505b50905060005b82811461160c576115e38686838181106115d7576115d6613cd1565b5b9050602002013561214d565b8282815181106115f6576115f5613cd1565b5b60200260200101819052508060010190506115ba565b50809250505092915050565b6000611623826126b1565b9050919050565b600a5481565b600d5481565b601160009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b0576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611709612535565b6117136000612865565b565b61171d612535565b600b5482611729610f27565b61173391906141f3565b1115611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90614295565b60405180910390fd5b61177e8183612847565b5050565b6060600080600061179285611649565b905060008167ffffffffffffffff8111156117b0576117af6133ab565b5b6040519080825280602002602001820160405280156117de5781602001602082028036833780820191505090505b5090506117e9612ff0565b60006117f36126ac565b90505b8386146118b7576118068161292b565b915081604001516118ac57600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161461185157816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036118ab578083878060010198508151811061189e5761189d613cd1565b5b6020026020010181815250505b5b8060010190506117f6565b508195505050505050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606003805461190490613ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461193090613ca0565b801561197d5780601f106119525761010080835404028352916020019161197d565b820191906000526020600020905b81548152906001019060200180831161196057829003601f168201915b5050505050905090565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060818310611a0b576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611a16612956565b9050611a206126ac565b851015611a3257611a2f6126ac565b94505b80841115611a3e578093505b6000611a4987611649565b905084861015611a6c576000868603905081811015611a66578091505b50611a71565b600090505b60008167ffffffffffffffff811115611a8d57611a8c6133ab565b5b604051908082528060200260200182016040528015611abb5781602001602082028036833780820191505090505b50905060008203611ad25780945050505050611bd5565b6000611add8861214d565b905060008160400151611af257816000015190505b60008990505b888114158015611b085750848714155b15611bc757611b168161292b565b92508260400151611bbc57600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614611b6157826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bbb5780848880600101995081518110611bae57611bad613cd1565b5b6020026020010181815250505b5b806001019050611af8565b508583528296505050505050505b9392505050565b601160009054906101000a900460ff16611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290614301565b60405180910390fd5b6000611c35610f27565b9050601160019054906101000a900460ff1615611c9b576001611c573361131b565b60ff1614611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919061436d565b60405180910390fd5b5b600082118015611cad5750600c548211155b611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906143d9565b60405180910390fd5b600b548282611cfb91906141f3565b1115611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3390614295565b60405180910390fd5b60008290506000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506001611d903361131b565b60ff1603611e0a576001811015611e09576001841115611dbe57600184611db791906143f9565b9150611dc3565b600091505b6001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600a5482611e189190613ff5565b341015611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190614479565b60405180910390fd5b6001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550611ebd3385612847565b50505050565b611ecb6126a4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2f576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611f3c6126a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611fe96126a4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161202e9190613156565b60405180910390a35050565b6010805461204790613ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461207390613ca0565b80156120c05780601f10612095576101008083540402835291602001916120c0565b820191906000526020600020905b8154815290600101906020018083116120a357829003601f168201915b505050505081565b6120d0612535565b80600c8190555050565b6120e5848484610f44565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612147576121108484848461295f565b612146576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b612155612ff0565b61215d612ff0565b6121656126ac565b8310806121795750612175612956565b8310155b1561218757809150506121b2565b6121908361292b565b90508060400151156121a557809150506121b2565b6121ae83612aaf565b9150505b919050565b60606121c282612645565b612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f89061450b565b60405180910390fd5b60001515601160029054906101000a900460ff1615150361227d5760006010805461222b90613ca0565b9050116122475760405180602001604052806000815250612276565b601061225283612acf565b600f604051602001612266939291906145ea565b6040516020818303038152906040525b90506122d9565b6000612287612c2f565b905060008151116122a757604051806020016040528060008152506122d5565b806122b184612acf565b600f6040516020016122c59392919061461b565b6040516020818303038152906040525b9150505b919050565b6122e6612535565b80601160006101000a81548160ff02191690831515021790555050565b61230b612535565b80601160026101000a81548160ff02191690831515021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600e80546123c990613ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546123f590613ca0565b80156124425780601f1061241757610100808354040283529160200191612442565b820191906000526020600020905b81548152906001019060200180831161242557829003601f168201915b505050505081565b612452612535565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906146be565b60405180910390fd5b6124ca81612865565b50565b6124d5612535565b80600a8190555050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61253d612cc1565b73ffffffffffffffffffffffffffffffffffffffff1661255b6118c5565b73ffffffffffffffffffffffffffffffffffffffff16146125b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a89061472a565b60405180910390fd5b565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061260e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061263e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000816126506126ac565b1115801561265f575060005482105b801561269d575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b600080829050806126c06126ac565b11612746576000548110156127455760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603612743575b6000810361273957600460008360019003935083815260200190815260200160002054905061270f565b8092505050612778565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8612805868684612cc9565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b612861828260405180602001604052806000815250612cd2565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612933612ff0565b61294f6004600084815260200190815260200160002054612d6f565b9050919050565b60008054905090565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129856126a4565b8786866040518563ffffffff1660e01b81526004016129a7949392919061479f565b6020604051808303816000875af19250505080156129e357506040513d601f19601f820116820180604052508101906129e09190614800565b60015b612a5c573d8060008114612a13576040519150601f19603f3d011682016040523d82523d6000602084013e612a18565b606091505b506000815103612a54576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b612ab7612ff0565b612ac8612ac3836126b1565b612d6f565b9050919050565b606060008203612b16576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c2a565b600082905060005b60008214612b48578080612b3190613d2f565b915050600a82612b41919061407e565b9150612b1e565b60008167ffffffffffffffff811115612b6457612b636133ab565b5b6040519080825280601f01601f191660200182016040528015612b965781602001600182028036833780820191505090505b5090505b60008514612c2357600182612baf91906143f9565b9150600a85612bbe919061482d565b6030612bca91906141f3565b60f81b818381518110612be057612bdf613cd1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c1c919061407e565b9450612b9a565b8093505050505b919050565b6060600e8054612c3e90613ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6a90613ca0565b8015612cb75780601f10612c8c57610100808354040283529160200191612cb7565b820191906000526020600020905b815481529060010190602001808311612c9a57829003601f168201915b5050505050905090565b600033905090565b60009392505050565b612cdc8383612e25565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612d6a57600080549050600083820390505b612d1c600086838060010194508661295f565b612d52576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110612d09578160005414612d6757600080fd5b50505b505050565b612d77612ff0565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b60008054905060008203612e65576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e7260008483856127e8565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612ee983612eda60008660006127ee565b612ee385612fe0565b17612816565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114612f8a57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612f4f565b5060008203612fc5576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050612fdb6000848385612841565b505050565b60006001821460e11b9050919050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61306681613053565b811461307157600080fd5b50565b6000813590506130838161305d565b92915050565b60006020828403121561309f5761309e613049565b5b60006130ad84828501613074565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130eb816130b6565b81146130f657600080fd5b50565b600081359050613108816130e2565b92915050565b60006020828403121561312457613123613049565b5b6000613132848285016130f9565b91505092915050565b60008115159050919050565b6131508161313b565b82525050565b600060208201905061316b6000830184613147565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131ab578082015181840152602081019050613190565b838111156131ba576000848401525b50505050565b6000601f19601f8301169050919050565b60006131dc82613171565b6131e6818561317c565b93506131f681856020860161318d565b6131ff816131c0565b840191505092915050565b6000602082019050818103600083015261322481846131d1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132578261322c565b9050919050565b6132678161324c565b82525050565b6000602082019050613282600083018461325e565b92915050565b6132918161324c565b811461329c57600080fd5b50565b6000813590506132ae81613288565b92915050565b600080604083850312156132cb576132ca613049565b5b60006132d98582860161329f565b92505060206132ea85828601613074565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613319576133186132f4565b5b8235905067ffffffffffffffff811115613336576133356132f9565b5b602083019150836020820283011115613352576133516132fe565b5b9250929050565b600080602083850312156133705761336f613049565b5b600083013567ffffffffffffffff81111561338e5761338d61304e565b5b61339a85828601613303565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133e3826131c0565b810181811067ffffffffffffffff82111715613402576134016133ab565b5b80604052505050565b600061341561303f565b905061342182826133da565b919050565b600067ffffffffffffffff821115613441576134406133ab565b5b61344a826131c0565b9050602081019050919050565b82818337600083830152505050565b600061347961347484613426565b61340b565b905082815260208101848484011115613495576134946133a6565b5b6134a0848285613457565b509392505050565b600082601f8301126134bd576134bc6132f4565b5b81356134cd848260208601613466565b91505092915050565b6000602082840312156134ec576134eb613049565b5b600082013567ffffffffffffffff81111561350a5761350961304e565b5b613516848285016134a8565b91505092915050565b61352881613053565b82525050565b6000602082019050613543600083018461351f565b92915050565b60008060006060848603121561356257613561613049565b5b60006135708682870161329f565b93505060206135818682870161329f565b925050604061359286828701613074565b9150509250925092565b6135a58161313b565b81146135b057600080fd5b50565b6000813590506135c28161359c565b92915050565b6000602082840312156135de576135dd613049565b5b60006135ec848285016135b3565b91505092915050565b6000806040838503121561360c5761360b613049565b5b600061361a85828601613074565b925050602061362b85828601613074565b9150509250929050565b600060408201905061364a600083018561325e565b613657602083018461351f565b9392505050565b60006020828403121561367457613673613049565b5b60006136828482850161329f565b91505092915050565b600060ff82169050919050565b6136a18161368b565b82525050565b60006020820190506136bc6000830184613698565b92915050565b60008083601f8401126136d8576136d76132f4565b5b8235905067ffffffffffffffff8111156136f5576136f46132f9565b5b602083019150836020820283011115613711576137106132fe565b5b9250929050565b6000806020838503121561372f5761372e613049565b5b600083013567ffffffffffffffff81111561374d5761374c61304e565b5b613759858286016136c2565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61379a8161324c565b82525050565b600067ffffffffffffffff82169050919050565b6137bd816137a0565b82525050565b6137cc8161313b565b82525050565b600062ffffff82169050919050565b6137ea816137d2565b82525050565b6080820160008201516138066000850182613791565b50602082015161381960208501826137b4565b50604082015161382c60408501826137c3565b50606082015161383f60608501826137e1565b50505050565b600061385183836137f0565b60808301905092915050565b6000602082019050919050565b600061387582613765565b61387f8185613770565b935061388a83613781565b8060005b838110156138bb5781516138a28882613845565b97506138ad8361385d565b92505060018101905061388e565b5085935050505092915050565b600060208201905081810360008301526138e2818461386a565b905092915050565b6000806040838503121561390157613900613049565b5b600061390f85828601613074565b92505060206139208582860161329f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61395f81613053565b82525050565b60006139718383613956565b60208301905092915050565b6000602082019050919050565b60006139958261392a565b61399f8185613935565b93506139aa83613946565b8060005b838110156139db5781516139c28882613965565b97506139cd8361397d565b9250506001810190506139ae565b5085935050505092915050565b60006020820190508181036000830152613a02818461398a565b905092915050565b600080600060608486031215613a2357613a22613049565b5b6000613a318682870161329f565b9350506020613a4286828701613074565b9250506040613a5386828701613074565b9150509250925092565b60008060408385031215613a7457613a73613049565b5b6000613a828582860161329f565b9250506020613a93858286016135b3565b9150509250929050565b600067ffffffffffffffff821115613ab857613ab76133ab565b5b613ac1826131c0565b9050602081019050919050565b6000613ae1613adc84613a9d565b61340b565b905082815260208101848484011115613afd57613afc6133a6565b5b613b08848285613457565b509392505050565b600082601f830112613b2557613b246132f4565b5b8135613b35848260208601613ace565b91505092915050565b60008060008060808587031215613b5857613b57613049565b5b6000613b668782880161329f565b9450506020613b778782880161329f565b9350506040613b8887828801613074565b925050606085013567ffffffffffffffff811115613ba957613ba861304e565b5b613bb587828801613b10565b91505092959194509250565b608082016000820151613bd76000850182613791565b506020820151613bea60208501826137b4565b506040820151613bfd60408501826137c3565b506060820151613c1060608501826137e1565b50505050565b6000608082019050613c2b6000830184613bc1565b92915050565b60008060408385031215613c4857613c47613049565b5b6000613c568582860161329f565b9250506020613c678582860161329f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613cb857607f821691505b602082108103613ccb57613cca613c71565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d3a82613053565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d6c57613d6b613d00565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613dd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d9c565b613de38683613d9c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613e20613e1b613e1684613053565b613dfb565b613053565b9050919050565b6000819050919050565b613e3a83613e05565b613e4e613e4682613e27565b848454613da9565b825550505050565b600090565b613e63613e56565b613e6e818484613e31565b505050565b5b81811015613e9257613e87600082613e5b565b600181019050613e74565b5050565b601f821115613ed757613ea881613d77565b613eb184613d8c565b81016020851015613ec0578190505b613ed4613ecc85613d8c565b830182613e73565b50505b505050565b600082821c905092915050565b6000613efa60001984600802613edc565b1980831691505092915050565b6000613f138383613ee9565b9150826002028217905092915050565b613f2c82613171565b67ffffffffffffffff811115613f4557613f446133ab565b5b613f4f8254613ca0565b613f5a828285613e96565b600060209050601f831160018114613f8d5760008415613f7b578287015190505b613f858582613f07565b865550613fed565b601f198416613f9b86613d77565b60005b82811015613fc357848901518255600182019150602085019450602081019050613f9e565b86831015613fe05784890151613fdc601f891682613ee9565b8355505b6001600288020188555050505b505050505050565b600061400082613053565b915061400b83613053565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561404457614043613d00565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061408982613053565b915061409483613053565b9250826140a4576140a361404f565b5b828204905092915050565b7f416c726561647920526573657276656400000000000000000000000000000000600082015250565b60006140e560108361317c565b91506140f0826140af565b602082019050919050565b60006020820190508181036000830152614114816140d8565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614151601f8361317c565b915061415c8261411b565b602082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f5769746864726177616c20556e7375636365737366756c000000000000000000600082015250565b60006141bd60178361317c565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b60006141fe82613053565b915061420983613053565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561423e5761423d613d00565b5b828201905092915050565b7f4f7574206f662073746f636b2100000000000000000000000000000000000000600082015250565b600061427f600d8361317c565b915061428a82614249565b602082019050919050565b600060208201905081810360008301526142ae81614272565b9050919050565b7f53616c65206e6f74206f70656e20796574210000000000000000000000000000600082015250565b60006142eb60128361317c565b91506142f6826142b5565b602082019050919050565b6000602082019050818103600083015261431a816142de565b9050919050565b7f596f7520617265206e6f74206f6e20746865206c697374210000000000000000600082015250565b600061435760188361317c565b915061436282614321565b602082019050919050565b600060208201905081810360008301526143868161434a565b9050919050565b7f4d61782070657220747820657863656564656421000000000000000000000000600082015250565b60006143c360148361317c565b91506143ce8261438d565b602082019050919050565b600060208201905081810360008301526143f2816143b6565b9050919050565b600061440482613053565b915061440f83613053565b92508282101561442257614421613d00565b5b828203905092915050565b7f4e6f7420656e6f75676820417661782073656e74210000000000000000000000600082015250565b600061446360158361317c565b915061446e8261442d565b602082019050919050565b6000602082019050818103600083015261449281614456565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006144f5602f8361317c565b915061450082614499565b604082019050919050565b60006020820190508181036000830152614524816144e8565b9050919050565b600081905092915050565b6000815461454381613ca0565b61454d818661452b565b94506001821660008114614568576001811461457d576145b0565b60ff19831686528115158202860193506145b0565b61458685613d77565b60005b838110156145a857815481890152600182019150602081019050614589565b838801955050505b50505092915050565b60006145c482613171565b6145ce818561452b565b93506145de81856020860161318d565b80840191505092915050565b60006145f68286614536565b915061460282856145b9565b915061460e8284614536565b9150819050949350505050565b600061462782866145b9565b915061463382856145b9565b915061463f8284614536565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006146a860268361317c565b91506146b38261464c565b604082019050919050565b600060208201905081810360008301526146d78161469b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061471460208361317c565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006147718261474a565b61477b8185614755565b935061478b81856020860161318d565b614794816131c0565b840191505092915050565b60006080820190506147b4600083018761325e565b6147c1602083018661325e565b6147ce604083018561351f565b81810360608301526147e08184614766565b905095945050505050565b6000815190506147fa816130e2565b92915050565b60006020828403121561481657614815613049565b5b6000614824848285016147eb565b91505092915050565b600061483882613053565b915061484383613053565b9250826148535761485261404f565b5b82820690509291505056fea26469706673582212205cc05b7b82b635c550dbdf6b57e29218626718229382d7588653effeb7d4208064736f6c634300080f003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656962796f6779373361353732787977696837706c74726234756f34776b6862636275736572726c326e66767976346862766f7835752f0000000000000000000000000000000000000000000000000000000000