[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AddressScreenAddressZero", "type": "error" }, { "inputs": [], "name": "AddressScreenDenyListedFrom", "type": "error" }, { "inputs": [], "name": "AddressScreenDenyListedSender", "type": "error" }, { "inputs": [], "name": "AddressScreenDenyListedTo", "type": "error" }, { "inputs": [], "name": "AddressScreenIsNotContract", "type": "error" }, { "inputs": [], "name": "AssetTokenAddressZero", "type": "error" }, { "inputs": [], "name": "AssetTokenNotContract", "type": "error" }, { "inputs": [], "name": "BondIssuerAddressZero", "type": "error" }, { "inputs": [], "name": "BondTokenAmountMustBePositive", "type": "error" }, { "inputs": [], "name": "CallerNotAllowListed", "type": "error" }, { "inputs": [], "name": "CannotSendEtherDirectly", "type": "error" }, { "inputs": [], "name": "ContractNotFullyRepaid", "type": "error" }, { "inputs": [], "name": "DateMustBeBeforeMaturity", "type": "error" }, { "inputs": [], "name": "DocumentAlreadyExists", "type": "error" }, { "inputs": [], "name": "FundingCommitmentDatePassed", "type": "error" }, { "inputs": [], "name": "FundingCommitmentDoesNotExist", "type": "error" }, { "inputs": [], "name": "FundingCommitmentExists", "type": "error" }, { "inputs": [], "name": "FundingCommitmentTimeoutNotFinished", "type": "error" }, { "inputs": [], "name": "FundingCommitmentsPresent", "type": "error" }, { "inputs": [], "name": "InvalidDocumentName", "type": "error" }, { "inputs": [], "name": "InvalidProceedTokenAddress", "type": "error" }, { "inputs": [], "name": "InvalidURI", "type": "error" }, { "inputs": [], "name": "MaturityDateMustBeInFuture", "type": "error" }, { "inputs": [], "name": "NameCannotBeEmpty", "type": "error" }, { "inputs": [], "name": "NewAddressScreenMustBeDifferent", "type": "error" }, { "inputs": [], "name": "NewMaturityDateMustBeDifferent", "type": "error" }, { "inputs": [], "name": "NoBondTokenToClaim", "type": "error" }, { "inputs": [], "name": "NoDocumentSpecificationsProvided", "type": "error" }, { "inputs": [], "name": "NoFundingCommitment", "type": "error" }, { "inputs": [], "name": "NoFundingCommitmentsOrDocumentsProvided", "type": "error" }, { "inputs": [], "name": "NoFundingCommitmentsProvided", "type": "error" }, { "inputs": [], "name": "NoRolloverCommitment", "type": "error" }, { "inputs": [], "name": "NothingToSweep", "type": "error" }, { "inputs": [], "name": "OwnerAddressZero", "type": "error" }, { "inputs": [], "name": "PriceMustBePositive", "type": "error" }, { "inputs": [], "name": "ProceedAmountLimitNotPositive", "type": "error" }, { "inputs": [], "name": "ProceedAmountMustBePositive", "type": "error" }, { "inputs": [], "name": "ProceedExceedsLimit", "type": "error" }, { "inputs": [], "name": "ProceedTokenAddressNotERC20", "type": "error" }, { "inputs": [], "name": "ProceedTokenDecimalsMismatch", "type": "error" }, { "inputs": [], "name": "RolloverCommitmentAddressNotERC4626", "type": "error" }, { "inputs": [], "name": "RolloverCommitmentDatePassed", "type": "error" }, { "inputs": [], "name": "RolloverCommitmentDoesNotExist", "type": "error" }, { "inputs": [], "name": "RolloverCommitmentExists", "type": "error" }, { "inputs": [], "name": "RolloverCommitmentTimeoutNotFinished", "type": "error" }, { "inputs": [], "name": "SweepDateMustBeAfterMaturity", "type": "error" }, { "inputs": [], "name": "SweepDateNotPassed", "type": "error" }, { "inputs": [], "name": "SweepDelayMustExceedLimit", "type": "error" }, { "inputs": [], "name": "SymbolCannotBeEmpty", "type": "error" }, { "inputs": [], "name": "UseSweepForAssetToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "AddressScreenContractUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "assetTokenAmount", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" } ], "name": "FundingCommitmentRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "date", "type": "uint256" } ], "name": "FundingCommitmentUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "newDate", "type": "uint64" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "MaturityDateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "docNameHash", "type": "bytes32" }, { "indexed": false, "internalType": "string", "name": "docName", "type": "string" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" } ], "name": "NewDocumentAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "date", "type": "uint256" } ], "name": "NewFundingCommitmentAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": true, "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proceedTokenAmountLimit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "date", "type": "uint256" } ], "name": "NewRolloverCommitmentAdded", "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": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Redeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" } ], "name": "RolloverCommitmentRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": true, "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proceedTokenAmountLimit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "date", "type": "uint256" } ], "name": "RolloverCommitmentUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": true, "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" } ], "name": "SettleBondPurchase", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assetTokenAmount", "type": "uint256" } ], "name": "Sweep", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "address", "name": "otherTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "otherTokenAmount", "type": "uint256" } ], "name": "SweepOther", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "BOND_TYPE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "docName", "type": "string" }, { "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct PV01SinglePaymentBondV2.DocumentSpec", "name": "documentSpec", "type": "tuple" } ], "name": "addDocument", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "docName", "type": "string" }, { "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct PV01SinglePaymentBondV2.DocumentSpec[]", "name": "documentSpecs", "type": "tuple[]" } ], "name": "addDocuments", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal", "name": "fundingCommitment", "type": "tuple" } ], "name": "addFundingCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal[]", "name": "fundingCommitments_", "type": "tuple[]" } ], "name": "addFundingCommitments", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal[]", "name": "fundingCommitments_", "type": "tuple[]" }, { "components": [ { "internalType": "string", "name": "docName", "type": "string" }, { "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct PV01SinglePaymentBondV2.DocumentSpec[]", "name": "documentSpecs_", "type": "tuple[]" } ], "name": "addFundingCommitmentsAndDocuments", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "proceedTokenAmountLimit", "type": "uint256" }, { "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentInternal", "name": "rolloverCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentExternal", "name": "rolloverCommitment", "type": "tuple" } ], "name": "addRolloverCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "addressScreen", "outputs": [ { "internalType": "contract IAddressScreen", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "assetToken", "outputs": [ { "internalType": "contract IERC20Standard", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetTokenDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondIssuer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claim", "outputs": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "assetTokenAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collateralId", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllDocumentNames", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllDocuments", "outputs": [ { "components": [ { "internalType": "string", "name": "docName", "type": "string" }, { "internalType": "bytes32", "name": "docNameHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" }, { "internalType": "uint256", "name": "lastModified", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct PV01SinglePaymentBondV2.DocumentDetail[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllFundingCommitment", "outputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllRolloverCommitment", "outputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "proceedTokenAmountLimit", "type": "uint256" }, { "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentInternal", "name": "rolloverCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentExternal[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAmountToRepay", "outputs": [ { "internalType": "uint256", "name": "assetTokenAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBondIssuer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "docName", "type": "string" } ], "name": "getDocument", "outputs": [ { "components": [ { "internalType": "string", "name": "docName", "type": "string" }, { "internalType": "bytes32", "name": "docNameHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "docHashSha256", "type": "bytes32" }, { "internalType": "uint256", "name": "lastModified", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "internalType": "struct PV01SinglePaymentBondV2.DocumentDetail", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "bondTokenAmount_", "type": "uint256" } ], "name": "getFinalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user_", "type": "address" } ], "name": "getFinalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getFundingCommitment", "outputs": [ { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFundingCommitmentInvestors", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSweepDate", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal[]", "name": "fundingCommitments_", "type": "tuple[]" }, { "internalType": "address", "name": "assetTokenAddress_", "type": "address" }, { "internalType": "uint64", "name": "interestRateFraction_", "type": "uint64" }, { "internalType": "uint64", "name": "maturityDate_", "type": "uint64" }, { "internalType": "address", "name": "bondIssuer_", "type": "address" }, { "internalType": "address", "name": "addressScreen_", "type": "address" }, { "internalType": "uint64", "name": "sweepDate_", "type": "uint64" }, { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "collateralId_", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "interestRateFraction", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isRepaidInFull", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maturityDate", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "removeFundingCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "userAddresses", "type": "address[]" } ], "name": "removeFundingCommitments", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "removeRolloverCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAddress", "type": "address" }, { "internalType": "string", "name": "reason", "type": "string" } ], "name": "setAddressScreenContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "newDate", "type": "uint64" }, { "internalType": "string", "name": "reason", "type": "string" } ], "name": "setMaturityDate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "settleBondPurchase", "outputs": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "settleBondPurchaseRollover", "outputs": [ { "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sweep", "outputs": [ { "internalType": "uint256", "name": "transferAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sweepDelaySecondsFromMaturityDate", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "otherTokenAddress", "type": "address" } ], "name": "sweepOther", "outputs": [ { "internalType": "uint256", "name": "transferAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal", "name": "fundingCommitment", "type": "tuple" } ], "name": "updateFundingCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "bondTokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentInternal", "name": "fundingCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.FundingCommitmentExternal[]", "name": "fundingCommitments_", "type": "tuple[]" } ], "name": "updateFundingCommitments", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "address_", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "proceedTokenAmountLimit", "type": "uint256" }, { "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "date", "type": "uint256" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentInternal", "name": "rolloverCommitmentInternal", "type": "tuple" } ], "internalType": "struct PV01SinglePaymentBondV2.RolloverCommitmentExternal", "name": "rolloverCommitment", "type": "tuple" } ], "name": "updateRolloverCommitment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6152bc80620000f46000396000f3fe6080604052600436106102cb5760003560e01c8062b190d9146102ee57806301ffc9a71461032057806306fdde0314610350578063095ea7b3146103725780631083f761146103925780631198fc6e146103c557806312ca8709146103e757806318160ddd146104215780631b5c0d14146104405780631e6fb8de146104615780632114810b1461048157806323b872dd146104a3578063251cbde5146104c3578063313ce567146104e557806332f3ad4a146104fe57806335faa4161461051e57806339509351146105335780633aad01b9146105535780633f4ba83a1461057b578063412aabef1461059057806342966c68146105bd578063482975b3146105dd5780634b3745b51461060a5780634e71d92d1461062a5780634f9cfa1c1461064d5780635970abb71461066d5780635993e48d1461068f5780635c975abb146106ae5780635dde8ff6146106c657806363d1fd03146106e6578063657adde61461070657806366e2d55a1461072657806370a0823114610746578063715018a614610766578063729256eb1461077b5780637581e3771461079c5780637714d560146107b157806379cc6790146107d15780637b485521146107f15780637ccb6a64146108115780638456cb591461083e57806385ceca45146108535780638da5cb5b1461087b57806395d89b41146108905780639c8c8c1f146108a55780639f4c87fb146108cd5780639fa5f50b146108ed578063a457c2d71461090f578063a6efb9301461092f578063a9059cbb14610944578063aa240b0514610964578063bf92f5a514610984578063d2d9cab6146109a4578063d59624b4146109c4578063dd62ed3e146109ec578063e0cc476e14610a0c578063e5efe61614610a2c578063e7f0287314610a41578063eec0f42e14610a61578063f2fde38b14610a76578063fbf99afd14610a96578063fd61089314610ab6578063ffa1ad7414610ad857600080fd5b366102e957604051639de48eff60e01b815260040160405180910390fd5b600080fd5b3480156102fa57600080fd5b50610136546103099060ff1681565b60405160ff90911681526020015b60405180910390f35b34801561032c57600080fd5b5061034061033b366004614379565b610aed565b6040519015158152602001610317565b34801561035c57600080fd5b50610365610b3f565b60405161031791906143fb565b34801561037e57600080fd5b5061034061038d36600461442a565b610bd1565b34801561039e57600080fd5b50610136546103b89061010090046001600160a01b031681565b6040516103179190614454565b3480156103d157600080fd5b506103e56103e03660046144b3565b610be9565b005b3480156103f357600080fd5b506103fc610c3a565b604080516001600160a01b039094168452602084019290925290820152606001610317565b34801561042d57600080fd5b506099545b604051908152602001610317565b34801561044c57600080fd5b50610137546103b8906001600160a01b031681565b34801561046d57600080fd5b506103e561047c366004614538565b610e30565b34801561048d57600080fd5b50610496610f07565b60405161031791906145bc565b3480156104af57600080fd5b506103406104be36600461461e565b611045565b3480156104cf57600080fd5b506104d861106b565b604051610317919061465a565b3480156104f157600080fd5b506101365460ff16610309565b34801561050a57600080fd5b506103e56105193660046146bc565b611278565b34801561052a57600080fd5b5061043261128c565b34801561053f57600080fd5b5061034061054e36600461442a565b6113ee565b34801561055f57600080fd5b506104327014da5b99db1954185e5b595b9d109bdb99607a1b81565b34801561058757600080fd5b506103e5611410565b34801561059c57600080fd5b506105b06105ab3660046146ce565b611422565b60405161031791906146e9565b3480156105c957600080fd5b506103e56105d83660046146f7565b61146d565b3480156105e957600080fd5b506105f261150d565b6040516001600160401b039091168152602001610317565b34801561061657600080fd5b506103e56106253660046146bc565b611542565b34801561063657600080fd5b5061063f61155c565b604051610317929190614710565b34801561065957600080fd5b506103e561066836600461471e565b61170b565b34801561067957600080fd5b5061068261172a565b6040516103179190614730565b34801561069b57600080fd5b50610138546001600160a01b03166103b8565b3480156106ba57600080fd5b5060335460ff16610340565b3480156106d257600080fd5b506104326106e13660046146f7565b611737565b3480156106f257600080fd5b506104326107013660046146ce565b611759565b34801561071257600080fd5b506103e5610721366004614771565b611780565b34801561073257600080fd5b506104326107413660046146ce565b6117d3565b34801561075257600080fd5b506104326107613660046146ce565b61190f565b34801561077257600080fd5b506103e561192a565b34801561078757600080fd5b50610138546103b8906001600160a01b031681565b3480156107a857600080fd5b5061043261193c565b3480156107bd57600080fd5b506103e56107cc3660046146ce565b6119eb565b3480156107dd57600080fd5b506103e56107ec36600461442a565b6119fc565b3480156107fd57600080fd5b506103e561080c3660046147a6565b611aa1565b34801561081d57600080fd5b5061083161082c366004614821565b611ab5565b60405161031791906148ab565b34801561084a57600080fd5b506103e5611c4d565b34801561085f57600080fd5b50610137546105f290600160a01b90046001600160401b031681565b34801561088757600080fd5b506103b8611c5d565b34801561089c57600080fd5b50610365611c6c565b3480156108b157600080fd5b50610138546105f290600160a01b90046001600160401b031681565b3480156108d957600080fd5b506103e56108e8366004614771565b611c7b565b3480156108f957600080fd5b50610902611cb7565b60405161031791906148be565b34801561091b57600080fd5b5061034061092a36600461442a565b611ec0565b34801561093b57600080fd5b50610340611f4b565b34801561095057600080fd5b5061034061095f36600461442a565b61200e565b34801561097057600080fd5b506103e561097f3660046146ce565b61201c565b34801561099057600080fd5b506103e561099f36600461471e565b61202d565b3480156109b057600080fd5b506103e56109bf36600461492a565b61203e565b3480156109d057600080fd5b50610136546105f290600160a81b90046001600160401b031681565b3480156109f857600080fd5b50610432610a0736600461497c565b6120b7565b348015610a1857600080fd5b506103e5610a273660046144b3565b6120e2565b348015610a3857600080fd5b5061063f612135565b348015610a4d57600080fd5b506103e5610a5c366004614ba1565b61227a565b348015610a6d57600080fd5b506103656126af565b348015610a8257600080fd5b506103e5610a913660046146ce565b61273e565b348015610aa257600080fd5b506103e5610ab1366004614cc8565b6127b4565b348015610ac257600080fd5b50610acb6127fc565b6040516103179190614ce6565b348015610ae457600080fd5b50610309600281565b60006001600160e01b0319821663313ce56760e01b1480610b1e57506001600160e01b031982166312d658e160e21b145b80610b3957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060609a8054610b4e90614d64565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90614d64565b8015610bc75780601f10610b9c57610100808354040283529160200191610bc7565b820191906000526020600020905b815481529060010190602001808311610baa57829003601f168201915b5050505050905090565b600033610bdf81858561293b565b5060019392505050565b610bf1612a5f565b8060005b81811015610c3457610c2c848483818110610c1257610c12614d98565b9050602002016020810190610c2791906146ce565b612abe565b600101610bf5565b50505050565b6000806000610c47612b39565b336000908152610130602052604081205490819003610c79576040516319d02ff760e11b815260040160405180910390fd5b336000908152610130602052604090206003015442811015610cae5760405163cb9cb4a560e01b815260040160405180910390fd5b610cbb6201518082614dc4565b4211610cda57604051633e5c7eeb60e11b815260040160405180910390fd5b3360008181526101306020526040908190206001015490516370a0823160e01b81526001600160a01b039091169650869182916370a0823191610d1f91600401614454565b602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190614ddb565b945082851115610d835760405163078fa93f60e11b815260040160405180910390fd5b336000818152610130602052604090206002015490610da59061013190612b7f565b50336000908152610130602052604081208181556001810180546001600160a01b03191690556002810182905560030155610de08682612b94565b9450610dec3386612bb3565b866001600160a01b0316336001600160a01b03166000805160206152478339815191528888604051610e1f929190614710565b60405180910390a350505050909192565b610e38612a5f565b828181158015610e46575080155b15610e6457604051634707179760e11b815260040160405180910390fd5b8115610eaf5760005b82811015610ead57610ea5878783818110610e8a57610e8a614d98565b905060800201803603810190610ea09190614df4565b612c6e565b600101610e6d565b505b8015610eff5760005b81811015610efd57610ef5858583818110610ed557610ed5614d98565b9050602002810190610ee79190614e10565b610ef090614e30565b612cfe565b600101610eb8565b505b505050505050565b60606000610f1661012e612e67565b9050600081516001600160401b03811115610f3357610f336149af565b604051908082528060200260200182016040528015610f6c57816020015b610f596142ac565b815260200190600190039081610f515790505b50905060005b825181101561103e576040518060400160405280848381518110610f9857610f98614d98565b60200260200101516001600160a01b0316815260200161012d6000868581518110610fc557610fc5614d98565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505081525082828151811061102b5761102b614d98565b6020908102919091010152600101610f72565b5092915050565b600033611053858285612e74565b61105e858585612ee8565b60019150505b9392505050565b6060600061107a61013461308c565b90506000816001600160401b03811115611096576110966149af565b6040519080825280602002602001820160405280156110c957816020015b60608152602001906001900390816110b45790505b50905060005b8281101561103e5760006110e561013483613096565b9050600061013360008381526020019081526020016000206040518060a001604052908160008201805461111890614d64565b80601f016020809104026020016040519081016040528092919081815260200182805461114490614d64565b80156111915780601f1061116657610100808354040283529160200191611191565b820191906000526020600020905b81548152906001019060200180831161117457829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820180546111c890614d64565b80601f01602080910402602001604051908101604052809291908181526020018280546111f490614d64565b80156112415780601f1061121657610100808354040283529160200191611241565b820191906000526020600020905b81548152906001019060200180831161122457829003601f168201915b5050505050815250509050806000015184848151811061126357611263614d98565b602090810291909101015250506001016110cf565b611280612a5f565b611289816130a2565b50565b6000611296612a5f565b61013854610136546112c2916001600160401b03600160a01b909104811691600160a81b900416614ea6565b6001600160401b03164210156112eb576040516379575fff60e01b815260040160405180910390fd5b610136546040516370a0823160e01b81526101009091046001600160a01b0316906370a0823190611320903090600401614454565b602060405180830381865afa15801561133d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113619190614ddb565b90508060000361138457604051630d44987f60e21b815260040160405180910390fd5b610138546040518281526001600160a01b03909116907fab2246061d7b0dd3631d037e3f6da75782ae489eeb9f6af878a4b25df9b07c779060200160405180910390a261013854610136546113eb916001600160a01b036101009092048216911683613148565b90565b600033610bdf81858561140183836120b7565b61140b9190614ed1565b61293b565b611418612a5f565b61142061319e565b565b61142a6142d4565b506001600160a01b0316600090815261012d6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b611475612b39565b6101375460405163386ec69760e11b81526001600160a01b03909116906370dd8d2e906114a6903390600401614454565b602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190614ee9565b61150457604051632042ae5d60e01b815260040160405180910390fd5b611289816131ea565b610138546101365460009161153d916001600160401b03600160a01b909204821691600160a81b90910416614ea6565b905090565b61154a612a5f565b611289610ea036839003830183614df4565b600080611567612b39565b6101375460405163386ec69760e11b81526001600160a01b03909116906370dd8d2e90611598903390600401614454565b602060405180830381865afa1580156115b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d99190614ee9565b6115f657604051632042ae5d60e01b815260040160405180910390fd5b6115ff3361190f565b915081600003611622576040516307f55e0360e51b815260040160405180910390fd5b61162a611f4b565b6116475760405163472ab61d60e11b815260040160405180910390fd5b61165133836131f0565b61013754611670908390600160a01b90046001600160401b031661331e565b610136549091506116909061010090046001600160a01b03163383613148565b336001600160a01b03167f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf783836040516116cb929190614710565b60405180910390a2609954600003611707576040517fb8cac300e37f03ad332e581dea21b2f0b84eaaadc184a295fef71e81f44a741390600090a15b9091565b611713612a5f565b61128961172536839003830183614f0b565b613334565b606061153d61012e612e67565b61013754600090610b39908390600160a01b90046001600160401b031661331e565b6000610b396117678361190f565b61013754600160a01b90046001600160401b031661331e565b611788612a5f565b8060008190036117ab57604051635cfe217360e11b815260040160405180910390fd5b60005b81811015610c34576117cb848483818110610e8a57610e8a614d98565b6001016117ae565b60006117dd612a5f565b610136546001600160a01b0361010090910481169083160361181257604051634abedfbf60e01b815260040160405180910390fd5b6040516370a0823160e01b815282906001600160a01b038216906370a0823190611840903090600401614454565b602060405180830381865afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118819190614ddb565b9150816000036118a457604051630d44987f60e21b815260040160405180910390fd5b610138546040516001600160a01b03909116907f7eef782e27863dcde0ba4b385fe67691a3ac617c6474c4283a0459c5c7dbb0d3906118e69086908690614fa9565b60405180910390a261013854611909906001600160a01b03838116911684613148565b50919050565b6001600160a01b031660009081526097602052604090205490565b611932612a5f565b61142060006133ce565b60008061194b61176760995490565b610136546040516370a0823160e01b81529192506000916101009091046001600160a01b0316906370a0823190611986903090600401614454565b602060405180830381865afa1580156119a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c79190614ddb565b9050808211156119e2576119db8183614dc4565b9250505090565b60009250505090565b6119f3612a5f565b61128981612abe565b611a04612b39565b6101375460405163386ec69760e11b81526001600160a01b03909116906370dd8d2e90611a35903390600401614454565b602060405180830381865afa158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a769190614ee9565b611a9357604051632042ae5d60e01b815260040160405180910390fd5b611a9d8282613420565b5050565b611aa9612a5f565b611289610ef082614e30565b611abd6142f5565b60008383604051602001611ad2929190614fc2565b60408051601f19818403018152828252805160209182012060008181526101339092529082902060a08401909252815490935082908290611b1290614d64565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3e90614d64565b8015611b8b5780601f10611b6057610100808354040283529160200191611b8b565b820191906000526020600020905b815481529060010190602001808311611b6e57829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152602001600482018054611bc290614d64565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee90614d64565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b50505050508152505091505092915050565b611c55612a5f565b611420613435565b6065546001600160a01b031690565b6060609b8054610b4e90614d64565b611c83612a5f565b8060005b81811015610c3457611caf848483818110611ca457611ca4614d98565b9050608002016130a2565b600101611c87565b60606000611cc661013461308c565b90506000816001600160401b03811115611ce257611ce26149af565b604051908082528060200260200182016040528015611d1b57816020015b611d086142f5565b815260200190600190039081611d005790505b50905060005b8281101561103e576000611d3761013483613096565b905061013360008281526020019081526020016000206040518060a0016040529081600082018054611d6890614d64565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9490614d64565b8015611de15780601f10611db657610100808354040283529160200191611de1565b820191906000526020600020905b815481529060010190602001808311611dc457829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152602001600482018054611e1890614d64565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4490614d64565b8015611e915780601f10611e6657610100808354040283529160200191611e91565b820191906000526020600020905b815481529060010190602001808311611e7457829003601f168201915b505050505081525050838381518110611eac57611eac614d98565b602090810291909101015250600101611d21565b60003381611ece82866120b7565b905083811015611f335760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b611f40828686840361293b565b506001949350505050565b600080611f5760995490565b90508015611ffc5761013754611f7e908290600160a01b90046001600160401b031661331e565b610136546040516370a0823160e01b81526101009091046001600160a01b0316906370a0823190611fb3903090600401614454565b602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190614ddb565b101591505090565b61200761012e61308c565b1592915050565b600033610bdf818585612ee8565b612024612a5f565b61128981613472565b612035612a5f565b611289816134ff565b612046612a5f565b600061205361012e61308c565b1115612072576040516327b4887760e21b815260040160405180910390fd5b6120b28383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135bf92505050565b505050565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b6120ea612a5f565b80600081900361210d5760405163d21234c960e01b815260040160405180910390fd5b60005b81811015610c345761212d848483818110610ed557610ed5614d98565b600101612110565b600080612140612b39565b505033600090815261012d602052604081208054600190910154909182900361217c57604051636a98a19b60e11b815260040160405180910390fd5b33600090815261012d6020526040902060020154428110156121b15760405163bb7d60e360e01b815260040160405180910390fd5b6121be6201518082614dc4565b42116121dd5760405163085176ef60e11b815260040160405180910390fd5b6121e961012e33612b7f565b5033600081815261012d602052604081208181556001810182905560020155610138546101365461222d926101009091046001600160a01b03908116921685613682565b6122373384612bb3565b610136546040516101009091046001600160a01b03169033906000805160206152478339815191529061226d9086908890614710565b60405180910390a3509091565b600054610100900460ff161580801561229a5750600054600160ff909116105b806122b45750303b1580156122b4575060005460ff166001145b6123175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f2a565b6000805460ff19166001179055801561233a576000805461ff0019166101001790555b6001600160a01b03861661236157604051633419659560e11b815260040160405180910390fd5b866001600160401b0316846001600160401b0316116123935760405163b06d5b1b60e01b815260040160405180910390fd5b6001600160a01b0383166123ba57604051639c41f49560e01b815260040160405180910390fd5b8b516000036123dc576040516367a4129960e11b815260040160405180910390fd5b8a516000036123fe576040516360f9c2cd60e01b815260040160405180910390fd5b6001600160a01b0389166124255760405163cefcfb7f60e01b815260040160405180910390fd5b6001600160a01b0389163b61244d57604051631e07dfe360e21b815260040160405180910390fd5b6124578c8c6136ba565b61245f6136eb565b612468836133ce565b61013880546001600160a01b0319166001600160a01b03888116919091179091556101368054610100600160a81b0319166101008c8416810291909117918290556040805163313ce56760e01b81529051919092049092169163313ce567916004808201926020929091908290030181865afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125109190614fd2565b610136805460ff191660ff929092169190911790556101378054600160a01b600160e01b031916600160a01b6001600160401b038b160217905560408051808201909152600a815269496e697469616c697a6560b01b60208201526125769088906135bf565b6101365461259490600160a81b90046001600160401b031685614ff5565b6101388054600160a01b600160e01b031916600160a01b6001600160401b03938416810291909117918290556203f480910490911610156125e85760405163472b669960e01b815260040160405180910390fd5b612614856040518060400160405280600a815260200169496e697469616c697a6560b01b815250613712565b895160005b8181101561264b576126438c828151811061263657612636614d98565b6020026020010151612c6e565b600101612619565b506101396126598482615063565b505080156126a1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b61013980546126bd90614d64565b80601f01602080910402602001604051908101604052809291908181526020018280546126e990614d64565b80156127365780601f1061270b57610100808354040283529160200191612736565b820191906000526020600020905b81548152906001019060200180831161271957829003601f168201915b505050505081565b612746612a5f565b6001600160a01b0381166127ab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611f2a565b611289816133ce565b6127bc612a5f565b6120b28383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061371292505050565b6060600061280b610131612e67565b9050600081516001600160401b03811115612828576128286149af565b60405190808252806020026020018201604052801561286157816020015b61284e61432a565b8152602001906001900390816128465790505b50905060005b825181101561103e57604051806040016040528084838151811061288d5761288d614d98565b60200260200101516001600160a01b0316815260200161013060008685815181106128ba576128ba614d98565b6020908102919091018101516001600160a01b0390811683528282019390935260409182016000208251608081018452815481526001820154909416918401919091526002810154918301919091526003015460608201529052825183908390811061292857612928614d98565b6020908102919091010152600101612867565b6001600160a01b03831661299d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611f2a565b6001600160a01b0382166129fe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611f2a565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33612a68611c5d565b6001600160a01b0316146114205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f2a565b612aca61012e82612b7f565b612ae7576040516346b4f44560e01b815260040160405180910390fd5b6001600160a01b038116600081815261012d602052604080822082815560018101839055600201829055517fc986c3650ab16434650c0af000519e97662aa6dccfda3f26e097be9ced48fec89190a250565b60335460ff16156114205760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401611f2a565b6000611064836001600160a01b0384166137ec565b600081612ba9670de0b6b3a764000085615122565b6110649190615141565b6001600160a01b038216612c095760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611f2a565b612c15600083836138df565b8060996000828254612c279190614ed1565b90915550506001600160a01b038216600081815260976020908152604080832080548601905551848152600080516020615267833981519152910160405180910390a35050565b8051612c7d9061012e90613a95565b612c9a576040516337e8964b60e11b815260040160405180910390fd5b612ca381613aaa565b805160208083015180519181015160409182015191516001600160a01b03909416937f48f686ba2e9a54fc00f6affc5b7808a564f4cd6c94930da1a9e1fb8da61ea2ed93612cf393909291615163565b60405180910390a250565b80518051600003612d22576040516308d893ad60e31b815260040160405180910390fd5b816040015151600003612d4857604051633ba0191160e01b815260040160405180910390fd5b600081604051602001612d5b9190615179565b60408051601f1981840301815291905280516020909101209050612d8161013482613b6f565b612d9e5760405163019b268b60e71b815260040160405180910390fd5b6040805160a0810182528381526020808201849052858101518284015242606083015285830151608083015260008481526101339091529190912081518190612de79082615063565b5060208201516001820155604082015160028201556060820151600382015560808201516004820190612e1a9082615063565b50905050807f4ccc126ecd4449882f78adae0dc7e1c577449c6adfa2d0a79e690b16c4bb2fdf8385604001518660200151604051612e5a9392919061518b565b60405180910390a2505050565b6060600061106483613b7b565b6000612e8084846120b7565b90506000198114610c345781811015612edb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611f2a565b610c34848484840361293b565b6001600160a01b038316612f4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611f2a565b6001600160a01b038216612fae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611f2a565b612fb98383836138df565b6001600160a01b038316600090815260976020526040902054818110156130315760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611f2a565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591516000805160206152678339815191529061307f9086815260200190565b60405180910390a3610c34565b6000610b39825490565b60006110648383613bd7565b6130bb6130b260208301836146ce565b61012e90613c01565b6130d8576040516346b4f44560e01b815260040160405180910390fd5b6130ef6130ea36839003830183614df4565b613aaa565b6130fc60208201826146ce565b604080516001600160a01b0392909216917f9f155b36ea539d36a6a420aebe2c7ec7797145b5452b00fa3da45acda834826491612cf39160208601359186013590606087013590615163565b6120b28363a9059cbb60e01b8484604051602401613167929190614fa9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c16565b6131a6613ce8565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516131e09190614454565b60405180910390a1565b61128933825b6001600160a01b0382166132505760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611f2a565b61325c826000836138df565b6001600160a01b038216600090815260976020526040902054818110156132d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611f2a565b6001600160a01b0383166000818152609760209081526040808320868603905560998054879003905551858152919291600080516020615267833981519152910160405180910390a3505050565b600061332a8383613d31565b6110649084614ed1565b80516133439061013190613a95565b613360576040516312d94e0160e11b815260040160405180910390fd5b61336981613d46565b602081810151908101518251825160408085015160609095015190516001600160a01b039485169594909316937f84df59bbd97874a96cc0126b50b641da99018953c35ba0fc20c9f873018af087936133c3939290615163565b60405180910390a350565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61342b823383612e74565b611a9d82826131f0565b61343d612b39565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131d33390565b61347e61013182612b7f565b61349b57604051630942c67760e21b815260040160405180910390fd5b6001600160a01b038116600081815261013060205260408082208281556001810180546001600160a01b031916905560028101839055600301829055517f50c616922bde5a0a00cab135aec5c3fc04e357039b44686ed3b08af441b9d6009190a250565b61351861350f60208301836146ce565b61013190613c01565b61353557604051630942c67760e21b815260040160405180910390fd5b61354c61354736839003830183614f0b565b613d46565b61355c60608201604083016146ce565b6001600160a01b031661357260208301836146ce565b6040516001600160a01b0391909116907fb4c29a3363000d7249153211180cf78820c29f13fc019dd3199b06c87a5afe6f906133c390602086013590606087013590608088013590615163565b42826001600160401b0316116135e857604051633df49a1d60e01b815260040160405180910390fd5b610136546001600160401b03600160a81b90910481169083160361361f57604051635246848f60e11b815260040160405180910390fd5b6101368054600160a81b600160e81b031916600160a81b6001600160401b038516021790556040517f8c1f2258cf15d05175bb39023acd191b9f438f5b08f9ef1d67ed107332a033339061367690849084906151c1565b60405180910390a15050565b6040516001600160a01b0380851660248301528316604482015260648101829052610c349085906323b872dd60e01b90608401613167565b600054610100900460ff166136e15760405162461bcd60e51b8152600401611f2a906151e5565b611a9d8282613f65565b600054610100900460ff166114205760405162461bcd60e51b8152600401611f2a906151e5565b6001600160a01b03821661373957604051637d7c5b6560e01b815260040160405180910390fd5b6001600160a01b0382163b6137615760405163331680ed60e11b815260040160405180910390fd5b610137546001600160a01b039081169083160361379157604051637935a7a960e01b815260040160405180910390fd5b61013780546001600160a01b0319166001600160a01b0384169081179091556040517f8d71a1b9b2a596f7a3176794f3f146a0bf13e760c18698e3ffe425614030077e906137e09084906143fb565b60405180910390a25050565b600081815260018301602052604081205480156138d5576000613810600183614dc4565b855490915060009061382490600190614dc4565b905081811461388957600086600001828154811061384457613844614d98565b906000526020600020015490508087600001848154811061386757613867614d98565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061389a5761389a615230565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b39565b6000915050610b39565b6138e7612b39565b61013754604051636f1095c760e01b81526001600160a01b0390911690636f1095c790613918908690600401614454565b602060405180830381865afa158015613935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139599190614ee9565b156139775760405163426638bd60e11b815260040160405180910390fd5b61013754604051636f1095c760e01b81526001600160a01b0390911690636f1095c7906139a8908590600401614454565b602060405180830381865afa1580156139c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e99190614ee9565b15613a07576040516312519c2160e01b815260040160405180910390fd5b610137546001600160a01b0316636f1095c7336040518263ffffffff1660e01b8152600401613a369190614454565b602060405180830381865afa158015613a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a779190614ee9565b156120b257604051630e616fcd60e11b815260040160405180910390fd5b6000611064836001600160a01b038416613fa5565b602081015151600003613ad0576040516315e4db9d60e31b815260040160405180910390fd5b806020015160200151600003613af957604051637da73fc760e11b815260040160405180910390fd5b61013654602082015160400151600160a81b9091046001600160401b031611613b35576040516346b1ee3960e11b815260040160405180910390fd5b60208082015191516001600160a01b0316600090815261012d82526040908190208351815591830151600183015590910151600290910155565b60006110648383613fa5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613bcb57602002820191906000526020600020905b815481526020019060010190808311613bb7575b50505050509050919050565b6000826000018281548110613bee57613bee614d98565b9060005260206000200154905092915050565b6000611064836001600160a01b038416613fef565b6000613c6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166140079092919063ffffffff16565b8051909150156120b25780806020019051810190613c899190614ee9565b6120b25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f2a565b60335460ff166114205760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401611f2a565b6000670de0b6b3a7640000612ba98385615122565b8051613d62906001600160a01b03166338d52e0f60e01b61401e565b613d7e576040516231d9c360e41b815260040160405180910390fd5b602081015151600003613da457604051630d10b65f60e01b815260040160405180910390fd5b60208082015101516001600160a01b0316613dd25760405163d6abba3d60e01b815260040160405180910390fd5b806020015160400151600003613dfb57604051631d25a35560e01b815260040160405180910390fd5b6020808201510151613e1d906001600160a01b031663313ce56760e01b61401e565b613e3a57604051632825cd9b60e01b815260040160405180910390fd5b60208181015101516101365460ff1660ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eae9190614fd2565b60ff1614613ecf5760405163d3ff02b560e01b815260040160405180910390fd5b61013654602083015160600151600160a81b9091046001600160401b031611613f0b576040516346b1ee3960e11b815260040160405180910390fd5b5060208181015191516001600160a01b039081166000908152610130835260409081902084518155928401516001840180546001600160a01b03191691909316179091558201516002820155606090910151600390910155565b600054610100900460ff16613f8c5760405162461bcd60e51b8152600401611f2a906151e5565b609a613f988382615063565b50609b6120b28282615063565b6000613fb18383613fef565b613fe757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b39565b506000610b39565b60009081526001919091016020526040902054151590565b6060614016848460008561403a565b949350505050565b600061402983614162565b80156110645750611064838361418a565b60608247101561409b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f2a565b843b6140e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f2a565b600080866001600160a01b031685876040516141059190615179565b60006040518083038185875af1925050503d8060008114614142576040519150601f19603f3d011682016040523d82523d6000602084013e614147565b606091505b5091509150614157828286614273565b979650505050505050565b6000614175826301ffc9a760e01b61418a565b8015610b395750612007826001600160e01b03195b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b179052905160009190829081906001600160a01b03871690617530906141f1908690615179565b6000604051808303818686fa925050503d806000811461422d576040519150601f19603f3d011682016040523d82523d6000602084013e614232565b606091505b509150915060208151101561424d5760009350505050610b39565b8180156142695750808060200190518101906142699190614ee9565b9695505050505050565b60608315614282575081611064565b8251156142925782518084602001fd5b8160405162461bcd60e51b8152600401611f2a91906143fb565b604051806040016040528060006001600160a01b031681526020016142cf6142d4565b905290565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060608152602001600080191681526020016000801916815260200160008152602001606081525090565b604051806040016040528060006001600160a01b031681526020016142cf60405180608001604052806000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006020828403121561438b57600080fd5b81356001600160e01b03198116811461106457600080fd5b60005b838110156143be5781810151838201526020016143a6565b83811115610c345750506000910152565b600081518084526143e78160208601602086016143a3565b601f01601f19169290920160200192915050565b60208152600061106460208301846143cf565b80356001600160a01b038116811461442557600080fd5b919050565b6000806040838503121561443d57600080fd5b6144468361440e565b946020939093013593505050565b6001600160a01b0391909116815260200190565b60008083601f84011261447a57600080fd5b5081356001600160401b0381111561449157600080fd5b6020830191508360208260051b85010111156144ac57600080fd5b9250929050565b600080602083850312156144c657600080fd5b82356001600160401b038111156144dc57600080fd5b6144e885828601614468565b90969095509350505050565b60008083601f84011261450657600080fd5b5081356001600160401b0381111561451d57600080fd5b6020830191508360208260071b85010111156144ac57600080fd5b6000806000806040858703121561454e57600080fd5b84356001600160401b038082111561456557600080fd5b614571888389016144f4565b9096509450602087013591508082111561458a57600080fd5b5061459787828801614468565b95989497509550505050565b8051825260208082015190830152604090810151910152565b6020808252825182820181905260009190848201906040850190845b8181101561461257835180516001600160a01b031684528501516145fe868501826145a3565b5092840192608092909201916001016145d8565b50909695505050505050565b60008060006060848603121561463357600080fd5b61463c8461440e565b925061464a6020850161440e565b9150604084013590509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156146af57603f1988860301845261469d8583516143cf565b94509285019290850190600101614681565b5092979650505050505050565b60006080828403121561190957600080fd5b6000602082840312156146e057600080fd5b6110648261440e565b60608101610b3982846145a3565b60006020828403121561470957600080fd5b5035919050565b918252602082015260400190565b600060a0828403121561190957600080fd5b6020808252825182820181905260009190848201906040850190845b818110156146125783516001600160a01b03168352928401929184019160010161474c565b6000806020838503121561478457600080fd5b82356001600160401b0381111561479a57600080fd5b6144e8858286016144f4565b6000602082840312156147b857600080fd5b81356001600160401b038111156147ce57600080fd5b82016060818503121561106457600080fd5b60008083601f8401126147f257600080fd5b5081356001600160401b0381111561480957600080fd5b6020830191508360208285010111156144ac57600080fd5b6000806020838503121561483457600080fd5b82356001600160401b0381111561484a57600080fd5b6144e8858286016147e0565b6000815160a0845261486b60a08501826143cf565b9050602083015160208501526040830151604085015260608301516060850152608083015184820360808601526148a282826143cf565b95945050505050565b6020815260006110646020830184614856565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156146af57603f19888603018452614901858351614856565b945092850192908501906001016148e5565b80356001600160401b038116811461442557600080fd5b60008060006040848603121561493f57600080fd5b61494884614913565b925060208401356001600160401b0381111561496357600080fd5b61496f868287016147e0565b9497909650939450505050565b6000806040838503121561498f57600080fd5b6149988361440e565b91506149a66020840161440e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149e7576149e76149af565b60405290565b604051606081016001600160401b03811182821017156149e7576149e76149af565b604051601f8201601f191681016001600160401b0381118282101715614a3757614a376149af565b604052919050565b600082601f830112614a5057600080fd5b81356001600160401b03811115614a6957614a696149af565b614a7c601f8201601f1916602001614a0f565b818152846020838601011115614a9157600080fd5b816020850160208301376000918101602001919091529392505050565b60008183036080811215614ac157600080fd5b614ac96149c5565b9150614ad48361440e565b82526060601f1982011215614ae857600080fd5b50614af16149ed565b6020830135815260408301356020820152606083013560408201528060208301525092915050565b600082601f830112614b2a57600080fd5b813560206001600160401b03821115614b4557614b456149af565b614b53818360051b01614a0f565b82815260079290921b84018101918181019086841115614b7257600080fd5b8286015b84811015614b9657614b888882614aae565b835291830191608001614b76565b509695505050505050565b60008060008060008060008060008060006101608c8e031215614bc357600080fd5b6001600160401b038c35811015614bd957600080fd5b614be68e8e358f01614a3f565b9b508060208e01351115614bf957600080fd5b614c098e60208f01358f01614a3f565b9a508060408e01351115614c1c57600080fd5b614c2c8e60408f01358f01614b19565b9950614c3a60608e0161440e565b9850614c4860808e01614913565b9750614c5660a08e01614913565b9650614c6460c08e0161440e565b9550614c7260e08e0161440e565b9450614c816101008e01614913565b9350614c906101208e0161440e565b9250806101408e01351115614ca457600080fd5b50614cb68d6101408e01358e01614a3f565b90509295989b509295989b9093969950565b600080600060408486031215614cdd57600080fd5b6149488461440e565b602080825282518282018190526000919060409081850190868401855b82811015614d5757815180516001600160a01b039081168652908701518051888701528088015190911686860152858101516060808701919091520151608085015260a09093019290850190600101614d03565b5091979650505050505050565b600181811c90821680614d7857607f821691505b60208210810361190957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015614dd657614dd6614dae565b500390565b600060208284031215614ded57600080fd5b5051919050565b600060808284031215614e0657600080fd5b6110648383614aae565b60008235605e19833603018112614e2657600080fd5b9190910192915050565b600060608236031215614e4257600080fd5b614e4a6149ed565b82356001600160401b0380821115614e6157600080fd5b614e6d36838701614a3f565b8352602085013560208401526040850135915080821115614e8d57600080fd5b50614e9a36828601614a3f565b60408301525092915050565b60006001600160401b03828116848216808303821115614ec857614ec8614dae565b01949350505050565b60008219821115614ee457614ee4614dae565b500190565b600060208284031215614efb57600080fd5b8151801515811461106457600080fd5b600081830360a0811215614f1e57600080fd5b614f266149c5565b614f2f8461440e565b81526080601f1983011215614f4357600080fd5b6040519150608082016001600160401b0381118382101715614f6757614f676149af565b806040525060208401358252614f7f6040850161440e565b60208301526060840135604083015260808401356060830152816020820152809250505092915050565b6001600160a01b03929092168252602082015260400190565b8183823760009101908152919050565b600060208284031215614fe457600080fd5b815160ff8116811461106457600080fd5b60006001600160401b038381169083168181101561501557615015614dae565b039392505050565b601f8211156120b257600081815260208120601f850160051c810160208610156150445750805b601f850160051c820191505b81811015610eff57828155600101615050565b81516001600160401b0381111561507c5761507c6149af565b6150908161508a8454614d64565b8461501d565b602080601f8311600181146150c557600084156150ad5750858301515b600019600386901b1c1916600185901b178555610eff565b600085815260208120601f198616915b828110156150f4578886015182559484019460019091019084016150d5565b50858210156151125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600081600019048311821515161561513c5761513c614dae565b500290565b60008261515e57634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60008251614e268184602087016143a3565b60608152600061519e60608301866143cf565b82810360208401526151b081866143cf565b915050826040830152949350505050565b6001600160401b0383168152604060208201819052600090614016908301846143cf565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603160045260246000fdfe793403046d8d742fbcda848fb39169c203372335c023a423be7e84b70b40cbf7ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e8a743de41f34c45437fea330954de4fa8135db2d1fe88da08b87157bf9cac1964736f6c634300080f0033