Loading
[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "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": "address", "name": "collection", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "MintWithTokenURI", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "rarity", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isDiscount", "type": "bool" } ], "name": "_mintCommon", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "rarity", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isDiscount", "type": "bool" } ], "name": "_mintLand", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "_leaf", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_nftLockup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "_userBought", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "burnAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "string", "name": "rarity", "type": "string" } ], "name": "calculateDiscount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "claimRooster", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "discount", "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": "struct ERC721A.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": "struct ERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "freeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "funcSignatures", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "", "type": "address" } ], "name": "isTransferAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "isWhitelistFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "typeWhitelist", "type": "uint256" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "countNFTs_", "type": "uint256" }, { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "string", "name": "rarity", "type": "string" } ], "name": "mintAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "mintDiscountCommon", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "rarity", "type": "string" }, { "internalType": "uint256", "name": "_mintAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "bool", "name": "isLimit", "type": "bool" }, { "internalType": "uint256", "name": "whitelistType", "type": "uint256" } ], "name": "mintLand", "outputs": [], "stateMutability": "payable", "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": "perTransactionLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "rates", "outputs": [ { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "total", "type": "uint256" }, { "internalType": "uint256", "name": "sold", "type": "uint256" }, { "internalType": "bool", "name": "valid", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "typeWhitelist", "type": "uint256" }, { "internalType": "string", "name": "rarity", "type": "string" } ], "name": "removeWhiteList", "outputs": [], "stateMutability": "nonpayable", "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": "_newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "percentage", "type": "uint256" } ], "name": "setDiscount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_timestamps", "type": "uint256[]" } ], "name": "setLockUp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newMaxMintAmount", "type": "uint256" } ], "name": "setMaxMintAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "limit", "type": "uint256" } ], "name": "setPerTransactionLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "uint256", "name": "_cost", "type": "uint256" }, { "internalType": "uint256", "name": "_total", "type": "uint256" }, { "internalType": "string", "name": "_rarity", "type": "string" } ], "name": "setRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_status", "type": "uint256" } ], "name": "setSaleStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_add", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setTransferAllowed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newWhitelistroot", "type": "bytes32" }, { "internalType": "uint256", "name": "typeWhitelist", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "string[]", "name": "rarties", "type": "string[]" } ], "name": "setWhitelistRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "status", "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "whitelistRoot", "outputs": [ { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "sold", "type": "uint256" }, { "internalType": "bytes32", "name": "root", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052600060135560006014553480156200001b57600080fd5b50604051620046da380380620046da8339810160408190526200003e9162000196565b818160066200004e83826200028f565b5060076200005d82826200028f565b50506201210e6004555062000072336200007f565b50506001600f556200035b565b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000f957600080fd5b81516001600160401b0380821115620001165762000116620000d1565b604051601f8301601f19908116603f01168101908282118183101715620001415762000141620000d1565b816040528381526020925086838588010111156200015e57600080fd5b600091505b8382101562000182578582018301518183018401529082019062000163565b600093810190920192909252949350505050565b60008060408385031215620001aa57600080fd5b82516001600160401b0380821115620001c257600080fd5b620001d086838701620000e7565b93506020850151915080821115620001e757600080fd5b50620001f685828601620000e7565b9150509250929050565b600181811c908216806200021557607f821691505b6020821081036200023657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200028a57600081815260208120601f850160051c81016020861015620002655750805b601f850160051c820191505b81811015620002865782815560010162000271565b5050505b505050565b81516001600160401b03811115620002ab57620002ab620000d1565b620002c381620002bc845462000200565b846200023c565b602080601f831160018114620002fb5760008415620002e25750858301515b600019600386901b1c1916600185901b17855562000286565b600085815260208120601f198616915b828110156200032c578886015182559484019460019091019084016200030b565b50858210156200034b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61436f806200036b6000396000f3fe6080604052600436106103355760003560e01c80636352211e116101ab578063a0a2daf0116100f7578063cdb6751a11610095578063e2f36dce1161006f578063e2f36dce14610a9b578063e985e9c514610abb578063f29f15af14610b04578063f2fde38b14610b2457600080fd5b8063cdb6751a14610a48578063d3e0fbd414610a68578063dabd271914610a7b57600080fd5b8063b61d0c63116100d1578063b61d0c63146109bb578063b88d4fde146109db578063c23dc68f146109fb578063c87b56dd14610a2857600080fd5b8063a0a2daf014610945578063a22cb4651461097b578063a8b804281461099b57600080fd5b80637501f741116101645780638acdad751161013e5780638acdad751461086f5780638da5cb5b146108f257806395d89b411461091057806399a2557a1461092557600080fd5b80637501f741146107fc5780638462151c146108125780638822048e1461083f57600080fd5b80636352211e1461075c5780636b6f4a9d1461077c5780636c0360eb1461079257806370a08231146107a7578063715018a6146107c757806374f32b3e146107dc57600080fd5b806326a6860a11610285578063456904a51161022357806355f804b3116101fd57806355f804b3146106cc5780635bbb2177146106ec578063621fb96c14610719578063631e4b851461074657600080fd5b8063456904a51461064057806350572df2146106605780635465fb68146106ac57600080fd5b8063331f319c1161025f578063331f319c146105d85780633ccfd60b146105f857806341e54ade1461060d57806342842e0e1461062057600080fd5b806326a6860a1461052657806327a8c936146105465780633277f29b1461056657600080fd5b8063095ea7b3116102f2578063200d2ed2116102cc578063200d2ed2146104b057806322c64f2f146104c657806323b872dd146104e65780632529590e1461050657600080fd5b8063095ea7b31461045157806311cb29931461047157806318160ddd1461049157600080fd5b806301c162601461033a57806301ffc9a71461035c57806306fdde0314610391578063081812fc146103b3578063088a4ed0146103eb5780630935ef101461040b575b600080fd5b34801561034657600080fd5b5061035a6103553660046135e0565b610b44565b005b34801561036857600080fd5b5061037c610377366004613659565b610bba565b60405190151581526020015b60405180910390f35b34801561039d57600080fd5b506103a6610c0c565b60405161038891906136c6565b3480156103bf57600080fd5b506103d36103ce3660046136d9565b610c9e565b6040516001600160a01b039091168152602001610388565b3480156103f757600080fd5b5061035a6104063660046136d9565b610ce2565b34801561041757600080fd5b5061044361042636600461370e565b601860209081526000928352604080842090915290825290205481565b604051908152602001610388565b34801561045d57600080fd5b5061035a61046c36600461373a565b610cef565b34801561047d57600080fd5b5061035a61048c366004613764565b610dc0565b34801561049d57600080fd5b50600554600454036201210d1901610443565b3480156104bc57600080fd5b5061044360145481565b3480156104d257600080fd5b5061035a6104e136600461380f565b610e0c565b3480156104f257600080fd5b5061035a61050136600461386f565b610f96565b34801561051257600080fd5b506104436105213660046138ab565b610fe6565b34801561053257600080fd5b506103a66105413660046136d9565b61106b565b34801561055257600080fd5b5061035a6105613660046136d9565b611117565b34801561057257600080fd5b506105b06105813660046136d9565b601160205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610388565b3480156105e457600080fd5b5061035a6105f33660046138e7565b611124565b34801561060457600080fd5b5061035a6111d7565b61035a61061b36600461396c565b611237565b34801561062c57600080fd5b5061035a61063b36600461386f565b61149d565b34801561064c57600080fd5b5061035a61065b3660046138ab565b6114fd565b34801561066c57600080fd5b5061037c61067b3660046138ab565b6012602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b3480156106b857600080fd5b5061035a6106c736600461396c565b611545565b3480156106d857600080fd5b5061035a6106e73660046139b7565b611779565b3480156106f857600080fd5b5061070c610707366004613764565b61178d565b60405161038891906139eb565b34801561072557600080fd5b506104436107343660046136d9565b600c6020526000908152604090205481565b34801561075257600080fd5b5061044360175481565b34801561076857600080fd5b506103d36107773660046136d9565b611853565b34801561078857600080fd5b5061044360165481565b34801561079e57600080fd5b506103a6611865565b3480156107b357600080fd5b506104436107c2366004613a55565b611872565b3480156107d357600080fd5b5061035a6118c0565b3480156107e857600080fd5b5061037c6107f7366004613a70565b6118d4565b34801561080857600080fd5b5061044360135481565b34801561081e57600080fd5b5061083261082d366004613a55565b611936565b6040516103889190613ad4565b34801561084b57600080fd5b5061037c61085a366004613a55565b600d6020526000908152604090205460ff1681565b34801561087b57600080fd5b506108d061088a3660046138ab565b6015602090815260009283526040909220815180830184018051928152908401929093019190912091528054600182015460028301546003909301549192909160ff1684565b6040805194855260208501939093529183015215156060820152608001610388565b3480156108fe57600080fd5b50600e546001600160a01b03166103d3565b34801561091c57600080fd5b506103a6611a7d565b34801561093157600080fd5b50610832610940366004613b0c565b611a8c565b34801561095157600080fd5b506103d3610960366004613659565b6000602081905290815260409020546001600160a01b031681565b34801561098757600080fd5b5061035a610996366004613b4f565b611c55565b3480156109a757600080fd5b5061035a6109b6366004613b4f565b611d25565b3480156109c757600080fd5b506104436109d636600461373a565b611dc8565b3480156109e757600080fd5b5061035a6109f6366004613b79565b611e05565b348015610a0757600080fd5b50610a1b610a163660046136d9565b611e95565b6040516103889190613be8565b348015610a3457600080fd5b506103a6610a433660046136d9565b611f51565b348015610a5457600080fd5b5061035a610a63366004613c1d565b61200d565b61035a610a76366004613cfc565b6120f8565b348015610a8757600080fd5b5061035a610a963660046136d9565b612481565b348015610aa757600080fd5b5061035a610ab636600461396c565b61248e565b348015610ac757600080fd5b5061037c610ad6366004613d93565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b348015610b1057600080fd5b5061035a610b1f3660046136d9565b6126b7565b348015610b3057600080fd5b5061035a610b3f366004613a55565b6126c4565b610b4c61273a565b60005b8251811015610bb557818181518110610b6a57610b6a613dbd565b6020026020010151600c6000858481518110610b8857610b88613dbd565b60200260200101518152602001908152602001600020819055508080610bad90613de9565b915050610b4f565b505050565b60006001600160e01b031982166380ac58cd60e01b1480610beb57506001600160e01b03198216635b5e139f60e01b145b80610c0657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060068054610c1b90613e02565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4790613e02565b8015610c945780601f10610c6957610100808354040283529160200191610c94565b820191906000526020600020905b815481529060010190602001808311610c7757829003601f168201915b5050505050905090565b6000610ca982612794565b610cc6576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b610cea61273a565b601355565b6001600160a01b0382166000908152600d6020526040902054829060ff16610d325760405162461bcd60e51b8152600401610d2990613e3c565b60405180910390fd5b6000610d3d83611853565b9050806001600160a01b0316846001600160a01b031603610d715760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614801590610d915750610d8f8133610ad6565b155b15610daf576040516367d9dca160e11b815260040160405180910390fd5b610dba8484836127cf565b50505050565b610dc861273a565b60005b8151811015610e0857610df6828281518110610de957610de9613dbd565b602002602001015161282b565b80610e0081613de9565b915050610dcb565b5050565b6000828152601560205260408082209051859285928592610e2e908490613e73565b90815260200160405180910390206002015490506015600084815260200190815260200160002082604051610e639190613e73565b9081526040519081900360200190206003015460ff16610e955760405162461bcd60e51b8152600401610d2990613e8f565b601454600003610eb75760405162461bcd60e51b8152600401610d2990613ec6565b60008411610ed75760405162461bcd60e51b8152600401610d2990613efd565b601354841115610ef95760405162461bcd60e51b8152600401610d2990613f34565b600083815260156020526040908190209051610f16908490613e73565b90815260405190819003602001902060010154610f338583613f77565b1115610f515760405162461bcd60e51b8152600401610d2990613f8a565b601754841115610f735760405162461bcd60e51b8152600401610d2990613fd0565b506000610f7e61273a565b610f8c888887896000612836565b5050505050505050565b6000818152600c602052604090205442101580610fbf57506000818152600c6020526040902054155b610fdb5760405162461bcd60e51b8152600401610d2990614016565b610bb58383836128dd565b60008281526015602052604080822090516110649190611007908590613e73565b90815260200160405180910390206000015461105f61105860156000888152602001908152602001600020866040516110409190613e73565b90815260405190819003602001902054601654612ae9565b6064612af5565b612b01565b9392505050565b6001818154811061107b57600080fd5b90600052602060002001600091509050805461109690613e02565b80601f01602080910402602001604051908101604052809291908181526020018280546110c290613e02565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b505050505081565b61111f61273a565b601755565b61112c61273a565b82601560008681526020019081526020016000208260405161114e9190613e73565b908152604080516020928190038301812093909355600087815260159092529020839161117c908490613e73565b9081526040805191829003602090810183206001908101949094556000888152601590915220906111ae908490613e73565b908152604051908190036020019020600301805491151560ff1990921691909117905550505050565b6111df61273a565b604051600090339047908381818185875af1925050503d8060008114611221576040519150601f19603f3d011682016040523d82523d6000602084013e611226565b606091505b505090508061123457600080fd5b50565b8260016040518060400160405280600681526020016521b7b6b6b7b760d11b8152506000601560008481526020019081526020016000208260405161127c9190613e73565b908152602001604051809103902060020154905060156000848152602001908152602001600020826040516112b19190613e73565b9081526040519081900360200190206003015460ff166112e35760405162461bcd60e51b8152600401610d2990613e8f565b6014546000036113055760405162461bcd60e51b8152600401610d2990613ec6565b600084116113255760405162461bcd60e51b8152600401610d2990613efd565b6013548411156113475760405162461bcd60e51b8152600401610d2990613f34565b600083815260156020526040908190209051611364908490613e73565b908152604051908190036020019020600101546113818583613f77565b111561139f5760405162461bcd60e51b8152600401610d2990613f8a565b6017548411156113c15760405162461bcd60e51b8152600401610d2990613fd0565b5060408051808201909152600681526521b7b6b6b7b760d11b602082015260009060016113f2898989600485612b0d565b61140e5760405162461bcd60e51b8152600401610d299061405a565b3360009081527f5b650d93b25a5c652bc6f9215f522b521daf6d36977dcec1343c2a8310b869d66020526040812080548b929061144c908490613f77565b90915550611465905061145f8284610fe6565b8a612ae9565b3410156114845760405162461bcd60e51b8152600401610d2990614091565b611492338a84846001612836565b505050505050505050565b6000818152600c6020526040902054421015806114c657506000818152600c6020526040902054155b6114e25760405162461bcd60e51b8152600401610d2990614016565b610bb583838360405180602001604052806000815250611e05565b61150561273a565b6000828152601260205260408082209051611521908490613e73565b908152604051908190036020019020805491151560ff199092169190911790555050565b8260016040518060400160405280600681526020016521b7b6b6b7b760d11b8152506000601560008481526020019081526020016000208260405161158a9190613e73565b908152602001604051809103902060020154905060156000848152602001908152602001600020826040516115bf9190613e73565b9081526040519081900360200190206003015460ff166115f15760405162461bcd60e51b8152600401610d2990613e8f565b6014546000036116135760405162461bcd60e51b8152600401610d2990613ec6565b600084116116335760405162461bcd60e51b8152600401610d2990613efd565b6013548411156116555760405162461bcd60e51b8152600401610d2990613f34565b600083815260156020526040908190209051611672908490613e73565b9081526040519081900360200190206001015461168f8583613f77565b11156116ad5760405162461bcd60e51b8152600401610d2990613f8a565b6017548411156116cf5760405162461bcd60e51b8152600401610d2990613fd0565b6000905060006040518060400160405280600681526020016521b7b6b6b7b760d11b815250905060006001905061170b89898960066001612b0d565b6117275760405162461bcd60e51b8152600401610d299061405a565b3360009081527f33d69b83f8d9644c8360a50d7275bf12a50019a4cd4e17926d0b315da648c58d6020526040812080548b9290611765908490613f77565b909155506114929050338a84846000612c9b565b61178161273a565b6010610e088282614119565b80516060906000816001600160401b038111156117ac576117ac61350c565b6040519080825280602002602001820160405280156117f757816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816117ca5790505b50905060005b82811461184b5761182685828151811061181957611819613dbd565b6020026020010151611e95565b82828151811061183857611838613dbd565b60209081029190910101526001016117fd565b509392505050565b600061185e82612d6a565b5192915050565b6010805461109690613e02565b60006001600160a01b03821661189b576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b6118c861273a565b6118d26000612e93565b565b600061192c6118e38785611dc8565b8686808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250888152601160205260409020600401549250612ee5915050565b9695505050505050565b6060600080600061194685611872565b90506000816001600160401b038111156119625761196261350c565b60405190808252806020026020018201604052801561198b578160200160208202803683370190505b5090506119b1604080516060810182526000808252602082018190529181019190915290565b6201210e5b838611611a7157600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529250611a695781516001600160a01b031615611a2a57815194505b876001600160a01b0316856001600160a01b031603611a695780838780600101985081518110611a5c57611a5c613dbd565b6020026020010181815250505b6001016119b6565b50909695505050505050565b606060078054610c1b90613e02565b606081831115611aaf57604051631960ccad60e11b815260040160405180910390fd5b6004546000906001016201210e851015611aca576201210e94505b80841115611ad6578093505b6000611ae187611872565b905084861015611b005785850381811015611afa578091505b50611b04565b5060005b6000816001600160401b03811115611b1e57611b1e61350c565b604051908082528060200260200182016040528015611b47578160200160208202803683370190505b50905081600003611b5d57935061106492505050565b6000611b6888611e95565b905060008160400151611b79575080515b885b888114158015611b8b5750848714155b15611c4457600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529350611c3c5782516001600160a01b031615611bfd57825191505b8a6001600160a01b0316826001600160a01b031603611c3c5780848880600101995081518110611c2f57611c2f613dbd565b6020026020010181815250505b600101611b7b565b505050928352509095945050505050565b6001600160a01b0382166000908152600d6020526040902054829060ff16611c8f5760405162461bcd60e51b8152600401610d2990613e3c565b336001600160a01b03841603611cb85760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03881680855290835292819020805460ff191687151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611d2d61273a565b6001600160a01b0382166000908152600d602052604090205481151560ff909116151503611d9d5760405162461bcd60e51b815260206004820152601c60248201527f58616e616c616e643a2073746174757320616c726561647920736574000000006044820152606401610d29565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b604080516001600160a01b038416602082015290810182905260009060600160405160208183030381529060405280519060200120905092915050565b6000828152600c602052604090205442101580611e2e57506000828152600c6020526040902054155b611e4a5760405162461bcd60e51b8152600401610d2990614016565b611e558484846128dd565b6001600160a01b0383163b15158015611e775750611e7584848484612efa565b155b15610dba576040516368d2bf6b60e11b815260040160405180910390fd5b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906201210e831080611edd57506004548310155b15611ee85792915050565b50600082815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161580159282019290925290611f485792915050565b61106483612d6a565b6060611f5c82612794565b611fb25760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b656044820152603760f91b6064820152608401610d29565b6000611fbc612fe5565b90506000815111611fdc5760405180602001604052806000815250611064565b80611fe684612ff4565b604051602001611ff79291906141d8565b6040516020818303038152906040529392505050565b61201561273a565b6040805160a081018252858152602080820186815282840186815260008a8152601180855295812060038101805460608801908152608088018f81528e855298909652955181559251600184015590516002830155915190925591516004909101555b81518110156120ef576001601260008881526020019081526020016000208383815181106120a8576120a8613dbd565b60200260200101516040516120bd9190613e73565b908152604051908190036020019020805491151560ff19909216919091179055806120e781613de9565b915050612078565b50505050505050565b6000858152601560205260408082209051889288928b9261211a908490613e73565b9081526020016040518091039020600201549050601560008481526020019081526020016000208260405161214f9190613e73565b9081526040519081900360200190206003015460ff166121815760405162461bcd60e51b8152600401610d2990613e8f565b6014546000036121a35760405162461bcd60e51b8152600401610d2990613ec6565b600084116121c35760405162461bcd60e51b8152600401610d2990613efd565b6013548411156121e55760405162461bcd60e51b8152600401610d2990613f34565b600083815260156020526040908190209051612202908490613e73565b9081526040519081900360200190206001015461221f8583613f77565b111561223d5760405162461bcd60e51b8152600401610d2990613f8a565b60175484111561225f5760405162461bcd60e51b8152600401610d2990613fd0565b50600088815260156020526040808220905161227c908d90613e73565b9081526040519081900360200190206003015460ff166122ae5760405162461bcd60e51b8152600401610d2990613e8f565b6000858152601260205260409081902090516122cb908d90613e73565b9081526040519081900360200190205460ff1661231e5760405162461bcd60e51b815260206004820152601160248201527016185b9853185b990e88125b9d985b1a59607a1b6044820152606401610d29565b60145460020361237b5784156123765760405162461bcd60e51b815260206004820152601a60248201527f58616e614c616e643a206f6e6c79207075626c69632073616c650000000000006044820152606401610d29565b6123b8565b846000036123b85760405162461bcd60e51b815260206004820152600a60248201526902c30b730a630b7321d160b51b6044820152606401610d29565b6123c58a8989888a612b0d565b6123e15760405162461bcd60e51b8152600401610d299061405a565b6000858152601860209081526040808320338452909152812080548c929061240a908490613f77565b90915550506000898152601560205260409081902090516124479190612431908e90613e73565b908152604051908190036020019020548b612ae9565b3410156124665760405162461bcd60e51b8152600401610d2990614091565b612474338b8d8c6000612836565b5050505050505050505050565b61248961273a565b601655565b8260016040518060400160405280600681526020016521b7b6b6b7b760d11b815250600060156000848152602001908152602001600020826040516124d39190613e73565b908152602001604051809103902060020154905060156000848152602001908152602001600020826040516125089190613e73565b9081526040519081900360200190206003015460ff1661253a5760405162461bcd60e51b8152600401610d2990613e8f565b60145460000361255c5760405162461bcd60e51b8152600401610d2990613ec6565b6000841161257c5760405162461bcd60e51b8152600401610d2990613efd565b60135484111561259e5760405162461bcd60e51b8152600401610d2990613f34565b6000838152601560205260409081902090516125bb908490613e73565b908152604051908190036020019020600101546125d88583613f77565b11156125f65760405162461bcd60e51b8152600401610d2990613f8a565b6017548411156126185760405162461bcd60e51b8152600401610d2990613fd0565b5060408051808201909152600681526521b7b6b6b7b760d11b60208201526000906001612649898989600585612b0d565b6126655760405162461bcd60e51b8152600401610d299061405a565b3360009081527f2288853b49db4f36075bf4a8cfdae4e5e3b39b7b03937d0a9148b051a6f64c5c6020526040812080548b92906126a3908490613f77565b909155506114929050338a84846000612836565b6126bf61273a565b601455565b6126cc61273a565b6001600160a01b0381166127315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d29565b61123481612e93565b600e546001600160a01b031633146118d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d29565b6000816201210e111580156127aa575060045482105b8015610c06575050600090815260086020526040902054600160e01b900460ff161590565b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6112348160006130f4565b60008061284387876132a8565b915091508560156000868152602001908152602001600020866040516128699190613e73565b908152602001604051809103902060020160008282546128899190613f77565b90915550506040517fc5e101581b86caaead7cd59d5856276f8289c3a689e5190e88cdf51a82b255b4906128cc90899088908890879087908d9034908c90614207565b60405180910390a150505050505050565b336000818152600d602052604090205460ff1661290c5760405162461bcd60e51b8152600401610d2990613e3c565b600061291783612d6a565b9050846001600160a01b031681600001516001600160a01b03161461294e5760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b038716148061296c575061296c8633610ad6565b8061298757503361297c85610c9e565b6001600160a01b0316145b9050806129a757604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166129ce57604051633a954ecd60e21b815260040160405180910390fd5b6129da600085886127cf565b6001600160a01b038681166000908152600960209081526040808320805467ffffffffffffffff198082166001600160401b03928316600019018316179092558a86168086528386208054938416938316600190810184169490941790558a8652600890945282852080546001600160e01b031916909417600160a01b42909216919091021783558801808452922080549193909116612aae576004548214612aae57805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038b16171781555b50505083856001600160a01b0316876001600160a01b031660008051602061431a83398151915260405160405180910390a45b505050505050565b60006110648284614261565b6000611064828461428e565b600061106482846142a2565b60006002600f5403612b615760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d29565b6002600f55600083815260116020526040902054421015612bb95760405162461bcd60e51b81526020600482015260126024820152712c30b730b630b7321d103737ba1037b832b760711b6044820152606401610d29565b600083815260116020526040902060010154421115612c115760405162461bcd60e51b815260206004820152601460248201527316185b985b185b990e881cd85b1948195b99195960621b6044820152606401610d29565b600082612c1f576000612c44565b6000848152601860209081526040808320338452909152902054612c44908890613f77565b905086601160008681526020019081526020016000206003016000828254612c6c9190613f77565b90915550506014546001141580612c8b5750612c8b33878784886118d4565b6001600f55979650505050505050565b600080612ca887876132a8565b91509150856015600086815260200190815260200160002086604051612cce9190613e73565b90815260200160405180910390206002016000828254612cee9190613f77565b909155508290505b818111612d2c57612d0b426301e13380613f77565b6000828152600c602052604090205580612d2481613de9565b915050612cf6565b507fc5e101581b86caaead7cd59d5856276f8289c3a689e5190e88cdf51a82b255b487868685858b348a6040516128cc989796959493929190614207565b604080516060810182526000808252602082018190529181019190915281806201210e11158015612d9c575060045481105b15612e7a57600081815260086020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905290612e785780516001600160a01b031615612e0f579392505050565b5060001901600081815260086020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215612e73579392505050565b612e0f565b505b604051636f96cda160e11b815260040160405180910390fd5b600e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000612ef28383866132d1565b949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612f2f9033908990889088906004016142b5565b6020604051808303816000875af1925050508015612f6a575060408051601f3d908101601f19168201909252612f67918101906142e8565b60015b612fc8573d808015612f98576040519150601f19603f3d011682016040523d82523d6000602084013e612f9d565b606091505b508051600003612fc0576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b606060108054610c1b90613e02565b60608160000361301b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613045578061302f81613de9565b915061303e9050600a8361428e565b915061301f565b6000816001600160401b0381111561305f5761305f61350c565b6040519080825280601f01601f191660200182016040528015613089576020820181803683370190505b5090505b8415612ef25761309e6001836142a2565b91506130ab600a86614305565b6130b6906030613f77565b60f81b8183815181106130cb576130cb613dbd565b60200101906001600160f81b031916908160001a9053506130ed600a8661428e565b945061308d565b60006130ff83612d6a565b80519091508215613165576000336001600160a01b038316148061312857506131288233610ad6565b8061314357503361313886610c9e565b6001600160a01b0316145b90508061316357604051632ce44b5f60e11b815260040160405180910390fd5b505b613171600085836127cf565b6001600160a01b0380821660008181526009602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526008909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b17855591890180845292208054919490911661326f57600454821461326f57805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b0384169060008051602061431a833981519152908390a450506005805460010190555050565b6000806132c58484604051806020016040528060008152506132e7565b915091505b9250929050565b6000826132de85846134a0565b14949350505050565b60045460009081906001600160a01b03861661331557604051622e076360e81b815260040160405180910390fd5b846000036133365760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038616600081815260096020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168d0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168d01811690920217909155858452600890925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818701903b1561344c575b60405182906001600160a01b038a169060009060008051602061431a833981519152908290a46134156000898480600101955089612efa565b613432576040516368d2bf6b60e11b815260040160405180910390fd5b8082036133dc57826004541461344757600080fd5b61347f565b5b6040516001830192906001600160a01b038a169060009060008051602061431a833981519152908290a480820361344d575b5060045580600160045461349391906142a2565b9250925050935093915050565b600081815b845181101561184b5760008582815181106134c2576134c2613dbd565b602002602001015190508083116134e857600083815260208290526040902092506134f9565b600081815260208490526040902092505b508061350481613de9565b9150506134a5565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561354a5761354a61350c565b604052919050565b60006001600160401b0382111561356b5761356b61350c565b5060051b60200190565b600082601f83011261358657600080fd5b8135602061359b61359683613552565b613522565b82815260059290921b840181019181810190868411156135ba57600080fd5b8286015b848110156135d557803583529183019183016135be565b509695505050505050565b600080604083850312156135f357600080fd5b82356001600160401b038082111561360a57600080fd5b61361686838701613575565b9350602085013591508082111561362c57600080fd5b5061363985828601613575565b9150509250929050565b6001600160e01b03198116811461123457600080fd5b60006020828403121561366b57600080fd5b813561106481613643565b60005b83811015613691578181015183820152602001613679565b50506000910152565b600081518084526136b2816020860160208601613676565b601f01601f19169290920160200192915050565b602081526000611064602083018461369a565b6000602082840312156136eb57600080fd5b5035919050565b80356001600160a01b038116811461370957600080fd5b919050565b6000806040838503121561372157600080fd5b82359150613731602084016136f2565b90509250929050565b6000806040838503121561374d57600080fd5b613756836136f2565b946020939093013593505050565b60006020828403121561377657600080fd5b81356001600160401b0381111561378c57600080fd5b612ef284828501613575565b60006001600160401b038311156137b1576137b161350c565b6137c4601f8401601f1916602001613522565b90508281528383830111156137d857600080fd5b828260208301376000602084830101529392505050565b600082601f83011261380057600080fd5b61106483833560208501613798565b6000806000806080858703121561382557600080fd5b61382e856136f2565b9350602085013592506040850135915060608501356001600160401b0381111561385757600080fd5b613863878288016137ef565b91505092959194509250565b60008060006060848603121561388457600080fd5b61388d846136f2565b925061389b602085016136f2565b9150604084013590509250925092565b600080604083850312156138be57600080fd5b8235915060208301356001600160401b038111156138db57600080fd5b613639858286016137ef565b600080600080608085870312156138fd57600080fd5b84359350602085013592506040850135915060608501356001600160401b0381111561385757600080fd5b60008083601f84011261393a57600080fd5b5081356001600160401b0381111561395157600080fd5b6020830191508360208260051b85010111156132ca57600080fd5b60008060006040848603121561398157600080fd5b8335925060208401356001600160401b0381111561399e57600080fd5b6139aa86828701613928565b9497909650939450505050565b6000602082840312156139c957600080fd5b81356001600160401b038111156139df57600080fd5b612ef2848285016137ef565b6020808252825182820181905260009190848201906040850190845b81811015611a7157613a4283855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101613a07565b600060208284031215613a6757600080fd5b611064826136f2565b600080600080600060808688031215613a8857600080fd5b613a91866136f2565b945060208601356001600160401b03811115613aac57600080fd5b613ab888828901613928565b9699909850959660408101359660609091013595509350505050565b6020808252825182820181905260009190848201906040850190845b81811015611a7157835183529284019291840191600101613af0565b600080600060608486031215613b2157600080fd5b613b2a846136f2565b95602085013595506040909401359392505050565b8035801515811461370957600080fd5b60008060408385031215613b6257600080fd5b613b6b836136f2565b915061373160208401613b3f565b60008060008060808587031215613b8f57600080fd5b613b98856136f2565b9350613ba6602086016136f2565b92506040850135915060608501356001600160401b03811115613bc857600080fd5b8501601f81018713613bd957600080fd5b61386387823560208401613798565b81516001600160a01b031681526020808301516001600160401b03169082015260408083015115159082015260608101610c06565b60008060008060008060c08789031215613c3657600080fd5b86359550602080880135955060408801359450606088013593506080880135925060a08801356001600160401b0380821115613c7157600080fd5b818a0191508a601f830112613c8557600080fd5b8135613c9361359682613552565b81815260059190911b8301840190848101908d831115613cb257600080fd5b8585015b83811015613ce8578481351115613ccc57600080fd5b613cdb8f8883358901016137ef565b8352918601918601613cb6565b508096505050505050509295509295509295565b600080600080600080600060c0888a031215613d1757600080fd5b87356001600160401b0380821115613d2e57600080fd5b613d3a8b838c016137ef565b985060208a0135975060408a0135965060608a0135915080821115613d5e57600080fd5b50613d6b8a828b01613928565b9095509350613d7e905060808901613b3f565b915060a0880135905092959891949750929550565b60008060408385031215613da657600080fd5b613daf836136f2565b9150613731602084016136f2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613dfb57613dfb613dd3565b5060010190565b600181811c90821680613e1657607f821691505b602082108103613e3657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601c908201527f4552433732313a207472616e73666572206e6f7420616c6c6f77656400000000604082015260600190565b60008251613e85818460208701613676565b9190910192915050565b6020808252601d908201527f58616e614c616e643a20506c6f742073697a65206e6f742076616c6964000000604082015260600190565b6020808252601f908201527f58616e614c616e643a2053616c65206e6f742073746172746564207965742e00604082015260600190565b60208082526018908201527f58616e614c616e643a20416d6f756e74206973205a65726f0000000000000000604082015260600190565b60208082526023908201527f58616e614c616e643a20416d6f756e7420657863656564656420696e20706172604082015262616d7360e81b606082015260800190565b80820180821115610c0657610c06613dd3565b60208082526026908201527f58616e614c616e643a204d6178204c696d6974205265616368656420666f722060408201526521b7b6b6b7b760d11b606082015260800190565b60208082526026908201527f58616e614c616e643a20506572207472616e73616374696f6e206c696d697420604082015265195e18d9595960d21b606082015260800190565b60208082526024908201527f58616e614c616e643a204e4654206c6f636b7570206e6f742065787069726564604082015263081e595d60e21b606082015260800190565b60208082526019908201527f58616e614c616e643a204e6f742077686974656c697374656400000000000000604082015260600190565b60208082526022908201527f58616e614c616e643a205061696420616d6f756e7420696e73756666696369656040820152611b9d60f21b606082015260800190565b601f821115610bb557600081815260208120601f850160051c810160208610156140fa5750805b601f850160051c820191505b81811015612ae157828155600101614106565b81516001600160401b038111156141325761413261350c565b614146816141408454613e02565b846140d3565b602080601f83116001811461417b57600084156141635750858301515b600019600386901b1c1916600185901b178555612ae1565b600085815260208120601f198616915b828110156141aa5788860151825594840194600190910190840161418b565b50858210156141c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516141ea818460208801613676565b8351908301906141fe818360208801613676565b01949350505050565b6001600160a01b03891681526101006020820181905260009061422c8382018b61369a565b604084019990995250506060810195909552608085019390935260a084019190915260c0830152151560e09091015292915050565b8082028115828204841417610c0657610c06613dd3565b634e487b7160e01b600052601260045260246000fd5b60008261429d5761429d614278565b500490565b81810381811115610c0657610c06613dd3565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061192c9083018461369a565b6000602082840312156142fa57600080fd5b815161106481613643565b60008261431457614314614278565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202ae2bfd210aa81b980a93a9de19402ca0cf23212d607fc4ff0d9994661b3bfa864736f6c63430008110033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004544142490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045441424900000000000000000000000000000000000000000000000000000000