0 txs
1 call
constructor
No constructor.
functions
timeoutOnClose
nonpayablefunction timeoutOnClose(tuple msg_)
timeoutPacket
nonpayablefunction timeoutPacket(tuple msg_)
events
ChannelUpgradeAck
event ChannelUpgradeAck(string portId, string channelId, uint64 upgradeSequence, uint8 channelState, (uint8 ordering, string[] connection_hops, string version) upgradeFields, ((uint64 revision_number, uint64 revision_height) height, uint64 timestamp) timeout, uint64 nextSequenceSend)
ChannelUpgradeConfirm
event ChannelUpgradeConfirm(string portId, string channelId, uint64 upgradeSequence, uint8 channelState)
ChannelUpgradeInit
event ChannelUpgradeInit(string portId, string channelId, uint64 upgradeSequence, (uint8 ordering, string[] connection_hops, string version) proposedUpgradeFields)
ChannelUpgradeOpen
event ChannelUpgradeOpen(string portId, string channelId, uint64 upgradeSequence)
ChannelUpgradeTry
event ChannelUpgradeTry(string portId, string channelId, uint64 upgradeSequence, (uint8 ordering, string[] connection_hops, string version) upgradeFields, ((uint64 revision_number, uint64 revision_height) height, uint64 timestamp) timeout, uint64 nextSequenceSend)
IBCModuleManagerChannelCapabilityClaimed
event IBCModuleManagerChannelCapabilityClaimed(string portId, string channelId, address module)
IBCModuleManagerPortCapabilityClaimed
event IBCModuleManagerPortCapabilityClaimed(string portId, address module)
TimeoutOnClose
event TimeoutOnClose((uint64 sequence, string sourcePort, string sourceChannel, string destinationPort, string destinationChannel, bytes data, (uint64 revision_number, uint64 revision_height) timeoutHeight, uint64 timeoutTimestamp) packet)
TimeoutPacket
event TimeoutPacket((uint64 sequence, string sourcePort, string sourceChannel, string destinationPort, string destinationChannel, bytes data, (uint64 revision_number, uint64 revision_height) timeoutHeight, uint64 timeoutTimestamp) packet)
WriteErrorReceipt
event WriteErrorReceipt(string portId, string channelId, uint64 upgradeSequence, string message)
errors
IBCChannelAckAlreadyProcessedInPreviousUpgrade
error IBCChannelAckAlreadyProcessedInPreviousUpgrade(uint64 sequence, uint64 ackStartSequence)
IBCChannelAcknowledgementAlreadyWritten
error IBCChannelAcknowledgementAlreadyWritten(string destinationPort, string destinationChannel, uint64 sequence)
IBCChannelAlreadyChannelExists
error IBCChannelAlreadyChannelExists()
IBCChannelCannotRecvNextUpgradePacket
error IBCChannelCannotRecvNextUpgradePacket(uint64 sequence, uint64 counterpartyNextSequenceSend)
IBCChannelChannelNotFound
error IBCChannelChannelNotFound(string portId, string channelId)
IBCChannelConnectionFeatureNotSupported
error IBCChannelConnectionFeatureNotSupported(uint8 ordering)
IBCChannelConnectionMultipleVersionsFound
error IBCChannelConnectionMultipleVersionsFound(string connectionId, uint256 length)
IBCChannelConnectionNotOpened
error IBCChannelConnectionNotOpened(string connectionId)
IBCChannelCounterpartyChannelIdNotEmpty
error IBCChannelCounterpartyChannelIdNotEmpty(string counterpartyChannelId)
IBCChannelEmptyAcknowledgement
error IBCChannelEmptyAcknowledgement()
IBCChannelFailedVerifyChannelState
error IBCChannelFailedVerifyChannelState(string clientId, bytes path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyNextSequenceRecv
error IBCChannelFailedVerifyNextSequenceRecv(string clientId, bytes path, uint64 nextSequenceRecv, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketAcknowledgement
error IBCChannelFailedVerifyPacketAcknowledgement(string clientId, bytes path, bytes32 commitment, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketCommitment
error IBCChannelFailedVerifyPacketCommitment(string clientId, bytes path, bytes32 commitment, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelFailedVerifyPacketReceiptAbsence
error IBCChannelFailedVerifyPacketReceiptAbsence(string clientId, bytes path, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelInvalidConnectionHopsLength
error IBCChannelInvalidConnectionHopsLength(uint256 length)
IBCChannelPacketAlreadyProcessInPreviousUpgrade
error IBCChannelPacketAlreadyProcessInPreviousUpgrade(uint64 sequence, uint64 recvStartSequence)
IBCChannelPacketCommitmentMismatch
error IBCChannelPacketCommitmentMismatch(bytes32 expected, bytes32 actual)
IBCChannelPacketCommitmentNotFound
error IBCChannelPacketCommitmentNotFound(string portId, string channelId, uint64 sequence)
IBCChannelPacketMaybeAlreadyReceived
error IBCChannelPacketMaybeAlreadyReceived(uint64 sequence, uint64 nextSequenceRecv)
IBCChannelPacketReceiptAlreadyExists
error IBCChannelPacketReceiptAlreadyExists(string destinationPort, string destinationChannel, uint64 sequence)
IBCChannelPastPacketTimeoutHeight
error IBCChannelPastPacketTimeoutHeight((uint64 revision_number, uint64 revision_height) timeoutHeight, (uint64 revision_number, uint64 revision_height) latestHeight)
IBCChannelPastPacketTimeoutTimestamp
error IBCChannelPastPacketTimeoutTimestamp(uint64 timeoutTimestamp, uint64 latestTimestamp)
IBCChannelTimeoutNotReached
error IBCChannelTimeoutNotReached()
IBCChannelTimeoutPacketHeight
error IBCChannelTimeoutPacketHeight((uint64 revision_number, uint64 revision_height) currentHeight, (uint64 revision_number, uint64 revision_height) timeoutHeight)
IBCChannelTimeoutPacketTimestamp
error IBCChannelTimeoutPacketTimestamp(uint256 currentTimestamp, uint64 timeoutTimestamp)
IBCChannelUnexpectedChannelState
error IBCChannelUnexpectedChannelState(uint8 state)
IBCChannelUnexpectedNextSequenceAck
error IBCChannelUnexpectedNextSequenceAck(uint64 expected)
IBCChannelUnexpectedNextSequenceRecv
error IBCChannelUnexpectedNextSequenceRecv(string destinationPort, string destinationChannel, uint64 sequence, uint64 expected)
IBCChannelUnexpectedPacketDestination
error IBCChannelUnexpectedPacketDestination(string destinationPort, string destinationChannel)
IBCChannelUnexpectedPacketSource
error IBCChannelUnexpectedPacketSource(string sourcePort, string sourceChannel)
IBCChannelUnknownChannelOrder
error IBCChannelUnknownChannelOrder(uint8 ordering)
IBCChannelUnknownPacketReceiptCommitment
error IBCChannelUnknownPacketReceiptCommitment(bytes32 commitment)
IBCChannelUpgradeCounterpartyAlreadyFlushCompleted
error IBCChannelUpgradeCounterpartyAlreadyFlushCompleted()
IBCChannelUpgradeCounterpartyAlreadyUpgraded
error IBCChannelUpgradeCounterpartyAlreadyUpgraded()
IBCChannelUpgradeCounterpartyNotFlushingOrFlushcomplete
error IBCChannelUpgradeCounterpartyNotFlushingOrFlushcomplete(uint8 state)
IBCChannelUpgradeCounterpartyNotOpenOrFlushcomplete
error IBCChannelUpgradeCounterpartyNotOpenOrFlushcomplete(uint8 state)
IBCChannelUpgradeErrorReceiptEmpty
error IBCChannelUpgradeErrorReceiptEmpty()
IBCChannelUpgradeFailedVerifyMembership
error IBCChannelUpgradeFailedVerifyMembership(string clientId, string path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCChannelUpgradeIncompatibleProposal
error IBCChannelUpgradeIncompatibleProposal()
IBCChannelUpgradeInvalidErrorReceiptSequence
error IBCChannelUpgradeInvalidErrorReceiptSequence()
IBCChannelUpgradeInvalidTimeout
error IBCChannelUpgradeInvalidTimeout()
IBCChannelUpgradeInvalidUpgradeFields
error IBCChannelUpgradeInvalidUpgradeFields()
IBCChannelUpgradeNoChanges
error IBCChannelUpgradeNoChanges()
IBCChannelUpgradeNoExistingUpgrade
error IBCChannelUpgradeNoExistingUpgrade()
IBCChannelUpgradeNotFlushcomplete
error IBCChannelUpgradeNotFlushcomplete(uint8 state)
IBCChannelUpgradeNotFlushing
error IBCChannelUpgradeNotFlushing(uint8 state)
IBCChannelUpgradeNotOpenOrFlushing
error IBCChannelUpgradeNotOpenOrFlushing(uint8 state)
IBCChannelUpgradeOldCounterpartyUpgradeSequence
error IBCChannelUpgradeOldCounterpartyUpgradeSequence()
IBCChannelUpgradeOldErrorReceiptSequence
error IBCChannelUpgradeOldErrorReceiptSequence()
IBCChannelUpgradeTimeoutHeightNotReached
error IBCChannelUpgradeTimeoutHeightNotReached()
IBCChannelUpgradeTimeoutTimestampNotReached
error IBCChannelUpgradeTimeoutTimestampNotReached()
IBCChannelUpgradeTimeoutUnallowedState
error IBCChannelUpgradeTimeoutUnallowedState()
IBCChannelUpgradeTryProposedConnectionHopsEmpty
error IBCChannelUpgradeTryProposedConnectionHopsEmpty()
IBCChannelUpgradeTryProposedConnectionHopsMismatch
error IBCChannelUpgradeTryProposedConnectionHopsMismatch()
IBCChannelUpgradeUnauthorizedChannelUpgrader
error IBCChannelUpgradeUnauthorizedChannelUpgrader(address upgrader)
IBCChannelUpgradeUnsupportedOrdering
error IBCChannelUpgradeUnsupportedOrdering(uint8 ordering)
IBCChannelUpgradeWriteOldErrorReceiptSequence
error IBCChannelUpgradeWriteOldErrorReceiptSequence(uint64 latestSequence, uint64 sequence)
IBCChannelZeroPacketTimeout
error IBCChannelZeroPacketTimeout()
IBCHostChannelCapabilityAlreadyClaimed
error IBCHostChannelCapabilityAlreadyClaimed(string portId, string channelId)
IBCHostClientTypeAlreadyExists
error IBCHostClientTypeAlreadyExists(string clientType)
IBCHostFailedAuthenticateChannelCapability
error IBCHostFailedAuthenticateChannelCapability(string portId, string channelId, address caller)
IBCHostInvalidClientType
error IBCHostInvalidClientType(string clientType)
IBCHostInvalidLightClientAddress
error IBCHostInvalidLightClientAddress(address lcAddress)
IBCHostInvalidModuleAddress
error IBCHostInvalidModuleAddress(address moduleAddress)
IBCHostInvalidPortIdentifier
error IBCHostInvalidPortIdentifier(string portId)
IBCHostModuleChannelNotFound
error IBCHostModuleChannelNotFound(string portId, string channelId)
IBCHostModuleDoesNotSupportERC165
error IBCHostModuleDoesNotSupportERC165()
IBCHostModuleDoesNotSupportIIBCModule
error IBCHostModuleDoesNotSupportIIBCModule(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleInitializer
error IBCHostModuleDoesNotSupportIIBCModuleInitializer(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleUpgrade
error IBCHostModuleDoesNotSupportIIBCModuleUpgrade(address module)
IBCHostModulePortNotFound
error IBCHostModulePortNotFound(string portId)
IBCHostPortCapabilityAlreadyClaimed
error IBCHostPortCapabilityAlreadyClaimed(string portId)
creation bytecode
0x60808060405234601557613948908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80632e5e6d74146100345763aa18c8b11461002f575f80fd5b610b58565b346107ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107ae5760043567ffffffffffffffff81116107ae57806004019060e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126107ae576100e66100c96100c36100b9858061154d565b6020810190611580565b906115de565b6100e06100d6858061154d565b6040810190611580565b90611616565b8054919060ff83166100f78161165c565b8015610b2c575061011f61011861010e868061154d565b6060810190611580565b3691611782565b6020815191012061013260018301611809565b8051602090910120146101a05761015f8461019c61016961015661010e848061154d565b9490938061154d565b6080810190611580565b906040519485947fe5db904a00000000000000000000000000000000000000000000000000000000865260048601611903565b0390fd5b6101b061011861015f868061154d565b602081519101206101c360028301611809565b6020815191012003610b15576101e46101de6003830161195a565b50611971565b9161022a61021160016101f686611a38565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b9361029161026461023e6100b9898061154d565b61024b6100d68b8061154d565b9161025e6102598d8061154d565b611b11565b936121c9565b5f527f1ee222554989dda120e26ecacf756fe1235cd8d726706b57517715dde4f0c90060205260405f2090565b548015610ab2576102ae6101006102a8898061154d565b01611b11565b6102bd60c06102a88a8061154d565b906102cd60e06102a88b8061154d565b9060205f6102e86102de8d8061154d565b60a0810190611580565b906102f8604051809381936115d1565b039060025afa156107a9576020926103946103a0926103685f958651906040519586948a8601927fffffffffffffffff0000000000000000000000000000000000000000000000006038959381809460c01b16865260c01b16600885015260c01b16601083015260188201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826116e7565b60405191828092611b62565b039060025afa156107a9575f516040516103c68161036860208201948560209181520190565b51902090818103610a8457506105229173ffffffffffffffffffffffffffffffffffffffff915060081c60ff16956104a16100d66104368a61042d61041a6104116100b9848061154d565b9590938061154d565b919092610425611728565b953691611782565b84523691611782565b602082015261044f61044a60048a01611c14565b612295565b61045b60c48801611b11565b91610475610467611739565b600481529b60208d01611c39565b60408b015260608a015261048b60048801611c14565b60808a015267ffffffffffffffff1660a0890152565b1660648301936006860196886104bf895467ffffffffffffffff1690565b6020888a6105616104cf856122dc565b60448c01966104de8882611580565b600586019d91928e929061051c61015f61051461050a61050161010e868061154d565b9390958061154d565b9490923691611782565b923691611782565b906123c0565b9261052c8c61247c565b946040519a8b998a997ff9bb5a51000000000000000000000000000000000000000000000000000000008b5260048b01611cd8565b03815f895af19081156107a9575f91610a65575b5015610a0c5750505460081c60ff1661058d81611c2f565b600281036108aa57506105a3610259888061154d565b9560a484019667ffffffffffffffff6105cb6105be8a611b11565b67ffffffffffffffff1690565b9116106108525791602091855f886106778c8c6105f46106139b9a5467ffffffffffffffff1690565b9761063561064061063b60246106098d6122dc565b9e019e8f87611580565b93909661062f61015f61051461050a61050161010e868061154d565b90612629565b94611b11565b61266c565b936040519c8d9b8c9a8b997ff9bb5a51000000000000000000000000000000000000000000000000000000008b5260048b01611cd8565b03925af19081156107a9575f91610823575b50156107b257505050505b5f6106c36102646106a86100b9858061154d565b6106b56100d6878061154d565b9161025e610259898061154d565b556106ed6102116106d76100b9848061154d565b906106e56100d6868061154d565b9290916126a9565b6106f7828061154d565b90803b156107ae5761073e5f929183926040519485809481937f52c7157d000000000000000000000000000000000000000000000000000000008352339060048401611ff3565b03925af180156107a9577f904f5d434673d1cff4706db2dd624b253653c9f64fc4bc5ea6a65ac0532e07409261078a9261077e9261078f575b508061154d565b60405191829182612020565b0390a1005b8061079d5f6107a3936116e7565b80611eb1565b84610777565b611b57565b5f80fd5b90846107f061019c936107ea6107e461062f6107d161010e878061154d565b61051461050a61015f8a8096959661154d565b97611b11565b92611580565b916040519687967f3feac05600000000000000000000000000000000000000000000000000000000885260048801611e71565b610845915060203d60201161084b575b61083d81836116e7565b810190611c45565b86610689565b503d610833565b6108a78761086c6108666102598c8061154d565b91611b11565b7f1cf196e8000000000000000000000000000000000000000000000000000000005f5267ffffffffffffffff91821660045216602452604490565b5ffd5b6108b8819897929398611c2f565b600181036109e057508596869392855f8861095f6020966108ff8a6102596109109f61010e816108e79261154d565b6108f961015661015f8680959761154d565b9361257a565b9c8d915467ffffffffffffffff1690565b96610928602461091f8a6122dc565b9b01809c611580565b906040519b8c9a8b998a987f999fbbb3000000000000000000000000000000000000000000000000000000008a5260048a01611dc8565b03925af19081156107a9575f916109c1575b50156109805750505050610694565b9061098e61019c9286611580565b906040519586957f1528850f00000000000000000000000000000000000000000000000000000000875260048701611e33565b6109da915060203d60201161084b5761083d81836116e7565b86610971565b6108a7907fbad3d148000000000000000000000000000000000000000000000000000000005f52611db6565b61019c878b610a328b946107ea610a2c61051c6107d161010e878061154d565b9761247c565b916040519687967f482b412f00000000000000000000000000000000000000000000000000000000885260048801611d5e565b610a7e915060203d60201161084b5761083d81836116e7565b8b610575565b7f49c017ee000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61019c87610ac36100b9828061154d565b929091610259610ae2610ad96100d6848061154d565b9290938061154d565b916040519586957fc69db83f00000000000000000000000000000000000000000000000000000000875260048701611b1b565b61015f8461019c61016961015661010e848061154d565b6108a7907f531153ee000000000000000000000000000000000000000000000000000000005f5261166b565b346107ae5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107ae5760043567ffffffffffffffff81116107ae57806004019060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126107ae57610bdd6100c96100c36100b9858061154d565b908154610bea8160ff1690565b610bf38161165c565b8015610b2c5750610c0a61011861010e868061154d565b60208151910120610c1d60018501611809565b805160209091012014610c415761015f8461019c61016961015661010e848061154d565b610c5161011861015f868061154d565b60208151910120610c6460028501611809565b6020815191012003610b1557610c7f6101de6003850161195a565b90610c9161021160016101f685611a38565b90610cb0610cab3660c0610ca58a8061154d565b01612031565b612746565b801561151c575b611414575b610ccf61026461023e6100b9898061154d565b548015610ab257610ce66101006102a8898061154d565b610cf560c06102a88a8061154d565b90610d0560e06102a88b8061154d565b9060205f610d166102de8d8061154d565b90610d26604051809381936115d1565b039060025afa156107a957602092610394610d96926103685f958651906040519586948a8601927fffffffffffffffff0000000000000000000000000000000000000000000000006038959381809460c01b16865260c01b16600885015260c01b16601083015260188201520190565b039060025afa156107a9575f51604051610dbc8161036860208201948560209181520190565b51902090818103610a8457505060081c60ff16610dd881611c2f565b600281036112fb5750610dee610259868061154d565b92608481019367ffffffffffffffff610e096105be87611b11565b9116106112e75760068301546044820192849167ffffffffffffffff16610e2f816122dc565b9360240193610e3e858b611580565b9490928b610e4c818061154d565b60608101610e5991611580565b909180610e659161154d565b60808101610e7291611580565b9290913690610e8092611782565b913690610e8c92611782565b610e9591612629565b610e9e8b611b11565b610ea79061266c565b9160405197889687967ff9bb5a5100000000000000000000000000000000000000000000000000000000885260058701938d60048a0198610ee799611cd8565b039173ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f19081156107a9575f916112c8575b50156112a957505050505b5f610f50610264610f356100b9868061154d565b610f426100d6888061154d565b9161025e6102598a8061154d565b558054600560ff8216610f628161165c565b146110ef575b508054906002600883901c60ff16610f7f81611c2f565b1461103e575b5050610f9a6102116106d76100b9848061154d565b610fa4828061154d565b90803b156107ae57610feb5f929183926040519485809481937f52c7157d000000000000000000000000000000000000000000000000000000008352339060048401611ff3565b03925af180156107a9577fa6ccdfd06294bbb481b7b08ab170c1377cccdcaa9e35b2e346a36ee32a1f8f069261078a9261077e9261102a57508061154d565b8061079d5f611038936116e7565b5f610777565b600561104d6110a89360ff1690565b6110568161165c565b146110af575b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660041781556110926100b9848061154d565b906110a06100d6868061154d565b929091612a39565b5f80610f85565b6110bb6007820161216f565b6110e16110cb6100b9858061154d565b906110d96100d6878061154d565b9290916132aa565b6110ea81612c56565b61105c565b6110fb600d83016120a4565b805161110d61110982612746565b1590565b8015611282575b611120575b5050610f68565b61110961112c91612746565b9081611267575b8115611204575b501561116f57506111676111516100b9848061154d565b9061115f6100d6868061154d565b929091612b23565b5f8080611119565b6111b29060081c60ff166111866100b9858061154d565b906111946100d6878061154d565b9290916111ac600588015467ffffffffffffffff1690565b946128e3565b156111675780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660061781556111ff816111f16100b9858061154d565b906110a06100d6878061154d565b611167565b602091500167ffffffffffffffff611224825167ffffffffffffffff1690565b1615159081611235575b505f61113a565b905067ffffffffffffffff61125d6105be61124e612866565b935167ffffffffffffffff1690565b911610155f61122e565b905061127c6112746127d1565b825190612807565b90611133565b5067ffffffffffffffff6112a1602084015167ffffffffffffffff1690565b161515611114565b90856107f061019c936107ea6107e461062f6107d161010e878061154d565b6112e1915060203d60201161084b5761083d81836116e7565b5f610f16565b6108a78461086c6108666102598a8061154d565b61130481611c2f565b600181036109e057508482602061133c61132161010e858061154d565b61132e61015f878061154d565b916108f9610259898061154d565b956044810194611357600685015467ffffffffffffffff1690565b5f73ffffffffffffffffffffffffffffffffffffffff886113c58c6113896024611380886122dc565b9901809c611580565b6040517f999fbbb30000000000000000000000000000000000000000000000000000000081529b8c9a8b998a9760058401959360048a01611dc8565b0393165af19081156107a9575f916113f5575b50156113e75750505050610f21565b9061098e61019c9287611580565b61140e915060203d60201161084b5761083d81836116e7565b5f6113d8565b67ffffffffffffffff61142d6101006102a8898061154d565b16158015611463575b15610cbc577f445655ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040517f4b0bbdc40000000000000000000000000000000000000000000000000000000081526020818061149f60448901886004840161208b565b038173ffffffffffffffffffffffffffffffffffffffff87165afa9081156107a9575f916114ed575b5067ffffffffffffffff6114e56105be6101006102a88b8061154d565b911610611436565b61150f915060203d602011611515575b61150781836116e7565b810190612076565b5f6114c8565b503d6114fd565b5061154861152d3660448701612031565b61154260c061153c8a8061154d565b0161206b565b90612771565b610cb7565b9035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee1813603018212156107ae570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156107ae570180359067ffffffffffffffff82116107ae576020019181360383136107ae57565b908092918237015f815290565b60209082604051938492833781017f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc0081520301902090565b6020919283604051948593843782019081520301902090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6007111561166657565b61162f565b906024916116788161165c565b600452565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff8211176116c657604052565b61167d565b60c0810190811067ffffffffffffffff8211176116c657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176116c657604052565b604051906117376040836116e7565b565b6040519061173760c0836116e7565b67ffffffffffffffff81116116c657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261178e82611748565b9161179c60405193846116e7565b8294818452818301116107ae578281602093845f960137010152565b90600182811c921680156117ff575b60208310146117d257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916117c7565b9060405191825f82549261181c846117b8565b80845293600181169081156118855750600114611841575b50611737925003836116e7565b90505f9291925260205f20905f915b818310611869575050906020611737928201015f611834565b6020919350806001915483858901015201910190918492611850565b602093506117379592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611834565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b929061191c9061192a95936040865260408601916118c5565b9260208185039101526118c5565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80541561196c575f5260205f20905f90565b61192d565b60405190815f825492611983846117b8565b9360018116908115611a0057506001146119c7575b50602092507f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb5500040879380081520301902090565b9150505f528160205f205f905b8382106119e857505060209181015f611998565b602091925080600191548487015201910183916119d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001684525060209380151502830191505f9050611998565b60405190815f825492611a4a846117b8565b9360018116908115611ac75750600114611a8e575b50602092507f521e6acb905d37b69880078e1a941104ad5d8bcb8c5cf52f1d5f47d31739d50081520301902090565b9150505f528160205f205f905b838210611aaf57505060209181015f611a5f565b60209192508060019154848701520191018391611a9b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001684525060209380151502830191505f9050611a5f565b67ffffffffffffffff8116036107ae57565b3561192a81611aff565b9392604093611b42611b509367ffffffffffffffff959998996060895260608901916118c5565b9186830360208801526118c5565b9416910152565b6040513d5f823e3d90fd5b805191908290602001825e015f815290565b5f9291815491611b83836117b8565b8083529260018116908115611bd85750600114611b9f57505050565b5f9081526020812093945091925b838310611bbe575060209250010190565b600181602092949394548385870101520191019190611bad565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90611737611c289260405193848092611b74565b03836116e7565b6003111561166657565b60038210156116665752565b908160209103126107ae575180151581036107ae5790565b359061173782611aff565b67ffffffffffffffff60208092828135611c8181611aff565b1685520135611c8f81611aff565b16910152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b979495611d4f9667ffffffffffffffff611d41968161192a9d9b97611d1a611d33988f98611d126020916101208c526101208c0190611b74565b990190611c68565b1660608d01521660808b015289830360a08b01526118c5565b9086820360c0880152611b74565b9084820360e0860152611c95565b91610100818403910152611c95565b9695939094611da0608094611d92611dae95611d846117379a60c08e8181520190611b74565b8c810360208e015290611c95565b908a820360408c0152611c95565b9188830360608a01526118c5565b940190611c68565b90602491600381101561166657600452565b96939467ffffffffffffffff611e259681611e1796611dfe8c97602061192a9f9d98611d12906101008c526101008c0190611b74565b1660608b015216608089015287830360a08901526118c5565b9084820360c0860152611b74565b9160e0818403910152611c95565b95949261173794611e63606094611e55611dae9560a08c5260a08c0190611b74565b908a820360208c0152611c95565b9188830360408a01526118c5565b969593946117379567ffffffffffffffff611e9d611dae95611d846080989660c08e8181520190611b74565b931660408a015288830360608a01526118c5565b5f9103126107ae57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156107ae57016020813591019167ffffffffffffffff82116107ae5781360383136107ae57565b9061192a90611f2b81611f1d85611c5d565b67ffffffffffffffff169052565b610100611fe481611fcd611fb2611f97611f7c611f61611f4e60208c018c611ebb565b61012060208c01526101208b01916118c5565b611f6e60408c018c611ebb565b908a830360408c01526118c5565b611f8960608b018b611ebb565b9089830360608b01526118c5565b611fa460808a018a611ebb565b9088830360808a01526118c5565b611fbf60a0890189611ebb565b9087830360a08901526118c5565b95611fde60c0860160c08301611c68565b01611c5d565b67ffffffffffffffff16910152565b9073ffffffffffffffffffffffffffffffffffffffff611b50602092959495604085526040850190611f0b565b90602061192a928181520190611f0b565b91908260409103126107ae57604051612049816116aa565b6020808294803561205981611aff565b845201359161206783611aff565b0152565b61192a903690612031565b908160209103126107ae575161192a81611aff565b92916020611dae61173793606087526060870190611b74565b906040516120b1816116aa565b602067ffffffffffffffff600183956040516120cc816116aa565b838254818116835260401c16858201528552015416910152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61211d81546117b8565b80612126575050565b601f811160011461213757505f9055565b815f526001601f60205f20920160051c820191015b818110612164575050805f9182528160208120915555565b5f815560010161214c565b5f8155600181018054905f8155816121a4575b505060058161219460025f9401612113565b8260016003830182815501550155565b5f5260205f20908101905b8181101561218257806121c3600192612113565b016121af565b909261227b92601560326103689361220b67ffffffffffffffff7f636f6d6d69746d656e74732f706f7274732f00000000000000000000000000009a16612f2d565b9381896040519a8b9960208b019d8e52868b01378801917f2f6368616e6e656c732f0000000000000000000000000000000000000000000085840152603c83013701017f2f73657175656e6365732f000000000000000000000000000000000000000000600a8201520190611b62565b51902090565b805182101561196c5760209160051b010190565b604051906122a46040836116e7565b6001825260205f5b8181106122cb57505081511561196c57602082015280511561196c5790565b8060606020809387010152016122ac565b67ffffffffffffffff16806122f057505f90565b7f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505035460c01c90816123215750505f90565b810167ffffffffffffffff81116123bb5767ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9116019067ffffffffffffffff82116123bb5767ffffffffffffffff1690811561238e5767ffffffffffffffff160490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6120e6565b61192a9061036861240393600a6040519586947f6368616e6e656c456e64732f706f7274732f000000000000000000000000000060208701526032860190611b62565b7f2f6368616e6e656c732f0000000000000000000000000000000000000000000081520190611b62565b9061243782611748565b61244460405191826116e7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06124728294611748565b0190602036910137565b906124ec6124d46124af6124aa6124a561249f875161249a8161165c565b6132f9565b60030b90565b61339a565b612ce4565b6124ce6124aa6124a561249f60208901516124c981611c2f565b6133bf565b90612d00565b6124ce6124aa6124e760408701516133f9565b613439565b60608301915f915b83518051841015612524576001916124ce6124aa6125158761251c95612281565b5151613439565b9201916124f4565b5061256e919493506125759250612549612569916124ce6124aa608088015151613439565b6124ce6124aa61256460a088015167ffffffffffffffff1690565b6133ac565b61242d565b8092612d82565b815290565b916015602f61192a9561259a67ffffffffffffffff610368969916612f2d565b9381896040519a8b997f72656365697074732f706f7274732f000000000000000000000000000000000060208c0152868b01378801917f2f6368616e6e656c732f0000000000000000000000000000000000000000000085840152603983013701017f2f73657175656e6365732f000000000000000000000000000000000000000000600a8201520190611b62565b61192a9061036861240393600a6040519586947f6e65787453657175656e6365526563762f706f7274732f00000000000000000060208701526037860190611b62565b7fffffffffffffffff0000000000000000000000000000000000000000000000006040519160c01b1660208201526008815261192a6028826116e7565b90919273ffffffffffffffffffffffffffffffffffffffff6126ff604051858582376020818781017f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505028152030190208387611616565b541693841561270f575050505090565b9061019c916040519485947f8e64f0b900000000000000000000000000000000000000000000000000000000865260048601611903565b67ffffffffffffffff81511615908161275d575090565b67ffffffffffffffff915060200151161590565b67ffffffffffffffff8151169167ffffffffffffffff81511680841093841561279c575b5050505090565b14925090826127b1575b50505f808080612795565b67ffffffffffffffff809293506020809201511692015116115f806127a6565b5f60206040516127e0816116aa565b82815201526040516127f1816116aa565b5f815267ffffffffffffffff4316602082015290565b67ffffffffffffffff8151169167ffffffffffffffff815116808411938415612831575050505090565b14925090826128455750505f808080612795565b67ffffffffffffffff80929350602080920151169201511611155f806127a6565b633b9aca0067ffffffffffffffff42160267ffffffffffffffff81169081036123bb5790565b9496959173ffffffffffffffffffffffffffffffffffffffff936060956128c867ffffffffffffffff946128d69460808b5260808b01916118c5565b9188830360208a01526118c5565b9616604085015216910152565b60029094939192946128f481611c2f565b1461297c575b8361294e612915610211610211610211888760209b8a6126a9565b93604051978896879586957f4c707d9700000000000000000000000000000000000000000000000000000000875233946004880161288c565b03915afa9081156107a9575f91612963575090565b61192a915060203d60201161084b5761083d81836116e7565b600661299261298b86856115de565b8584611616565b015467ffffffffffffffff6129b76105be8284169360801c67ffffffffffffffff1690565b9116036128fa575050505050600190565b90815467ffffffffffffffff81116116c65760208160051b01926129ef60405194856116e7565b81845260208401905f5260205f205f915b838310612a0d5750505050565b600160208192604051612a2b81612a248189611b74565b03826116e7565b815201920192019190612a00565b61026492610514612b1a92612b0b612b20979598612b06612af5600560405193612a62856116cb565b612a8460ff8254818116612a758161165c565b885260081c1660208701611c39565b604051612a90816116aa565b604051612aa481612a248160018701611b74565b8152604051612aba81612a248160028701611b74565b60208201526040860152612ad0600382016129c8565b6060860152612ae160048201611c14565b6080860152015467ffffffffffffffff1690565b67ffffffffffffffff1660a0830152565b61247c565b60208151910120973691611782565b906130da565b55565b909260039261173794612c506005612b6f604051848882376020818681017f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc008152030190208686611616565b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416178155612ba36007820161216f565b612bac81612c56565b612bb7368589611782565b610368612c05612bc8368a8a611782565b604051928391600a61240360208501977f6368616e6e656c55706772616465732f75706772616465732f706f7274732f008952603f860190611b62565b5190205f527f1ee222554989dda120e26ecacf756fe1235cd8d726706b57517715dde4f0c9006020525f6040812055612c41818787878b612a39565b015467ffffffffffffffff1690565b93613135565b601081019081549167ffffffffffffffff8360401c16918215612cde57612cd6600193600d937fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff5f971681559067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b018281550155565b50505050565b60010190816001116123bb57565b90602082018092116123bb57565b919082018092116123bb57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082019182116123bb57565b60200390602082116123bb57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116123bb57565b919082039182116123bb57565b90612ddc612dcd60208451612d968161165c565b612d9f8161165c565b612f04575b83602086018051612db481611c2f565b612dbd81611c2f565b612ed7575b506124ce90826137a0565b6124ce83826040870151613463565b9160608101805151612e88575b509160209183608061192a9501805151612e60575b5060a00167ffffffffffffffff612e1d825167ffffffffffffffff1690565b16612e2a575b5050612d75565b816124ce91612e43856124ce612e5496612e59986137c7565b9384915167ffffffffffffffff1690565b61344e565b5f80612e23565b612e81906124ce84612e79876124ce8360a0989a6137ba565b8093516138c9565b9290612dfe565b935f939193915b855151831015612eca57612ec2612eac826124ce876001956137ad565b6124ce8682612ebc888c51612281565b516138c9565b920191612e8f565b9094509290506020612de9565b816124ce91612ef0856124ce612e5496612efd98613793565b938491516124c981611c2f565b835f612dc2565b612f15816124ce86612f2894613758565b6124ce8582612e54895161249a8161165c565b612da4565b805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008210156130b2575b806d04ee2d6d415b85acef8100000000600a921015613096575b662386f26fc10000811015613081575b6305f5e10081101561306f575b61271081101561305f575b6064811015613050575b1015613045575b61300f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6021612fd96001860161242d565b948501015b01917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b8015613040577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61300f9192612fde565b505090565b600190910190612fa7565b60029060649004930192612fa0565b6004906127109004930192612f96565b6008906305f5e1009004930192612f8b565b601090662386f26fc100009004930192612f7e565b6020906d04ee2d6d415b85acef81000000009004930192612f6e565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104612f54565b906130e4916123c0565b6020815191012090565b9261192a96946131136131219367ffffffffffffffff956080885260808801916118c5565b9185830360208701526118c5565b931660408201526060818403910152611c95565b929093919594600f61317b604051878782376020818981017f1952ed347963c5b7b1856335782fc9c26716d4219254baf3dfc6b26981b2dc00815203019020848a611616565b01805467ffffffffffffffff1667ffffffffffffffff851667ffffffffffffffff8216101561326e57509161320f849261320a613269967fef7ecb538ba766888f61a77318bf9fe298813d0ea1c94781985411946e1daa349a9b969067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b613585565b9261323361321b611728565b67ffffffffffffffff85168152856020820152613601565b6020815191012061325c61026461324b368b8b611782565b613256368787611782565b906136ce565b55604051968796876130ee565b0390a1565b7f8910397b000000000000000000000000000000000000000000000000000000005f5267ffffffffffffffff908116600452841660245260445ffd5b610368926132c0612bc8926132c8943691611782565b943691611782565b5190205f527f1ee222554989dda120e26ecacf756fe1235cd8d726706b57517715dde4f0c9006020525f6040812055565b6133028161165c565b8015613395576133118161165c565b6001811461338f576133228161165c565b60028114613389576133338161165c565b60038114613383576133448161165c565b6004811461337d576133558161165c565b60058114613377578061336960069261165c565b14613372575f80fd5b600690565b50600590565b50600490565b50600390565b50600290565b50600190565b505f90565b5f8160070b125f146133ac5750600a90565b67ffffffffffffffff61192a9116613739565b6003811015611666578015613395576133d781611c2f565b6001811461338f576002906133eb81611c2f565b146133f4575f80fd5b600290565b613404815151613439565b8060010191826001116123bb57602061341f91015151613439565b806001016001116123bb5760029101018091116123bb5790565b61344281613739565b81018091116123bb5790565b9067ffffffffffffffff61192a9392166137ff565b91613470612569846133f9565b926020908051516134f6575b6134d061192a956134d5946134a56134ca9560206134c49601848151516134da575b5050612d0d565b9485926134bc6134b6848b876137ff565b8a612d00565b958691612cf2565b92612d00565b9061383e565b612d00565b612d75565b80612e79846124ce6124ce946134ef976137e3565b5f8461349e565b6134ff856137d4565b91828101928382116123bb5782519081519161351c8987856137ff565b9380855f94018b01019101905b83831061356e575050905081018091116123bb5761192a956134d5946134a56134c494602061355e6134d0966134ca99612d00565b975050945050945095505061347c565b600180809284515f1a815301920192019190613529565b604080519161359482846116e7565b600183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06020840192013683376135cb8161165c565b82511561196c5760300160f81b7fff00000000000000000000000000000000000000000000000000000000000000165f1a905390565b61361567ffffffffffffffff825116613739565b9081600101806001116123bb576020820192613632845151613439565b806001016001116123bb5760029101018091116123bb576136529061242d565b9160209167ffffffffffffffff815116613698575b5090818361257593515161367c575050612d0d565b80612e79846124ce6124ce94613691976137e3565b5f8361349e565b6136a1846137f0565b83018093116123bb57826124ce8561257595612e546136c8955167ffffffffffffffff1690565b91613667565b9061227b61036891604051928391600a61240360208501977f6368616e6e656c55706772616465732f757067726164654572726f722f706f7289527f74732f000000000000000000000000000000000000000000000000000000000060408701526043860190611b62565b60019060071c805b613749575090565b60019091019060071c80613741565b5f929160089101815b60071c918215613787576001918291608017815301930190607f81169093909193613761565b90600193949250530190565b5f92918391016010613787565b5f9291839101601a613787565b5f92918391016022613787565b5f9291839101602a613787565b5f92918391016030613787565b5f91908290602001600a613787565b5f92918391016012613787565b5f919082906020016008613787565b5f9392607f821692019060071c918215613787576001918291608017815301930190607f81169093909193613761565b601f81116123bb576101000a90565b909180156138c4575b602081116138765761386361385e61386892612d3a565b61382f565b612d48565b905182518216911916179052565b909182518152602081018091116123bb5791602081018091116123bb57907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810190811115613847576120e6565b505050565b9081519160206138da8584866137ff565b94855f9401019101905b8383106138fb575050905081018091116123bb5790565b600180809284515f1a8153019201920191906138e456fea264697066735822122046f0db48355ab4b7e139fac96a200125e277e78d56900e6dc71b42652f85fd5b64736f6c634300081c0033