[ { "inputs": [], "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": "AvalaunchNFT__AVAXTransferFailed", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__BalanceEmpty", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__BaseURIAlreadySet", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__CollectionSizeLimitReached", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__ContractIsNotConsumer", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidAddress", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidCallbackGasLimit", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidKeyHash", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidMessageValue", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidRoyaltySettings", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__InvalidSignature", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__OnlyDirectCalls", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__SignatureAlreadyUsed", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__SignatureExpired", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__VRFAlreadySet", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__VRFNotActive", "type": "error" }, { "inputs": [], "name": "AvalaunchNFT__unrevealedURIAlreadySet", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "BatchReveal__InvalidInitParams", "type": "error" }, { "inputs": [], "name": "BatchReveal__NoBatchAvailable", "type": "error" }, { "inputs": [], "name": "InvalidCoordinatorAddress", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "have", "type": "address" }, { "internalType": "address", "name": "want", "type": "address" } ], "name": "OnlyCoordinatorCanFulfill", "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": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "suffix", "type": "string" } ], "name": "BaseURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "feePercent", "type": "uint256" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "EarningsWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "batchNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "batchSeed", "type": "uint256" } ], "name": "Reveal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "batchNumber", "type": "uint256" } ], "name": "RevealPending", "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": "string", "name": "unrevealedURI", "type": "string" } ], "name": "UnrevealedURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "vrfCoordinator", "type": "address" } ], "name": "VRFCoordinatorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "vrfCoordinator", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "keyHash", "type": "bytes32" }, { "indexed": false, "internalType": "uint64", "name": "subId", "type": "uint64" }, { "indexed": false, "internalType": "uint32", "name": "callbackGasLimit", "type": "uint32" } ], "name": "VRFSet", "type": "event" }, { "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": "", "type": "uint256" } ], "name": "batchToSeed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "callbackGasLimit", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collectionSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableVRF", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAvailableBatch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint256", "name": "collectionSize", "type": "uint256" }, { "internalType": "uint256", "name": "revealBatchSize", "type": "uint256" }, { "internalType": "string", "name": "collectionName", "type": "string" }, { "internalType": "string", "name": "collectionSymbol", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "bytes32", "name": "", "type": "bytes32" } ], "name": "isHashUsed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isUsingVRF", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keyHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastTokenRevealed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "uint256", "name": "pricePerUnit", "type": "uint256" }, { "internalType": "uint256", "name": "sigExpTime", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "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": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "internalType": "uint256[]", "name": "randomWords", "type": "uint256[]" } ], "name": "rawFulfillRandomWords", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestConfirmations", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealBatchSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "baseURI_", "type": "string" }, { "internalType": "string", "name": "suffix_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_unrevealedURI", "type": "string" } ], "name": "setUnrevealedURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_vrfCoordinator", "type": "address" }, { "internalType": "bytes32", "name": "_keyHash", "type": "bytes32" }, { "internalType": "uint64", "name": "_subId", "type": "uint64" }, { "internalType": "uint32", "name": "_callbackGasLimit", "type": "uint32" } ], "name": "setVRF", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "subId", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "suffix", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unrevealedURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vrfCoordinator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "withdrawEarnings", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61509780620000f46000396000f3fe6080604052600436106102dc5760003560e01c80636c0360eb11610184578063b0fb162f116100d6578063e985e9c51161008a578063f431919511610064578063f43191951461087f578063f7073c3a14610895578063fe2c7fee146108aa57600080fd5b8063e985e9c5146107c9578063eb1d28bb1461081f578063f2fde38b1461085f57600080fd5b8063c87b56dd116100bb578063c87b56dd14610769578063d66f3a7914610789578063e001ff52146107a957600080fd5b8063b0fb162f14610721578063b88d4fde1461074957600080fd5b8063777c909111610138578063a22cb46511610112578063a22cb465146106bf578063a3e56fa8146106df578063a475b5dd1461070c57600080fd5b8063777c9091146106505780638da5cb5b1461067e57806395d89b41146106aa57600080fd5b806370a082311161016957806370a0823114610606578063715018a61461062657806372f877591461063b57600080fd5b80636c0360eb146105dc5780637035bf18146105f157600080fd5b806323b872dd1161023d57806345c0f533116101f157806361728f39116101cb57806361728f39146105855780636352211e1461059c5780636790a9de146105bc57600080fd5b806345c0f5331461054157806346e325be146105575780634a9eee691461057257600080fd5b80632a55205a116102225780632a55205a146104b55780633d4d8d4f1461050157806342842e0e1461052157600080fd5b806323b872dd1461046257806324f746971461048257600080fd5b80630b56481011610294578063187338431161027957806318733843146103fc5780631fe543e31461041157806320021d8b1461043157600080fd5b80630b564810146103bf57806318160ddd146103e357600080fd5b806306fdde03116102c557806306fdde0314610338578063081812fc1461035a578063095ea7b31461039f57600080fd5b806301ffc9a7146102e157806304634d8d14610316575b600080fd5b3480156102ed57600080fd5b506103016102fc366004614138565b6108ca565b60405190151581526020015b60405180910390f35b34801561032257600080fd5b50610336610331366004614191565b610990565b005b34801561034457600080fd5b5061034d610a49565b60405161030d9190614238565b34801561036657600080fd5b5061037a61037536600461424b565b610adb565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b3480156103ab57600080fd5b506103366103ba366004614264565b610b45565b3480156103cb57600080fd5b506103d560fe5481565b60405190815260200161030d565b3480156103ef57600080fd5b50606654606554036103d5565b34801561040857600080fd5b506103d5610c55565b34801561041d57600080fd5b5061033661042c366004614332565b610c71565b34801561043d57600080fd5b5061030161044c36600461424b565b6101946020526000908152604090205460ff1681565b34801561046e57600080fd5b5061033661047d3660046143d4565b610cf7565b34801561048e57600080fd5b50610103546104a09063ffffffff1681565b60405163ffffffff909116815260200161030d565b3480156104c157600080fd5b506104d56104d0366004614415565b610d02565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161030d565b34801561050d57600080fd5b5061033661051c366004614437565b610dfb565b34801561052d57600080fd5b5061033661053c3660046143d4565b610f7b565b34801561054d57600080fd5b506103d560fb5481565b34801561056357600080fd5b50610101546103019060ff1681565b610336610580366004614496565b610f96565b34801561059157600080fd5b506103d56101025481565b3480156105a857600080fd5b5061037a6105b736600461424b565b61133f565b3480156105c857600080fd5b506103366105d73660046144f7565b611351565b3480156105e857600080fd5b5061034d611401565b3480156105fd57600080fd5b5061034d611490565b34801561061257600080fd5b506103d5610621366004614437565b61149e565b34801561063257600080fd5b50610336611520565b34801561064757600080fd5b50610336611534565b34801561065c57600080fd5b506103d561066b36600461424b565b6101006020526000908152604090205481565b34801561068a57600080fd5b5061012d5473ffffffffffffffffffffffffffffffffffffffff1661037a565b3480156106b657600080fd5b5061034d6115a9565b3480156106cb57600080fd5b506103366106da366004614563565b6115b8565b3480156106eb57600080fd5b5060c95461037a9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561071857600080fd5b5061033661169e565b34801561072d57600080fd5b50610736600381565b60405161ffff909116815260200161030d565b34801561075557600080fd5b50610336610764366004614596565b6116bb565b34801561077557600080fd5b5061034d61078436600461424b565b611732565b34801561079557600080fd5b506103366107a43660046146a0565b611814565b3480156107b557600080fd5b506103366107c43660046146f3565b611c28565b3480156107d557600080fd5b506103016107e436600461479b565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606c6020908152604080832093909416825291909152205460ff1690565b34801561082b57600080fd5b506101015461084690610100900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161030d565b34801561086b57600080fd5b5061033661087a366004614437565b611ea5565b34801561088b57600080fd5b506103d560ff5481565b3480156108a157600080fd5b5061034d611f5c565b3480156108b657600080fd5b506103366108c53660046147c9565b611f6a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fe001ff5200000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061096c575061096c82612005565b8061097b575061097b826120e8565b8061098a575061098a826120e8565b92915050565b61099861213e565b6105dc816bffffffffffffffffffffffff1611156109e2576040517f45d7184b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ec82826121c0565b6040516bffffffffffffffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff8316907fd85b7816dca44c313f0fdadd9567f99f3620a2fac7c21a8a7872e1ac4d10fe559060200160405180910390a25050565b606060678054610a589061480b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a849061480b565b8015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b5050505050905090565b6000610ae682612339565b610b1c576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152606b602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610b508261133f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614801590610c0e575073ffffffffffffffffffffffffffffffffffffffff81166000908152606c6020908152604080832033845290915290205460ff16155b15610c45576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c5083838361237e565b505050565b6000610c6c610c676066546065540390565b6123ff565b905090565b60c95473ffffffffffffffffffffffffffffffffffffffff163314610ce95760c9546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b610cf3828261246e565b5050565b610c50838383612523565b600082815260986020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610dbd57506040805180820190915260975473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610de1906bffffffffffffffffffffffff168761488d565b610deb91906148d3565b91519350909150505b9250929050565b610e0361213e565b73ffffffffffffffffffffffffffffffffffffffff8116610e50576040517fb0e767b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b476000819003610e8c576040517f5aa3694400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610ee6576040519150601f19603f3d011682016040523d82523d6000602084013e610eeb565b606091505b5050905080610f26576040517fbc828ce300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f48dc35af7b45e2a81fffad55f6e2fafacdb1d3d0d50d24ebdc16324f5ba757f183604051610f6e91815260200190565b60405180910390a2505050565b610c50838383604051806020016040528060008152506116bb565b610f9e612886565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b8216602084015230901b1660348201526048810186905260688101859052608881018490526000906110609060a801604051602081830303815290604052805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6000818152610194602052604090205490915060ff1615156001036110b1576040517ffee3b00500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526101946020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561110961012d5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1661116184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506128bf9050565b73ffffffffffffffffffffffffffffffffffffffff16146111ae576040517fb17fa7c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50824211156111e9576040517f2336a2d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006111f5858761488d565b90508034111561128e5760003361120c83346148e7565b604051600081818185875af1925050503d8060008114611248576040519150601f19603f3d011682016040523d82523d6000602084013e61124d565b606091505b5050905080611288576040517fbc828ce300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506112c8565b803410156112c8576040517f1051a11e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb54866112d96066546065540390565b6112e391906148fa565b111561131b576040517f893b8d8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133733876040518060200160405280600081525060006128e3565b505050505050565b600061134a82612b91565b5192915050565b61135961213e565b61019180546113679061480b565b1590506113a0576040517fa0c5053600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101916113ae848683614953565b506101926113bd828483614953565b507f2e0a5b969d96a99aee0b35787d9a60516a02ca6f528a5f66d3f936468d8f0382848484846040516113f39493929190614ab6565b60405180910390a150505050565b610191805461140f9061480b565b80601f016020809104026020016040519081016040528092919081815260200182805461143b9061480b565b80156114885780601f1061145d57610100808354040283529160200191611488565b820191906000526020600020905b81548152906001019060200180831161146b57829003601f168201915b505050505081565b610193805461140f9061480b565b600073ffffffffffffffffffffffffffffffffffffffff82166114ed576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152606a602052604090205467ffffffffffffffff1690565b61152861213e565b6115326000612d5f565b565b61153c61213e565b6101015460ff16151560000361157e576040517f0984814900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b606060688054610a589061480b565b3373ffffffffffffffffffffffffffffffffffffffff831603611607576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152606c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6116a661213e565b6115326116b66066546065540390565b612dd7565b6116c6848484612523565b73ffffffffffffffffffffffffffffffffffffffff83163b151580156116f557506116f384848484612f93565b155b1561172c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606060ff5482106117d057610193805461174b9061480b565b80601f01602080910402602001604051908101604052809291908181526020018280546117779061480b565b80156117c45780601f10611799576101008083540402835291602001916117c4565b820191906000526020600020905b8154815290600101906020018083116117a757829003601f168201915b50505050509050919050565b6101916117e46117df8461310d565b61316c565b6101926040516020016117f993929190614b79565b6040516020818303038152906040529050919050565b919050565b61181c61213e565b6101015460ff161561185a576040517fe434ef4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118638461322a565b6000808573ffffffffffffffffffffffffffffffffffffffff16620122916040518163ffffffff1660e01b8152600401600060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526118f69190810190614ba1565b9250925050614e208363ffffffff16108061191c57508163ffffffff168363ffffffff16115b15611953576040517f4dfeddb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561199b578683828151811061197357611973614c63565b602002602001015103611989576001915061199b565b8061199381614c92565b915050611957565b50806119d3576040517fd4ff2f9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa47c769600000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8616600482015260009073ffffffffffffffffffffffffffffffffffffffff89169063a47c769690602401600060405180830381865afa158015611a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611a909190810190614cca565b93505050506000805b8251811015611b0957828181518110611ab457611ab4614c63565b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611af75760019150611b09565b80611b0181614c92565b915050611a99565b5080611b41576040517ff1ed99ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010180546101028a905567ffffffffffffffff891661010081027fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000090921691909117600117909155610103805463ffffffff89167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911681179091556040805173ffffffffffffffffffffffffffffffffffffffff8d168152602081018c90529081019290925260608201527ff3f5a94accd1162546526b6c953c564c76d28a3513d2f9a1ce52df04dff6b9b0906080015b60405180910390a1505050505050505050565b600054610100900460ff1615808015611c485750600054600160ff909116105b80611c625750303b158015611c62575060005460ff166001145b611cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610ce0565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d4c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611dbf85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061331792505050565b611dc76133b8565b611dcf61344f565b611dd987876134ee565b611de58861012c6121c0565b73ffffffffffffffffffffffffffffffffffffffff8916611e32576040517fb0e767b100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e3b89612d5f565b8015611e9a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611c15565b505050505050505050565b611ead61213e565b73ffffffffffffffffffffffffffffffffffffffff8116611f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ce0565b611f5981612d5f565b50565b610192805461140f9061480b565b611f7261213e565b6101938054611f809061480b565b159050611fb9576040517fe7e94e5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610193611fc7828483614953565b507f4012c6d278d4b460acbc560e9fa4425e187c3b40c848b8dfa248139729efee438282604051611ff9929190614da0565b60405180910390a15050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061209857507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061098a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461098a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061098a575061098a82612005565b61012d5473ffffffffffffffffffffffffffffffffffffffff163314611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ce0565b6127106bffffffffffffffffffffffff82161115612260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401610ce0565b73ffffffffffffffffffffffffffffffffffffffff82166122dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610ce0565b6040805180820190915273ffffffffffffffffffffffffffffffffffffffff9092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217609755565b60006065548210801561098a5750506000908152606960205260409020547c0100000000000000000000000000000000000000000000000000000000900460ff161590565b6000828152606b602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061240961363d565b905060fe5460ff5461241b91906148fa565b82108061243757506000818152610104602052604090205460ff165b1561180f576040517fb4d973bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061247861363d565b9050600060fe548261248a919061488d565b60fb5461249791906148e7565b836000815181106124aa576124aa614c63565b60200260200101516124bc9190614db4565b60008381526101006020526040812082905560fe5460ff805493945090929091906124e89084906148fa565b909155505060408051838152602081018390527fc172d6f677c5cb603b93b418c5bbd19afeb3dc6d48a2c4b658254bdae7203b5491016113f3565b600061252e82612b91565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612599576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff861614806125ef575073ffffffffffffffffffffffffffffffffffffffff85166000908152606c6020908152604080832033845290915290205460ff165b806126175750336125ff84610adb565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612650576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661269d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126a96000848761237e565b73ffffffffffffffffffffffffffffffffffffffff8581166000908152606a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000080821667ffffffffffffffff9283167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831617909255898616808652838620805493841693831660019081018416949094179055898652606990945282852080547fffffffff00000000000000000000000000000000000000000000000000000000169094177401000000000000000000000000000000000000000042909216919091021783558701808452922080549193909116612820576065548214612820578054602086015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff8a16171781555b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b333214611532576040517f55c94df200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006128ce8585613658565b915091506128db8161369a565b509392505050565b60655473ffffffffffffffffffffffffffffffffffffffff8516612933576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360000361296d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166000818152606a6020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168c018116918217680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941690921783900481168c01811690920217909155858452606990925290912080547fffffffff000000000000000000000000000000000000000000000000000000001690921774010000000000000000000000000000000000000000429092169190910217905580808501838015612a88575073ffffffffffffffffffffffffffffffffffffffff87163b15155b15612b36575b604051829073ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612ae66000888480600101955088612f93565b612b1c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612a8e578260655414612b3157600080fd5b612b88565b5b60405160018301929073ffffffffffffffffffffffffffffffffffffffff8916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808203612b37575b5060655561287f565b604080516060810182526000808252602082018190529181019190915281606554811015612d2d576000818152606960209081526040918290208251606081018452905473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000810467ffffffffffffffff16928201929092527c010000000000000000000000000000000000000000000000000000000090910460ff16151591810182905290612d2b57805173ffffffffffffffffffffffffffffffffffffffff1615612c6c579392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016000818152606960209081526040918290208251606081018452905473ffffffffffffffffffffffffffffffffffffffff811680835274010000000000000000000000000000000000000000820467ffffffffffffffff16938301939093527c0100000000000000000000000000000000000000000000000000000000900460ff1615159281019290925215612d26579392505050565b612c6c565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012d805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000612de2826123ff565b6101015490915060ff16612e585760fe5460ff6000828254612e0491906148fa565b90915550612e1390508161384d565b60008181526101006020908152604091829020548251848152918201527fc172d6f677c5cb603b93b418c5bbd19afeb3dc6d48a2c4b658254bdae7203b549101611ff9565b60c9546101025461010154610103546040517f5d3b1d30000000000000000000000000000000000000000000000000000000008152600481019390935261010090910467ffffffffffffffff1660248301526003604483015263ffffffff1660648201526001608482015273ffffffffffffffffffffffffffffffffffffffff90911690635d3b1d309060a4016020604051808303816000875af1158015612f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f289190614dc8565b50600081815261010460205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517ff3c8229da7622d01d0df525498e337b73e8bf68168e8aeb2ff09a70f8fd1173590611ff99083815260200190565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612fee903390899088908890600401614de1565b6020604051808303816000875af1925050508015613047575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261304491810190614e2a565b60015b6130be573d808015613075576040519150601f19603f3d011682016040523d82523d6000602084013e61307a565b606091505b5080516000036130b6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b60008060fe548361311e91906148d3565b9050600061312b826138f8565b6000838152610100602052604081205460fe54929350909161314d9087614db4565b61315791906148fa565b905061316381836139c5565b95945050505050565b6060600061317983613b28565b600101905060008167ffffffffffffffff81111561319957613199614290565b6040519080825280601f01601f1916602001820160405280156131c3576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846131cd57509392505050565b73ffffffffffffffffffffffffffffffffffffffff81161580613267575060c95473ffffffffffffffffffffffffffffffffffffffff8281169116145b1561329e576040517fabcabaa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe3b8b28236cd5346ea32e7cd9586665899a275beb35e4e32feeedb3c846cd0699060200160405180910390a150565b600054610100900460ff166133ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b610cf38282613c0a565b600054610100900460ff16611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b600054610100900460ff166134e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b611532613cc4565b600054610100900460ff16613585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b80158061359a57506135978183614db4565b15155b806135a457508181115b156135db576040517f9d76bfb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb82905560fc80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff841617905560fe81905561362b81836148d3565b61363690600261488d565b60fd555050565b600060fe5460ff5481613652576136526148a4565b04905090565b600080825160410361368e5760208301516040840151606085015160001a61368287828585613d63565b94509450505050610df4565b50600090506002610df4565b60008160048111156136ae576136ae614e47565b036136b65750565b60018160048111156136ca576136ca614e47565b03613731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ce0565b600281600481111561374557613745614e47565b036137ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ce0565b60038160048111156137c0576137c0614e47565b03611f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610ce0565b6000323a424461385e6001436148e7565b6040805173ffffffffffffffffffffffffffffffffffffffff9096166020870152850193909352606084019190915260808301524060a08201523060c082015260e0016040516020818303038152906040528051906020012060001c905060fe54826138ca919061488d565b60fb546138d791906148e7565b6138e19082614db4565b600092835261010060205260409092209190915550565b6060600060fd5467ffffffffffffffff81111561391757613917614290565b60405190808252806020026020018201604052801561395c57816020015b60408051808201909152600080825260208201528152602001906001900390816139355790505b5090506000805b848110156139bc576000818152610100602052604081205461398590856139c5565b9050600060fe54826139979190614e76565b90506139a585838387613e52565b9350505080806139b490614c92565b915050613963565b50909392505050565b60008281805b6002811015613b025760005b60fd54811015613ab55760008682815181106139f5576139f5614c63565b60200260200101516000015190506000878381518110613a1757613a17614c63565b602002602001015160200151905081600f0b85600f0b1215613a8e576000613a3f8787614e76565b905082600f0b81600f0b1215613a6f576fffffffffffffffffffffffffffffffff16965061098a95505050505050565b613a798684614ec4565b613a839088614ec4565b965081955050613aa0565b80600f0b85600f0b1215613aa0578094505b50508080613aad90614c92565b9150506139d7565b5060fc54600f0b613ac68484614e76565b600f0b12613af05760fc54613adf908390600f0b614ec4565b613ae99084614ec4565b9250600091505b80613afa81614c92565b9150506139cb565b50613b0d8282614e76565b6fffffffffffffffffffffffffffffffff1695945050505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613b71577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613b9d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613bbb57662386f26fc10000830492506010015b6305f5e1008310613bd3576305f5e100830492506008015b6127108310613be757612710830492506004015b60648310613bf9576064830492506002015b600a831061098a5760010192915050565b600054610100900460ff16613ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b6067613cad8382614f12565b506068613cba8282614f12565b5060006065555050565b600054610100900460ff16613d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ce0565b600161015f55565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613d9a5750600090506003613e49565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613dee573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116613e4257600060019250925050613e49565b9150600090505b94509492505050565b600081815b83811015613fea576000878281518110613e7357613e73614c63565b60200260200101516000015190506000888381518110613e9557613e95614c63565b602002602001015160200151905081600f0b88600f0b128015613eb757508584145b15613ec0578293505b81600f0b88600f0b128015613eda575081600f0b87600f0b135b80613efc575087600f0b82600f0b13158015613efc575080600f0b87600f0b13155b80613f1c575080600f0b88600f0b128015613f1c575080600f0b87600f0b135b15613fd5576000613f2d8989614ec4565b9050613f3989846140ec565b9850613f458383614ec4565b613f4f828b614e76565b613f599190614e76565b975060405180604001604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f0b81526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f0b8152508a8581518110613fc857613fc8614c63565b6020026020010181905250505b50508080613fe290614c92565b915050613e57565b50825b8181111561404957866140016001836148e7565b8151811061401157614011614c63565b602002602001015187828151811061402b5761402b614c63565b602002602001018190525080806140419061502c565b915050613fed565b5060408051808201909152600f86810b825260fc54602083019161406f9188910b6140ec565b600f0b81525086828151811061408757614087614c63565b6020026020010181905250828061409d90614c92565b60fc54909450600f90810b9086900b131590506140e25760fc546140d39087906000906140cd90600f0b88614ec4565b86613e52565b50826140de81614c92565b9350505b5090949350505050565b600081600f0b83600f0b126141015781614103565b825b9392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611f5957600080fd5b60006020828403121561414a57600080fd5b81356141038161410a565b73ffffffffffffffffffffffffffffffffffffffff81168114611f5957600080fd5b6bffffffffffffffffffffffff81168114611f5957600080fd5b600080604083850312156141a457600080fd5b82356141af81614155565b915060208301356141bf81614177565b809150509250929050565b60005b838110156141e55781810151838201526020016141cd565b50506000910152565b600081518084526142068160208601602086016141ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061410360208301846141ee565b60006020828403121561425d57600080fd5b5035919050565b6000806040838503121561427757600080fd5b823561428281614155565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561430657614306614290565b604052919050565b600067ffffffffffffffff82111561432857614328614290565b5060051b60200190565b6000806040838503121561434557600080fd5b8235915060208084013567ffffffffffffffff81111561436457600080fd5b8401601f8101861361437557600080fd5b80356143886143838261430e565b6142bf565b81815260059190911b820183019083810190888311156143a757600080fd5b928401925b828410156143c5578335825292840192908401906143ac565b80955050505050509250929050565b6000806000606084860312156143e957600080fd5b83356143f481614155565b9250602084013561440481614155565b929592945050506040919091013590565b6000806040838503121561442857600080fd5b50508035926020909101359150565b60006020828403121561444957600080fd5b813561410381614155565b60008083601f84011261446657600080fd5b50813567ffffffffffffffff81111561447e57600080fd5b602083019150836020828501011115610df457600080fd5b6000806000806000608086880312156144ae57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156144da57600080fd5b6144e688828901614454565b969995985093965092949392505050565b6000806000806040858703121561450d57600080fd5b843567ffffffffffffffff8082111561452557600080fd5b61453188838901614454565b9096509450602087013591508082111561454a57600080fd5b5061455787828801614454565b95989497509550505050565b6000806040838503121561457657600080fd5b823561458181614155565b9150602083013580151581146141bf57600080fd5b600080600080608085870312156145ac57600080fd5b84356145b781614155565b93506020858101356145c881614155565b935060408601359250606086013567ffffffffffffffff808211156145ec57600080fd5b818801915088601f83011261460057600080fd5b81358181111561461257614612614290565b614642847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016142bf565b9150808252898482850101111561465857600080fd5b808484018584013760008482840101525080935050505092959194509250565b67ffffffffffffffff81168114611f5957600080fd5b63ffffffff81168114611f5957600080fd5b600080600080608085870312156146b657600080fd5b84356146c181614155565b93506020850135925060408501356146d881614678565b915060608501356146e88161468e565b939692955090935050565b60008060008060008060008060c0898b03121561470f57600080fd5b883561471a81614155565b9750602089013561472a81614155565b96506040890135955060608901359450608089013567ffffffffffffffff8082111561475557600080fd5b6147618c838d01614454565b909650945060a08b013591508082111561477a57600080fd5b506147878b828c01614454565b999c989b5096995094979396929594505050565b600080604083850312156147ae57600080fd5b82356147b981614155565b915060208301356141bf81614155565b600080602083850312156147dc57600080fd5b823567ffffffffffffffff8111156147f357600080fd5b6147ff85828601614454565b90969095509350505050565b600181811c9082168061481f57607f821691505b602082108103614858577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761098a5761098a61485e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826148e2576148e26148a4565b500490565b8181038181111561098a5761098a61485e565b8082018082111561098a5761098a61485e565b601f821115610c5057600081815260208120601f850160051c810160208610156149345750805b601f850160051c820191505b8181101561133757828155600101614940565b67ffffffffffffffff83111561496b5761496b614290565b61497f83614979835461480b565b8361490d565b6000601f8411600181146149d1576000851561499b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561287f565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015614a205786850135825560209485019460019092019101614a00565b5086821015614a5b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000614aca604083018688614a6d565b8281036020840152614add818587614a6d565b979650505050505050565b60008154614af58161480b565b60018281168015614b0d5760018114614b4057614b6f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450614b6f565b8560005260208060002060005b85811015614b665781548a820152908401908201614b4d565b50505082870194505b5050505092915050565b6000614b858286614ae8565b8451614b958183602089016141ca565b614add81830186614ae8565b600080600060608486031215614bb657600080fd5b835161ffff81168114614bc857600080fd5b80935050602080850151614bdb8161468e565b604086015190935067ffffffffffffffff811115614bf857600080fd5b8501601f81018713614c0957600080fd5b8051614c176143838261430e565b81815260059190911b82018301908381019089831115614c3657600080fd5b928401925b82841015614c5457835182529284019290840190614c3b565b80955050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614cc357614cc361485e565b5060010190565b60008060008060808587031215614ce057600080fd5b8451614ceb81614177565b80945050602080860151614cfe81614678565b6040870151909450614d0f81614155565b606087015190935067ffffffffffffffff811115614d2c57600080fd5b8601601f81018813614d3d57600080fd5b8051614d4b6143838261430e565b81815260059190911b8201830190838101908a831115614d6a57600080fd5b928401925b82841015614d91578351614d8281614155565b82529284019290840190614d6f565b979a9699509497505050505050565b602081526000613105602083018486614a6d565b600082614dc357614dc36148a4565b500690565b600060208284031215614dda57600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614e2060808301846141ee565b9695505050505050565b600060208284031215614e3c57600080fd5b81516141038161410a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff800000000000000000000000000000008212171561098a5761098a61485e565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff8213171561098a5761098a61485e565b815167ffffffffffffffff811115614f2c57614f2c614290565b614f4081614f3a845461480b565b8461490d565b602080601f831160018114614f935760008415614f5d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611337565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614fe057888601518255948401946001909101908401614fc1565b508582101561501c57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008161503b5761503b61485e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220ab712345e88906779206a6769bf08470c5b3398135cc9ef91868e6f7293c66a964736f6c63430008130033