mirror of
https://github.com/a2x/cs2-dumper.git
synced 2025-05-14 17:35:36 +08:00
522 lines
20 KiB
C++
522 lines
20 KiB
C++
// Generated using https://github.com/a2x/cs2-dumper
|
|
// 2024-03-29 21:16:02.890657436 UTC
|
|
|
|
#pragma once
|
|
|
|
#include <cstddef>
|
|
|
|
namespace cs2_dumper {
|
|
namespace schemas {
|
|
// Module: libpulse_system.so
|
|
// Classes count: 49
|
|
// Enums count: 0
|
|
namespace libpulse_system {
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseProvideFeatureTag
|
|
// MPulseLibraryBindings
|
|
namespace FakeEntity_tAPI {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 5
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_RegisterInfo {
|
|
constexpr std::ptrdiff_t m_nReg = 0x0; // PulseRuntimeRegisterIndex_t
|
|
constexpr std::ptrdiff_t m_Type = 0x8; // CPulseValueFullType
|
|
constexpr std::ptrdiff_t m_OriginName = 0x18; // CKV3MemberNameWithStorage
|
|
constexpr std::ptrdiff_t m_nWrittenByInstruction = 0x50; // int32
|
|
constexpr std::ptrdiff_t m_nLastReadByInstruction = 0x54; // int32
|
|
}
|
|
// Parent: None
|
|
// Fields count: 3
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_Chunk {
|
|
constexpr std::ptrdiff_t m_Instructions = 0x0; // CUtlLeanVector<PGDInstruction_t>
|
|
constexpr std::ptrdiff_t m_Registers = 0x10; // CUtlLeanVector<CPulse_RegisterInfo>
|
|
constexpr std::ptrdiff_t m_InstructionEditorIDs = 0x20; // CUtlLeanVector<PulseDocNodeID_t>
|
|
}
|
|
// Parent: None
|
|
// Fields count: 5
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_Variable {
|
|
constexpr std::ptrdiff_t m_Name = 0x0; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_Description = 0x8; // CUtlString
|
|
constexpr std::ptrdiff_t m_Type = 0x10; // CPulseValueFullType
|
|
constexpr std::ptrdiff_t m_DefaultValue = 0x20; // KeyValues3
|
|
constexpr std::ptrdiff_t m_bIsPublic = 0x32; // bool
|
|
}
|
|
// Parent: None
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_Constant {
|
|
constexpr std::ptrdiff_t m_Type = 0x0; // CPulseValueFullType
|
|
constexpr std::ptrdiff_t m_Value = 0x10; // KeyValues3
|
|
}
|
|
// Parent: None
|
|
// Fields count: 3
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_PublicOutput {
|
|
constexpr std::ptrdiff_t m_Name = 0x0; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_Description = 0x8; // CUtlString
|
|
constexpr std::ptrdiff_t m_ParamType = 0x10; // CPulseValueFullType
|
|
}
|
|
// Parent: None
|
|
// Fields count: 4
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_OutputConnection {
|
|
constexpr std::ptrdiff_t m_SourceOutput = 0x0; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_TargetEntity = 0x8; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_TargetInput = 0x10; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_Param = 0x18; // CUtlSymbolLarge
|
|
}
|
|
// Parent: None
|
|
// Fields count: 5
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_InvokeBinding {
|
|
constexpr std::ptrdiff_t m_RegisterMap = 0x0; // PulseRegisterMap_t
|
|
constexpr std::ptrdiff_t m_FuncName = 0x20; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_nCellIndex = 0x28; // PulseRuntimeCellIndex_t
|
|
constexpr std::ptrdiff_t m_nSrcChunk = 0x2C; // PulseRuntimeChunkIndex_t
|
|
constexpr std::ptrdiff_t m_nSrcInstruction = 0x30; // int32
|
|
}
|
|
// Parent: None
|
|
// Fields count: 6
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_CallInfo {
|
|
constexpr std::ptrdiff_t m_PortName = 0x0; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t
|
|
constexpr std::ptrdiff_t m_RegisterMap = 0x10; // PulseRegisterMap_t
|
|
constexpr std::ptrdiff_t m_CallMethodID = 0x30; // PulseDocNodeID_t
|
|
constexpr std::ptrdiff_t m_nSrcChunk = 0x34; // PulseRuntimeChunkIndex_t
|
|
constexpr std::ptrdiff_t m_nSrcInstruction = 0x38; // int32
|
|
}
|
|
// Parent: None
|
|
// Fields count: 10
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseGraphDef {
|
|
constexpr std::ptrdiff_t m_DomainIdentifier = 0x8; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_ParentMapName = 0x10; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_Chunks = 0x18; // CUtlVector<CPulse_Chunk*>
|
|
constexpr std::ptrdiff_t m_Cells = 0x30; // CUtlVector<CPulseCell_Base*>
|
|
constexpr std::ptrdiff_t m_Vars = 0x48; // CUtlVector<CPulse_Variable>
|
|
constexpr std::ptrdiff_t m_PublicOutputs = 0x60; // CUtlVector<CPulse_PublicOutput>
|
|
constexpr std::ptrdiff_t m_InvokeBindings = 0x78; // CUtlVector<CPulse_InvokeBinding*>
|
|
constexpr std::ptrdiff_t m_CallInfos = 0x90; // CUtlVector<CPulse_CallInfo*>
|
|
constexpr std::ptrdiff_t m_Constants = 0xA8; // CUtlVector<CPulse_Constant>
|
|
constexpr std::ptrdiff_t m_OutputConnections = 0xC0; // CUtlVector<CPulse_OutputConnection*>
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseLibraryBindings
|
|
// MPropertyDescription
|
|
namespace CPulseMathlib {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseLibraryBindings
|
|
// MPropertyDescription
|
|
namespace CPulseTestScriptLib {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace PulseRegisterMap_t {
|
|
constexpr std::ptrdiff_t m_Inparams = 0x0; // KeyValues3
|
|
constexpr std::ptrdiff_t m_Outparams = 0x10; // KeyValues3
|
|
}
|
|
// Parent: None
|
|
// Fields count: 11
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace PGDInstruction_t {
|
|
constexpr std::ptrdiff_t m_nCode = 0x0; // PulseInstructionCode_t
|
|
constexpr std::ptrdiff_t m_nVar = 0x4; // PulseRuntimeVarIndex_t
|
|
constexpr std::ptrdiff_t m_nReg0 = 0x8; // PulseRuntimeRegisterIndex_t
|
|
constexpr std::ptrdiff_t m_nReg1 = 0xA; // PulseRuntimeRegisterIndex_t
|
|
constexpr std::ptrdiff_t m_nReg2 = 0xC; // PulseRuntimeRegisterIndex_t
|
|
constexpr std::ptrdiff_t m_nInvokeBindingIndex = 0x10; // PulseRuntimeInvokeIndex_t
|
|
constexpr std::ptrdiff_t m_nChunk = 0x14; // PulseRuntimeChunkIndex_t
|
|
constexpr std::ptrdiff_t m_nDestInstruction = 0x18; // int32
|
|
constexpr std::ptrdiff_t m_nCallInfoIndex = 0x1C; // PulseRuntimeCallInfoIndex_t
|
|
constexpr std::ptrdiff_t m_nConstIdx = 0x20; // PulseRuntimeConstantIndex_t
|
|
constexpr std::ptrdiff_t m_DomainValue = 0x28; // CBufferString
|
|
}
|
|
// Parent: None
|
|
// Fields count: 3
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_OutflowConnection {
|
|
constexpr std::ptrdiff_t m_SourceOutflowName = 0x0; // CUtlSymbolLarge
|
|
constexpr std::ptrdiff_t m_nDestChunk = 0x8; // PulseRuntimeChunkIndex_t
|
|
constexpr std::ptrdiff_t m_nInstruction = 0xC; // int32
|
|
}
|
|
// Parent: CPulse_OutflowConnection
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulse_ResumePoint {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 1
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_Base {
|
|
constexpr std::ptrdiff_t m_nEditorNodeID = 0x8; // PulseDocNodeID_t
|
|
}
|
|
// Parent: CPulseCell_Base
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_BaseFlow {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_Inflow_BaseEntrypoint {
|
|
constexpr std::ptrdiff_t m_EntryChunk = 0x48; // PulseRuntimeChunkIndex_t
|
|
constexpr std::ptrdiff_t m_RegisterMap = 0x50; // PulseRegisterMap_t
|
|
}
|
|
// Parent: None
|
|
// Fields count: 3
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseRuntimeMethodArg {
|
|
constexpr std::ptrdiff_t m_Name = 0x0; // CKV3MemberNameWithStorage
|
|
constexpr std::ptrdiff_t m_Description = 0x38; // CUtlString
|
|
constexpr std::ptrdiff_t m_Type = 0x40; // CPulseValueFullType
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_BaseYieldingInflow {
|
|
}
|
|
// Parent: CPulseCell_Base
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_BaseValue {
|
|
}
|
|
// Parent: CPulseCell_BaseYieldingInflow
|
|
// Fields count: 1
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
// MPulseEditorHeaderIcon
|
|
namespace CPulseCell_Inflow_Wait {
|
|
constexpr std::ptrdiff_t m_WakeResume = 0x48; // CPulse_ResumePoint
|
|
}
|
|
// Parent: None
|
|
// Fields count: 1
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_Outflow_CycleOrdered__InstanceState_t {
|
|
constexpr std::ptrdiff_t m_nNextIndex = 0x0; // int32
|
|
}
|
|
// Parent: None
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_Outflow_CycleShuffled__InstanceState_t {
|
|
constexpr std::ptrdiff_t m_Shuffle = 0x0; // CUtlVectorFixedGrowable<uint8>
|
|
constexpr std::ptrdiff_t m_nNextShuffle = 0x20; // int32
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
namespace CPulseCell_Outflow_TestRandomYesNo {
|
|
constexpr std::ptrdiff_t m_Yes = 0x48; // CPulse_OutflowConnection
|
|
constexpr std::ptrdiff_t m_No = 0x58; // CPulse_OutflowConnection
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
namespace CPulseCell_Outflow_TestExplicitYesNo {
|
|
constexpr std::ptrdiff_t m_Yes = 0x48; // CPulse_OutflowConnection
|
|
constexpr std::ptrdiff_t m_No = 0x58; // CPulse_OutflowConnection
|
|
}
|
|
// Parent: CPulseCell_BaseValue
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
namespace CPulseCell_Value_TestValue50 {
|
|
}
|
|
// Parent: CPulseCell_BaseValue
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
// MPulseEditorHeaderIcon
|
|
namespace CPulseCell_Value_RandomInt {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 4
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_Timeline__TimelineEvent_t {
|
|
constexpr std::ptrdiff_t m_flTimeFromPrevious = 0x0; // float32
|
|
constexpr std::ptrdiff_t m_bPauseForPreviousEvents = 0x4; // bool
|
|
constexpr std::ptrdiff_t m_bCallModeSync = 0x5; // bool
|
|
constexpr std::ptrdiff_t m_EventOutflow = 0x8; // CPulse_OutflowConnection
|
|
}
|
|
// Parent: None
|
|
// Fields count: 6
|
|
//
|
|
// Metadata:
|
|
// MPulseInstanceDomainInfo
|
|
// MPulseLibraryBindings
|
|
// MPulseDomainOptInFeatureTag
|
|
namespace CPulseGraphInstance_TestDomain {
|
|
constexpr std::ptrdiff_t m_bIsRunningUnitTests = 0xD8; // bool
|
|
constexpr std::ptrdiff_t m_bExplicitTimeStepping = 0xD9; // bool
|
|
constexpr std::ptrdiff_t m_bExpectingToDestroyWithYieldedCursors = 0xDA; // bool
|
|
constexpr std::ptrdiff_t m_nNextValidateIndex = 0xDC; // int32
|
|
constexpr std::ptrdiff_t m_Tracepoints = 0xE0; // CUtlVector<CUtlString>
|
|
constexpr std::ptrdiff_t m_bTestYesOrNoPath = 0xF8; // bool
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
namespace CPulseCell_Step_TestDomainTracepoint {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
namespace CPulseCell_Step_TestDomainCreateFakeEntity {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
namespace CPulseCell_Step_TestDomainDestroyFakeEntity {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 1
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPulseEditorHeaderText
|
|
namespace CPulseCell_Step_TestDomainEntFire {
|
|
constexpr std::ptrdiff_t m_Input = 0x48; // CUtlString
|
|
}
|
|
// Parent: CPulseCell_BaseValue
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
namespace CPulseCell_Val_TestDomainGetEntityName {
|
|
}
|
|
// Parent: CPulseCell_BaseValue
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
namespace CPulseCell_Val_TestDomainFindEntityByName {
|
|
}
|
|
// Parent: CPulseCell_BaseYieldingInflow
|
|
// Fields count: 3
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
namespace CPulseCell_TestWaitWithCursorState {
|
|
constexpr std::ptrdiff_t m_WakeResume = 0x48; // CPulse_ResumePoint
|
|
constexpr std::ptrdiff_t m_WakeCancel = 0x58; // CPulse_ResumePoint
|
|
constexpr std::ptrdiff_t m_WakeFail = 0x68; // CPulse_ResumePoint
|
|
}
|
|
// Parent: None
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_TestWaitWithCursorState__CursorState_t {
|
|
constexpr std::ptrdiff_t flWaitValue = 0x0; // float32
|
|
constexpr std::ptrdiff_t bFailOnCancel = 0x4; // bool
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseLibraryBindings
|
|
// MPropertyDescription
|
|
namespace CPulseTestFuncs_DerivedDomain {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
namespace CPulseCell_Test_NoInflow {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
namespace CPulseCell_Test_MultiInflow_WithDefault {
|
|
}
|
|
// Parent: CPulseCell_BaseFlow
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
namespace CPulseCell_Test_MultiInflow_NoDefault {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseInstanceDomainInfo
|
|
// MPulseLibraryBindings
|
|
namespace CPulseGraphInstance_TurtleGraphics {
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseLibraryBindings
|
|
// MPropertyDescription
|
|
namespace CPulseCursorFuncs {
|
|
}
|
|
// Parent: CPulseCell_BaseYieldingInflow
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
namespace CPulseCell_WaitForCursorsWithTagBase {
|
|
constexpr std::ptrdiff_t m_nCursorsAllowedToWait = 0x48; // int32
|
|
constexpr std::ptrdiff_t m_WaitComplete = 0x50; // CPulse_ResumePoint
|
|
}
|
|
// Parent: CPulseCell_WaitForCursorsWithTagBase
|
|
// Fields count: 2
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
// MPulseEditorHeaderIcon
|
|
namespace CPulseCell_WaitForCursorsWithTag {
|
|
constexpr std::ptrdiff_t m_bTagSelfWhenComplete = 0x60; // bool
|
|
constexpr std::ptrdiff_t m_nDesiredKillPriority = 0x64; // PulseCursorCancelPriority_t
|
|
}
|
|
// Parent: CPulseCell_WaitForCursorsWithTagBase
|
|
// Fields count: 1
|
|
//
|
|
// Metadata:
|
|
// MGetKV3ClassDefaults
|
|
// MCellForDomain
|
|
// MPulseCellMethodBindings
|
|
// MPropertyFriendlyName
|
|
// MPropertyDescription
|
|
// MPulseEditorHeaderIcon
|
|
namespace CPulseCell_CursorQueue {
|
|
constexpr std::ptrdiff_t m_nCursorsAllowedToRunParallel = 0x60; // int32
|
|
}
|
|
// Parent: None
|
|
// Fields count: 0
|
|
//
|
|
// Metadata:
|
|
// MPulseLibraryBindings
|
|
// MPropertyDescription
|
|
namespace CPulseTestFuncs_LibraryA {
|
|
}
|
|
}
|
|
}
|
|
}
|