Full Code of Xeeynamo/KingdomSaveEditor for AI

master 37a7a9dde194 cached
776 files
2.2 MB
612.0k tokens
2032 symbols
1 requests
Download .txt
Showing preview only (2,445K chars total). Download the full file or copy to clipboard to get everything.
Repository: Xeeynamo/KingdomSaveEditor
Branch: master
Commit: 37a7a9dde194
Files: 776
Total size: 2.2 MB

Directory structure:
gitextract_6g8e8mkh/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature-request.md
│   │   ├── ff7r-missing-item-name-request.md
│   │   └── ff7r-teleport-coordinates-request.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── format-code.yml
│       └── test.yml
├── .gitignore
├── .gitmodules
├── CNAME
├── KH3SaveEditor.sln
├── KHSave/
│   ├── Attributes/
│   │   ├── AbilityAttribute.cs
│   │   ├── AccessoryAttribute.cs
│   │   ├── ArmorAttribute.cs
│   │   ├── BoostAttribute.cs
│   │   ├── CombatStyleAttribute.cs
│   │   ├── CommandAttribute.cs
│   │   ├── ConsumableAttribute.cs
│   │   ├── FoodAttribute.cs
│   │   ├── FormAttribute.cs
│   │   ├── GummiBlockAttribute.cs
│   │   ├── InfoAttribute.cs
│   │   ├── IngredientAttribute.cs
│   │   ├── KeyItemAttribute.cs
│   │   ├── KeybladeAttribute.cs
│   │   ├── LinkAttribute.cs
│   │   ├── MagicAttribute.cs
│   │   ├── ManuscriptAttribute.cs
│   │   ├── MapAttribute.cs
│   │   ├── MapInfo.cs
│   │   ├── MateriaAttribute.cs
│   │   ├── MogItemAttribute.cs
│   │   ├── MoneyAttribute.cs
│   │   ├── RecipeAttribute.cs
│   │   ├── ReportAttribute.cs
│   │   ├── ShieldAttribute.cs
│   │   ├── SnackAttribute.cs
│   │   ├── StaffAttribute.cs
│   │   ├── SummonAttribute.cs
│   │   ├── SynthesisAttribute.cs
│   │   ├── TentAttribute.cs
│   │   ├── TrackAttribute.cs
│   │   ├── UnusedAttribute.cs
│   │   ├── WeaponAttribute.cs
│   │   └── WorldInfoAttribute.cs
│   ├── Extensions/
│   │   ├── AttributeExtensions.cs
│   │   ├── BitExtensions.cs
│   │   └── DateTimeExtensions.cs
│   ├── KHSave.csproj
│   ├── Services/
│   │   ├── CacheService.cs
│   │   └── TransferServiceLL.cs
│   └── StreamHelpers.cs
├── KHSave.Archives/
│   ├── ArchiveFactories.cs
│   ├── Factories/
│   │   ├── PcKh1Factory.cs
│   │   ├── PcKh2Factory.cs
│   │   ├── PcKhBbsFactory.cs
│   │   ├── PcKhDddFactory.cs
│   │   ├── PcKhRecomFactory.cs
│   │   ├── Ps2CbsFactory.cs
│   │   ├── Ps2PsuFactory.cs
│   │   ├── Ps3PsvFactory.cs
│   │   ├── Ps4Kh1Factory.cs
│   │   ├── Ps4Kh2Factory.cs
│   │   ├── Ps4KhDddFactory.cs
│   │   └── Ps4KhRecomFactory.cs
│   ├── IArchive.cs
│   ├── IArchiveEntry.cs
│   ├── IArchiveFactory.cs
│   ├── KHSave.Archives.csproj
│   ├── PcSaveArchive.cs
│   ├── Ps2CbsArchive.cs
│   ├── Ps2PsuArchive.cs
│   ├── Ps3PsvArchive.cs
│   └── Ps4SaveArchive.cs
├── KHSave.Lib02/
│   ├── KHSave.Lib02.csproj
│   ├── Models/
│   │   ├── Objective.cs
│   │   ├── PlayableCharacter.cs
│   │   └── Slot.cs
│   ├── SaveKh02.cs
│   └── Types/
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── LocationType.cs
│       ├── MapType.cs
│       └── SpawnType.cs
├── KHSave.Lib1/
│   ├── Attributes/
│   │   ├── ArmorGummiAttribute.cs
│   │   ├── BlueprintGummiAttribute.cs
│   │   ├── CockpitGummiAttribute.cs
│   │   ├── EngineGummiAttribute.cs
│   │   ├── ExtraGummiAttribute.cs
│   │   ├── GummiBlockAttribute.cs
│   │   ├── SpecialGummiAttribute.cs
│   │   ├── WeaponGummiAttribute.cs
│   │   └── WingGummiAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKh1.cs
│   ├── KHSave.Lib1.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   ├── GummiBlock.cs
│   │   └── Gummiship.cs
│   ├── SaveKh1.EU.cs
│   ├── SaveKh1.FinalMix.cs
│   ├── SaveKh1.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── EquipmentType.cs
│       ├── GameTypes.cs
│       ├── GummiBlocksType.cs
│       ├── PlayableCharacterType.cs
│       └── WorldType.cs
├── KHSave.Lib2/
│   ├── Constants.cs
│   ├── ISaveKh2.cs
│   ├── KHSave.Lib2.csproj
│   ├── Models/
│   │   ├── CharacterFinalMix.cs
│   │   ├── CharacterVanilla.cs
│   │   ├── DriveFormFinalMix.cs
│   │   ├── DriveFormVanilla.cs
│   │   ├── ICharacter.cs
│   │   ├── IDriveForm.cs
│   │   ├── IPlaceScript.cs
│   │   ├── PartyMembers.cs
│   │   ├── PlaceScriptFinalMix.cs
│   │   ├── PlaceScriptVanilla.cs
│   │   └── Progress.cs
│   ├── SaveKh2.European.cs
│   ├── SaveKh2.FinalMix.cs
│   ├── SaveKh2.TransferMappings.cs
│   ├── SaveKh2.cs
│   └── Types/
│       ├── AbilityStyleType.cs
│       ├── BattleStyleType.cs
│       ├── CharacterType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── DriveFormType.cs
│       ├── EquipmentType.cs
│       ├── GameType.cs
│       ├── InventoryType.cs
│       ├── PlayableCharacterType.cs
│       └── WorldType.cs
├── KHSave.Lib3/
│   ├── ISaveKh3.cs
│   ├── KHSave.Lib3.csproj
│   ├── Models/
│   │   ├── Ability.cs
│   │   ├── AiModel.cs
│   │   ├── EquipmentItem.cs
│   │   ├── FlantasticRecord.cs
│   │   ├── InventoryEntry.cs
│   │   ├── MagicGroup.cs
│   │   ├── PhotoEntry.cs
│   │   ├── PlayableCharacter.cs
│   │   ├── Records.cs
│   │   └── ShortcutGroup.cs
│   ├── Presets/
│   │   ├── Preset.Pawn.cs
│   │   ├── Presets.Map.cs
│   │   └── Presets.Story.cs
│   ├── SaveKh3.cs
│   ├── SaveKh3u109.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── AccessoryType.cs
│       ├── AiAbilityType.cs
│       ├── AiCombatStyleType.cs
│       ├── AiRecoveryType.cs
│       ├── ArmorType.cs
│       ├── CharacterIconType.cs
│       ├── ChoiceType.cs
│       ├── CommandType.cs
│       ├── ConsumableType.cs
│       ├── DifficultyType.cs
│       ├── FoodType.cs
│       ├── InventoryType.cs
│       ├── ItemType.cs
│       ├── KeyItemType.cs
│       ├── LocationType.cs
│       ├── MaterialType.cs
│       ├── MogType.cs
│       ├── PartyCharacter.cs
│       ├── PlayableCharacterType.cs
│       ├── RecordAttractionType.cs
│       ├── RecordShotlockType.cs
│       ├── SnackType.cs
│       ├── StoryFlagType.cs
│       ├── StoryLabelType.cs
│       ├── SyntesisType.cs
│       ├── TentType.cs
│       ├── WeaponType.cs
│       └── WorldType.cs
├── KHSave.LibBbs/
│   ├── Attributes/
│   │   ├── AbilityAttribute.cs
│   │   ├── ActionAttribute.cs
│   │   ├── CommandAttribute.cs
│   │   └── CommandStyleAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKhBbs.cs
│   ├── KHSave.LibBbs.csproj
│   ├── Models/
│   │   ├── Ability.cs
│   │   ├── Character.cs
│   │   ├── Command.cs
│   │   ├── Deck.cs
│   │   ├── Dlink.cs
│   │   └── Finisher.cs
│   ├── SaveKhBbs.European.cs
│   ├── SaveKhBbs.FinalMix.cs
│   ├── SaveKhBbs.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── CharacterType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── WeaponType.cs
│       └── WorldType.cs
├── KHSave.LibDDD/
│   ├── Attributes/
│   │   ├── CommandAttributes.cs
│   │   ├── DreamPiecesAttribute.cs
│   │   ├── GlossaryAttribute.cs
│   │   ├── MementoEntriesAttribute.cs
│   │   ├── TrainingToysAttribute.cs
│   │   └── TrainingToysFoodAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKhDDD.cs
│   ├── KHSave.LibDDD.csproj
│   ├── Model/
│   │   ├── CommandEntry.cs
│   │   ├── Deck.cs
│   │   ├── DeckPS4.cs
│   │   ├── DreamEater.cs
│   │   └── IDeck.cs
│   ├── SaveKhDDD.3DS.cs
│   ├── SaveKhDDD.PS4.cs
│   ├── SaveKhDDD.cs
│   └── Types/
│       ├── DifficultyType.cs
│       ├── DreamEaterType.cs
│       ├── EquipmentType.cs
│       └── WorldType.cs
├── KHSave.LibFf7Remake/
│   ├── Chunks/
│   │   ├── Chunk.cs
│   │   ├── ChunkChapter.cs
│   │   └── ChunkCommon.cs
│   ├── KHSave.LibFf7Remake.csproj
│   ├── Models/
│   │   ├── ChapterObject.cs
│   │   ├── Character.cs
│   │   ├── CharacterEquipment.cs
│   │   ├── CharacterStats.cs
│   │   ├── Inventory.cs
│   │   ├── Materia.cs
│   │   ├── MateriaEquipment.cs
│   │   ├── UnknownStructure.cs
│   │   ├── UnknownStructure2.cs
│   │   ├── UnknownStructure3.cs
│   │   ├── Vector3f.cs
│   │   └── WeaponFound.cs
│   ├── SaveFf7Remake.cs
│   └── Types/
│       ├── CharacterStatusType.cs
│       ├── CharacterType.cs
│       ├── InventoryType.cs
│       └── ItemCategory.cs
├── KHSave.LibPersona3/
│   ├── KHSave.LibPersona3.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   ├── Persona.cs
│   │   ├── SocialLinks.cs
│   │   └── SocialLinksPortable.cs
│   ├── Presets.cs
│   ├── SavePersona3.cs
│   └── Types/
│       ├── ArcanaType.cs
│       ├── Characters.cs
│       ├── Demon.cs
│       ├── ExpendableItems.cs
│       ├── Inventory.cs
│       └── Skill.cs
├── KHSave.LibPersona5/
│   ├── KHSave.LibPersona5.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   └── Persona.cs
│   ├── Persona5Royal.cs
│   ├── Persona5Vanilla.cs
│   ├── Presets.Items.cs
│   ├── Presets.Persona.cs
│   ├── Presets.cs
│   ├── Resources/
│   │   └── Persona5/
│   │       ├── Royal_AccessoryNames.txt
│   │       ├── Royal_ArmorNames.txt
│   │       ├── Royal_ConsumableItemNames.txt
│   │       ├── Royal_Demon.txt
│   │       ├── Royal_KeyItemNames.txt
│   │       ├── Royal_MaterialNames.txt
│   │       ├── Royal_MeleeWeaponNames.txt
│   │       ├── Royal_OutfitNames.txt
│   │       ├── Royal_RangedWeaponNames.txt
│   │       ├── Royal_SkillCardNames.txt
│   │       ├── Royal_SkillNames.txt
│   │       ├── Royal_Traits.txt
│   │       ├── Vanilla_AccessoryNames.txt
│   │       ├── Vanilla_ArmorNames.txt
│   │       ├── Vanilla_ConsumableItemNames.txt
│   │       ├── Vanilla_Demon.txt
│   │       ├── Vanilla_KeyItemNames.txt
│   │       ├── Vanilla_MaterialNames.txt
│   │       ├── Vanilla_MeleeWeaponNames.txt
│   │       ├── Vanilla_OutfitNames.txt
│   │       ├── Vanilla_RangedWeaponNames.txt
│   │       ├── Vanilla_SkillCardNames.txt
│   │       └── Vanilla_SkillNames.txt
│   ├── SavePersona5.cs
│   └── Types/
│       ├── ArcanaType.cs
│       ├── Characters.cs
│       ├── Demon.cs
│       ├── Equipment.cs
│       ├── Inventory.cs
│       ├── Skill.cs
│       ├── SkillRoyal.cs
│       └── Trait.cs
├── KHSave.LibRecom/
│   ├── Attributes/
│   │   ├── CardEnemyAttribute.cs
│   │   ├── CardFriendAttribute.cs
│   │   ├── CardItemAttribute.cs
│   │   ├── CardMagicAttribute.cs
│   │   ├── CardMapAttribute.cs
│   │   ├── CardSpecialAttribute.cs
│   │   ├── CardSummonAttribute.cs
│   │   ├── CardWeaponAttribute.cs
│   │   └── CardWorldAttribute.cs
│   ├── DataRecom.cs
│   ├── DataRecomMcWork.cs
│   ├── DataRecomTable0.cs
│   ├── DataRecomTable1.cs
│   ├── DataRecomTable2.cs
│   ├── KHSave.LibRecom.csproj
│   ├── Models/
│   │   ├── Card.cs
│   │   ├── CardFlags.cs
│   │   ├── CardModel.cs
│   │   ├── FriendsFlags.cs
│   │   ├── Kh2CardFlags.cs
│   │   ├── PoohFlags.cs
│   │   ├── SkillFlags.cs
│   │   ├── StoryFlag.cs
│   │   └── TutorialFlags.cs
│   ├── SaveKhRecom.cs
│   └── Types/
│       ├── CardType.cs
│       ├── Difficulty.cs
│       ├── PlayMode.cs
│       └── SoundMode.cs
├── KHSave.SaveEditor/
│   ├── App.config
│   ├── App.manifest
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── Interfaces/
│   │   ├── IAlertMessage.cs
│   │   ├── IApplicationStartup.cs
│   │   ├── IFileDialogManager.cs
│   │   ├── IReporter.cs
│   │   ├── IUpdater.cs
│   │   └── IWindowManager.cs
│   ├── KHSave.SaveEditor.csproj
│   ├── Models/
│   │   ├── PatreonInfo.cs
│   │   ├── PatronModel.cs
│   │   ├── ServiceMessage.cs
│   │   └── SponsorshipInfo.cs
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── Services/
│   │   ├── AlertMessage.cs
│   │   ├── ContentFactory.cs
│   │   ├── DesktopAppIdentity.cs
│   │   ├── FileDialogManager.cs
│   │   ├── IAppIdentity.cs
│   │   ├── PatreonService.cs
│   │   ├── Pcsx2MemoryService.cs
│   │   ├── ReporterService.cs
│   │   ├── TransferService.cs
│   │   ├── UpdaterService.cs
│   │   └── WindowManager.cs
│   ├── StyledControls.xaml
│   ├── VersionCheck/
│   │   └── DesktopCheckCurrentVersion.cs
│   ├── ViewModels/
│   │   ├── HomeViewModel.cs
│   │   ├── MainWindowViewModel.cs
│   │   └── PatronViewModel.cs
│   ├── Views/
│   │   ├── AttachToPcsx2GameWindow.xaml
│   │   ├── AttachToPcsx2GameWindow.xaml.cs
│   │   ├── AttachToProcessWindow.xaml
│   │   ├── AttachToProcessWindow.xaml.cs
│   │   ├── HomeView.xaml
│   │   ├── HomeView.xaml.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── PatronView.xaml
│   │   ├── PatronView.xaml.cs
│   │   ├── ServiceMessageView.xaml
│   │   ├── ServiceMessageView.xaml.cs
│   │   ├── UpdateWindow.xaml
│   │   └── UpdateWindow.xaml.cs
│   └── packages.config
├── KHSave.SaveEditor.Common/
│   ├── Contracts/
│   │   ├── IGetSave.cs
│   │   ├── IOpenStream.cs
│   │   ├── IRefreshUi.cs
│   │   └── IWriteToStream.cs
│   ├── Controls/
│   │   ├── ItemComboBox.xaml
│   │   ├── ItemComboBox.xaml.cs
│   │   └── TwoEqualColumnsStackPanel.cs
│   ├── Exceptions/
│   │   ├── ImageTooLargeException.cs
│   │   ├── SaveNotSupportedException.cs
│   │   └── VisualException.cs
│   ├── Global.cs
│   ├── KHSave.SaveEditor.Common.csproj
│   ├── Models/
│   │   ├── EnumIconTypeModel.cs
│   │   ├── GenericEntryModel.cs
│   │   ├── GenericEnumListModel.cs
│   │   ├── GenericListModel.cs
│   │   ├── ItemComboBoxModel.cs
│   │   └── KhEnumListModel.cs
│   ├── ProcessStream.cs
│   ├── Services/
│   │   ├── ArchiveWriteToStream.cs
│   │   ├── GenericEqualityComparer.cs
│   │   ├── IconService.cs
│   │   └── SearchEngine.cs
│   ├── ViewModels/
│   │   ├── ArchiveEntryViewModel.cs
│   │   └── ArchiveManagerViewModel.cs
│   └── Views/
│       ├── ArchiveManagerView.xaml
│       └── ArchiveManagerView.xaml.cs
├── KHSave.SaveEditor.Ff7Remake/
│   ├── Data/
│   │   ├── BgmPreset.cs
│   │   ├── ItemsPreset.cs
│   │   └── LocationsPreset.cs
│   ├── KHSave.SaveEditor.Ff7Remake.csproj
│   ├── KHSave.SaveEditor.Ff7Remake_x53vqark_wpftmp.csproj
│   ├── Models/
│   │   ├── BgmModel.cs
│   │   ├── ChapterCharacterEntryModel.cs
│   │   ├── ChapterEntryModel.cs
│   │   ├── ChapterObjectEntry.cs
│   │   ├── CharacterEntryModel.cs
│   │   ├── ChunkEntryModel.cs
│   │   ├── EquipmentEntryModel.cs
│   │   ├── InventroyEntryModel.cs
│   │   ├── ItemModel.cs
│   │   └── MateriaEntryModel.cs
│   ├── ViewModels/
│   │   ├── ChaptersViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── DeveloperViewModel.cs
│   │   ├── EquipmentsViewModel.cs
│   │   ├── FF7RMainViewModel.cs
│   │   ├── GlobalViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── MateriaViewModel.cs
│   │   ├── TeleportViewModel.cs
│   │   ├── Unknown1ViewModel.cs
│   │   ├── Unknown2ViewModel.cs
│   │   └── Unknown3ViewModel.cs
│   └── Views/
│       ├── ChapterEntryView.xaml
│       ├── ChapterEntryView.xaml.cs
│       ├── ChapterMainView.xaml
│       ├── ChapterMainView.xaml.cs
│       ├── ChapterObjectsView.xaml
│       ├── ChapterObjectsView.xaml.cs
│       ├── ChapterPlayableView.xaml
│       ├── ChapterPlayableView.xaml.cs
│       ├── ChaptersView.xaml
│       ├── ChaptersView.xaml.cs
│       ├── CharacterEntryView.xaml
│       ├── CharacterEntryView.xaml.cs
│       ├── CharactersView.xaml
│       ├── CharactersView.xaml.cs
│       ├── DeveloperView.xaml
│       ├── DeveloperView.xaml.cs
│       ├── EquipmentEntryView.xaml
│       ├── EquipmentEntryView.xaml.cs
│       ├── EquipmentsView.xaml
│       ├── EquipmentsView.xaml.cs
│       ├── FF7RMainView.xaml
│       ├── FF7RMainView.xaml.cs
│       ├── GlobalView.xaml
│       ├── GlobalView.xaml.cs
│       ├── InventoryEntryView.xaml
│       ├── InventoryEntryView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── MateriaEntryView.xaml
│       ├── MateriaEntryView.xaml.cs
│       ├── MateriaView.xaml
│       ├── MateriaView.xaml.cs
│       ├── PositionView.xaml
│       ├── PositionView.xaml.cs
│       ├── TeleportWindow.xaml
│       ├── TeleportWindow.xaml.cs
│       ├── Unknown1View.xaml
│       ├── Unknown1View.xaml.cs
│       ├── Unknown2View.xaml
│       ├── Unknown2View.xaml.cs
│       ├── Unknown3View.xaml
│       └── Unknown3View.xaml.cs
├── KHSave.SaveEditor.Kh02/
│   ├── KHSave.SaveEditor.Kh02.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── SlotListModel.cs
│   ├── ViewModels/
│   │   ├── GlobalSystemViewModel.cs
│   │   ├── Kh02ViewModel.cs
│   │   └── SlotViewModel.cs
│   └── Views/
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Kh1/
│   ├── Interfaces/
│   │   └── IGetAbilities.cs
│   ├── KHSave.SaveEditor.Kh1.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── InventoryItemModel.cs
│   ├── Service/
│   │   ├── EquipmentManagerFactory.cs
│   │   └── IEquipmentManager.cs
│   ├── ViewModels/
│   │   ├── AbilityViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh1ViewModel.cs
│   │   ├── PlayerViewModel.cs
│   │   ├── PlayersViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── AbilityView.xaml
│       ├── AbilityView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Kh2/
│   ├── Data/
│   │   └── Rooms.cs
│   ├── Interfaces/
│   │   └── IResourceGetter.cs
│   ├── KHSave.SaveEditor.Kh2.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   ├── AbilityModel.cs
│   │   ├── InventoryItemModel.cs
│   │   ├── MapScriptModel.cs
│   │   ├── ProgressModel.cs
│   │   └── RoomModel.cs
│   ├── Service/
│   │   ├── EquipmentManagerFactory.cs
│   │   └── IEquipmentManager.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── DriveFormsViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh2ViewModel.cs
│   │   ├── ProgressViewModel.cs
│   │   ├── RoomViewModel.cs
│   │   ├── RoomVisitedViewModel.cs
│   │   ├── SystemViewModel.cs
│   │   └── WorldsViewModel.cs
│   └── Views/
│       ├── DriveFormView.xaml
│       ├── DriveFormView.xaml.cs
│       ├── DriveFormsView.xaml
│       ├── DriveFormsView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── ProgressView.xaml
│       ├── ProgressView.xaml.cs
│       ├── RoomVisitedView.xaml
│       ├── RoomVisitedView.xaml.cs
│       ├── SystemView.xaml
│       ├── SystemView.xaml.cs
│       ├── WorldView.xaml
│       ├── WorldView.xaml.cs
│       ├── WorldsView.xaml
│       └── WorldsView.xaml.cs
├── KHSave.SaveEditor.Kh3/
│   ├── KHSave.SaveEditor.Kh3.csproj
│   ├── KHSave.SaveEditor.Kh3_kwhjhtac_wpftmp.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   ├── AttractionRecordItemModel.cs
│   │   ├── EquipmentItemEntryViewModel.cs
│   │   ├── FlantasticModel.cs
│   │   ├── InventoryItemViewModel.cs
│   │   ├── MapViewModel.cs
│   │   ├── MaterialModel.cs
│   │   ├── RecordAttractionListModel.cs
│   │   ├── RecordShotlockListModel.cs
│   │   ├── ShotlockRecordItemModel.cs
│   │   └── SpawnModel.cs
│   ├── ViewModels/
│   │   ├── AbilitiesViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh3ViewModel.cs
│   │   ├── MaterialsViewModel.cs
│   │   ├── PartyViewModel.cs
│   │   ├── PhotoEntryViewModel.cs
│   │   ├── PhotosViewModel.cs
│   │   ├── PlayerViewModel.cs
│   │   ├── PlayersViewModel.cs
│   │   ├── RecordsViewModel.cs
│   │   ├── ShortcutsViewModel.cs
│   │   ├── StoryViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── EquipmentItemEntryView.xaml
│       ├── EquipmentItemEntryView.xaml.cs
│       ├── EquipmentItemsView.xaml
│       ├── EquipmentItemsView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── MaterialsView.xaml
│       ├── MaterialsView.xaml.cs
│       ├── PartyView.xaml
│       ├── PartyView.xaml.cs
│       ├── PhotosView.xaml
│       ├── PhotosView.xaml.cs
│       ├── PlayerAbilityView.xaml
│       ├── PlayerAbilityView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerStatusView.xaml
│       ├── PlayerStatusView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── RecordMinigamesView.xaml
│       ├── RecordMinigamesView.xaml.cs
│       ├── RecordsView.xaml
│       ├── RecordsView.xaml.cs
│       ├── ShortcutsView.xaml
│       ├── ShortcutsView.xaml.cs
│       ├── StoryView.xaml
│       ├── StoryView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhBbs/
│   ├── KHSave.SaveEditor.KhBbs.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── CommandListModel.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CommandListViewModel.cs
│   │   ├── CommandViewModel.cs
│   │   ├── DeckViewModel.cs
│   │   ├── DecksViewModel.cs
│   │   ├── KhBbsViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CharacterView.xaml
│       ├── CharacterView.xaml.cs
│       ├── CommandListView.xaml
│       ├── CommandListView.xaml.cs
│       ├── CommandView.xaml
│       ├── CommandView.xaml.cs
│       ├── DeckView.xaml
│       ├── DeckView.xaml.cs
│       ├── DecksView.xaml
│       ├── DecksView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhDDD/
│   ├── Interfaces/
│   │   └── IResourceGetter.cs
│   ├── KHSave.SaveEditor.KhDDD.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CommandsViewModel.cs
│   │   ├── DeckViewModel.cs
│   │   ├── DecksViewModel.cs
│   │   ├── DreamEaterViewModel.cs
│   │   ├── DreamEatersViewModel.cs
│   │   ├── KhDDDViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── Character.xaml
│       ├── Character.xaml.cs
│       ├── CommandsView.xaml
│       ├── CommandsView.xaml.cs
│       ├── Deck.xaml
│       ├── Deck.xaml.cs
│       ├── Decks.xaml
│       ├── Decks.xaml.cs
│       ├── DreamEater.xaml
│       ├── DreamEater.xaml.cs
│       ├── DreamEaters.xaml
│       ├── DreamEaters.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhRecom/
│   ├── Constants.cs
│   ├── Interfaces/
│   │   └── ICardCountService.cs
│   ├── KHSave.SaveEditor.KhRecom.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── CardIndex.cs
│   ├── ViewModels/
│   │   ├── CardInventoryEntryViewModel.cs
│   │   ├── CardInventoryViewModel.cs
│   │   ├── KhRecomViewModel.cs
│   │   ├── ProgressViewModel.cs
│   │   ├── SettingsViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CardInventoryEntryView.xaml
│       ├── CardInventoryEntryView.xaml.cs
│       ├── CardInventoryView.xaml
│       ├── CardInventoryView.xaml.cs
│       ├── ProgressView.xaml
│       ├── ProgressView.xaml.cs
│       ├── SettingsView.xaml
│       ├── SettingsView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Persona3/
│   ├── Interfaces/
│   │   ├── IPersonaList.cs
│   │   └── ISkillList.cs
│   ├── KHSave.SaveEditor.Persona3.csproj
│   ├── Models/
│   │   ├── PersonaModel.cs
│   │   └── SkillModel.cs
│   ├── ViewModels/
│   │   ├── CompendiumViewModel.cs
│   │   ├── Persona3MainViewModel.cs
│   │   └── PersonaViewModel.cs
│   └── Views/
│       ├── CompendiumView.xaml
│       ├── CompendiumView.xaml.cs
│       ├── Persona3MainView.xaml
│       ├── Persona3MainView.xaml.cs
│       ├── PersonaView.xaml
│       └── PersonaView.xaml.cs
├── KHSave.SaveEditor.Persona5/
│   ├── Interfaces/
│   │   ├── IConsumableList.cs
│   │   ├── IEquipmentList.cs
│   │   ├── IPersonaList.cs
│   │   └── ISkillList.cs
│   ├── KHSave.SaveEditor.Persona5.csproj
│   ├── Models/
│   │   └── EquipmentModel.cs
│   ├── ViewModels/
│   │   ├── CharacterEntryViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── CompendiumViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Persona5MainViewModel.cs
│   │   ├── PersonaEntryViewModel.cs
│   │   ├── PersonaViewModel.cs
│   │   ├── RoomViewModel.cs
│   │   ├── SkillViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CharacterView.xaml
│       ├── CharacterView.xaml.cs
│       ├── CharactersView.xaml
│       ├── CharactersView.xaml.cs
│       ├── CompendiumView.xaml
│       ├── CompendiumView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── Persona5MainView.xaml
│       ├── Persona5MainView.xaml.cs
│       ├── PersonaView.xaml
│       ├── PersonaView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.Tests/
│   ├── Ff7RemakeTests.cs
│   ├── Helpers.cs
│   ├── KHSave.Tests.csproj
│   ├── Kh1Tests.cs
│   ├── Kh2Tests.cs
│   ├── Kh3Test.cs
│   ├── KhBbsTests.cs
│   ├── KhDDDTests.cs
│   ├── PcArchiveTests.cs
│   ├── Persona3Tests.cs
│   ├── Persona5Tests.cs
│   ├── Ps4SaveArchiveTests.cs
│   ├── RecomTests.cs
│   ├── Saves/
│   │   ├── BASLUS-21569Save2
│   │   ├── BASLUS-21799COM-02
│   │   ├── BISLPM-66676COM-01
│   │   ├── BISLPS-25198-05
│   │   ├── ff7remake000
│   │   ├── ff7remake007
│   │   └── kh02.sav
│   ├── TransferTests.cs
│   └── TrssvTest.cs
├── LICENSE
├── README.md
├── Tooling.MemoryWatcher/
│   ├── Configuration.cs
│   ├── ProcessStream.cs
│   ├── Program.cs
│   ├── Tooling.MemoryWatcher.csproj
│   └── config.yml
├── WindowsStoreSubmission/
│   ├── Package.appxmanifest
│   └── WindowsStoreSubmission.wapproj
├── _config.yml
├── assets/
│   ├── banner.psd
│   ├── banner_new.psd
│   ├── card.psd
│   ├── coin.psd
│   ├── icon-circular.psd
│   └── icon.psd
├── docs/
│   └── decryption.md
├── manifests/
│   └── x/
│       └── Xeeynamo/
│           └── KingdomSaveEditor/
│               └── 1.15.1/
│                   └── Xeeynamo.KingdomSaveEditor.yml
└── resources/
    ├── ff7r-meta-bgm.yml
    ├── ff7r-meta-items.yml
    └── ff7r-meta-locations.yml

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
insert_final_newline = true
indent_style = space
indent_size = 4
tab_size = 4

[*.cs]
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_between_query_expression_clauses = true
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents_when_block = false
csharp_indent_case_contents_when_block = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_around_binary_operators = before_and_after
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_after_comma = true
csharp_space_before_comma = false
csharp_space_after_dot = false
csharp_space_before_dot = false
csharp_space_after_semicolon_in_for_statement = true
csharp_space_before_semicolon_in_for_statement = false
csharp_space_around_declaration_statements = false
csharp_space_before_open_square_brackets = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_square_brackets = false
csharp_preserve_single_line_statements = false
csharp_preserve_single_line_blocks = true
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent

[*.{cs,vb}]
#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4


================================================
FILE: .gitattributes
================================================
*.sln    text merge=union
*.csproj text merge=union


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [Xeeynamo]


================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug report
about: Used when a user wants to report a bug
title: GAME NAME - BRIEF EXPLAINATION
labels: enhancement
assignees: Xeeynamo

---

* Game name: -
* Platform: - (eg. PC, PS2, etc.)

Explain which action you were trying to perform before facing the bug and error message.


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature request
about: Used when a user wants to request a feature
title: GAME NAME - BRIEF EXPLAINATION
labels: enhancement
assignees: Xeeynamo

---

* Game name: -
* Platform: - (eg. PC, PS2, etc.)

--- insert your feature request description here---


================================================
FILE: .github/ISSUE_TEMPLATE/ff7r-missing-item-name-request.md
================================================
---
name: FF7R Missing item name request
about: Used when a user wants to add a missing item name
title: FF7R Missing item name request
labels: ff7r-item
assignees: Xeeynamo

---

Item name: `eg. Hi-Potion`


PLEAE REMOVE THE FOLLOWING TEXT BEFORE SUBMITTING THE ISSUE:

Before opening this issue, please be 100% sure that the item you are reporting is the correct one. 
To prove the item name, you can set a specific amount and see if in-game the value is there, or you set the amount of all your inventory to 0 but this item. The in-game inventory should be empty and the only item is the one you were searching for.


================================================
FILE: .github/ISSUE_TEMPLATE/ff7r-teleport-coordinates-request.md
================================================
---
name: FF7R Teleport coordinates request
about: Used when a user wants to add a specific location with coordinates
title: FF7R Teleport coordinates request
labels: ff7r-location
assignees: Xeeynamo

---

Chapter: `1-18`

Coordinates: `0, 0, 0`

Out of bounds: `yes|no`

Short description: Please describe here


PLEAE REMOVE THE FOLLOWING TEXT BEFORE SUBMITTING THE ISSUE:

Please also attach a screenshot, if possible, of the location you decided to request. You can find the coordinates to paste here on the Teleport window.


================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "nuget" # See documentation for possible values
    directory: "/" # Location of package manifests
    schedule:
      interval: "daily"


================================================
FILE: .github/workflows/format-code.yml
================================================
name: Format code
on:
  push:
  pull_request:
jobs:
  format-code:
    runs-on: ubuntu-latest
    container:
      image: mcr.microsoft.com/dotnet/sdk:latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Download formatting tool
        run: dotnet tool install -g dotnet-format
      - name: Format source code
        run: |
          export PATH="$PATH:/github/home/.dotnet/tools"
          dotnet format
      - name: Check if files have been modified
        id: git-check
        run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
      - name: Push changes
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Formatting bot'
          git config --global user.email 'xeeynamo@users.noreply.github.com'
          git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
          git commit -am "Format code"
          git push


================================================
FILE: .github/workflows/test.yml
================================================
name: Tests

on:
  push:
    branches:
      - master
  pull_request:
    types: [assigned, opened, synchronize, reopened]

jobs:
  run-tests:
    runs-on: ubuntu-latest
    container:
      image: mcr.microsoft.com/dotnet/sdk:6.0
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with:
          submodules: recursive
      - name: Execute test suite
        run: dotnet test KHSave.Tests


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk 
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output 
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder 
.mfractor/


================================================
FILE: .gitmodules
================================================
[submodule "XeEngine.Tools.Public"]
	path = XeEngine.Tools.Public
	url = https://github.com/xeeynamo/XeEngine.Tools.Public
[submodule "Xe.ReleaseUpdater"]
	path = Xe.ReleaseUpdater
	url = https://github.com/Xeeynamo/Xe.ReleaseUpdater.git


================================================
FILE: CNAME
================================================
kingdomsaveeditor.xee.dev

================================================
FILE: KH3SaveEditor.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor", "KHSave.SaveEditor\KHSave.SaveEditor.csproj", "{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Tests", "KHSave.Tests\KHSave.Tests.csproj", "{A0A13F70-E37B-4D86-824C-61F3483A2CF8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave", "KHSave\KHSave.csproj", "{66531854-A216-4F15-ABE5-F723EA257BF2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XeEngine.Tools.Public", "XeEngine.Tools.Public", "{F556CBD8-76F3-45A3-9619-8FB81FA64C22}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe", "XeEngine.Tools.Public\Xe\Xe.csproj", "{61D2474A-EDC5-4792-A4E6-7E935856617A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe.Drawing", "XeEngine.Tools.Public\Xe.Drawing\Xe.Drawing.csproj", "{9ECB58D2-3790-4693-8A40-FF2584F263E6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe.Tools", "XeEngine.Tools.Public\Xe.Tools\Xe.Tools.csproj", "{2F15C257-7E50-42B5-ADB4-7534B88F466B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe.Tools.Wpf", "XeEngine.Tools.Public\Xe.Tools.Wpf\Xe.Tools.Wpf.csproj", "{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{ABFEAC30-491D-4FDE-A90C-C8E6107F67D5}"
	ProjectSection(SolutionItems) = preProject
		README.md = README.md
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xe.ReleaseUpdater", "Xe.ReleaseUpdater", "{A69D32C8-AA20-4871-858F-31D84193FA1C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe.VersionCheck", "Xe.ReleaseUpdater\Xe.VersionCheck\Xe.VersionCheck.csproj", "{F37CC0C9-BFE1-4563-87D8-960FE630E601}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xe.Http", "Xe.ReleaseUpdater\Xe.Http\Xe.Http.csproj", "{52E2ACD1-845A-41DC-8318-22A0A7274677}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Lib02", "KHSave.Lib02\KHSave.Lib02.csproj", "{FE823BD9-B309-49E6-85F1-ADAE55752B72}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Lib3", "KHSave.Lib3\KHSave.Lib3.csproj", "{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Kh3", "KHSave.SaveEditor.Kh3\KHSave.SaveEditor.Kh3.csproj", "{873CD9B2-3984-44DD-A077-B5093714EC56}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Common", "KHSave.SaveEditor.Common\KHSave.SaveEditor.Common.csproj", "{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Kh02", "KHSave.SaveEditor.Kh02\KHSave.SaveEditor.Kh02.csproj", "{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Lib2", "KHSave.Lib2\KHSave.Lib2.csproj", "{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Kh2", "KHSave.SaveEditor.Kh2\KHSave.SaveEditor.Kh2.csproj", "{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Archives", "KHSave.Archives\KHSave.Archives.csproj", "{93FD8BB6-B750-4BD3-8143-043286DA1E22}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibRecom", "KHSave.LibRecom\KHSave.LibRecom.csproj", "{E277131E-3A87-4087-821A-D1E54D3A4FA9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.KhRecom", "KHSave.SaveEditor.KhRecom\KHSave.SaveEditor.KhRecom.csproj", "{947C9653-C8D7-4D95-BE62-8101A3C9D824}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibFf7Remake", "KHSave.LibFf7Remake\KHSave.LibFf7Remake.csproj", "{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Ff7Remake", "KHSave.SaveEditor.Ff7Remake\KHSave.SaveEditor.Ff7Remake.csproj", "{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Kh1", "KHSave.SaveEditor.Kh1\KHSave.SaveEditor.Kh1.csproj", "{E168AAE0-7730-45FD-A059-6994DB237C85}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.Lib1", "KHSave.Lib1\KHSave.Lib1.csproj", "{34CAFA86-2B8D-41D0-8218-5FEC87170E45}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibBbs", "KHSave.LibBbs\KHSave.LibBbs.csproj", "{1A3285D7-5DC5-4135-9F38-503D6DB6469A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.KhBbs", "KHSave.SaveEditor.KhBbs\KHSave.SaveEditor.KhBbs.csproj", "{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tooling.MemoryWatcher", "Tooling.MemoryWatcher\Tooling.MemoryWatcher.csproj", "{58B80047-B051-49F8-99E0-2FC3FB34F39A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibPersona5", "KHSave.LibPersona5\KHSave.LibPersona5.csproj", "{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Persona5", "KHSave.SaveEditor.Persona5\KHSave.SaveEditor.Persona5.csproj", "{55C8BE35-B770-4FFF-92F8-1FD1792150F7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibDDD", "KHSave.LibDDD\KHSave.LibDDD.csproj", "{BABA96A7-BEF2-450E-8502-11D36163B691}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.KhDDD", "KHSave.SaveEditor.KhDDD\KHSave.SaveEditor.KhDDD.csproj", "{F85D2EEC-5C85-4443-B046-769F511ACB6F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{112978EC-90BA-40A5-80D3-6457DD67CB64}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
	EndProjectSection
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "WindowsStoreSubmission", "WindowsStoreSubmission\WindowsStoreSubmission.wapproj", "{080A374C-D430-4FCB-96B8-889FDEBF58F2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.LibPersona3", "KHSave.LibPersona3\KHSave.LibPersona3.csproj", "{17C5019E-53C9-4566-BAA0-9E2E139D6529}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KHSave.SaveEditor.Persona3", "KHSave.SaveEditor.Persona3\KHSave.SaveEditor.Persona3.csproj", "{EA92AA97-BC63-4691-8483-39E9643D2086}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|ARM = Debug|ARM
		Debug|ARM64 = Debug|ARM64
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|ARM = Release|ARM
		Release|ARM64 = Release|ARM64
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|ARM.Build.0 = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|ARM64.Build.0 = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|x64.ActiveCfg = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|x64.Build.0 = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|x86.ActiveCfg = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Debug|x86.Build.0 = Debug|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|Any CPU.Build.0 = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|ARM.ActiveCfg = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|ARM.Build.0 = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|ARM64.ActiveCfg = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|ARM64.Build.0 = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|x64.ActiveCfg = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|x64.Build.0 = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|x86.ActiveCfg = Release|Any CPU
		{3F04C476-E496-4B96-959F-5C3B3EC4D4E4}.Release|x86.Build.0 = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|ARM.Build.0 = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|ARM64.Build.0 = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|x64.ActiveCfg = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|x64.Build.0 = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|x86.ActiveCfg = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Debug|x86.Build.0 = Debug|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|Any CPU.Build.0 = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|ARM.ActiveCfg = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|ARM.Build.0 = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|ARM64.ActiveCfg = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|ARM64.Build.0 = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|x64.ActiveCfg = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|x64.Build.0 = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|x86.ActiveCfg = Release|Any CPU
		{A0A13F70-E37B-4D86-824C-61F3483A2CF8}.Release|x86.Build.0 = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|ARM.Build.0 = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|ARM64.Build.0 = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|x64.ActiveCfg = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|x64.Build.0 = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|x86.ActiveCfg = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Debug|x86.Build.0 = Debug|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|Any CPU.Build.0 = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|ARM.ActiveCfg = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|ARM.Build.0 = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|ARM64.ActiveCfg = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|ARM64.Build.0 = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|x64.ActiveCfg = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|x64.Build.0 = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|x86.ActiveCfg = Release|Any CPU
		{66531854-A216-4F15-ABE5-F723EA257BF2}.Release|x86.Build.0 = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|Any CPU.Build.0 = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|ARM.ActiveCfg = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|ARM64.ActiveCfg = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|x64.ActiveCfg = Release|Any CPU
		{61D2474A-EDC5-4792-A4E6-7E935856617A}.Release|x86.ActiveCfg = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|x64.ActiveCfg = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Debug|x86.ActiveCfg = Debug|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|Any CPU.Build.0 = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|ARM.ActiveCfg = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|ARM64.ActiveCfg = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|x64.ActiveCfg = Release|Any CPU
		{9ECB58D2-3790-4693-8A40-FF2584F263E6}.Release|x86.ActiveCfg = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|x64.ActiveCfg = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Debug|x86.ActiveCfg = Debug|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|Any CPU.Build.0 = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|ARM.ActiveCfg = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|ARM64.ActiveCfg = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|x64.ActiveCfg = Release|Any CPU
		{2F15C257-7E50-42B5-ADB4-7534B88F466B}.Release|x86.ActiveCfg = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|x64.ActiveCfg = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Debug|x86.ActiveCfg = Debug|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|Any CPU.Build.0 = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|ARM.ActiveCfg = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|ARM64.ActiveCfg = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|x64.ActiveCfg = Release|Any CPU
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393}.Release|x86.ActiveCfg = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|x64.ActiveCfg = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Debug|x86.ActiveCfg = Debug|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|Any CPU.Build.0 = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|ARM.ActiveCfg = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|ARM64.ActiveCfg = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|x64.ActiveCfg = Release|Any CPU
		{F37CC0C9-BFE1-4563-87D8-960FE630E601}.Release|x86.ActiveCfg = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|x64.ActiveCfg = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Debug|x86.ActiveCfg = Debug|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|Any CPU.Build.0 = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|ARM.ActiveCfg = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|ARM64.ActiveCfg = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|x64.ActiveCfg = Release|Any CPU
		{52E2ACD1-845A-41DC-8318-22A0A7274677}.Release|x86.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|ARM.Build.0 = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|ARM64.Build.0 = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|x64.ActiveCfg = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|x64.Build.0 = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|x86.ActiveCfg = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Debug|x86.Build.0 = Debug|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|Any CPU.Build.0 = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|ARM.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|ARM.Build.0 = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|ARM64.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|ARM64.Build.0 = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|x64.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|x64.Build.0 = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|x86.ActiveCfg = Release|Any CPU
		{FE823BD9-B309-49E6-85F1-ADAE55752B72}.Release|x86.Build.0 = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|ARM.Build.0 = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|ARM64.Build.0 = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|x64.ActiveCfg = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|x64.Build.0 = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|x86.ActiveCfg = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Debug|x86.Build.0 = Debug|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|Any CPU.Build.0 = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|ARM.ActiveCfg = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|ARM.Build.0 = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|ARM64.ActiveCfg = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|ARM64.Build.0 = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|x64.ActiveCfg = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|x64.Build.0 = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|x86.ActiveCfg = Release|Any CPU
		{7BA3EFB5-AF90-434E-9906-B5DAA82B09CA}.Release|x86.Build.0 = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|ARM.Build.0 = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|ARM64.Build.0 = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|x64.ActiveCfg = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|x64.Build.0 = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|x86.ActiveCfg = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Debug|x86.Build.0 = Debug|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|Any CPU.Build.0 = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|ARM.ActiveCfg = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|ARM.Build.0 = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|ARM64.ActiveCfg = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|ARM64.Build.0 = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|x64.ActiveCfg = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|x64.Build.0 = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|x86.ActiveCfg = Release|Any CPU
		{873CD9B2-3984-44DD-A077-B5093714EC56}.Release|x86.Build.0 = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|ARM.Build.0 = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|ARM64.Build.0 = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|x64.ActiveCfg = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|x64.Build.0 = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|x86.ActiveCfg = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Debug|x86.Build.0 = Debug|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|Any CPU.Build.0 = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|ARM.ActiveCfg = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|ARM.Build.0 = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|ARM64.ActiveCfg = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|ARM64.Build.0 = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|x64.ActiveCfg = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|x64.Build.0 = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|x86.ActiveCfg = Release|Any CPU
		{916C5797-18A6-4191-8FAA-4CA0B89E0BA9}.Release|x86.Build.0 = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|ARM.Build.0 = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|ARM64.Build.0 = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|x64.ActiveCfg = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|x64.Build.0 = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|x86.ActiveCfg = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Debug|x86.Build.0 = Debug|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|Any CPU.Build.0 = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|ARM.ActiveCfg = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|ARM.Build.0 = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|ARM64.ActiveCfg = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|ARM64.Build.0 = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|x64.ActiveCfg = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|x64.Build.0 = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|x86.ActiveCfg = Release|Any CPU
		{13EEF3A1-A5EC-443E-B9D2-3F730D5BC52F}.Release|x86.Build.0 = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|ARM.Build.0 = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|ARM64.Build.0 = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|x64.ActiveCfg = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|x64.Build.0 = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|x86.ActiveCfg = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Debug|x86.Build.0 = Debug|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|Any CPU.Build.0 = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|ARM.ActiveCfg = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|ARM.Build.0 = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|ARM64.ActiveCfg = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|ARM64.Build.0 = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|x64.ActiveCfg = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|x64.Build.0 = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|x86.ActiveCfg = Release|Any CPU
		{BD00CBCE-D6CB-495D-BE43-0C803E21CEAD}.Release|x86.Build.0 = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|ARM.Build.0 = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|ARM64.Build.0 = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|x64.ActiveCfg = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|x64.Build.0 = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|x86.ActiveCfg = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Debug|x86.Build.0 = Debug|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|Any CPU.Build.0 = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|ARM.ActiveCfg = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|ARM.Build.0 = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|ARM64.ActiveCfg = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|ARM64.Build.0 = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|x64.ActiveCfg = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|x64.Build.0 = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|x86.ActiveCfg = Release|Any CPU
		{D2D4FFF5-AFB2-4256-AC4D-2BDC57601A62}.Release|x86.Build.0 = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|ARM.Build.0 = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|ARM64.Build.0 = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|x64.ActiveCfg = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|x64.Build.0 = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|x86.ActiveCfg = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Debug|x86.Build.0 = Debug|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|Any CPU.Build.0 = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|ARM.ActiveCfg = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|ARM.Build.0 = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|ARM64.ActiveCfg = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|ARM64.Build.0 = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|x64.ActiveCfg = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|x64.Build.0 = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|x86.ActiveCfg = Release|Any CPU
		{93FD8BB6-B750-4BD3-8143-043286DA1E22}.Release|x86.Build.0 = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|ARM.Build.0 = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|ARM64.Build.0 = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|x64.ActiveCfg = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|x64.Build.0 = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|x86.ActiveCfg = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Debug|x86.Build.0 = Debug|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|Any CPU.Build.0 = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|ARM.ActiveCfg = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|ARM.Build.0 = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|ARM64.ActiveCfg = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|ARM64.Build.0 = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|x64.ActiveCfg = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|x64.Build.0 = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|x86.ActiveCfg = Release|Any CPU
		{E277131E-3A87-4087-821A-D1E54D3A4FA9}.Release|x86.Build.0 = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|ARM.Build.0 = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|ARM64.Build.0 = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|x64.ActiveCfg = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|x64.Build.0 = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|x86.ActiveCfg = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Debug|x86.Build.0 = Debug|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|Any CPU.Build.0 = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|ARM.ActiveCfg = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|ARM.Build.0 = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|ARM64.ActiveCfg = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|ARM64.Build.0 = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|x64.ActiveCfg = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|x64.Build.0 = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|x86.ActiveCfg = Release|Any CPU
		{947C9653-C8D7-4D95-BE62-8101A3C9D824}.Release|x86.Build.0 = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|ARM.Build.0 = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|ARM64.Build.0 = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|x64.ActiveCfg = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|x64.Build.0 = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|x86.ActiveCfg = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Debug|x86.Build.0 = Debug|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|Any CPU.Build.0 = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|ARM.ActiveCfg = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|ARM.Build.0 = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|ARM64.ActiveCfg = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|ARM64.Build.0 = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|x64.ActiveCfg = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|x64.Build.0 = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|x86.ActiveCfg = Release|Any CPU
		{A9686EC4-E5DB-4EE2-8EA3-F15A509A45E1}.Release|x86.Build.0 = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|ARM.Build.0 = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|ARM64.Build.0 = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|x64.ActiveCfg = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|x64.Build.0 = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|x86.ActiveCfg = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Debug|x86.Build.0 = Debug|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|Any CPU.Build.0 = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|ARM.ActiveCfg = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|ARM.Build.0 = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|ARM64.ActiveCfg = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|ARM64.Build.0 = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|x64.ActiveCfg = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|x64.Build.0 = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|x86.ActiveCfg = Release|Any CPU
		{8DB1B921-4190-4ED1-B2B0-C1A9B21B2C08}.Release|x86.Build.0 = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|ARM.Build.0 = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|ARM64.Build.0 = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|x64.ActiveCfg = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|x64.Build.0 = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|x86.ActiveCfg = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Debug|x86.Build.0 = Debug|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|Any CPU.Build.0 = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|ARM.ActiveCfg = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|ARM.Build.0 = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|ARM64.ActiveCfg = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|ARM64.Build.0 = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|x64.ActiveCfg = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|x64.Build.0 = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|x86.ActiveCfg = Release|Any CPU
		{E168AAE0-7730-45FD-A059-6994DB237C85}.Release|x86.Build.0 = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|ARM.Build.0 = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|ARM64.Build.0 = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|x64.ActiveCfg = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|x64.Build.0 = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|x86.ActiveCfg = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Debug|x86.Build.0 = Debug|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|Any CPU.Build.0 = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|ARM.ActiveCfg = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|ARM.Build.0 = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|ARM64.ActiveCfg = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|ARM64.Build.0 = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|x64.ActiveCfg = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|x64.Build.0 = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|x86.ActiveCfg = Release|Any CPU
		{34CAFA86-2B8D-41D0-8218-5FEC87170E45}.Release|x86.Build.0 = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|ARM.Build.0 = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|ARM64.Build.0 = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|x64.Build.0 = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Debug|x86.Build.0 = Debug|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|Any CPU.Build.0 = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|ARM.ActiveCfg = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|ARM.Build.0 = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|ARM64.ActiveCfg = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|ARM64.Build.0 = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|x64.ActiveCfg = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|x64.Build.0 = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|x86.ActiveCfg = Release|Any CPU
		{1A3285D7-5DC5-4135-9F38-503D6DB6469A}.Release|x86.Build.0 = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|ARM.Build.0 = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|ARM64.Build.0 = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|x64.ActiveCfg = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|x64.Build.0 = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|x86.ActiveCfg = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Debug|x86.Build.0 = Debug|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|Any CPU.Build.0 = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|ARM.ActiveCfg = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|ARM.Build.0 = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|ARM64.ActiveCfg = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|ARM64.Build.0 = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|x64.ActiveCfg = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|x64.Build.0 = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|x86.ActiveCfg = Release|Any CPU
		{EDD82FFB-2811-4364-AE3F-FD3EA0C54312}.Release|x86.Build.0 = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|ARM.Build.0 = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|ARM64.Build.0 = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|x64.ActiveCfg = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|x64.Build.0 = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|x86.ActiveCfg = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Debug|x86.Build.0 = Debug|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|Any CPU.Build.0 = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|ARM.ActiveCfg = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|ARM.Build.0 = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|ARM64.ActiveCfg = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|ARM64.Build.0 = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|x64.ActiveCfg = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|x64.Build.0 = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|x86.ActiveCfg = Release|Any CPU
		{58B80047-B051-49F8-99E0-2FC3FB34F39A}.Release|x86.Build.0 = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|ARM.Build.0 = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|ARM64.Build.0 = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|x64.ActiveCfg = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|x64.Build.0 = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|x86.ActiveCfg = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Debug|x86.Build.0 = Debug|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|Any CPU.Build.0 = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|ARM.ActiveCfg = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|ARM.Build.0 = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|ARM64.ActiveCfg = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|ARM64.Build.0 = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|x64.ActiveCfg = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|x64.Build.0 = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|x86.ActiveCfg = Release|Any CPU
		{BB70AF68-FE47-4A2C-A1A3-BF3A4ED83251}.Release|x86.Build.0 = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|ARM.Build.0 = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|ARM64.Build.0 = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|x64.ActiveCfg = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|x64.Build.0 = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|x86.ActiveCfg = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Debug|x86.Build.0 = Debug|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|Any CPU.Build.0 = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|ARM.ActiveCfg = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|ARM.Build.0 = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|ARM64.ActiveCfg = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|ARM64.Build.0 = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|x64.ActiveCfg = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|x64.Build.0 = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|x86.ActiveCfg = Release|Any CPU
		{55C8BE35-B770-4FFF-92F8-1FD1792150F7}.Release|x86.Build.0 = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|ARM.Build.0 = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|ARM64.Build.0 = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|x64.ActiveCfg = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|x64.Build.0 = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|x86.ActiveCfg = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Debug|x86.Build.0 = Debug|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|Any CPU.Build.0 = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|ARM.ActiveCfg = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|ARM.Build.0 = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|ARM64.ActiveCfg = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|ARM64.Build.0 = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|x64.ActiveCfg = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|x64.Build.0 = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|x86.ActiveCfg = Release|Any CPU
		{BABA96A7-BEF2-450E-8502-11D36163B691}.Release|x86.Build.0 = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|ARM.Build.0 = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|ARM64.Build.0 = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|x64.ActiveCfg = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|x64.Build.0 = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|x86.ActiveCfg = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Debug|x86.Build.0 = Debug|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|Any CPU.Build.0 = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|ARM.ActiveCfg = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|ARM.Build.0 = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|ARM64.ActiveCfg = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|ARM64.Build.0 = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|x64.ActiveCfg = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|x64.Build.0 = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|x86.ActiveCfg = Release|Any CPU
		{F85D2EEC-5C85-4443-B046-769F511ACB6F}.Release|x86.Build.0 = Release|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM.ActiveCfg = Debug|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM.Build.0 = Debug|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM.Deploy.0 = Debug|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM64.ActiveCfg = Debug|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM64.Build.0 = Debug|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|ARM64.Deploy.0 = Debug|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x64.ActiveCfg = Debug|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x64.Build.0 = Debug|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x64.Deploy.0 = Debug|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x86.ActiveCfg = Debug|x86
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x86.Build.0 = Debug|x86
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Debug|x86.Deploy.0 = Debug|x86
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|Any CPU.Build.0 = Release|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|Any CPU.Deploy.0 = Release|Any CPU
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM.ActiveCfg = Release|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM.Build.0 = Release|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM.Deploy.0 = Release|ARM
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM64.ActiveCfg = Release|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM64.Build.0 = Release|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|ARM64.Deploy.0 = Release|ARM64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x64.ActiveCfg = Release|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x64.Build.0 = Release|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x64.Deploy.0 = Release|x64
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x86.ActiveCfg = Release|x86
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x86.Build.0 = Release|x86
		{080A374C-D430-4FCB-96B8-889FDEBF58F2}.Release|x86.Deploy.0 = Release|x86
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|ARM.Build.0 = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|ARM64.Build.0 = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|x64.ActiveCfg = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|x64.Build.0 = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|x86.ActiveCfg = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Debug|x86.Build.0 = Debug|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|Any CPU.Build.0 = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|ARM.ActiveCfg = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|ARM.Build.0 = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|ARM64.ActiveCfg = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|ARM64.Build.0 = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|x64.ActiveCfg = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|x64.Build.0 = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|x86.ActiveCfg = Release|Any CPU
		{17C5019E-53C9-4566-BAA0-9E2E139D6529}.Release|x86.Build.0 = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|ARM.ActiveCfg = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|ARM.Build.0 = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|ARM64.ActiveCfg = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|ARM64.Build.0 = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|x64.ActiveCfg = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|x64.Build.0 = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|x86.ActiveCfg = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Debug|x86.Build.0 = Debug|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|Any CPU.Build.0 = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|ARM.ActiveCfg = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|ARM.Build.0 = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|ARM64.ActiveCfg = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|ARM64.Build.0 = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|x64.ActiveCfg = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|x64.Build.0 = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|x86.ActiveCfg = Release|Any CPU
		{EA92AA97-BC63-4691-8483-39E9643D2086}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{61D2474A-EDC5-4792-A4E6-7E935856617A} = {F556CBD8-76F3-45A3-9619-8FB81FA64C22}
		{9ECB58D2-3790-4693-8A40-FF2584F263E6} = {F556CBD8-76F3-45A3-9619-8FB81FA64C22}
		{2F15C257-7E50-42B5-ADB4-7534B88F466B} = {F556CBD8-76F3-45A3-9619-8FB81FA64C22}
		{F6E4E1DF-ACC6-4DDE-912F-C6465CB3D393} = {F556CBD8-76F3-45A3-9619-8FB81FA64C22}
		{F37CC0C9-BFE1-4563-87D8-960FE630E601} = {A69D32C8-AA20-4871-858F-31D84193FA1C}
		{52E2ACD1-845A-41DC-8318-22A0A7274677} = {A69D32C8-AA20-4871-858F-31D84193FA1C}
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {BEB14EB2-578B-40D4-88D1-5B497F2967F4}
	EndGlobalSection
EndGlobal


================================================
FILE: KHSave/Attributes/AbilityAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class AbilityAttribute : InfoAttribute
    {
        public AbilityAttribute(string name = null) :
            base(name)
        { }
    }

    public class AbilityActionAttribute : AbilityAttribute
    {
        public AbilityActionAttribute(string name = null) :
            base(name)
        { }
    }

    public class AbilityMobilityAttribute : AbilityAttribute
    {
        public AbilityMobilityAttribute(string name = null) :
            base(name)
        { }
    }

    public class AbilitySupportAttribute : AbilityAttribute
    {
        public AbilitySupportAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/AccessoryAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class AccessoryAttribute : InfoAttribute
    {
        public AccessoryAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/ArmorAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class ArmorAttribute : InfoAttribute
    {
        public ArmorAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/BoostAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class BoostAttribute : TentAttribute
    {
        public BoostAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/CombatStyleAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class CombatStyleAttribute : InfoAttribute
    {
        public CombatStyleAttribute(string name) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/CommandAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class CommandAttribute : InfoAttribute
    {
        public CommandAttribute(string name = null) :
            base(name)
        {

        }
    }
}


================================================
FILE: KHSave/Attributes/ConsumableAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class ConsumableAttribute : InfoAttribute
    {
        public ConsumableAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/FoodAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class FoodAttribute : InfoAttribute
    {
        public FoodAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/FormAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class FormAttribute : KeyItemAttribute
    {
        public FormAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/GummiBlockAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Attributes
{
    public class GummiBlockAttribute : InfoAttribute
    {
        public GummiBlockAttribute(string name = null) : base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/InfoAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Extensions;
using KHSave.Services;
using System;
using System.Collections.Generic;
using System.Linq;

namespace KHSave.Attributes
{
    public class InfoAttribute : Attribute
    {
        private static CacheService<string> cache = new CacheService<string>();

        public string Info { get; }

        public InfoAttribute()
        { }

        public InfoAttribute(string info)
        {
            Info = info;
        }

        public static string GetInfo(object value) => cache.Get(value, x =>
            value.GetAttribute<InfoAttribute>()?.Info ?? x?.ToString() ?? "<null>");

        public static string[] GetItemTypes(object value)
        {
            var memberValue = value.ToString();
            var memberInfo = value.GetType().GetMember(memberValue).FirstOrDefault();

            if (memberInfo != null)
            {
                return memberInfo.CustomAttributes
                    .Select(x => GetTypeRecursive(x.AttributeType))
                    .SelectMany(x => x)
                    .Where(x => x != null)
                    .Select(x =>
                    {
                        var name = x.Name;
                        var indexAttributeStr = name.IndexOf("Attribute");
                        return indexAttributeStr > 0 ? name.Substring(0, indexAttributeStr) : null;
                    }).Where(x => !string.IsNullOrEmpty(x)).ToArray();
            }

            return new string[0];
        }

        private static IEnumerable<Type> GetTypeRecursive(Type type) =>
            new Type[] { type, }.Concat(type != null ? GetTypeRecursive(type.BaseType) : new Type[] { });
    }
}


================================================
FILE: KHSave/Attributes/IngredientAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class IngredientAttribute : InfoAttribute
    {
        public IngredientAttribute(string name) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/KeyItemAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class KeyItemAttribute : InfoAttribute
    {
        public KeyItemAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/KeybladeAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class KeybladeAttribute : InfoAttribute
    {
        public KeybladeAttribute(string name) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/LinkAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class LinkAttribute : InfoAttribute
    {
        public LinkAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/MagicAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class MagicAttribute : InfoAttribute
    {
        public MagicAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/ManuscriptAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class ManuscriptAttribute : InfoAttribute
    {
        public ManuscriptAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/MapAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class MapAttribute : KeyItemAttribute
    {
        public MapAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/MapInfo.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.Linq;

namespace KHSave.Attributes
{
    public class MapInfoAttribute : InfoAttribute
    {
        public string Id { get; set; }

        public MapInfoAttribute(string id, string name) :
            base(string.IsNullOrEmpty(name) ? id : name)
        {
            Id = id;
        }

        public static string GetMapId(object value)
        {
            var memberValue = value.ToString();
            var memberInfo = value.GetType().GetMember(memberValue).FirstOrDefault();

            if (memberInfo != null)
            {
                if (memberInfo.GetCustomAttributes(typeof(MapInfoAttribute), false)
                        .FirstOrDefault() is MapInfoAttribute attribute && !string.IsNullOrEmpty(attribute.Info))
                {
                    return attribute.Id;
                }
            }

            return null;
        }
    }
}


================================================
FILE: KHSave/Attributes/MateriaAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class MateriaAttribute : MagicAttribute
    {
        public MateriaAttribute(string name = null) :
            base(name)
        {

        }
    }

    public class MagicMateriaAttribute : MateriaAttribute
    {
        public MagicMateriaAttribute(string name = null) :
            base(name)
        {

        }
    }

    public class CommandMateriaAttribute : MateriaAttribute
    {
        public CommandMateriaAttribute(string name = null) :
            base(name)
        {

        }
    }

    public class SupportMateriaAttribute : MateriaAttribute
    {
        public SupportMateriaAttribute(string name = null) :
            base(name)
        {

        }
    }

    public class CompleteMateriaAttribute : MateriaAttribute
    {
        public CompleteMateriaAttribute(string name = null) :
            base(name)
        {

        }
    }

    public class SummonMateriaAttribute : MateriaAttribute
    {
        public SummonMateriaAttribute(string name = null) :
            base(name)
        {

        }
    }
}


================================================
FILE: KHSave/Attributes/MogItemAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class MogItemAttribute : InfoAttribute
    {
        public MogItemAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/MoneyAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class MoneyAttribute : InfoAttribute
    {
        public MoneyAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/RecipeAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class RecipeAttribute : MogItemAttribute
    {
        public RecipeAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/ReportAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class ReportAttribute : KeyItemAttribute
    {
        public ReportAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/ShieldAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class ShieldAttribute : InfoAttribute
    {
        public ShieldAttribute(string name) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/SnackAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class SnackAttribute : InfoAttribute
    {
        public SnackAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/StaffAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class StaffAttribute : InfoAttribute
    {
        public StaffAttribute(string name) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/SummonAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class SummonAttribute : KeyItemAttribute
    {
        public SummonAttribute(string name = null) : base(name) { }
    }
}


================================================
FILE: KHSave/Attributes/SynthesisAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class SynthesisAttribute : InfoAttribute
    {
        public SynthesisAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/TentAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class TentAttribute : InfoAttribute
    {
        public TentAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/TrackAttribute.cs
================================================
namespace KHSave.Attributes
{
    public class TrackAttribute : InfoAttribute
    {
        public TrackAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/UnusedAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Services;
using System;
using System.Linq;

namespace KHSave.Attributes
{
    public class UnusedAttribute : Attribute
    {
        private static CacheService<bool> cache = new CacheService<bool>();

        public static bool IsUnused(object value) => cache.Get(value, x =>
        {
            var memberValue = value.ToString();
            var memberInfo = value
                .GetType()
                .GetMember(memberValue)
                .FirstOrDefault();

            if (memberInfo != null)
            {
                if (memberInfo.GetCustomAttributes(typeof(UnusedAttribute), false).Length > 0)
                    return true;
                if (memberInfo.GetCustomAttributes(typeof(InfoAttribute), false).Length > 0)
                    return false;
            }

            return true;
        });
    }
}


================================================
FILE: KHSave/Attributes/WeaponAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

namespace KHSave.Attributes
{
    public class WeaponAttribute : InfoAttribute
    {
        public WeaponAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponCloudAttribute : WeaponAttribute
    {
        public WeaponCloudAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponBarretAttribute : WeaponAttribute
    {
        public WeaponBarretAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponTifaAttribute : WeaponAttribute
    {
        public WeaponTifaAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponAerithAttribute : WeaponAttribute
    {
        public WeaponAerithAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponYuffieAttribute : WeaponAttribute
    {
        public WeaponYuffieAttribute(string name = null) :
            base(name)
        { }
    }

    public class WeaponSononAttribute : WeaponAttribute
    {
        public WeaponSononAttribute(string name = null) :
            base(name)
        { }
    }
}


================================================
FILE: KHSave/Attributes/WorldInfoAttribute.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Extensions;

namespace KHSave.Attributes
{
    public class WorldAttribute : InfoAttribute
    {
        public string Id { get; set; }

        public WorldAttribute(string id, string name) :
            base(name)
        {
            Id = id;
        }

        public static string GetWorldId(object value) =>
            value.GetAttribute<WorldAttribute>()?.Id;
    }
}


================================================
FILE: KHSave/Extensions/AttributeExtensions.cs
================================================
using KHSave.Services;
using System;
using System.Linq;

namespace KHSave.Extensions
{
    public static class AttributeExtensions
    {
        private static CacheService<Attribute> cache = new CacheService<Attribute>();

        public static T GetAttribute<T>(this object value) where T : Attribute => (T)cache.Get(value, x =>
        {
            var memberValue = x.ToString();
            var memberInfo = x.GetType().GetMember(memberValue).FirstOrDefault();

            if (memberInfo != null)
            {
                if (memberInfo.GetCustomAttributes(typeof(T), false)
                        .FirstOrDefault() is T attribute)
                    return attribute;
            }

            return null;
        });
    }
}


================================================
FILE: KHSave/Extensions/BitExtensions.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Extensions
{
    public static class BitExtensions
    {
        public static bool GetFlag(this int value, int bit)
        {
            return (value & (1 << bit)) != 0;
        }

        public static int SetFlag(this int value, int bit, bool set)
        {
            if (set)
            {
                value |= 1 << bit;
            }
            else
            {
                value &= ~(1 << bit);
            }

            return value;
        }
    }
}


================================================
FILE: KHSave/Extensions/DateTimeExtensions.cs
================================================
using System;

namespace KHSave.Extensions
{
    public static class DateTimeExtensions
    {
        private static DateTime _baseDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

        public static DateTime FromUnixEpoch(this int timestamp) =>
            FromUnixEpoch((uint)timestamp);

        public static DateTime FromUnixEpoch(this uint timestamp) =>
            _baseDateTime.AddSeconds(timestamp);

        public static uint ToUnixEpoch(this DateTime dateTime) =>
            (uint)((dateTime.Ticks - _baseDateTime.Ticks) / TimeSpan.TicksPerSecond);
    }
}


================================================
FILE: KHSave/KHSave.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xe.BinaryMapper" Version="1.5.2" />
  </ItemGroup>

</Project>


================================================
FILE: KHSave/Services/CacheService.cs
================================================
using System;
using System.Collections.Generic;

namespace KHSave.Services
{
    public class CacheService<T>
    {
        private Dictionary<object, T> _cache = new Dictionary<object, T>();

        public T Get(object value, Func<object, T> getter)
        {
            if (_cache.TryGetValue(value, out var response))
                return (T)response;

            response = getter(value);
            _cache.Add(value, response);

            return (T)response;
        }
    }
}


================================================
FILE: KHSave/Services/TransferServiceLL.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace KHSave.Services
{
    public static class TransferServiceLL
    {
        public static Dictionary<Type, Action<object, object, PropertyInfo>> DefaultMappings =
            new Dictionary<Type, Action<object, object, PropertyInfo>>()
            {
                [typeof(byte[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<byte>(dst, src, prop)),
                [typeof(short[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<short>(dst, src, prop)),
                [typeof(ushort[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<ushort>(dst, src, prop)),
                [typeof(int[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<int>(dst, src, prop)),
                [typeof(uint[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<uint>(dst, src, prop)),
                [typeof(float[])] = new Action<object, object, PropertyInfo>((dst, src, prop) => CopyArray<float>(dst, src, prop)),
            };

        public static void CopySave<T>(object dst, object src, Dictionary<Type, Action<object, object, PropertyInfo>> mappings) where T : class =>
            CopySave(typeof(T), dst, src, mappings);

        public static void CopySave(Type type, object dst, object src, Dictionary<Type, Action<object, object, PropertyInfo>> mappings)
        {
            foreach (var property in type.GetProperties().Where(x => x.GetMethod != null))
            {
                if (mappings.TryGetValue(property.PropertyType, out var action))
                    action(dst, src, property);
                else if (property.PropertyType.IsPrimitive || property.PropertyType.IsEnum)
                {
                    if (property.SetMethod != null)
                        property?.SetValue(dst, property.GetValue(src));
                }
                else if (property.PropertyType.IsArray || property.PropertyType.IsAssignableFrom(typeof(IList)))
                {
                    var dstList = property.GetValue(dst) as IList;
                    var srcList = property.GetValue(src) as IList;
                    if (dstList != null && srcList != null)
                    {
                        var length = Math.Min(dstList.Count, srcList.Count);
                        var itemType = property.PropertyType.IsArray ?
                            property.PropertyType.GetElementType() :
                            property.PropertyType.GetGenericArguments().FirstOrDefault();
                        for (var i = 0; i < length; i++)
                        {
                            if (dstList[i] != null && srcList[i] != null)
                                CopySave(itemType, dstList[i], srcList[i], mappings);
                        }

                        if (property.SetMethod != null)
                            property.SetValue(dst, dstList);
                    }
                }
                else if (property.PropertyType.IsInterface || property.PropertyType.IsClass)
                {
                    CopySave(property.PropertyType, property.GetValue(dst), property.GetValue(src), mappings);
                }
            }
        }

        public static void CopyArray<T>(object dst, object src, PropertyInfo prop)
        {
            var srcValue = prop.GetValue(src) as T[];
            var dstValue = prop.GetValue(dst) as T[];
            if (dstValue != null)
                Array.Copy(srcValue, dstValue, Math.Min(srcValue.Length, dstValue.Length));
            else
                dstValue = srcValue;

            prop.SetValue(dst, dstValue);
        }
    }
}


================================================
FILE: KHSave/StreamHelpers.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.IO;
using System.Text;

namespace KHSave
{
    public static class StreamHelpers
    {
        public static T FromBegin<T>(this T stream) where T : Stream => stream.SetPosition(0);

        public static T SetPosition<T>(this T stream, int position) where T : Stream
        {
            stream.Seek(position, SeekOrigin.Begin);
            return stream;
        }

        public static bool ReadFlag(this BinaryReader reader, int offset, int bit)
        {
            reader.BaseStream.Seek(offset, SeekOrigin.Begin);
            return reader.ReadByte().HasFlag(bit);
        }

        public static int ReadInt32(this BinaryReader reader, int offset)
        {
            reader.BaseStream.Seek(offset, SeekOrigin.Begin);
            return reader.ReadInt32();
        }

        public static byte[] ReadBytes(this Stream stream) =>
            stream.ReadBytes((int)(stream.Length - stream.Position));

        public static byte[] ReadBytes(this Stream stream, int length)
        {
            var data = new byte[length];
            stream.Read(data, 0, length);
            return data;
        }

        public static byte[] ReadAllBytes(this Stream stream)
        {
            var data = stream.SetPosition(0).ReadBytes();
            stream.Position = 0;
            return data;
        }

        public static string ReadString(this BinaryReader reader, int length)
        {
            var data = reader.ReadBytes(length);
            var terminatorIndex = Array.FindIndex(data, x => x == 0);
            return Encoding.UTF8.GetString(data, 0, terminatorIndex);
        }

        public static string ReadString(this BinaryReader reader, int offset, int length)
        {
            reader.BaseStream.Seek(offset, SeekOrigin.Begin);
            return reader.ReadString(length);
        }

        public static bool HasFlag(this byte c, int offset)
        {
            return (c & (1 << offset)) != 0;
        }

        public static void Write(this BinaryWriter writer, string str, int length)
        {
            var data = Encoding.UTF8.GetBytes(str);
            if (data.Length <= length)
            {
                writer.Write(data, 0, data.Length);
                int remainsBytes = length = data.Length;
                if (remainsBytes > 0)
                {
                    writer.Write(new byte[remainsBytes]);
                }
            }
            else
            {
                writer.Write(data, 0, length);
            }
        }

        public static void Copy(this Stream source, Stream destination, int length, int bufferSize = 65536)
        {
            int read;
            byte[] buffer = new byte[Math.Min(length, bufferSize)];

            while ((read = source.Read(buffer, 0, Math.Min(length, bufferSize))) != 0)
            {
                destination.Write(buffer, 0, read);
                length -= read;
            }
        }
    }
}


================================================
FILE: KHSave.Archives/ArchiveFactories.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Archives.Factories;
using System.IO;

namespace KHSave.Archives
{
    public static class ArchiveFactories
    {
        public static readonly IArchiveFactory Ps4Kh1 = new Ps4Kh1Factory();
        public static readonly IArchiveFactory Ps4Kh2 = new Ps4Kh2Factory();
        public static readonly IArchiveFactory Ps4KhRecom = new Ps4KhRecomFactory();
        public static readonly IArchiveFactory Ps4KhDdd = new Ps4KhDddFactory();
        public static readonly IArchiveFactory PcKh1 = new PcKh1Factory();
        public static readonly IArchiveFactory PcKh2 = new PcKh2Factory();
        public static readonly IArchiveFactory PcKhRecom = new PcKhRecomFactory();
        public static readonly IArchiveFactory PcKhBbs = new PcKhBbsactory();
        public static readonly IArchiveFactory PcKhDdd = new PcKhDddFactory();

        public static readonly IArchiveFactory Ps2Psu = new Ps2PsuFactory();
        public static readonly IArchiveFactory Ps2Cbs = new Ps2CbsFactory();

        public static readonly IArchiveFactory Ps3Psv = new Ps3PsvFactory();

        public static bool TryGetFactory(Stream stream, out IArchiveFactory archiveFactory)
        {
            if (Ps4Kh1.IsValid(stream))
                archiveFactory = Ps4Kh1;
            else if (Ps4Kh2.IsValid(stream))
                archiveFactory = Ps4Kh2;
            else if (Ps4KhRecom.IsValid(stream))
                archiveFactory = Ps4KhRecom;
            else if (Ps4KhDdd.IsValid(stream))
                archiveFactory = Ps4KhDdd;
            else if (PcKh1.IsValid(stream))
                archiveFactory = PcKh1;
            else if (PcKh2.IsValid(stream))
                archiveFactory = PcKh2;
            else if (PcKhRecom.IsValid(stream))
                archiveFactory = PcKhRecom;
            else if (PcKhBbs.IsValid(stream))
                archiveFactory = PcKhBbs;
            else if (PcKhDdd.IsValid(stream))
                archiveFactory = PcKhDdd;
            else if (Ps2Psu.IsValid(stream))
                archiveFactory = Ps2Psu;
            else if (Ps2Cbs.IsValid(stream))
                archiveFactory = Ps2Cbs;
            else if (Ps3Psv.IsValid(stream))
                archiveFactory = Ps3Psv;
            else
                archiveFactory = null;

            return archiveFactory != null;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/PcKh1Factory.cs
================================================
using System.IO;

namespace KHSave.Archives.Factories
{
    internal class PcKh1Factory : IArchiveFactory
    {
        private const int EntryCount = 200;
        private const int Stride = 0x16C40;
        private const int Size = 0x11EB09D;

        public string Name => "PC KH1FM";

        public string Description => "Kingdom Hearts Final Mix (PC)";

        public IArchive Create() => new PcSaveArchive(EntryCount, Stride);

        public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchive Read(Stream stream)
        {
            var archive = PcSaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/PcKh2Factory.cs
================================================
using System.IO;

namespace KHSave.Archives.Factories
{
    internal class PcKh2Factory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x10FC0;
        private const int Size = 0x6BED08;

        public string Name => "PC KH2FM";

        public string Description => "Kingdom Hearts II Final Mix (PC)";

        public IArchive Create() => new PcSaveArchive(EntryCount, Stride);

        public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchive Read(Stream stream)
        {
            var archive = PcSaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/PcKhBbsFactory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    public class PcKhBbsactory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x13C00;
        private const int Size = 0x7D3B94;

        public string Name => "PC KHBBS";

        public string Description => "Kingdom Hearts Birth By Sleep (PC)";

        public IArchive Create() =>
            new PcSaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = PcSaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/Factories/PcKhDddFactory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    public class PcKhDddFactory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x16600;
        private const int Size = 0x8DAE8F;

        public string Name => "PC KHDDD";

        public string Description => "Kingdom Hearts Dream Drop Distance (PC)";

        public IArchive Create() =>
            new PcSaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = PcSaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/Factories/PcKhRecomFactory.cs
================================================
using System.IO;

namespace KHSave.Archives.Factories
{
    internal class PcKhRecomFactory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x3a30;
        private const int Size = 0x188F5F;

        public string Name => "PC RECOM";

        public string Description => "Kingdom Hearts Re: Chain of Memories (PC)";

        public IArchive Create() => new PcSaveArchive(EntryCount, Stride);

        public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchive Read(Stream stream)
        {
            var archive = PcSaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps2CbsFactory.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KHSave.Archives.Factories
{
    public class Ps2CbsFactory : IArchiveFactory
    {
        public string Name => throw new NotImplementedException();

        public string Description => throw new NotImplementedException();

        public IArchive Create()
        {
            throw new NotImplementedException();
        }

        public IArchiveEntry CreateEntry()
        {
            throw new NotImplementedException();
        }

        public bool IsValid(Stream stream)
        {
            var currentPosition = stream.Position;
            stream.Position = 0;

            var result = BitConverter.ToUInt32(stream.ReadBytes(4));
            stream.SetPosition((int)currentPosition);
            return result == 0x00554643;
        }

        public IArchive Read(Stream stream)
        {
            var archive = Ps2CbsArchive.Read(stream, 10);
            return archive;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps2PsuFactory.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KHSave.Archives.Factories
{
    public class Ps2PsuFactory : IArchiveFactory
    {
        public string Name => throw new NotImplementedException();

        public string Description => throw new NotImplementedException();

        public IArchive Create()
        {
            throw new NotImplementedException();
        }

        public IArchiveEntry CreateEntry()
        {
            throw new NotImplementedException();
        }

        public bool IsValid(Stream stream)
        {
            var currentPosition = stream.Position;
            stream.Position = 0x240;
            var b1 = stream.ReadByte();

            stream.Position = 0x440;
            var b2 = stream.ReadByte();
            var b3 = stream.ReadByte();

            stream.SetPosition((int)currentPosition);
            return stream.Length > 0x600 &&
                (byte)b1 == '.' && (byte)b2 == '.' && (byte)b3 == '.';
        }

        public IArchive Read(Stream stream)
        {
            var archive = Ps2PsuArchive.Read(stream, 10);
            return archive;
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps3PsvFactory.cs
================================================
using System;
using System.IO;

namespace KHSave.Archives.Factories
{
    public class Ps3PsvFactory : IArchiveFactory
    {
        public string Name => throw new NotImplementedException();

        public string Description => throw new NotImplementedException();

        public IArchive Create()
        {
            throw new NotImplementedException();
        }

        public IArchiveEntry CreateEntry()
        {
            throw new NotImplementedException();
        }

        public bool IsValid(Stream stream)
        {
            var currentPosition = stream.Position;
            stream.Position = 0;

            var result = BitConverter.ToUInt32(stream.ReadBytes(4));
            stream.SetPosition((int)currentPosition);
            return result == 0x50535600;
        }

        public IArchive Read(Stream stream)
        {
            return Ps3PsvArchive.Read(stream);
        }
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps4Kh1Factory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    internal class Ps4Kh1Factory : IArchiveFactory
    {
        private const int EntryCount = 200;
        private const int Stride = 0x16C40;
        private const int Size = 0x11cd800;

        public string Name => "PS4 KH1";

        public string Description => "Kingdom Hearts Final Mix (PS4)";

        public IArchive Create() =>
            new Ps4SaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = Ps4SaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps4Kh2Factory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    internal class Ps4Kh2Factory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x10FC0;
        private const int Size = 0x6a4c00;

        public string Name => "PS4 KH2";

        public string Description => "Kingdom Hearts II Final Mix (PS4)";

        public IArchive Create() =>
            new Ps4SaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = Ps4SaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps4KhDddFactory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    public class Ps4KhDddFactory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x16600;
        private const int Size = 0x8bfc00;

        public string Name => "PS4 KHDDD";

        public string Description => "Kingdom Hearts Dream Drop Distance (PS4)";

        public IArchive Create() =>
            new Ps4SaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = Ps4SaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/Factories/Ps4KhRecomFactory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives.Factories
{
    public class Ps4KhRecomFactory : IArchiveFactory
    {
        private const int EntryCount = 100;
        private const int Stride = 0x3a30;
        private const int Size = 0x16e000;

        public string Name => "PS4 RECOM";

        public string Description => "Kingdom Hearts Re: Chain of Memories (PS4)";

        public IArchive Create() =>
            new Ps4SaveArchive(EntryCount, Stride);

        public IArchive Read(Stream stream)
        {
            var archive = Ps4SaveArchive.Read(stream, EntryCount, Stride);
            archive.Name = Description;

            return archive;
        }

        public bool IsValid(Stream stream) => stream.Length == Size;

        public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();
    }
}


================================================
FILE: KHSave.Archives/IArchive.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.Collections.Generic;
using System.IO;

namespace KHSave.Archives
{
    public interface IArchive
    {
        string Name { get; }

        int MaxEntryCount { get; }

        IList<IArchiveEntry> Entries { get; }

        void Write(Stream stream);
    }
}


================================================
FILE: KHSave.Archives/IArchiveEntry.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;

namespace KHSave.Archives
{
    public interface IArchiveEntry
    {
        string Name { get; set; }
        DateTime DateCreated { get; set; }
        int FlagCreated { get; set; }
        DateTime DateModified { get; set; }
        int FlagModified { get; set; }
        byte[] Data { get; set; }
    }
}


================================================
FILE: KHSave.Archives/IArchiveFactory.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System.IO;

namespace KHSave.Archives
{
    public interface IArchiveFactory
    {
        string Name { get; }

        string Description { get; }

        IArchive Create();

        IArchive Read(Stream stream);

        bool IsValid(Stream stream);

        IArchiveEntry CreateEntry();
    }
}


================================================
FILE: KHSave.Archives/KHSave.Archives.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="SharpZipLib" Version="1.3.3" />
    <PackageReference Include="Xe.BinaryMapper" Version="1.5.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\KHSave\KHSave.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: KHSave.Archives/PcSaveArchive.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Xe.BinaryMapper;

namespace KHSave.Archives
{
    internal class PcSaveArchive : IArchive
    {
        public class Entry : IArchiveEntry
        {
            private static readonly long UnixTimeBase = new DateTime(1970, 1, 1).Ticks;

            [Data(Count = 0x40)] public string Name { get; set; }
            [Data(0x40)] public int RawDateCreated { get; set; }
            [Data(0x44)] public int FlagCreated { get; set; }
            [Data(0x48)] public int RawDateModified { get; set; }
            [Data(0x4c)] public int FlagModified { get; set; }
            [Data(0x50)] public int Length { get; set; }
            [Data(0x54)] public int SomeKindOfFlag { get; set; }
            [Data(0x58, Count = 0x100)] public byte[] Padding { get; set; }

            public DateTime DateCreated { get => Map(RawDateCreated); set => RawDateCreated = Map(value); }
            public DateTime DateModified { get => Map(RawDateModified); set => RawDateModified = Map(value); }

            public byte[] Data { get; set; }

            private static DateTime Map(int ticks) => new DateTime(ticks * TimeSpan.TicksPerSecond + UnixTimeBase);
            private static int Map(DateTime dateTime) => (int)((dateTime.Ticks - UnixTimeBase) / TimeSpan.TicksPerSecond);
        }

        private const int PngHeaderLength = 0x70;
        private const int EncryptedLength = 0xF0;
        private const int KeyLength = 0x10;
        private const int KeyOffset = EncryptedLength - KeyLength;
        private const int EntryLength = 0x158;

        private readonly int _stride;
        private readonly byte[] _encryptionKey;

        private byte[] _pngHeader;
        private byte[] _pngFooter;

        internal PcSaveArchive(int entryCount, int stride)
        {
            MaxEntryCount = entryCount;
            _stride = stride;
            _encryptionKey = new byte[KeyLength];
            Entries = new List<IArchiveEntry>(MaxEntryCount);
        }

        private PcSaveArchive(Stream stream, int entryCount, int stride)
        {
            MaxEntryCount = entryCount;
            _stride = stride;

            _pngHeader = new byte[PngHeaderLength];
            stream.Read(_pngHeader);

            var entryData = new byte[entryCount * EntryLength];
            stream.Read(entryData);

            _encryptionKey = new byte[KeyLength];
            Array.Copy(entryData, KeyOffset, _encryptionKey, 0, KeyLength);
            for (var i = 0; i < EncryptedLength; i++)
                entryData[i] ^= _encryptionKey[i & 15];

            var entryStream = new MemoryStream(entryData);
            Entries = Enumerable.Range(0, entryCount)
                .Select(i => BinaryMapping.ReadObject<Entry>(entryStream, i * EntryLength))
                .ToArray();

            var baseOffset = stream.Position;
            foreach (var entry in Entries.Cast<Entry>())
            {
                entry.Data = new byte[entry.Length];
                stream.Read(entry.Data, 0, entry.Length);

                baseOffset += _stride;
                stream.Position = baseOffset;
            }

            var remainingByteCount = stream.Length - stream.Position;
            _pngFooter = new byte[remainingByteCount];
            stream.Read(_pngFooter);
        }

        public string Name { get; internal set; } = "Kingdom Hearts PC Save Archive";
        public int MaxEntryCount { get; }
        public IList<IArchiveEntry> Entries { get; }

        public void Write(Stream stream)
        {
            var entries = Entries
                .Select(x => new Entry
                {
                    Name = x.Name,
                    DateCreated = x.DateCreated,
                    FlagCreated = x.FlagCreated,
                    DateModified = x.DateModified,
                    FlagModified = x.FlagModified,
                    Length = x.Data.Length,
                    Data = x.Data,
                    Padding = new byte[0x100]
                })
            .Take(MaxEntryCount)
            .ToList();

            while (entries.Count < MaxEntryCount)
                entries.Add(new Entry
                {
                    Name = string.Empty,
                    Data = new byte[0]
                });

            stream.Position = 0;
            stream.Write(_pngHeader);

            var entryData = new byte[entries.Count * EntryLength];
            using var entryStream = new MemoryStream(entryData);
            foreach (var entry in entries)
                BinaryMapping.WriteObject(entryStream, entry, (int)entryStream.Position);

            for (var i = 0; i < EncryptedLength; i++)
                entryData[i] ^= _encryptionKey[i & 15];
            stream.Write(entryData);

            var baseOffset = (int)stream.Position;
            foreach (var entry in entries)
            {
                stream.Write(entry.Data, 0, (int)entry.Length);

                var padding = _stride - entry.Length;
                while (--padding > 0)
                    stream.WriteByte(0);

                baseOffset += _stride;
                stream.Position = baseOffset;
            }

            stream.Write(_pngFooter);
        }

        public static PcSaveArchive Read(Stream stream, int entryCount, int stride) =>
            new PcSaveArchive(stream, entryCount, stride);
    }
}


================================================
FILE: KHSave.Archives/Ps2CbsArchive.cs
================================================
// https://github.com/root670/PS2SaveUtility/blob/master/src/CBSFile.cpp

using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using System;
using System.Collections.Generic;
using System.IO;
using Xe.BinaryMapper;

namespace KHSave.Archives
{
    public class Ps2CbsArchive : IArchive
    {
        private class Header
        {
            [Data(Count = 4)] public uint Magic { get; set; }
            [Data] public uint Unk1 { get; set; }
            [Data] public uint DataOffset { get; set; }
            [Data] public uint DecompressedSize { get; set; }
            [Data] public uint CompressedSize { get; set; }
            [Data(Count = 32)] public string Name { get; set; }
            [Data] public sceMcStDateTime Created { get; set; }
            [Data] public sceMcStDateTime Modified { get; set; }
            [Data] public uint Unk2 { get; set; }
            [Data] public uint Mode { get; set; }
            [Data(Count = 16)] public byte[] Unk3 { get; set; }
            [Data(Count = 72)] public string Title { get; set; }
            [Data(Count = 132)] public string Description { get; set; }
        }
        public class Entry : IArchiveEntry
        {
            [Data] public sceMcStDateTime Created { get; set; }
            [Data] public sceMcStDateTime Modified { get; set; }
            [Data] public uint Length { get; set; }
            [Data] public uint Mode { get; set; }
            [Data(Count = 8)] public byte[] Unk1 { get; set; }
            [Data(Count = 32)] public string Name { get; set; }

            public byte[] Data { get; set; }
            public DateTime DateCreated { get => Map(Created); set => throw new NotImplementedException(); }
            public int FlagCreated { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
            public DateTime DateModified { get => Map(Modified); set => throw new NotImplementedException(); }
            public int FlagModified { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

            private static DateTime Map(sceMcStDateTime date) => new(date.Year, date.Month, date.Day, date.Hour, date.Min, date.Sec);
        }

        internal Ps2CbsArchive(int entryCount)
        {
            MaxEntryCount = entryCount;
            Entries = new List<IArchiveEntry>(MaxEntryCount);
        }

        private Ps2CbsArchive(Stream stream, int entryCount)
        {
            MaxEntryCount = entryCount;
            Entries = new List<IArchiveEntry>(MaxEntryCount);

            var header = BinaryMapping.ReadObject<Header>(stream);
            var len = stream.Length - stream.Position;
            var buff = new byte[len];
            stream.Read(buff, 0, (int)len);

            rc4Crypt(buff, (int)len);

            using var decompressedStream = new MemoryStream(Decompress(buff, (int)header.DecompressedSize));
            long offset = 0;
            while (offset < (header.DecompressedSize - 64))
            {
                var entry = BinaryMapping.ReadObject<Entry>(decompressedStream);

                entry.Data = new byte[entry.Length];
                decompressedStream.Read(entry.Data, 0, (int)entry.Length);

                offset = decompressedStream.Position;
                Entries.Add(entry);
            }
        }

        public string Name => "PS2 CBS Archive";

        public int MaxEntryCount { get; }

        public IList<IArchiveEntry> Entries { get; }

        public void Write(Stream stream)
        {
            throw new NotImplementedException();
        }

        public static Ps2CbsArchive Read(Stream stream, int entryCount) =>
            new Ps2CbsArchive(stream, entryCount);

        private static byte[] Decompress(byte[] buffer, int length)
        {
            using var compressedStream = new MemoryStream(buffer);
            using var inflater = new InflaterInputStream(compressedStream);

            var decomp = new byte[length];
            inflater.Read(decomp);

            return decomp;
        }

        private static void rc4Crypt(byte[] buf, int bufLen)
        {
            byte j = 0;
            byte k = 0;
            byte temp;
            byte[] s = new byte[]
            {
                0x5f, 0x1f, 0x85, 0x6f, 0x31, 0xaa, 0x3b, 0x18,
                0x21, 0xb9, 0xce, 0x1c, 0x07, 0x4c, 0x9c, 0xb4,
                0x81, 0xb8, 0xef, 0x98, 0x59, 0xae, 0xf9, 0x26,
                0xe3, 0x80, 0xa3, 0x29, 0x2d, 0x73, 0x51, 0x62,
                0x7c, 0x64, 0x46, 0xf4, 0x34, 0x1a, 0xf6, 0xe1,
                0xba, 0x3a, 0x0d, 0x82, 0x79, 0x0a, 0x5c, 0x16,
                0x71, 0x49, 0x8e, 0xac, 0x8c, 0x9f, 0x35, 0x19,
                0x45, 0x94, 0x3f, 0x56, 0x0c, 0x91, 0x00, 0x0b,
                0xd7, 0xb0, 0xdd, 0x39, 0x66, 0xa1, 0x76, 0x52,
                0x13, 0x57, 0xf3, 0xbb, 0x4e, 0xe5, 0xdc, 0xf0,
                0x65, 0x84, 0xb2, 0xd6, 0xdf, 0x15, 0x3c, 0x63,
                0x1d, 0x89, 0x14, 0xbd, 0xd2, 0x36, 0xfe, 0xb1,
                0xca, 0x8b, 0xa4, 0xc6, 0x9e, 0x67, 0x47, 0x37,
                0x42, 0x6d, 0x6a, 0x03, 0x92, 0x70, 0x05, 0x7d,
                0x96, 0x2f, 0x40, 0x90, 0xc4, 0xf1, 0x3e, 0x3d,
                0x01, 0xf7, 0x68, 0x1e, 0xc3, 0xfc, 0x72, 0xb5,
                0x54, 0xcf, 0xe7, 0x41, 0xe4, 0x4d, 0x83, 0x55,
                0x12, 0x22, 0x09, 0x78, 0xfa, 0xde, 0xa7, 0x06,
                0x08, 0x23, 0xbf, 0x0f, 0xcc, 0xc1, 0x97, 0x61,
                0xc5, 0x4a, 0xe6, 0xa0, 0x11, 0xc2, 0xea, 0x74,
                0x02, 0x87, 0xd5, 0xd1, 0x9d, 0xb7, 0x7e, 0x38,
                0x60, 0x53, 0x95, 0x8d, 0x25, 0x77, 0x10, 0x5e,
                0x9b, 0x7f, 0xd8, 0x6e, 0xda, 0xa2, 0x2e, 0x20,
                0x4f, 0xcd, 0x8f, 0xcb, 0xbe, 0x5a, 0xe0, 0xed,
                0x2c, 0x9a, 0xd4, 0xe2, 0xaf, 0xd0, 0xa9, 0xe8,
                0xad, 0x7a, 0xbc, 0xa8, 0xf2, 0xee, 0xeb, 0xf5,
                0xa6, 0x99, 0x28, 0x24, 0x6c, 0x2b, 0x75, 0x5d,
                0xf8, 0xd3, 0x86, 0x17, 0xfb, 0xc0, 0x7b, 0xb3,
                0x58, 0xdb, 0xc7, 0x4b, 0xff, 0x04, 0x50, 0xe9,
                0x88, 0x69, 0xc9, 0x2a, 0xab, 0xfd, 0x5b, 0x1b,
                0x8a, 0xd9, 0xec, 0x27, 0x44, 0x0e, 0x33, 0xc8,
                0x6b, 0x93, 0x32, 0x48, 0xb6, 0x30, 0x43, 0xa5
            };

            for (int i = 0; i < bufLen; i++)
            {
                j += 1;
                k += s[j];

                temp = s[j];
                s[j] = s[k];
                s[k] = temp;

                buf[i] ^= s[(s[j] + s[k]) & 0xFF];
            }
        }
    }
}


================================================
FILE: KHSave.Archives/Ps2PsuArchive.cs
================================================
// https://github.com/root670/PS2SaveUtility/blob/master/src/PSUFile.cpp

using System;
using System.Collections.Generic;
using System.IO;
using Xe.BinaryMapper;

namespace KHSave.Archives
{
    public class Ps2PsuArchive : IArchive
    {
        private const int Alignment = 1024;

        public class Entry : IArchiveEntry
        {
            [Data] public uint Mode { get; set; }
            [Data] public uint Length { get; set; }
            [Data] public sceMcStDateTime Created { get; set; }
            [Data] public uint Cluster { get; set; }
            [Data] public uint DirIndex { get; set; }
            [Data] public sceMcStDateTime Modified { get; set; }
            [Data] public uint Attr { get; set; }
            [Data(Count = 28)] public byte[] Padding { get; set; }
            [Data(Count = 32)] public string Name { get; set; }
            [Data(Count = 0x1A0)] public byte[] Padding2 { get; set; }

            public byte[] Data { get; set; }

            public DateTime DateCreated { get => Map(Created); set => throw new NotImplementedException(); }
            public int FlagCreated { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
            public DateTime DateModified { get => Map(Modified); set => throw new NotImplementedException(); }
            public int FlagModified { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

            private static DateTime Map(sceMcStDateTime date) => new(date.Year, date.Month, date.Day, date.Hour, date.Min, date.Sec);
        }

        internal Ps2PsuArchive(int entryCount)
        {
            MaxEntryCount = entryCount;
            Entries = new List<IArchiveEntry>(MaxEntryCount);
        }

        private Ps2PsuArchive(Stream stream, int entryCount)
        {
            MaxEntryCount = entryCount;
            Entries = new List<IArchiveEntry>(MaxEntryCount);

            var header = BinaryMapping.ReadObject<Entry>(stream);
            for (int i = 0; i < header.Length; i++)
            {
                var file = BinaryMapping.ReadObject<Entry>(stream);
                file.Data = new byte[file.Length];
                stream.Read(file.Data, 0, (int)file.Length);

                var offset_shift = file.Length % Alignment;
                var pos2 = offset_shift > 0 ? stream.Position + Alignment - offset_shift : stream.Position;

                stream.Position = pos2;

                Entries.Add(file);
            }
        }

        public string Name => "PS2 PSU Archive";

        public int MaxEntryCount { get; }

        public IList<IArchiveEntry> Entries { get; }

        public void Write(Stream stream)
        {
            throw new NotImplementedException();
        }

        public static Ps2PsuArchive Read(Stream stream, int entryCount) =>
            new Ps2PsuArchive(stream, entryCount);
    }

    public class sceMcStDateTime
    {
        [Data] public byte Resv2 { get; set; }
        [Data] public byte Sec { get; set; }
        [Data] public byte Min { get; set; }
        [Data] public byte Hour { get; set; }
        [Data] public byte Day { get; set; }
        [Data] public byte Month { get; set; }
        [Data] public ushort Year { get; set; }
    }
}


================================================
FILE: KHSave.Archives/Ps3PsvArchive.cs
================================================
// https://github.com/PMStanley/PSV-Exporter/blob/master/PSVFormat.pas

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Xe.BinaryMapper;

namespace KHSave.Archives
{
    public class Ps3PsvArchive : IArchive
    {
        private class Header
        {
            [Data] public uint Magic { get; set; }
            [Data] public int Padding { get; set; }
            [Data(Count = 0x14)] public byte[] KeySeed { get; set; }
            [Data(Count = 0x14)] public byte[] Signature { get; set; }
            [Data(Count = 8)] public byte[] Padding2 { get; set; }
            [Data] public int HeaderSize { get; set; }
            [Data] public int SaveType { get; set; }
        }
        private class Ps2Header
        {
            [Data] public int DisplaySize { get; set; }
            [Data] public int SysPos { get; set; }
            [Data] public int SysSize { get; set; }
            [Data] public int Icon1Pos { get; set; }
            [Data] public int Icon1Size { get; set; }
            [Data] public int Icon2Pos { get; set; }
            [Data] public int Icon2Size { get; set; }
            [Data] public int Icon3Pos { get; set; }
            [Data] public int Icon3Size { get; set; }
            [Data] public int NumFiles { get; set; }
        }
        private class Ps2MainDirInfo
        {
            [Data] public sceMcStDateTime Created { get; set; }
            [Data] public sceMcStDateTime Modified { get; set; }
            [Data] public int NumFilesInDir { get; set; }
            [Data] public int Attr { get; set; }
            [Data(Count = 32)] public string Name { get; set; }
        }
        private class Ps2FileEntry : IArchiveEntry
        {
            [Data] public sceMcStDateTime Created { get; set; }
            [Data] public sceMcStDateTime Modified { get; set; }
            [Data] public int Size { get; set; }
            [Data] public int Attr { get; set; }
            [Data(Count = 32)] public string Name { get; set; }
            [Data] public int Offset { get; set; }

            public byte[] Data { get; set; }

            public DateTime DateCreated { get => Map(Created); set => throw new NotImplementedException(); }
            public int FlagCreated { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
            public DateTime DateModified { get => Map(Modified); set => throw new NotImplementedException(); }
            public int FlagModified { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

            private static DateTime Map(sceMcStDateTime date) => new(date.Year, date.Month, date.Day, date.Hour, date.Min, date.Sec);
        }

        internal Ps3PsvArchive()
        {
            Entries = new List<IArchiveEntry>(MaxEntryCount);
        }

        private Ps3PsvArchive(Stream stream)
        {
            Entries = new List<IArchiveEntry>(MaxEntryCount);

            var header = BinaryMapping.ReadObject<Header>(stream);

            //psv could also store ps1 saves
            //i'm ignoring that fact right now and only implement the ps2 side
            if (header.SaveType == 1)
                return;

            var ps2Header = BinaryMapping.ReadObject<Ps2Header>(stream);
            stream.Position += 0x38;

            var entries = Enumerable.Range(0, ps2Header.NumFiles)
                .Select(x => BinaryMapping.ReadObject<Ps2FileEntry>(stream, (int)stream.Position))
                .ToArray();

            foreach (var entry in entries)
            {
                stream.Position = entry.Offset;
                entry.Data = new byte[entry.Size];
                stream.Read(entry.Data, 0, entry.Size);
            }

            Entries = entries;
        }

        public string Name => "PS3 PSV";

        public int MaxEntryCount { get; }

        public IList<IArchiveEntry> Entries { get; }

        public void Write(Stream stream)
        {
            throw new NotImplementedException();
        }

        public static Ps3PsvArchive Read(Stream stream) =>
            new Ps3PsvArchive(stream);
    }
}


================================================
FILE: KHSave.Archives/Ps4SaveArchive.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Xe.BinaryMapper;

namespace KHSave.Archives
{
    internal class Ps4SaveArchive : IArchive
    {
        private const int Alignment = 0x400;

        public class Entry : IArchiveEntry
        {
            private static readonly long UnixTimeBase = new DateTime(1970, 1, 1).Ticks;

            [Data(Count = 0x40)] public string Name { get; set; }
            [Data(0x40)] public int RawDateCreated { get; set; }
            [Data(0x44)] public int FlagCreated { get; set; }
            [Data(0x48)] public int RawDateModified { get; set; }
            [Data(0x4c)] public int FlagModified { get; set; }
            [Data(0x50)] public int Length { get; set; }
            [Data(0x54)] public int SomeKindOfFlag { get; set; }

            public DateTime DateCreated { get => Map(RawDateCreated); set => RawDateCreated = Map(value); }
            public DateTime DateModified { get => Map(RawDateModified); set => RawDateModified = Map(value); }

            public byte[] Data { get; set; }

            private static DateTime Map(int ticks) => new DateTime(ticks * TimeSpan.TicksPerSecond + UnixTimeBase);
            private static int Map(DateTime dateTime) => (int)((dateTime.Ticks - UnixTimeBase) / TimeSpan.TicksPerSecond);
        }

        private readonly int _stride;

        internal Ps4SaveArchive(int entryCount, int stride)
        {
            MaxEntryCount = entryCount;
            _stride = stride;
            Entries = new List<IArchiveEntry>(MaxEntryCount);
        }

        private Ps4SaveArchive(Stream stream, int entryCount, int stride)
        {
            MaxEntryCount = entryCount;
            _stride = stride;
            var entries = Enumerable.Range(0, entryCount)
                .Select(x => BinaryMapping.ReadObject<Entry>(stream, (int)stream.Position))
                .ToArray();

            var baseOffset = stream.Position;
            foreach (var entry in entries)
            {
                stream.Position = baseOffset;
                entry.Data = new byte[entry.Length];
                stream.Read(entry.Data, 0, (int)entry.Length);

                baseOffset += _stride;
            }

            Entries = entries;
        }

        public string Name { get; internal set; } = "PS4 Save Archive";
        public int MaxEntryCount { get; }
        public IList<IArchiveEntry> Entries { get; }

        public void Write(Stream stream)
        {
            var entries = Entries
                .Select(x => new Entry
                {
                    Name = x.Name,
                    DateCreated = x.DateCreated,
                    FlagCreated = x.FlagCreated,
                    DateModified = x.DateModified,
                    FlagModified = x.FlagModified,
                    Length = x.Data.Length,
                    Data = x.Data
                })
                .Take(MaxEntryCount)
                .ToList();

            while (entries.Count < MaxEntryCount)
                entries.Add(new Entry
                {
                    Name = string.Empty,
                    Data = new byte[0]
                });

            stream.Position = 0;
            foreach (var entry in entries)
            {
                BinaryMapping.WriteObject(stream, entry, (int)stream.Position);
            }

            var baseOffset = (int)stream.Position;
            foreach (var entry in entries)
            {
                stream.Position = baseOffset;
                baseOffset += _stride;

                stream.Write(entry.Data, 0, (int)entry.Length);

                var padding = _stride - entry.Length;
                while (--padding > 0)
                    stream.WriteByte(0);
            }

            stream.SetLength(baseOffset + Alignment - (baseOffset % Alignment));
        }

        public static Ps4SaveArchive Read(Stream stream, int entryCount, int stride) =>
            new Ps4SaveArchive(stream, entryCount, stride);
    }
}


================================================
FILE: KHSave.Lib02/KHSave.Lib02.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xe.BinaryMapper" Version="1.5.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\KHSave\KHSave.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: KHSave.Lib02/Models/Objective.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using Xe.BinaryMapper;

namespace KHSave.Trssv.Models
{
    public class Objective
    {
        // bit 0: unlocked
        // bit 4: unread
        [Data] public short Flags { get; set; }
        [Data] public short Progress { get; set; }
    }
}


================================================
FILE: KHSave.Lib02/Models/PlayableCharacter.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using Xe.BinaryMapper;

namespace KHSave.Trssv.Models
{
    public class PlayableCharacter
    {
        [Data(0, 0x200)] public byte[] Data { get; set; }
        [Data(0x08C)] public int Hp { get; set; }
        [Data(0x090)] public int Mp { get; set; }
        [Data(0x094)] public int Focus { get; set; }
    }
}


================================================
FILE: KHSave.Lib02/Models/Slot.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Trssv.Types;
using System.Collections.Generic;
using Xe.BinaryMapper;

namespace KHSave.Trssv.Models
{
    public class Slot
    {
        [Data(0, 0x3B40)] public byte[] Data { get; set; }

        //[Data(0x00)] public bool IsDataExists { get; set; } // Bit 0
        //[Data(0x00)] public bool SaveClear { get; set; } // Bit 2
        [Data(0x04)] public DifficultyType Difficulty { get; set; }

        [Data(0x18)] public int Experience { get; set; }
        [Data(0x20)] public byte Level { get; set; }
        [Data(0x24)] public LocationType Location { get; set; }

        [Data(0x30)] public int EnemiesDefeated { get; set; }
        [Data(0x34)] public int StyleChangesPerformed { get; set; }
        [Data(0x3C)] public int MagicFiragaUses { get; set; }
        [Data(0x44)] public int MagicBlizzardUses { get; set; }
        [Data(0x4C)] public int MagicThundagaUses { get; set; }
        [Data(0x54)] public int MagicUnknown1Uses { get; set; }
        [Data(0x5C)] public int MagicUnknown2Uses { get; set; }
        [Data(0x64)] public int MagicCuragaUses { get; set; }

        [Data(0xA30, 52, 4)] public List<Objective> Objectives { get; set; }

        [Data(0x2384, 5, 0x200)] public List<PlayableCharacter> Pc { get; set; }

        [Data(0x2e10)] public int StoryProgression { get; set; }

        [Data(0x3324, 0x100)] public string MapPath { get; set; }
        [Data(0x3424, 0x40)] public string MapSpawn { get; set; }
        [Data(0x3464, 0x100)] public string PlayerScript { get; set; }
        [Data(0x3564, 0x100)] public string PlayerCharacter { get; set; }
        [Data(0x3664, 0x100)] public string SupportCharacter { get; set; }

        [Data(0x3a78)] public CommandType Shortcut1Circle { get; set; }
        [Data(0x3a7c)] public CommandType Shortcut1Triangle { get; set; }
        [Data(0x3a80)] public CommandType Shortcut1Square { get; set; }
        [Data(0x3a84)] public CommandType Shortcut1Cross { get; set; }
        [Data(0x3a88)] public CommandType Shortcut2Circle { get; set; }
        [Data(0x3a8c)] public CommandType Shortcut2Triangle { get; set; }
        [Data(0x3a90)] public CommandType Shortcut2Square { get; set; }
        [Data(0x3a94)] public CommandType Shortcut2Cross { get; set; }
    }
}


================================================
FILE: KHSave.Lib02/SaveKh02.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Trssv.Models;
using System.Collections.Generic;
using System.IO;
using Xe.BinaryMapper;

namespace KHSave.Trssv
{
    public class SaveKh02
    {
        [Data(0, 0x1725B0)] public byte[] Data { get; set; }

        [Data(0x10)] public bool IsVibrationEnable { get; set; }
        [Data] public bool InvertCameraVertical { get; set; }
        [Data] public bool InvertCameraHorizontal { get; set; }
        [Data] public bool IsMapVisible { get; set; }
        [Data] public bool IsSubtitlesVisible { get; set; }
        [Data] public bool Unk10_Bit5 { get; set; }
        [Data] public bool CanEarnExp { get; set; }

        [Data(0x14)] public int CameraSpeed { get; set; }

        [Data(0x18)] public int Brightness { get; set; }

        [Data(0x1C)] public int TheaterModeWatched { get; set; }

        [Data(0x38)] public int TheaterMode { get; set; }

        [Data(0xB0, 100, 0x3B40)] public List<Slot> Slots { get; set; }

        public static bool IsValid(Stream stream)
        {
            var prevPosition = stream.Position;
            var magicCode = new BinaryReader(stream).ReadInt32();
            stream.Position = prevPosition;

            return magicCode == 0x45564153; // SAVE
        }

        public void Write(Stream stream) => BinaryMapping.WriteObject(stream, this);

        public static SaveKh02 Read(Stream stream) => BinaryMapping.ReadObject<SaveKh02>(stream);
    }
}


================================================
FILE: KHSave.Lib02/Types/CommandType.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Attributes;

namespace KHSave.Trssv.Types
{
    public enum CommandType
    {
        [Info("Empty")] Empty = 0,
        [Info("Counter Blast")] CounterBlast = 26,
        [Info("Attack")] Attack = 46,
        [Info("Magic")] Magic = 49,
        [Magic("Firaga")] Firaga = 51,
        [Magic("Firaja")] Firaja = 52,
        [Magic("Blizzaga")] Blizzaga = 55,
        [Magic("Blizzaja")] Blizzaja = 56,
        [Magic("Thundaga")] Thundaga = 59,
        [Magic("Thundaja")] Thundaja = 60,
        [Magic("Curaga")] Curaga = 71,
        [Info("Items")] Items = 77,
        [Consumable("Potion")] Potion,
        [Consumable("Hi-Potion")] HiPotion,
        [Consumable("Mega-Potion")] MegaPotion,
        [Consumable("Ether")] Ether,
        [Consumable("Mega-Ether")] MegaEther,
        [Consumable("Elixir")] Elixir,
        [Consumable("Megalixir")] Megalixir,
        [Info("Talk")] Talk = 88,
        [Info("Open")] Open,
        [Info("Examine")] Examine,
        [Info("Spellweaver")] Spellweaver = 112,
        [Info("Wayfinder")] Wayfinder,
        [Info("Finish Spellweaver")] Finish1 = 134,
        [Info("Finish Wayfinder")] Finish2,
        [Info("Wayfinder (final boss)")] WayfinderAlt = 167,
        [Info("Prism Rain")] PrismRain = 210,
    }
}


================================================
FILE: KHSave.Lib02/Types/DifficultyType.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Attributes;

namespace KHSave.Trssv.Types
{
    public enum DifficultyType : byte
    {
        [Info] Beginner,
        [Info] Normal,
        [Info] Proud,
        [Info] Critical
    }
}


================================================
FILE: KHSave.Lib02/Types/LocationType.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Attributes;

namespace KHSave.Trssv.Types
{
    public enum LocationType : byte
    {
        [Info("Main Road")] Location00,
        [Info("Castle Town (variant #1)")] Location01,
        [Info("Castle Town (variant #2)")] Location02,
        [Info("Castle Town (variant #3)")] Location03,
        [Info("The World Within (variant #1)")] Location04,
        [Info("The World Within (variant #2)")] Location05,
        [Info("The World Within (variant #3)")] Location06,
        [Info("The World Within (variant #4)")] Location07,
        [Info("The World Within (variant #5)")] Location08,
        [Info("The World Within (variant #6)")] Location09,
        [Info("The World Within (variant #7)")] Location0a,
        [Info("The World Within (variant #8)")] Location0b,
        [Info("The World Within (variant #9)")] Location0c,
        [Info("The World Within (variant #10)")] Location0d,
        [Info("The World Within (variant #11)")] Location0e,
        [Info("The World Within (variant #12)")] Location0f,
        [Info("The World Within (variant #13)")] Location10,
        [Info("The World Within (variant #14)")] Location11,
        [Info("The World Within (variant #15)")] Location12,
        [Info("Uncertain Path")] Location13,
        [Info("Rocky Path (variant #1)")] Location14,
        [Info("Rocky Path (variant #2)")] Location15,
        [Info("Path's End")] Location16,
        [Info("Depths of Darkness (variant #1)")] Location17,
        [Info("Depths of Darkness (variant #2)")] Location18,
        [Info("Destiny Islands")] Location19,
    }
}


================================================
FILE: KHSave.Lib02/Types/MapType.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Attributes;

namespace KHSave.Trssv.Types
{
    public enum MapType
    {
        [MapInfo("dw_01", "Main Road")] dw_01,
        [MapInfo("dw_02", "Castle Town")] dw_02,
        [MapInfo("dw_03", "The World Within")] dw_03,
        [MapInfo("dw_04", "Inside the mirror (Road)")] dw_04,
        [MapInfo("dw_05", "Inside the mirror (Colums)")] dw_05,
        [MapInfo("dw_06", "Inside the mirror (Dwarf)")] dw_06,
        [MapInfo("dw_07", "Inside the mirror (Battle)")] dw_07,
        [MapInfo("dw_08", "Forest of Thorns")] dw_08,
        [MapInfo("dw_09", "Depths of Darkness")] dw_09,
        [MapInfo("dw_10", "Destiny Island")] dw_10,
        [MapInfo("dw_11", "Boss Rush (vs. Darkside)")] dw_11,
        [MapInfo("dw_12", "Boss Rush (Columns room)")] dw_12,
        [MapInfo("dw_58", "Opening")] dw_58,
        [MapInfo("dw_59", "dw59 (infinite loading screen)")] dw_59,
        [MapInfo("dw_60", "Ending")] dw_60,
    }
}


================================================
FILE: KHSave.Lib02/Types/SpawnType.cs
================================================
/*
    Kingdom Save Editor
    Copyright (C) 2020 Luciano Ciccariello

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using KHSave.Attributes;

namespace KHSave.Trssv.Types
{
    public enum SpawnType
    {
        [Info] dw_01_Lv_AutoSave_01,
        [Info] dw_01_Lv_AutoSave_02,
        [Info] dw_01_Lv_AutoSave_03,
        [Info] dw_01_Lv_AutoSave_04,
        [Info] dw_01_Lv_AutoSave_05,
        [Info] dw_01_Lv_AutoSave_06,
        [Info] dw_01_Lv_Debug_01,
        [Info] dw_01_Lv_Debug_02,
        [Info] dw_01_Lv_Debug_03,
        [Info] dw_01_Lv_Skip_dw004,
        [Info] dw_01_Lv_Skip_dw005,
        [Info] dw_01_Lv_Skip_dw006,
        [Info] dw_01_Lv_Skip_dw007,
        [Info] dw_01_Lv_Skip_dw008,
        [Info] dw_01_Lv_Start_01,
        [Info] dw_01_Lv_Start_04,
        [Info] dw_01_Lv_Start_05,
        [Info] dw_02_Lv_AutoSave_01,
        [Info] dw_02_Lv_AutoSave_02,
        [Info] dw_02_Lv_AutoSave_03,
        [Info] dw_02_Lv_AutoSave_04,
        [Info] dw_02_Lv_AutoSave_05,
        [Info] dw_02_Lv_AutoSave_06,
        [Info] dw_02_Lv_AutoSave_07,
        [Info] dw_02_Lv_Debug_01,
        [Info] dw_02_Lv_Debug_02,
        [Info] dw_02_Lv_Debug_03,
        [Info] dw_02_Lv_Debug_04,
        [Info] dw_02_Lv_Debug_ReStart,
        [Info] dw_02_Lv_Retry_01,
        [Info] dw_02_Lv_Save_01,
        [Info] dw_02_Lv_Skip_dw011,
        [Info] dw_02_Lv_Skip_dw012,
        [Info] dw_02_Lv_Start_01,
        [Info] dw_02_Lv_Start_02,
        [Info] dw_02_Lv_Start_03,
        [Info] dw_03_Lv_AutoSave,
        [Info] dw_03_Lv_AutoSave_01,
        [Info] dw_03_Lv_AutoSave_02,
        [Info] dw_03_Lv_AutoSave_03,
        [Info] dw_03_Lv_AutoSave_04,
        [Info] dw_03_Lv_AutoSave_05,
        [Info] dw_03_Lv_AutoSave_06,
        [Info] dw_03_Lv_AutoSave_07,
        [Info] dw_03_Lv_AutoSave_08,
        [Info] dw_03_Lv_AutoSave_09,
        [Info] dw_03_Lv_ChallengeClear,
        [Info] dw_03_Lv_Clear_dw_04,
        [Info] dw_03_Lv_Clear_dw_05,
        [Info] dw_03_Lv_Clear_dw_06,
        [Info] dw_03_Lv_Debug_01,
        [Info] dw_03_Lv_Save_01,
        [Info] dw_03_Lv_Start,
        [Info] dw_03_Lv_Start_01,
        [Info] dw_03_Lv_Start_02,
        [Info] dw_03_Lv_Start_03,
        [Info] dw_03_Lv_Start_04,
        [Info] dw_03_Lv_Start_05,
        [Info] dw_03_Lv_Start_06,
        [Info] dw_03_Lv_Start_07,
        [Info] dw_03_Lv_Start_08,
        [Info] dw_03_Lv_Start_09,
        [Info] dw_04_Lv_AutoSave_01,
        [Info] dw_04_Lv_AutoSave_02,
        [Info] dw_04_Lv_Start_01,
        [Info] dw_04_Lv_Start_02,
        [Info] dw_04_Lv_Start_03,
        [Info] dw_04_Lv_Start_04,
        [Info] dw_05_Lv_AutoSave_01,
        [Info] dw_05_Lv_AutoSave_02,
        [Info] dw_05_Lv_Returned_01,
        [Info] dw_05_Lv_Returned_02,
        [Info] dw_05_Lv_Returned_03,
        [Info] dw_05_Lv_Returned_04,
        [Info] dw_05_Lv_Start_01,
        [Info] dw_05_Lv_Start_02,
        [Info] dw_05_Lv_Start_03,
        [Info] dw_05_Lv_Start_04,
        [Info] dw_05_Normal,
        [Info] dw_06_Lv_AutoSave_01,
        [Info] dw_06_Lv_AutoSave_02,
        [Info] dw_06_Lv_AutoSave_03,
        [Info] dw_06_Lv_Restart_A1,
        [Info] dw_06_Lv_Restart_A2,
        [Info] dw_06_Lv_Restart_B,
        [Info] dw_06_Lv_Restart_C,
        [Info] dw_06_Lv_Restart_D,
        [Info] dw_06_Lv_Restart_E,
        [Info] dw_06_Lv_Restart_F,
        [Info] dw_06_Lv_Start_01,
        [Info] dw_08_debug_Start_01,
        [Info] dw_08_debug_Start_02,
        [Info] dw_08_debug_Start_03,
        [Info] dw_08_debug_Start_04,
        // [Info] dw_08_Lv_Save_03,
        [Info] dw_09_Lv_AutoSave_02,
        [Info] dw_09_Lv_Retry_01,
        [Info] dw_09_Lv_Save_01,
        [Info] dw_09_Lv_skip_dw025,
        [Info] dw_09_Lv_skip_dw026,
        [Info] dw_09_Lv_Start_01,
        [Info] dw_09_Lv_Start_02,
        [Info] dw_10_Bt_Start_02,
        [Info] dw_11_Lv_Start_01,
        [Info] dw_12_Lv_Start_01,
        [Info] dw_52_Lv_Start_01,
        [Info] dw_53_Lv_Start_01,
        [Info] dw_59_Lv_Start_01,
    }
}


================================================
FILE: KHSave.Lib1/Attributes/ArmorGummiAttribute.cs
================================================
using KHSave.Attributes;
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class ArmorGummiAttribute : GummiBlockAttribute
    {
        public ArmorGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max,
            int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {

        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/BlueprintGummiAttribute.cs
================================================
using KHSave.Attributes;
using KHSave.Lib1.Types;
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class BlueprintGummiAttribute : InfoAttribute
    {
        public GameTypes GameType { get; set; }
        public BlueprintGummiAttribute(string info, GameTypes gameType) : base(info)
        {
            GameType = gameType;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/CockpitGummiAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class CockpitGummiAttribute : GummiBlockAttribute
    {
        public CockpitGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max,
            int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {

        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/EngineGummiAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class EngineGummiAttribute : GummiBlockAttribute
    {
        public int TopSpeed { get; set; }
        public int LowSpeed { get; set; }
        public int Horsepower { get; set; }

        public EngineGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max, int topSpeed, int lowSpeed,
            int horsepower, int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {
            TopSpeed = topSpeed;
            LowSpeed = lowSpeed;
            Horsepower = horsepower;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/ExtraGummiAttribute.cs
================================================
using KHSave.Attributes;
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class ExtraGummiAttribute : InfoAttribute
    {
        public int Max { get; set; }
        public int Price { get; set; }
        public int Sell { get; set; }
        public string Description { get; set; }

        public ExtraGummiAttribute(string info, int max, int price = 0, int sell = 0, string description = null) : base(info)
        {
            Max = max;
            Price = price;
            Sell = sell;
            Description = description;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/GummiBlockAttribute.cs
================================================
using KHSave.Attributes;
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class GummiBlockAttribute : InfoAttribute
    {
        public int SizeX { get; set; }
        public int SizeY { get; set; }
        public int SizeZ { get; set; }
        public int Armor { get; set; }
        public int Max { get; set; }
        public int Price { get; set; }
        public int Sell { get; set; }
        public string Description { get; set; }

        public GummiBlockAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max,
            int price = 0, int sell = 0, string description = null) : base(info)
        {
            SizeX = sizeX;
            SizeY = sizeY;
            SizeZ = sizeZ;
            Armor = armor;
            Max = max;
            Price = price;
            Sell = sell;
            Description = description;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/SpecialGummiAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class SpecialGummiAttribute : GummiBlockAttribute
    {
        public float EnergyUse { get; set; }
        public SpecialGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max, float energyUse,
            int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {
            EnergyUse = energyUse;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/WeaponGummiAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class WeaponGummiAttribute : GummiBlockAttribute
    {
        public int Power { get; set; }
        public float PowerUse { get; set; }
        public WeaponGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max, int power, float powerUse,
            int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {
            Power = power;
            PowerUse = powerUse;
        }
    }
}


================================================
FILE: KHSave.Lib1/Attributes/WingGummiAttribute.cs
================================================
using System;
using System.Collections.Generic;
using System.Text;

namespace KHSave.Lib1.Attributes
{
    public class WingGummiAttribute : GummiBlockAttribute
    {
        public int Handling { get; set; }
        public WingGummiAttribute(string info, int sizeX, int sizeY, int sizeZ, int armor, int max, int handling,
            int price = 0, int sell = 0, string description = null) : base(info, sizeX, sizeY, sizeZ,
                armor, max, price, sell, description)
        {
            Handling = handling;
        }
    }
}


================================================
FILE: KHSave.Lib1/Constants.cs
================================================
namespace KHSave.Lib1
{
    public class Constants
    {
        public const uint MagicCodeFm = 0x05;
        public const uint MagicCodeEverythingElse = 0x04;
    }
}


================================================
FILE: KHSave.Lib1/ISaveKh1.cs
================================================
using KHSave.Lib1.Types;
using KHSave.Lib1.Models;
using System.IO;

namespace KHSave.Lib1
{
    public interface ISaveKh1
    {
        bool IsFinalMix { get; }

        uint MagicCode { get; set; }
        byte[] SharedAbilities { get; }
        CommandType ShortcutCircle { get; set; }
        CommandType ShortcutTriangle { get; set; }
        CommandType ShortcutSquare { get; set; }
        uint Munny { get; set; }
        byte Difficulty { get; set; }
        PlayableCharacterType PlayableCharacter { get; set; }
        PlayableCharacterType CompanionCharacter1 { get; set; }
        PlayableCharacterType CompanionCharacter2 { get; set; }
        PlayableCharacterType CompanionCharacter3 { get; set; }
        byte[] InventoryCount { get; set; }
        Character[] Characters { get; set; }
        WorldType World { get; set; }
        uint Room { get; set; }
        uint SpawnLocation { get; set; }

        void Write(Stream stream);
    }
}


================================================
FILE: KHSave.Lib1/KHSave.Lib1.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xe.BinaryMapper" Version="1.5.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\KHSave\KHSave.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: KHSave.Lib1/Models/Character.cs
================================================
using KHSave.Lib1.Types;
using Xe.BinaryMapper;

namespace KHSave.Lib1.Models
{
    public class Character
    {
        [Data] public byte Level { get; set; }
        [Data] public byte HpCur { get; set; }
        [Data] public byte HpMax { get; set; }
        [Data] public byte MpCur { get; set; }
        [Data] public byte MpMax { get; set; }
        [Data] public byte ApMax { get; set; }
        [Data] public byte Strength { get; set; }
        [Data] public byte Defense { get; set; }
        [Data(Count = 16)] public byte[] Unk08 { get; set; }
        [Data] public byte AccessoryCount { get; set; }
        [Data(Count = 8)] public byte[] Accessories { get; set; }
        [Data] public byte ItemCount { get; set; }
        [Data(Count = 0xC)] public byte[] Items { get; set; }
        [Data] public int Unk2e { get; set; }
        [Data] public EquipmentType Weapon { get; set; }
        [Data] public byte Unk33 { get; set; }
        [Data] public byte Unk34 { get; set; }
        [Data] public byte Unk35 { get; set; }
        [Data] public byte Unk36 { get; set; }
        [Data] public byte Unk37 { get; set; }
        [Data] public int Unk38 { get; set; }
        [Data] public int Experience { get; set; }
        [Data(Count = 0x30)] public byte[] Abilities { get; set; }
        [Data(0x70, BitIndex = 0)] public bool FireAvailable { get; set; }
        [Data(0x70, BitIndex = 1)] public bool BlizzardAvailable { get; set; }
        [Data(0x70, BitIndex = 2)] public bool ThunderAvailable { get; set; }
        [Data(0x70, BitIndex = 3)] public bool CureAvailable { get; set; }
        [Data(0x70, BitIndex = 4)] public bool GravityAvailable { get; set; }
        [Data(0x70, BitIndex = 5)] public bool StopAvailable { get; set; }
        [Data(0x70, BitIndex = 6)] public bool AeroAvailable { get; set; }
        [Data(0x71)] public byte Unk71 { get; set; }
        [Data(0x72)] public byte Unk72 { get; set; }
        [Data(0x73)] public byte Unk73 { get; set; }

    }
}


================================================
FILE: KHSave.Lib1/Models/GummiBlock.cs
================================================
using KHSave.Lib1.Types;
using System;
using Xe.BinaryMapper;

namespace KHSave.Lib1.Models
{
    public class GummiBlock
    {
        //0xYX with Y and X having a value between 0-9, A-F will place the block outside the editor
        [Data] public byte BlockPositionYX { get; set; }
        //Range 0-9
        [Data] public byte BlockPositionZ { get; set; }
        [Data] public byte Unknown2 { get; set; }
        [Data] public byte Unknown3 { get; set; }
        [Data] public GummiBlocksType BlockID { get; set; }
        [Data] public byte Unknown4 { get; set; }
        [Data] public byte Unknown5 { get; set; }
        [Data] public byte Unknown6 { get; set; }
        [Data] public byte ColorID { get; set; }
        [Data] public byte Unknown7 { get; set; }
        [Data] public byte Unknown8 { get; set; }
        [Data] public byte Unknown9 { get; set; }
    }
}


================================================
FILE: KHSave.Lib1/Models/Gummiship.cs
================================================
using KHSave.Lib1.Types;
using System.Threading;
using Xe.BinaryMapper;

namespace KHSave.Lib1.Models
{
    public class Gummiship
    {
        [Data] public byte BlocksUsed { get; set; }
        //probably the other statistics
        [Data(Count = 75)] public byte[] Unk01 { get; set; }
        [Data(Count = 10)] public byte[] ShipName { get; set; }
        [Data(Count = 22)] public byte[] Unk02 { get; set; }
        [Data(Count = 200)] public GummiBlock[] GummiBlocks { get; set; }
        [Data(Count = 1466)] public byte[] Unk03 { get; set; }
   
Download .txt
gitextract_6g8e8mkh/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-report.md
│   │   ├── feature-request.md
│   │   ├── ff7r-missing-item-name-request.md
│   │   └── ff7r-teleport-coordinates-request.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── format-code.yml
│       └── test.yml
├── .gitignore
├── .gitmodules
├── CNAME
├── KH3SaveEditor.sln
├── KHSave/
│   ├── Attributes/
│   │   ├── AbilityAttribute.cs
│   │   ├── AccessoryAttribute.cs
│   │   ├── ArmorAttribute.cs
│   │   ├── BoostAttribute.cs
│   │   ├── CombatStyleAttribute.cs
│   │   ├── CommandAttribute.cs
│   │   ├── ConsumableAttribute.cs
│   │   ├── FoodAttribute.cs
│   │   ├── FormAttribute.cs
│   │   ├── GummiBlockAttribute.cs
│   │   ├── InfoAttribute.cs
│   │   ├── IngredientAttribute.cs
│   │   ├── KeyItemAttribute.cs
│   │   ├── KeybladeAttribute.cs
│   │   ├── LinkAttribute.cs
│   │   ├── MagicAttribute.cs
│   │   ├── ManuscriptAttribute.cs
│   │   ├── MapAttribute.cs
│   │   ├── MapInfo.cs
│   │   ├── MateriaAttribute.cs
│   │   ├── MogItemAttribute.cs
│   │   ├── MoneyAttribute.cs
│   │   ├── RecipeAttribute.cs
│   │   ├── ReportAttribute.cs
│   │   ├── ShieldAttribute.cs
│   │   ├── SnackAttribute.cs
│   │   ├── StaffAttribute.cs
│   │   ├── SummonAttribute.cs
│   │   ├── SynthesisAttribute.cs
│   │   ├── TentAttribute.cs
│   │   ├── TrackAttribute.cs
│   │   ├── UnusedAttribute.cs
│   │   ├── WeaponAttribute.cs
│   │   └── WorldInfoAttribute.cs
│   ├── Extensions/
│   │   ├── AttributeExtensions.cs
│   │   ├── BitExtensions.cs
│   │   └── DateTimeExtensions.cs
│   ├── KHSave.csproj
│   ├── Services/
│   │   ├── CacheService.cs
│   │   └── TransferServiceLL.cs
│   └── StreamHelpers.cs
├── KHSave.Archives/
│   ├── ArchiveFactories.cs
│   ├── Factories/
│   │   ├── PcKh1Factory.cs
│   │   ├── PcKh2Factory.cs
│   │   ├── PcKhBbsFactory.cs
│   │   ├── PcKhDddFactory.cs
│   │   ├── PcKhRecomFactory.cs
│   │   ├── Ps2CbsFactory.cs
│   │   ├── Ps2PsuFactory.cs
│   │   ├── Ps3PsvFactory.cs
│   │   ├── Ps4Kh1Factory.cs
│   │   ├── Ps4Kh2Factory.cs
│   │   ├── Ps4KhDddFactory.cs
│   │   └── Ps4KhRecomFactory.cs
│   ├── IArchive.cs
│   ├── IArchiveEntry.cs
│   ├── IArchiveFactory.cs
│   ├── KHSave.Archives.csproj
│   ├── PcSaveArchive.cs
│   ├── Ps2CbsArchive.cs
│   ├── Ps2PsuArchive.cs
│   ├── Ps3PsvArchive.cs
│   └── Ps4SaveArchive.cs
├── KHSave.Lib02/
│   ├── KHSave.Lib02.csproj
│   ├── Models/
│   │   ├── Objective.cs
│   │   ├── PlayableCharacter.cs
│   │   └── Slot.cs
│   ├── SaveKh02.cs
│   └── Types/
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── LocationType.cs
│       ├── MapType.cs
│       └── SpawnType.cs
├── KHSave.Lib1/
│   ├── Attributes/
│   │   ├── ArmorGummiAttribute.cs
│   │   ├── BlueprintGummiAttribute.cs
│   │   ├── CockpitGummiAttribute.cs
│   │   ├── EngineGummiAttribute.cs
│   │   ├── ExtraGummiAttribute.cs
│   │   ├── GummiBlockAttribute.cs
│   │   ├── SpecialGummiAttribute.cs
│   │   ├── WeaponGummiAttribute.cs
│   │   └── WingGummiAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKh1.cs
│   ├── KHSave.Lib1.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   ├── GummiBlock.cs
│   │   └── Gummiship.cs
│   ├── SaveKh1.EU.cs
│   ├── SaveKh1.FinalMix.cs
│   ├── SaveKh1.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── EquipmentType.cs
│       ├── GameTypes.cs
│       ├── GummiBlocksType.cs
│       ├── PlayableCharacterType.cs
│       └── WorldType.cs
├── KHSave.Lib2/
│   ├── Constants.cs
│   ├── ISaveKh2.cs
│   ├── KHSave.Lib2.csproj
│   ├── Models/
│   │   ├── CharacterFinalMix.cs
│   │   ├── CharacterVanilla.cs
│   │   ├── DriveFormFinalMix.cs
│   │   ├── DriveFormVanilla.cs
│   │   ├── ICharacter.cs
│   │   ├── IDriveForm.cs
│   │   ├── IPlaceScript.cs
│   │   ├── PartyMembers.cs
│   │   ├── PlaceScriptFinalMix.cs
│   │   ├── PlaceScriptVanilla.cs
│   │   └── Progress.cs
│   ├── SaveKh2.European.cs
│   ├── SaveKh2.FinalMix.cs
│   ├── SaveKh2.TransferMappings.cs
│   ├── SaveKh2.cs
│   └── Types/
│       ├── AbilityStyleType.cs
│       ├── BattleStyleType.cs
│       ├── CharacterType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── DriveFormType.cs
│       ├── EquipmentType.cs
│       ├── GameType.cs
│       ├── InventoryType.cs
│       ├── PlayableCharacterType.cs
│       └── WorldType.cs
├── KHSave.Lib3/
│   ├── ISaveKh3.cs
│   ├── KHSave.Lib3.csproj
│   ├── Models/
│   │   ├── Ability.cs
│   │   ├── AiModel.cs
│   │   ├── EquipmentItem.cs
│   │   ├── FlantasticRecord.cs
│   │   ├── InventoryEntry.cs
│   │   ├── MagicGroup.cs
│   │   ├── PhotoEntry.cs
│   │   ├── PlayableCharacter.cs
│   │   ├── Records.cs
│   │   └── ShortcutGroup.cs
│   ├── Presets/
│   │   ├── Preset.Pawn.cs
│   │   ├── Presets.Map.cs
│   │   └── Presets.Story.cs
│   ├── SaveKh3.cs
│   ├── SaveKh3u109.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── AccessoryType.cs
│       ├── AiAbilityType.cs
│       ├── AiCombatStyleType.cs
│       ├── AiRecoveryType.cs
│       ├── ArmorType.cs
│       ├── CharacterIconType.cs
│       ├── ChoiceType.cs
│       ├── CommandType.cs
│       ├── ConsumableType.cs
│       ├── DifficultyType.cs
│       ├── FoodType.cs
│       ├── InventoryType.cs
│       ├── ItemType.cs
│       ├── KeyItemType.cs
│       ├── LocationType.cs
│       ├── MaterialType.cs
│       ├── MogType.cs
│       ├── PartyCharacter.cs
│       ├── PlayableCharacterType.cs
│       ├── RecordAttractionType.cs
│       ├── RecordShotlockType.cs
│       ├── SnackType.cs
│       ├── StoryFlagType.cs
│       ├── StoryLabelType.cs
│       ├── SyntesisType.cs
│       ├── TentType.cs
│       ├── WeaponType.cs
│       └── WorldType.cs
├── KHSave.LibBbs/
│   ├── Attributes/
│   │   ├── AbilityAttribute.cs
│   │   ├── ActionAttribute.cs
│   │   ├── CommandAttribute.cs
│   │   └── CommandStyleAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKhBbs.cs
│   ├── KHSave.LibBbs.csproj
│   ├── Models/
│   │   ├── Ability.cs
│   │   ├── Character.cs
│   │   ├── Command.cs
│   │   ├── Deck.cs
│   │   ├── Dlink.cs
│   │   └── Finisher.cs
│   ├── SaveKhBbs.European.cs
│   ├── SaveKhBbs.FinalMix.cs
│   ├── SaveKhBbs.cs
│   └── Types/
│       ├── AbilityType.cs
│       ├── CharacterType.cs
│       ├── CommandType.cs
│       ├── DifficultyType.cs
│       ├── WeaponType.cs
│       └── WorldType.cs
├── KHSave.LibDDD/
│   ├── Attributes/
│   │   ├── CommandAttributes.cs
│   │   ├── DreamPiecesAttribute.cs
│   │   ├── GlossaryAttribute.cs
│   │   ├── MementoEntriesAttribute.cs
│   │   ├── TrainingToysAttribute.cs
│   │   └── TrainingToysFoodAttribute.cs
│   ├── Constants.cs
│   ├── ISaveKhDDD.cs
│   ├── KHSave.LibDDD.csproj
│   ├── Model/
│   │   ├── CommandEntry.cs
│   │   ├── Deck.cs
│   │   ├── DeckPS4.cs
│   │   ├── DreamEater.cs
│   │   └── IDeck.cs
│   ├── SaveKhDDD.3DS.cs
│   ├── SaveKhDDD.PS4.cs
│   ├── SaveKhDDD.cs
│   └── Types/
│       ├── DifficultyType.cs
│       ├── DreamEaterType.cs
│       ├── EquipmentType.cs
│       └── WorldType.cs
├── KHSave.LibFf7Remake/
│   ├── Chunks/
│   │   ├── Chunk.cs
│   │   ├── ChunkChapter.cs
│   │   └── ChunkCommon.cs
│   ├── KHSave.LibFf7Remake.csproj
│   ├── Models/
│   │   ├── ChapterObject.cs
│   │   ├── Character.cs
│   │   ├── CharacterEquipment.cs
│   │   ├── CharacterStats.cs
│   │   ├── Inventory.cs
│   │   ├── Materia.cs
│   │   ├── MateriaEquipment.cs
│   │   ├── UnknownStructure.cs
│   │   ├── UnknownStructure2.cs
│   │   ├── UnknownStructure3.cs
│   │   ├── Vector3f.cs
│   │   └── WeaponFound.cs
│   ├── SaveFf7Remake.cs
│   └── Types/
│       ├── CharacterStatusType.cs
│       ├── CharacterType.cs
│       ├── InventoryType.cs
│       └── ItemCategory.cs
├── KHSave.LibPersona3/
│   ├── KHSave.LibPersona3.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   ├── Persona.cs
│   │   ├── SocialLinks.cs
│   │   └── SocialLinksPortable.cs
│   ├── Presets.cs
│   ├── SavePersona3.cs
│   └── Types/
│       ├── ArcanaType.cs
│       ├── Characters.cs
│       ├── Demon.cs
│       ├── ExpendableItems.cs
│       ├── Inventory.cs
│       └── Skill.cs
├── KHSave.LibPersona5/
│   ├── KHSave.LibPersona5.csproj
│   ├── Models/
│   │   ├── Character.cs
│   │   └── Persona.cs
│   ├── Persona5Royal.cs
│   ├── Persona5Vanilla.cs
│   ├── Presets.Items.cs
│   ├── Presets.Persona.cs
│   ├── Presets.cs
│   ├── Resources/
│   │   └── Persona5/
│   │       ├── Royal_AccessoryNames.txt
│   │       ├── Royal_ArmorNames.txt
│   │       ├── Royal_ConsumableItemNames.txt
│   │       ├── Royal_Demon.txt
│   │       ├── Royal_KeyItemNames.txt
│   │       ├── Royal_MaterialNames.txt
│   │       ├── Royal_MeleeWeaponNames.txt
│   │       ├── Royal_OutfitNames.txt
│   │       ├── Royal_RangedWeaponNames.txt
│   │       ├── Royal_SkillCardNames.txt
│   │       ├── Royal_SkillNames.txt
│   │       ├── Royal_Traits.txt
│   │       ├── Vanilla_AccessoryNames.txt
│   │       ├── Vanilla_ArmorNames.txt
│   │       ├── Vanilla_ConsumableItemNames.txt
│   │       ├── Vanilla_Demon.txt
│   │       ├── Vanilla_KeyItemNames.txt
│   │       ├── Vanilla_MaterialNames.txt
│   │       ├── Vanilla_MeleeWeaponNames.txt
│   │       ├── Vanilla_OutfitNames.txt
│   │       ├── Vanilla_RangedWeaponNames.txt
│   │       ├── Vanilla_SkillCardNames.txt
│   │       └── Vanilla_SkillNames.txt
│   ├── SavePersona5.cs
│   └── Types/
│       ├── ArcanaType.cs
│       ├── Characters.cs
│       ├── Demon.cs
│       ├── Equipment.cs
│       ├── Inventory.cs
│       ├── Skill.cs
│       ├── SkillRoyal.cs
│       └── Trait.cs
├── KHSave.LibRecom/
│   ├── Attributes/
│   │   ├── CardEnemyAttribute.cs
│   │   ├── CardFriendAttribute.cs
│   │   ├── CardItemAttribute.cs
│   │   ├── CardMagicAttribute.cs
│   │   ├── CardMapAttribute.cs
│   │   ├── CardSpecialAttribute.cs
│   │   ├── CardSummonAttribute.cs
│   │   ├── CardWeaponAttribute.cs
│   │   └── CardWorldAttribute.cs
│   ├── DataRecom.cs
│   ├── DataRecomMcWork.cs
│   ├── DataRecomTable0.cs
│   ├── DataRecomTable1.cs
│   ├── DataRecomTable2.cs
│   ├── KHSave.LibRecom.csproj
│   ├── Models/
│   │   ├── Card.cs
│   │   ├── CardFlags.cs
│   │   ├── CardModel.cs
│   │   ├── FriendsFlags.cs
│   │   ├── Kh2CardFlags.cs
│   │   ├── PoohFlags.cs
│   │   ├── SkillFlags.cs
│   │   ├── StoryFlag.cs
│   │   └── TutorialFlags.cs
│   ├── SaveKhRecom.cs
│   └── Types/
│       ├── CardType.cs
│       ├── Difficulty.cs
│       ├── PlayMode.cs
│       └── SoundMode.cs
├── KHSave.SaveEditor/
│   ├── App.config
│   ├── App.manifest
│   ├── App.xaml
│   ├── App.xaml.cs
│   ├── Interfaces/
│   │   ├── IAlertMessage.cs
│   │   ├── IApplicationStartup.cs
│   │   ├── IFileDialogManager.cs
│   │   ├── IReporter.cs
│   │   ├── IUpdater.cs
│   │   └── IWindowManager.cs
│   ├── KHSave.SaveEditor.csproj
│   ├── Models/
│   │   ├── PatreonInfo.cs
│   │   ├── PatronModel.cs
│   │   ├── ServiceMessage.cs
│   │   └── SponsorshipInfo.cs
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── Services/
│   │   ├── AlertMessage.cs
│   │   ├── ContentFactory.cs
│   │   ├── DesktopAppIdentity.cs
│   │   ├── FileDialogManager.cs
│   │   ├── IAppIdentity.cs
│   │   ├── PatreonService.cs
│   │   ├── Pcsx2MemoryService.cs
│   │   ├── ReporterService.cs
│   │   ├── TransferService.cs
│   │   ├── UpdaterService.cs
│   │   └── WindowManager.cs
│   ├── StyledControls.xaml
│   ├── VersionCheck/
│   │   └── DesktopCheckCurrentVersion.cs
│   ├── ViewModels/
│   │   ├── HomeViewModel.cs
│   │   ├── MainWindowViewModel.cs
│   │   └── PatronViewModel.cs
│   ├── Views/
│   │   ├── AttachToPcsx2GameWindow.xaml
│   │   ├── AttachToPcsx2GameWindow.xaml.cs
│   │   ├── AttachToProcessWindow.xaml
│   │   ├── AttachToProcessWindow.xaml.cs
│   │   ├── HomeView.xaml
│   │   ├── HomeView.xaml.cs
│   │   ├── MainWindow.xaml
│   │   ├── MainWindow.xaml.cs
│   │   ├── PatronView.xaml
│   │   ├── PatronView.xaml.cs
│   │   ├── ServiceMessageView.xaml
│   │   ├── ServiceMessageView.xaml.cs
│   │   ├── UpdateWindow.xaml
│   │   └── UpdateWindow.xaml.cs
│   └── packages.config
├── KHSave.SaveEditor.Common/
│   ├── Contracts/
│   │   ├── IGetSave.cs
│   │   ├── IOpenStream.cs
│   │   ├── IRefreshUi.cs
│   │   └── IWriteToStream.cs
│   ├── Controls/
│   │   ├── ItemComboBox.xaml
│   │   ├── ItemComboBox.xaml.cs
│   │   └── TwoEqualColumnsStackPanel.cs
│   ├── Exceptions/
│   │   ├── ImageTooLargeException.cs
│   │   ├── SaveNotSupportedException.cs
│   │   └── VisualException.cs
│   ├── Global.cs
│   ├── KHSave.SaveEditor.Common.csproj
│   ├── Models/
│   │   ├── EnumIconTypeModel.cs
│   │   ├── GenericEntryModel.cs
│   │   ├── GenericEnumListModel.cs
│   │   ├── GenericListModel.cs
│   │   ├── ItemComboBoxModel.cs
│   │   └── KhEnumListModel.cs
│   ├── ProcessStream.cs
│   ├── Services/
│   │   ├── ArchiveWriteToStream.cs
│   │   ├── GenericEqualityComparer.cs
│   │   ├── IconService.cs
│   │   └── SearchEngine.cs
│   ├── ViewModels/
│   │   ├── ArchiveEntryViewModel.cs
│   │   └── ArchiveManagerViewModel.cs
│   └── Views/
│       ├── ArchiveManagerView.xaml
│       └── ArchiveManagerView.xaml.cs
├── KHSave.SaveEditor.Ff7Remake/
│   ├── Data/
│   │   ├── BgmPreset.cs
│   │   ├── ItemsPreset.cs
│   │   └── LocationsPreset.cs
│   ├── KHSave.SaveEditor.Ff7Remake.csproj
│   ├── KHSave.SaveEditor.Ff7Remake_x53vqark_wpftmp.csproj
│   ├── Models/
│   │   ├── BgmModel.cs
│   │   ├── ChapterCharacterEntryModel.cs
│   │   ├── ChapterEntryModel.cs
│   │   ├── ChapterObjectEntry.cs
│   │   ├── CharacterEntryModel.cs
│   │   ├── ChunkEntryModel.cs
│   │   ├── EquipmentEntryModel.cs
│   │   ├── InventroyEntryModel.cs
│   │   ├── ItemModel.cs
│   │   └── MateriaEntryModel.cs
│   ├── ViewModels/
│   │   ├── ChaptersViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── DeveloperViewModel.cs
│   │   ├── EquipmentsViewModel.cs
│   │   ├── FF7RMainViewModel.cs
│   │   ├── GlobalViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── MateriaViewModel.cs
│   │   ├── TeleportViewModel.cs
│   │   ├── Unknown1ViewModel.cs
│   │   ├── Unknown2ViewModel.cs
│   │   └── Unknown3ViewModel.cs
│   └── Views/
│       ├── ChapterEntryView.xaml
│       ├── ChapterEntryView.xaml.cs
│       ├── ChapterMainView.xaml
│       ├── ChapterMainView.xaml.cs
│       ├── ChapterObjectsView.xaml
│       ├── ChapterObjectsView.xaml.cs
│       ├── ChapterPlayableView.xaml
│       ├── ChapterPlayableView.xaml.cs
│       ├── ChaptersView.xaml
│       ├── ChaptersView.xaml.cs
│       ├── CharacterEntryView.xaml
│       ├── CharacterEntryView.xaml.cs
│       ├── CharactersView.xaml
│       ├── CharactersView.xaml.cs
│       ├── DeveloperView.xaml
│       ├── DeveloperView.xaml.cs
│       ├── EquipmentEntryView.xaml
│       ├── EquipmentEntryView.xaml.cs
│       ├── EquipmentsView.xaml
│       ├── EquipmentsView.xaml.cs
│       ├── FF7RMainView.xaml
│       ├── FF7RMainView.xaml.cs
│       ├── GlobalView.xaml
│       ├── GlobalView.xaml.cs
│       ├── InventoryEntryView.xaml
│       ├── InventoryEntryView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── MateriaEntryView.xaml
│       ├── MateriaEntryView.xaml.cs
│       ├── MateriaView.xaml
│       ├── MateriaView.xaml.cs
│       ├── PositionView.xaml
│       ├── PositionView.xaml.cs
│       ├── TeleportWindow.xaml
│       ├── TeleportWindow.xaml.cs
│       ├── Unknown1View.xaml
│       ├── Unknown1View.xaml.cs
│       ├── Unknown2View.xaml
│       ├── Unknown2View.xaml.cs
│       ├── Unknown3View.xaml
│       └── Unknown3View.xaml.cs
├── KHSave.SaveEditor.Kh02/
│   ├── KHSave.SaveEditor.Kh02.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── SlotListModel.cs
│   ├── ViewModels/
│   │   ├── GlobalSystemViewModel.cs
│   │   ├── Kh02ViewModel.cs
│   │   └── SlotViewModel.cs
│   └── Views/
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Kh1/
│   ├── Interfaces/
│   │   └── IGetAbilities.cs
│   ├── KHSave.SaveEditor.Kh1.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── InventoryItemModel.cs
│   ├── Service/
│   │   ├── EquipmentManagerFactory.cs
│   │   └── IEquipmentManager.cs
│   ├── ViewModels/
│   │   ├── AbilityViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh1ViewModel.cs
│   │   ├── PlayerViewModel.cs
│   │   ├── PlayersViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── AbilityView.xaml
│       ├── AbilityView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Kh2/
│   ├── Data/
│   │   └── Rooms.cs
│   ├── Interfaces/
│   │   └── IResourceGetter.cs
│   ├── KHSave.SaveEditor.Kh2.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   ├── AbilityModel.cs
│   │   ├── InventoryItemModel.cs
│   │   ├── MapScriptModel.cs
│   │   ├── ProgressModel.cs
│   │   └── RoomModel.cs
│   ├── Service/
│   │   ├── EquipmentManagerFactory.cs
│   │   └── IEquipmentManager.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── DriveFormsViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh2ViewModel.cs
│   │   ├── ProgressViewModel.cs
│   │   ├── RoomViewModel.cs
│   │   ├── RoomVisitedViewModel.cs
│   │   ├── SystemViewModel.cs
│   │   └── WorldsViewModel.cs
│   └── Views/
│       ├── DriveFormView.xaml
│       ├── DriveFormView.xaml.cs
│       ├── DriveFormsView.xaml
│       ├── DriveFormsView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── ProgressView.xaml
│       ├── ProgressView.xaml.cs
│       ├── RoomVisitedView.xaml
│       ├── RoomVisitedView.xaml.cs
│       ├── SystemView.xaml
│       ├── SystemView.xaml.cs
│       ├── WorldView.xaml
│       ├── WorldView.xaml.cs
│       ├── WorldsView.xaml
│       └── WorldsView.xaml.cs
├── KHSave.SaveEditor.Kh3/
│   ├── KHSave.SaveEditor.Kh3.csproj
│   ├── KHSave.SaveEditor.Kh3_kwhjhtac_wpftmp.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   ├── AttractionRecordItemModel.cs
│   │   ├── EquipmentItemEntryViewModel.cs
│   │   ├── FlantasticModel.cs
│   │   ├── InventoryItemViewModel.cs
│   │   ├── MapViewModel.cs
│   │   ├── MaterialModel.cs
│   │   ├── RecordAttractionListModel.cs
│   │   ├── RecordShotlockListModel.cs
│   │   ├── ShotlockRecordItemModel.cs
│   │   └── SpawnModel.cs
│   ├── ViewModels/
│   │   ├── AbilitiesViewModel.cs
│   │   ├── EquipmentItemsViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Kh3ViewModel.cs
│   │   ├── MaterialsViewModel.cs
│   │   ├── PartyViewModel.cs
│   │   ├── PhotoEntryViewModel.cs
│   │   ├── PhotosViewModel.cs
│   │   ├── PlayerViewModel.cs
│   │   ├── PlayersViewModel.cs
│   │   ├── RecordsViewModel.cs
│   │   ├── ShortcutsViewModel.cs
│   │   ├── StoryViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── EquipmentItemEntryView.xaml
│       ├── EquipmentItemEntryView.xaml.cs
│       ├── EquipmentItemsView.xaml
│       ├── EquipmentItemsView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── MaterialsView.xaml
│       ├── MaterialsView.xaml.cs
│       ├── PartyView.xaml
│       ├── PartyView.xaml.cs
│       ├── PhotosView.xaml
│       ├── PhotosView.xaml.cs
│       ├── PlayerAbilityView.xaml
│       ├── PlayerAbilityView.xaml.cs
│       ├── PlayerEquipmentView.xaml
│       ├── PlayerEquipmentView.xaml.cs
│       ├── PlayerStatusView.xaml
│       ├── PlayerStatusView.xaml.cs
│       ├── PlayerView.xaml
│       ├── PlayerView.xaml.cs
│       ├── PlayersView.xaml
│       ├── PlayersView.xaml.cs
│       ├── RecordMinigamesView.xaml
│       ├── RecordMinigamesView.xaml.cs
│       ├── RecordsView.xaml
│       ├── RecordsView.xaml.cs
│       ├── ShortcutsView.xaml
│       ├── ShortcutsView.xaml.cs
│       ├── StoryView.xaml
│       ├── StoryView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhBbs/
│   ├── KHSave.SaveEditor.KhBbs.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── CommandListModel.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CommandListViewModel.cs
│   │   ├── CommandViewModel.cs
│   │   ├── DeckViewModel.cs
│   │   ├── DecksViewModel.cs
│   │   ├── KhBbsViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CharacterView.xaml
│       ├── CharacterView.xaml.cs
│       ├── CommandListView.xaml
│       ├── CommandListView.xaml.cs
│       ├── CommandView.xaml
│       ├── CommandView.xaml.cs
│       ├── DeckView.xaml
│       ├── DeckView.xaml.cs
│       ├── DecksView.xaml
│       ├── DecksView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhDDD/
│   ├── Interfaces/
│   │   └── IResourceGetter.cs
│   ├── KHSave.SaveEditor.KhDDD.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── ViewModels/
│   │   ├── CharacterViewModel.cs
│   │   ├── CommandsViewModel.cs
│   │   ├── DeckViewModel.cs
│   │   ├── DecksViewModel.cs
│   │   ├── DreamEaterViewModel.cs
│   │   ├── DreamEatersViewModel.cs
│   │   ├── KhDDDViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── Character.xaml
│       ├── Character.xaml.cs
│       ├── CommandsView.xaml
│       ├── CommandsView.xaml.cs
│       ├── Deck.xaml
│       ├── Deck.xaml.cs
│       ├── Decks.xaml
│       ├── Decks.xaml.cs
│       ├── DreamEater.xaml
│       ├── DreamEater.xaml.cs
│       ├── DreamEaters.xaml
│       ├── DreamEaters.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.KhRecom/
│   ├── Constants.cs
│   ├── Interfaces/
│   │   └── ICardCountService.cs
│   ├── KHSave.SaveEditor.KhRecom.csproj
│   ├── MainView.xaml
│   ├── MainView.xaml.cs
│   ├── Models/
│   │   └── CardIndex.cs
│   ├── ViewModels/
│   │   ├── CardInventoryEntryViewModel.cs
│   │   ├── CardInventoryViewModel.cs
│   │   ├── KhRecomViewModel.cs
│   │   ├── ProgressViewModel.cs
│   │   ├── SettingsViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CardInventoryEntryView.xaml
│       ├── CardInventoryEntryView.xaml.cs
│       ├── CardInventoryView.xaml
│       ├── CardInventoryView.xaml.cs
│       ├── ProgressView.xaml
│       ├── ProgressView.xaml.cs
│       ├── SettingsView.xaml
│       ├── SettingsView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.SaveEditor.Persona3/
│   ├── Interfaces/
│   │   ├── IPersonaList.cs
│   │   └── ISkillList.cs
│   ├── KHSave.SaveEditor.Persona3.csproj
│   ├── Models/
│   │   ├── PersonaModel.cs
│   │   └── SkillModel.cs
│   ├── ViewModels/
│   │   ├── CompendiumViewModel.cs
│   │   ├── Persona3MainViewModel.cs
│   │   └── PersonaViewModel.cs
│   └── Views/
│       ├── CompendiumView.xaml
│       ├── CompendiumView.xaml.cs
│       ├── Persona3MainView.xaml
│       ├── Persona3MainView.xaml.cs
│       ├── PersonaView.xaml
│       └── PersonaView.xaml.cs
├── KHSave.SaveEditor.Persona5/
│   ├── Interfaces/
│   │   ├── IConsumableList.cs
│   │   ├── IEquipmentList.cs
│   │   ├── IPersonaList.cs
│   │   └── ISkillList.cs
│   ├── KHSave.SaveEditor.Persona5.csproj
│   ├── Models/
│   │   └── EquipmentModel.cs
│   ├── ViewModels/
│   │   ├── CharacterEntryViewModel.cs
│   │   ├── CharactersViewModel.cs
│   │   ├── CompendiumViewModel.cs
│   │   ├── InventoryViewModel.cs
│   │   ├── Persona5MainViewModel.cs
│   │   ├── PersonaEntryViewModel.cs
│   │   ├── PersonaViewModel.cs
│   │   ├── RoomViewModel.cs
│   │   ├── SkillViewModel.cs
│   │   └── SystemViewModel.cs
│   └── Views/
│       ├── CharacterView.xaml
│       ├── CharacterView.xaml.cs
│       ├── CharactersView.xaml
│       ├── CharactersView.xaml.cs
│       ├── CompendiumView.xaml
│       ├── CompendiumView.xaml.cs
│       ├── InventoryView.xaml
│       ├── InventoryView.xaml.cs
│       ├── Persona5MainView.xaml
│       ├── Persona5MainView.xaml.cs
│       ├── PersonaView.xaml
│       ├── PersonaView.xaml.cs
│       ├── SystemView.xaml
│       └── SystemView.xaml.cs
├── KHSave.Tests/
│   ├── Ff7RemakeTests.cs
│   ├── Helpers.cs
│   ├── KHSave.Tests.csproj
│   ├── Kh1Tests.cs
│   ├── Kh2Tests.cs
│   ├── Kh3Test.cs
│   ├── KhBbsTests.cs
│   ├── KhDDDTests.cs
│   ├── PcArchiveTests.cs
│   ├── Persona3Tests.cs
│   ├── Persona5Tests.cs
│   ├── Ps4SaveArchiveTests.cs
│   ├── RecomTests.cs
│   ├── Saves/
│   │   ├── BASLUS-21569Save2
│   │   ├── BASLUS-21799COM-02
│   │   ├── BISLPM-66676COM-01
│   │   ├── BISLPS-25198-05
│   │   ├── ff7remake000
│   │   ├── ff7remake007
│   │   └── kh02.sav
│   ├── TransferTests.cs
│   └── TrssvTest.cs
├── LICENSE
├── README.md
├── Tooling.MemoryWatcher/
│   ├── Configuration.cs
│   ├── ProcessStream.cs
│   ├── Program.cs
│   ├── Tooling.MemoryWatcher.csproj
│   └── config.yml
├── WindowsStoreSubmission/
│   ├── Package.appxmanifest
│   └── WindowsStoreSubmission.wapproj
├── _config.yml
├── assets/
│   ├── banner.psd
│   ├── banner_new.psd
│   ├── card.psd
│   ├── coin.psd
│   ├── icon-circular.psd
│   └── icon.psd
├── docs/
│   └── decryption.md
├── manifests/
│   └── x/
│       └── Xeeynamo/
│           └── KingdomSaveEditor/
│               └── 1.15.1/
│                   └── Xeeynamo.KingdomSaveEditor.yml
└── resources/
    ├── ff7r-meta-bgm.yml
    ├── ff7r-meta-items.yml
    └── ff7r-meta-locations.yml
Download .txt
SYMBOL INDEX (2032 symbols across 582 files)

FILE: KHSave.Archives/ArchiveFactories.cs
  class ArchiveFactories (line 24) | public static class ArchiveFactories
    method TryGetFactory (line 41) | public static bool TryGetFactory(Stream stream, out IArchiveFactory ar...

FILE: KHSave.Archives/Factories/PcKh1Factory.cs
  class PcKh1Factory (line 5) | internal class PcKh1Factory : IArchiveFactory
    method Create (line 15) | public IArchive Create() => new PcSaveArchive(EntryCount, Stride);
    method CreateEntry (line 17) | public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();
    method IsValid (line 19) | public bool IsValid(Stream stream) => stream.Length == Size;
    method Read (line 21) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/PcKh2Factory.cs
  class PcKh2Factory (line 5) | internal class PcKh2Factory : IArchiveFactory
    method Create (line 15) | public IArchive Create() => new PcSaveArchive(EntryCount, Stride);
    method CreateEntry (line 17) | public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();
    method IsValid (line 19) | public bool IsValid(Stream stream) => stream.Length == Size;
    method Read (line 21) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/PcKhBbsFactory.cs
  class PcKhBbsactory (line 23) | public class PcKhBbsactory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();

FILE: KHSave.Archives/Factories/PcKhDddFactory.cs
  class PcKhDddFactory (line 23) | public class PcKhDddFactory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();

FILE: KHSave.Archives/Factories/PcKhRecomFactory.cs
  class PcKhRecomFactory (line 5) | internal class PcKhRecomFactory : IArchiveFactory
    method Create (line 15) | public IArchive Create() => new PcSaveArchive(EntryCount, Stride);
    method CreateEntry (line 17) | public IArchiveEntry CreateEntry() => new PcSaveArchive.Entry();
    method IsValid (line 19) | public bool IsValid(Stream stream) => stream.Length == Size;
    method Read (line 21) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/Ps2CbsFactory.cs
  class Ps2CbsFactory (line 10) | public class Ps2CbsFactory : IArchiveFactory
    method Create (line 16) | public IArchive Create()
    method CreateEntry (line 21) | public IArchiveEntry CreateEntry()
    method IsValid (line 26) | public bool IsValid(Stream stream)
    method Read (line 36) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/Ps2PsuFactory.cs
  class Ps2PsuFactory (line 10) | public class Ps2PsuFactory : IArchiveFactory
    method Create (line 16) | public IArchive Create()
    method CreateEntry (line 21) | public IArchiveEntry CreateEntry()
    method IsValid (line 26) | public bool IsValid(Stream stream)
    method Read (line 41) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/Ps3PsvFactory.cs
  class Ps3PsvFactory (line 6) | public class Ps3PsvFactory : IArchiveFactory
    method Create (line 12) | public IArchive Create()
    method CreateEntry (line 17) | public IArchiveEntry CreateEntry()
    method IsValid (line 22) | public bool IsValid(Stream stream)
    method Read (line 32) | public IArchive Read(Stream stream)

FILE: KHSave.Archives/Factories/Ps4Kh1Factory.cs
  class Ps4Kh1Factory (line 23) | internal class Ps4Kh1Factory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();

FILE: KHSave.Archives/Factories/Ps4Kh2Factory.cs
  class Ps4Kh2Factory (line 23) | internal class Ps4Kh2Factory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();

FILE: KHSave.Archives/Factories/Ps4KhDddFactory.cs
  class Ps4KhDddFactory (line 23) | public class Ps4KhDddFactory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();

FILE: KHSave.Archives/Factories/Ps4KhRecomFactory.cs
  class Ps4KhRecomFactory (line 23) | public class Ps4KhRecomFactory : IArchiveFactory
    method Create (line 33) | public IArchive Create() =>
    method Read (line 36) | public IArchive Read(Stream stream)
    method IsValid (line 44) | public bool IsValid(Stream stream) => stream.Length == Size;
    method CreateEntry (line 46) | public IArchiveEntry CreateEntry() => new Ps4SaveArchive.Entry();

FILE: KHSave.Archives/IArchive.cs
  type IArchive (line 24) | public interface IArchive
    method Write (line 32) | void Write(Stream stream);

FILE: KHSave.Archives/IArchiveEntry.cs
  type IArchiveEntry (line 23) | public interface IArchiveEntry

FILE: KHSave.Archives/IArchiveFactory.cs
  type IArchiveFactory (line 23) | public interface IArchiveFactory
    method Create (line 29) | IArchive Create();
    method Read (line 31) | IArchive Read(Stream stream);
    method IsValid (line 33) | bool IsValid(Stream stream);
    method CreateEntry (line 35) | IArchiveEntry CreateEntry();

FILE: KHSave.Archives/PcSaveArchive.cs
  class PcSaveArchive (line 9) | internal class PcSaveArchive : IArchive
    class Entry (line 11) | public class Entry : IArchiveEntry
      method Map (line 29) | private static DateTime Map(int ticks) => new DateTime(ticks * TimeS...
      method Map (line 30) | private static int Map(DateTime dateTime) => (int)((dateTime.Ticks -...
    method PcSaveArchive (line 45) | internal PcSaveArchive(int entryCount, int stride)
    method PcSaveArchive (line 53) | private PcSaveArchive(Stream stream, int entryCount, int stride)
    method Write (line 93) | public void Write(Stream stream)
    method Read (line 145) | public static PcSaveArchive Read(Stream stream, int entryCount, int st...

FILE: KHSave.Archives/Ps2CbsArchive.cs
  class Ps2CbsArchive (line 11) | public class Ps2CbsArchive : IArchive
    class Header (line 13) | private class Header
    class Entry (line 29) | public class Entry : IArchiveEntry
      method Map (line 44) | private static DateTime Map(sceMcStDateTime date) => new(date.Year, ...
    method Ps2CbsArchive (line 47) | internal Ps2CbsArchive(int entryCount)
    method Ps2CbsArchive (line 53) | private Ps2CbsArchive(Stream stream, int entryCount)
    method Write (line 85) | public void Write(Stream stream)
    method Read (line 90) | public static Ps2CbsArchive Read(Stream stream, int entryCount) =>
    method Decompress (line 93) | private static byte[] Decompress(byte[] buffer, int length)
    method rc4Crypt (line 104) | private static void rc4Crypt(byte[] buf, int bufLen)

FILE: KHSave.Archives/Ps2PsuArchive.cs
  class Ps2PsuArchive (line 10) | public class Ps2PsuArchive : IArchive
    class Entry (line 14) | public class Entry : IArchiveEntry
      method Map (line 34) | private static DateTime Map(sceMcStDateTime date) => new(date.Year, ...
    method Ps2PsuArchive (line 37) | internal Ps2PsuArchive(int entryCount)
    method Ps2PsuArchive (line 43) | private Ps2PsuArchive(Stream stream, int entryCount)
    method Write (line 70) | public void Write(Stream stream)
    method Read (line 75) | public static Ps2PsuArchive Read(Stream stream, int entryCount) =>
  class sceMcStDateTime (line 79) | public class sceMcStDateTime

FILE: KHSave.Archives/Ps3PsvArchive.cs
  class Ps3PsvArchive (line 11) | public class Ps3PsvArchive : IArchive
    class Header (line 13) | private class Header
    class Ps2Header (line 23) | private class Ps2Header
    class Ps2MainDirInfo (line 36) | private class Ps2MainDirInfo
    class Ps2FileEntry (line 44) | private class Ps2FileEntry : IArchiveEntry
      method Map (line 60) | private static DateTime Map(sceMcStDateTime date) => new(date.Year, ...
    method Ps3PsvArchive (line 63) | internal Ps3PsvArchive()
    method Ps3PsvArchive (line 68) | private Ps3PsvArchive(Stream stream)
    method Write (line 102) | public void Write(Stream stream)
    method Read (line 107) | public static Ps3PsvArchive Read(Stream stream) =>

FILE: KHSave.Archives/Ps4SaveArchive.cs
  class Ps4SaveArchive (line 27) | internal class Ps4SaveArchive : IArchive
    class Entry (line 31) | public class Entry : IArchiveEntry
      method Map (line 48) | private static DateTime Map(int ticks) => new DateTime(ticks * TimeS...
      method Map (line 49) | private static int Map(DateTime dateTime) => (int)((dateTime.Ticks -...
    method Ps4SaveArchive (line 54) | internal Ps4SaveArchive(int entryCount, int stride)
    method Ps4SaveArchive (line 61) | private Ps4SaveArchive(Stream stream, int entryCount, int stride)
    method Write (line 86) | public void Write(Stream stream)
    method Read (line 131) | public static Ps4SaveArchive Read(Stream stream, int entryCount, int s...

FILE: KHSave.Lib02/Models/Objective.cs
  class Objective (line 23) | public class Objective

FILE: KHSave.Lib02/Models/PlayableCharacter.cs
  class PlayableCharacter (line 23) | public class PlayableCharacter

FILE: KHSave.Lib02/Models/Slot.cs
  class Slot (line 25) | public class Slot

FILE: KHSave.Lib02/SaveKh02.cs
  class SaveKh02 (line 26) | public class SaveKh02
    method IsValid (line 48) | public static bool IsValid(Stream stream)
    method Write (line 57) | public void Write(Stream stream) => BinaryMapping.WriteObject(stream, ...
    method Read (line 59) | public static SaveKh02 Read(Stream stream) => BinaryMapping.ReadObject...

FILE: KHSave.Lib02/Types/CommandType.cs
  type CommandType (line 23) | public enum CommandType

FILE: KHSave.Lib02/Types/DifficultyType.cs
  type DifficultyType (line 23) | public enum DifficultyType : byte

FILE: KHSave.Lib02/Types/LocationType.cs
  type LocationType (line 23) | public enum LocationType : byte

FILE: KHSave.Lib02/Types/MapType.cs
  type MapType (line 23) | public enum MapType

FILE: KHSave.Lib02/Types/SpawnType.cs
  type SpawnType (line 23) | public enum SpawnType

FILE: KHSave.Lib1/Attributes/ArmorGummiAttribute.cs
  class ArmorGummiAttribute (line 8) | public class ArmorGummiAttribute : GummiBlockAttribute
    method ArmorGummiAttribute (line 10) | public ArmorGummiAttribute(string info, int sizeX, int sizeY, int size...

FILE: KHSave.Lib1/Attributes/BlueprintGummiAttribute.cs
  class BlueprintGummiAttribute (line 9) | public class BlueprintGummiAttribute : InfoAttribute
    method BlueprintGummiAttribute (line 12) | public BlueprintGummiAttribute(string info, GameTypes gameType) : base...

FILE: KHSave.Lib1/Attributes/CockpitGummiAttribute.cs
  class CockpitGummiAttribute (line 7) | public class CockpitGummiAttribute : GummiBlockAttribute
    method CockpitGummiAttribute (line 9) | public CockpitGummiAttribute(string info, int sizeX, int sizeY, int si...

FILE: KHSave.Lib1/Attributes/EngineGummiAttribute.cs
  class EngineGummiAttribute (line 7) | public class EngineGummiAttribute : GummiBlockAttribute
    method EngineGummiAttribute (line 13) | public EngineGummiAttribute(string info, int sizeX, int sizeY, int siz...

FILE: KHSave.Lib1/Attributes/ExtraGummiAttribute.cs
  class ExtraGummiAttribute (line 8) | public class ExtraGummiAttribute : InfoAttribute
    method ExtraGummiAttribute (line 15) | public ExtraGummiAttribute(string info, int max, int price = 0, int se...

FILE: KHSave.Lib1/Attributes/GummiBlockAttribute.cs
  class GummiBlockAttribute (line 8) | public class GummiBlockAttribute : InfoAttribute
    method GummiBlockAttribute (line 19) | public GummiBlockAttribute(string info, int sizeX, int sizeY, int size...

FILE: KHSave.Lib1/Attributes/SpecialGummiAttribute.cs
  class SpecialGummiAttribute (line 7) | public class SpecialGummiAttribute : GummiBlockAttribute
    method SpecialGummiAttribute (line 10) | public SpecialGummiAttribute(string info, int sizeX, int sizeY, int si...

FILE: KHSave.Lib1/Attributes/WeaponGummiAttribute.cs
  class WeaponGummiAttribute (line 7) | public class WeaponGummiAttribute : GummiBlockAttribute
    method WeaponGummiAttribute (line 11) | public WeaponGummiAttribute(string info, int sizeX, int sizeY, int siz...

FILE: KHSave.Lib1/Attributes/WingGummiAttribute.cs
  class WingGummiAttribute (line 7) | public class WingGummiAttribute : GummiBlockAttribute
    method WingGummiAttribute (line 10) | public WingGummiAttribute(string info, int sizeX, int sizeY, int sizeZ...

FILE: KHSave.Lib1/Constants.cs
  class Constants (line 3) | public class Constants

FILE: KHSave.Lib1/ISaveKh1.cs
  type ISaveKh1 (line 7) | public interface ISaveKh1
    method Write (line 28) | void Write(Stream stream);

FILE: KHSave.Lib1/Models/Character.cs
  class Character (line 6) | public class Character

FILE: KHSave.Lib1/Models/GummiBlock.cs
  class GummiBlock (line 7) | public class GummiBlock

FILE: KHSave.Lib1/Models/Gummiship.cs
  class Gummiship (line 7) | public class Gummiship

FILE: KHSave.Lib1/SaveKh1.EU.cs
  class SaveKh1 (line 8) | public partial class SaveKh1
    class SaveEU (line 10) | public class SaveEU : ISaveKh1
      method Write (line 51) | public void Write(Stream stream) =>

FILE: KHSave.Lib1/SaveKh1.FinalMix.cs
  class SaveKh1 (line 8) | public partial class SaveKh1
    class SaveFinalMix (line 10) | public class SaveFinalMix : ISaveKh1
      method Write (line 45) | public void Write(Stream stream) =>

FILE: KHSave.Lib1/SaveKh1.cs
  class SaveKh1 (line 7) | public partial class SaveKh1
    method SaveKh1 (line 12) | static SaveKh1()
    method IsValid (line 23) | public static bool IsValid(Stream stream)
    method GetGameVersion (line 39) | public static uint GetGameVersion(Stream stream)
    method Read (line 52) | private static TSaveKh1 Read<TSaveKh1>(Stream stream)
    method Read (line 56) | public static ISaveKh1 Read(Stream stream)

FILE: KHSave.Lib1/Types/AbilityType.cs
  type AbilityType (line 6) | public enum AbilityType : byte

FILE: KHSave.Lib1/Types/CommandType.cs
  type CommandType (line 5) | public enum CommandType : byte

FILE: KHSave.Lib1/Types/DifficultyType.cs
  type Difficulty (line 5) | public enum Difficulty : byte
  type DifficultyFm (line 10) | public enum DifficultyFm : byte

FILE: KHSave.Lib1/Types/EquipmentType.cs
  type EquipmentType (line 6) | public enum EquipmentType : byte

FILE: KHSave.Lib1/Types/GameTypes.cs
  type GameTypes (line 5) | [Flags]

FILE: KHSave.Lib1/Types/GummiBlocksType.cs
  type GummiBlocksType (line 6) | public enum GummiBlocksType : byte

FILE: KHSave.Lib1/Types/PlayableCharacterType.cs
  type PlayableCharacterType (line 5) | public enum PlayableCharacterType : byte

FILE: KHSave.Lib1/Types/WorldType.cs
  type WorldType (line 5) | public enum WorldType : uint

FILE: KHSave.Lib2/Constants.cs
  class Constants (line 9) | public class Constants
  type GameVersion (line 1230) | public enum GameVersion

FILE: KHSave.Lib2/ISaveKh2.cs
  type ISaveKh2 (line 7) | public interface ISaveKh2
    method Write (line 62) | void Write(Stream stream);

FILE: KHSave.Lib2/Models/CharacterFinalMix.cs
  class CharacterFinalMix (line 6) | public class CharacterFinalMix : ICharacter

FILE: KHSave.Lib2/Models/CharacterVanilla.cs
  class CharacterVanilla (line 6) | public class CharacterVanilla : ICharacter

FILE: KHSave.Lib2/Models/DriveFormFinalMix.cs
  class DriveFormFinalMix (line 6) | public class DriveFormFinalMix : IDriveForm

FILE: KHSave.Lib2/Models/DriveFormVanilla.cs
  class DriveFormVanilla (line 6) | public class DriveFormVanilla : IDriveForm

FILE: KHSave.Lib2/Models/ICharacter.cs
  type ICharacter (line 5) | public interface ICharacter

FILE: KHSave.Lib2/Models/IDriveForm.cs
  type IDriveForm (line 5) | public interface IDriveForm

FILE: KHSave.Lib2/Models/IPlaceScript.cs
  type IPlaceScript (line 3) | public interface IPlaceScript

FILE: KHSave.Lib2/Models/PartyMembers.cs
  class PartyMembers (line 6) | public class PartyMembers

FILE: KHSave.Lib2/Models/PlaceScriptFinalMix.cs
  class PlaceScriptFinalMix (line 5) | public class PlaceScriptFinalMix : IPlaceScript

FILE: KHSave.Lib2/Models/PlaceScriptVanilla.cs
  class PlaceScriptVanilla (line 5) | public class PlaceScriptVanilla : IPlaceScript

FILE: KHSave.Lib2/Models/Progress.cs
  class Progress (line 5) | public class Progress
    method GetFlag (line 9) | public bool GetFlag(int index) => (Flags[index / 8] & (1 << (index % 8...
    method SetFlag (line 10) | public void SetFlag(int index, bool value)

FILE: KHSave.Lib2/SaveKh2.European.cs
  class SaveKh2 (line 9) | public partial class SaveKh2
    class SaveEuropean (line 11) | public class SaveEuropean : ISaveKh2
      method Write (line 69) | public void Write(Stream stream) =>

FILE: KHSave.Lib2/SaveKh2.FinalMix.cs
  class SaveKh2 (line 9) | public partial class SaveKh2
    class SaveFinalMix (line 11) | public class SaveFinalMix : ISaveKh2
      method Write (line 97) | public void Write(Stream stream) =>

FILE: KHSave.Lib2/SaveKh2.TransferMappings.cs
  class SaveKh2 (line 11) | public partial class SaveKh2
    method CopySame (line 39) | private static void CopySame(IDriveForm[] dst, IDriveForm[] src)
    method CopyFromVanilla (line 46) | private static void CopyFromVanilla(IDriveForm[] dst, IDriveForm[] src)
    method CopyFromFinalMix (line 83) | private static void CopyFromFinalMix(IDriveForm[] dst, IDriveForm[] src)

FILE: KHSave.Lib2/SaveKh2.cs
  class SaveKh2 (line 9) | public partial class SaveKh2
    method SaveKh2 (line 13) | static SaveKh2()
    method IsValid (line 24) | public static bool IsValid(Stream stream)
    method GetGameVersion (line 41) | public static GameVersion? GetGameVersion(Stream stream)
    method Read (line 62) | private static TSaveKh2 Read<TSaveKh2>(Stream stream)
    method Read (line 66) | public static ISaveKh2 Read(Stream stream)
    method Write (line 83) | public static void Write<TSaveKh2>(Stream stream, TSaveKh2 save)
    method CalculateChecksum (line 106) | public static uint CalculateChecksum(byte[] data, int offset, uint che...
    method GetCrcTable (line 114) | private static IEnumerable<uint> GetCrcTable(int polynomial)

FILE: KHSave.Lib2/Types/AbilityStyleType.cs
  type AbilityStyleType (line 5) | public enum AbilityStyleType : byte

FILE: KHSave.Lib2/Types/BattleStyleType.cs
  type BattleStyleType (line 5) | public enum BattleStyleType : byte

FILE: KHSave.Lib2/Types/CharacterType.cs
  type CharacterType (line 5) | public enum CharacterType

FILE: KHSave.Lib2/Types/CommandType.cs
  type CommandType (line 5) | public enum CommandType : short

FILE: KHSave.Lib2/Types/DifficultyType.cs
  type Difficulty (line 5) | public enum Difficulty : byte

FILE: KHSave.Lib2/Types/DriveFormType.cs
  type DriveFormType (line 3) | public enum DriveFormType

FILE: KHSave.Lib2/Types/EquipmentType.cs
  type EquipmentType (line 5) | public enum EquipmentType : short

FILE: KHSave.Lib2/Types/GameType.cs
  type GameType (line 5) | [Flags]

FILE: KHSave.Lib2/Types/InventoryType.cs
  type InventoryType (line 23) | public enum InventoryType : int

FILE: KHSave.Lib2/Types/PlayableCharacterType.cs
  type PlayableCharacterType (line 5) | public enum PlayableCharacterType : byte

FILE: KHSave.Lib2/Types/WorldType.cs
  type WorldType (line 24) | public enum WorldType : byte

FILE: KHSave.Lib3/ISaveKh3.cs
  type ISaveKh3 (line 27) | public interface ISaveKh3
    method Write (line 83) | void Write(Stream stream);

FILE: KHSave.Lib3/Models/Ability.cs
  class Ability (line 24) | public class Ability
    method ToString (line 52) | public override string ToString()

FILE: KHSave.Lib3/Models/AiModel.cs
  class AiModel (line 24) | public class AiModel

FILE: KHSave.Lib3/Models/EquipmentItem.cs
  class EquipmentItem (line 24) | public class EquipmentItem
  class WeaponEquipmentItem (line 32) | public class WeaponEquipmentItem : EquipmentItem
  class ArmorEquipmentItem (line 41) | public class ArmorEquipmentItem : EquipmentItem
  class AccessoryEquipmentItem (line 50) | public class AccessoryEquipmentItem : EquipmentItem
  class ConsumableEquipmentItem (line 59) | public class ConsumableEquipmentItem : EquipmentItem

FILE: KHSave.Lib3/Models/FlantasticRecord.cs
  class FlantasticRecord (line 5) | public class FlantasticRecord

FILE: KHSave.Lib3/Models/InventoryEntry.cs
  class InventoryEntry (line 23) | public class InventoryEntry

FILE: KHSave.Lib3/Models/MagicGroup.cs
  class MagicGroup (line 24) | public class MagicGroup

FILE: KHSave.Lib3/Models/PhotoEntry.cs
  class PhotoEntry (line 23) | public class PhotoEntry

FILE: KHSave.Lib3/Models/PlayableCharacter.cs
  class PlayableCharacter (line 24) | public class PlayableCharacter
    method ToString (line 43) | public override string ToString()

FILE: KHSave.Lib3/Models/Records.cs
  class Records (line 6) | public class Records

FILE: KHSave.Lib3/Models/ShortcutGroup.cs
  class ShortcutGroup (line 24) | public class ShortcutGroup

FILE: KHSave.Lib3/Presets/Preset.Pawn.cs
  class Presets (line 5) | public static partial class Presets
    class Pawn (line 7) | public class Pawn

FILE: KHSave.Lib3/Presets/Presets.Map.cs
  class Presets (line 5) | public static partial class Presets
    class Map (line 7) | public class Map

FILE: KHSave.Lib3/Presets/Presets.Story.cs
  class Presets (line 95) | public static partial class Presets
    method ToStoryLabel (line 97) | private static Dictionary<int, string> ToStoryLabel<T>(this Dictionary...

FILE: KHSave.Lib3/SaveKh3.cs
  class SaveKh3 (line 29) | public class SaveKh3 : ISaveKh3
    method SaveKh3 (line 33) | static SaveKh3()
    method IsValidInternal (line 94) | internal static bool IsValidInternal(Stream stream)
    method Write (line 105) | public void Write(Stream stream)
    method ReadInternal (line 116) | internal static SaveKh3 ReadInternal(Stream stream) =>
    method IsValid (line 119) | public static bool IsValid(Stream stream) =>
    method Read (line 123) | public static ISaveKh3 Read(Stream stream)
    method CalculateChecksum (line 133) | public static uint CalculateChecksum(Stream stream)

FILE: KHSave.Lib3/SaveKh3u109.cs
  class SaveKh3u109 (line 28) | public class SaveKh3u109 : ISaveKh3
    method IsValidInternal (line 84) | internal static bool IsValidInternal(Stream stream)
    method Write (line 95) | public void Write(Stream stream)
    method ReadInternal (line 106) | internal static SaveKh3u109 ReadInternal(Stream stream) =>

FILE: KHSave.Lib3/Types/AbilityType.cs
  type AbilityType (line 23) | public enum AbilityType

FILE: KHSave.Lib3/Types/AccessoryType.cs
  type AccessoryType (line 23) | public enum AccessoryType : byte

FILE: KHSave.Lib3/Types/AiAbilityType.cs
  type AiAbilityType (line 23) | public enum AiAbilityType : byte

FILE: KHSave.Lib3/Types/AiCombatStyleType.cs
  type AiCombatStyleType (line 23) | public enum AiCombatStyleType : byte

FILE: KHSave.Lib3/Types/AiRecoveryType.cs
  type AiRecoveryType (line 23) | public enum AiRecoveryType : byte

FILE: KHSave.Lib3/Types/ArmorType.cs
  type ArmorType (line 23) | public enum ArmorType : byte

FILE: KHSave.Lib3/Types/CharacterIconType.cs
  type CharacterIconType (line 23) | public enum CharacterIconType : byte

FILE: KHSave.Lib3/Types/ChoiceType.cs
  type DesireChoice (line 23) | public enum DesireChoice : byte
  type PowerChoice (line 30) | public enum PowerChoice : byte

FILE: KHSave.Lib3/Types/CommandType.cs
  type CommandType (line 23) | public enum CommandType : int

FILE: KHSave.Lib3/Types/ConsumableType.cs
  type ConsumableType (line 23) | public enum ConsumableType : byte

FILE: KHSave.Lib3/Types/DifficultyType.cs
  type DifficultyType (line 23) | public enum DifficultyType : byte

FILE: KHSave.Lib3/Types/FoodType.cs
  type FoodType (line 23) | public enum FoodType : byte

FILE: KHSave.Lib3/Types/InventoryType.cs
  type InventoryType (line 23) | public enum InventoryType

FILE: KHSave.Lib3/Types/ItemType.cs
  type ItemType (line 23) | public enum ItemType : byte

FILE: KHSave.Lib3/Types/KeyItemType.cs
  type KeyItemType (line 23) | public enum KeyItemType : byte

FILE: KHSave.Lib3/Types/LocationType.cs
  type LocationType (line 23) | public enum LocationType : byte

FILE: KHSave.Lib3/Types/MaterialType.cs
  type MaterialType (line 23) | public enum MaterialType

FILE: KHSave.Lib3/Types/MogType.cs
  type MogType (line 23) | public enum MogType : byte

FILE: KHSave.Lib3/Types/PartyCharacter.cs
  type PartyCharacter (line 5) | public enum PartyCharacter : byte

FILE: KHSave.Lib3/Types/PlayableCharacterType.cs
  type PlayableCharacterType (line 21) | public enum PlayableCharacterType

FILE: KHSave.Lib3/Types/RecordAttractionType.cs
  type RecordAttractionType (line 23) | public enum RecordAttractionType

FILE: KHSave.Lib3/Types/RecordShotlockType.cs
  type RecordShotlockType (line 23) | public enum RecordShotlockType

FILE: KHSave.Lib3/Types/SnackType.cs
  type SnackType (line 23) | public enum SnackType : byte

FILE: KHSave.Lib3/Types/StoryFlagType.cs
  type StoryFlagType (line 23) | public enum StoryFlagType

FILE: KHSave.Lib3/Types/StoryLabelType.cs
  type StoryLabelTypeBt (line 21) | public enum StoryLabelTypeBt
  type StoryLabelTypeBx (line 47) | public enum StoryLabelTypeBx
  type StoryLabelTypeCa (line 89) | public enum StoryLabelTypeCa
  type StoryLabelTypeCaChartLastAccess (line 132) | public enum StoryLabelTypeCaChartLastAccess
  type StoryLabelTypeCaShipRide (line 149) | public enum StoryLabelTypeCaShipRide
  type StoryLabelTypeCaPortroyalSearch (line 155) | public enum StoryLabelTypeCaPortroyalSearch
  type StoryLabelTypeCs (line 164) | public enum StoryLabelTypeCs
  type StoryLabelTypeDi (line 181) | public enum StoryLabelTypeDi
  type StoryLabelTypeDp (line 191) | public enum StoryLabelTypeDp
  type StoryLabelTypeDw (line 204) | public enum StoryLabelTypeDw
  type StoryLabelTypeEw (line 221) | public enum StoryLabelTypeEw
  type StoryLabelTypeEx (line 239) | public enum StoryLabelTypeEx
  type StoryLabelTypeEwSub (line 242) | public enum StoryLabelTypeEwSub
  type StoryLabelTypeEwMission (line 251) | public enum StoryLabelTypeEwMission
  type StoryLabelTypeEwRa (line 269) | public enum StoryLabelTypeEwRa
  type StoryLabelTypeEwMi (line 278) | public enum StoryLabelTypeEwMi
  type StoryLabelTypeEwTs (line 287) | public enum StoryLabelTypeEwTs
  type StoryLabelTypeEwCa (line 296) | public enum StoryLabelTypeEwCa
  type StoryLabelTypeEwFz (line 305) | public enum StoryLabelTypeEwFz
  type StoryLabelTypeFz (line 314) | public enum StoryLabelTypeFz
  type StoryLabelTypeFzMinigame (line 365) | public enum StoryLabelTypeFzMinigame
  type StoryLabelTypeGm (line 375) | public enum StoryLabelTypeGm
  type StoryLabelTypeGm1 (line 388) | public enum StoryLabelTypeGm1
  type StoryLabelTypeGm2 (line 394) | public enum StoryLabelTypeGm2
  type StoryLabelTypeGm3 (line 400) | public enum StoryLabelTypeGm3
  type StoryLabelTypeGm3sub (line 410) | public enum StoryLabelTypeGm3sub
  type StoryLabelTypeGmSys (line 422) | public enum StoryLabelTypeGmSys
  type StoryLabelTypeGmLevelUp (line 434) | public enum StoryLabelTypeGmLevelUp
  type StoryLabelTypeHe (line 440) | public enum StoryLabelTypeHe
  type StoryLabelTypeHeSub (line 494) | public enum StoryLabelTypeHeSub
  type StoryLabelTypeKg (line 506) | public enum StoryLabelTypeKg
  type StoryLabelTypeKgA (line 542) | public enum StoryLabelTypeKgA
  type StoryLabelTypeKgB (line 555) | public enum StoryLabelTypeKgB
  type StoryLabelTypeKgC (line 570) | public enum StoryLabelTypeKgC
  type StoryLabelTypeKgD (line 581) | public enum StoryLabelTypeKgD
  type StoryLabelTypeMi (line 592) | public enum StoryLabelTypeMi
  type StoryLabelTypeMiSub (line 646) | public enum StoryLabelTypeMiSub
  type StoryLabelTypePo (line 649) | public enum StoryLabelTypePo
  type StoryLabelTypeRa (line 662) | public enum StoryLabelTypeRa
  type StoryLabelTypeRaDandelion (line 709) | public enum StoryLabelTypeRaDandelion
  type StoryLabelTypeRaRabbit (line 716) | public enum StoryLabelTypeRaRabbit
  type StoryLabelTypeRaRainbow (line 724) | public enum StoryLabelTypeRaRainbow
  type StoryLabelTypeRaBird (line 731) | public enum StoryLabelTypeRaBird
  type StoryLabelTypeRg (line 738) | public enum StoryLabelTypeRg
  type StoryLabelTypeSf (line 748) | public enum StoryLabelTypeSf
  type StoryLabelTypeTs (line 756) | public enum StoryLabelTypeTs
  type StoryLabelTypeTsSub (line 794) | public enum StoryLabelTypeTsSub
  type StoryLabelTypeTt (line 807) | public enum StoryLabelTypeTt
  type StoryLabelTypeTtPo (line 829) | public enum StoryLabelTypeTtPo
  type StoryLabelTypeTtRemy (line 837) | public enum StoryLabelTypeTtRemy
  type StoryLabelTypeWmHe (line 842) | public enum StoryLabelTypeWmHe
  type StoryLabelTypeWmTt (line 849) | public enum StoryLabelTypeWmTt
  type StoryLabelTypeWmRa (line 856) | public enum StoryLabelTypeWmRa
  type StoryLabelTypeWmTs (line 863) | public enum StoryLabelTypeWmTs
  type StoryLabelTypeWmMi (line 870) | public enum StoryLabelTypeWmMi
  type StoryLabelTypeWmFz (line 877) | public enum StoryLabelTypeWmFz
  type StoryLabelTypeWmCa (line 884) | public enum StoryLabelTypeWmCa
  type StoryLabelTypeWmBx (line 891) | public enum StoryLabelTypeWmBx
  type StoryLabelTypeWmKg (line 898) | public enum StoryLabelTypeWmKg
  type StoryLabelTypeGameBattle (line 905) | public enum StoryLabelTypeGameBattle
  type StoryLabelTypeGameShop (line 918) | public enum StoryLabelTypeGameShop
  type StoryLabelTypeYt (line 930) | public enum StoryLabelTypeYt
  type StoryLabelTypeBtDlc8 (line 941) | public enum StoryLabelTypeBtDlc8
  type StoryLabelTypeBtDlc7 (line 954) | public enum StoryLabelTypeBtDlc7
  type StoryLabelTypeBtDlc7Monument (line 963) | public enum StoryLabelTypeBtDlc7Monument
  type StoryLabelTypeKgDlc (line 971) | public enum StoryLabelTypeKgDlc
  type StoryLabelTypeKgDlc5c (line 996) | public enum StoryLabelTypeKgDlc5c
  type StoryLabelTypeKgDlc5d (line 1008) | public enum StoryLabelTypeKgDlc5d
  type StoryLabelTypeKgDlcCharSelect (line 1022) | public enum StoryLabelTypeKgDlcCharSelect
  type StoryLabelTypeRgDlc (line 1036) | public enum StoryLabelTypeRgDlc
  type StoryLabelTypeSsDlc (line 1049) | public enum StoryLabelTypeSsDlc
  type StoryLabelTypeSsDlcSub (line 1057) | public enum StoryLabelTypeSsDlcSub

FILE: KHSave.Lib3/Types/SyntesisType.cs
  type SynthesisType (line 23) | public enum SynthesisType : byte

FILE: KHSave.Lib3/Types/TentType.cs
  type TentType (line 23) | public enum TentType : byte

FILE: KHSave.Lib3/Types/WeaponType.cs
  type WeaponType (line 23) | public enum WeaponType : byte

FILE: KHSave.Lib3/Types/WorldType.cs
  type WorldType (line 23) | public enum WorldType : byte

FILE: KHSave.LibBbs/Attributes/AbilityAttribute.cs
  class AbilityStatusAttribute (line 5) | public class AbilityStatusAttribute : AbilityAttribute
    method AbilityStatusAttribute (line 7) | public AbilityStatusAttribute(string name = null) : base(name)
  class AbilityPriceAttribute (line 12) | public class AbilityPriceAttribute : AbilityAttribute
    method AbilityPriceAttribute (line 14) | public AbilityPriceAttribute(string name = null) : base(name)

FILE: KHSave.LibBbs/Attributes/ActionAttribute.cs
  class MovementAttribute (line 5) | public class MovementAttribute : InfoAttribute
    method MovementAttribute (line 7) | public MovementAttribute(string name = null) : base(name)
  class DefenseAttribute (line 12) | public class DefenseAttribute : InfoAttribute
    method DefenseAttribute (line 14) | public DefenseAttribute(string name = null) : base(name)
  class ReprisalAttribute (line 19) | public class ReprisalAttribute : InfoAttribute
    method ReprisalAttribute (line 21) | public ReprisalAttribute(string name = null) : base(name)

FILE: KHSave.LibBbs/Attributes/CommandAttribute.cs
  class AttackAttribute (line 5) | public class AttackAttribute : InfoAttribute
    method AttackAttribute (line 7) | public AttackAttribute(string name = null) : base(name)
  class FinisherAttribute (line 12) | public class FinisherAttribute : InfoAttribute
    method FinisherAttribute (line 14) | public FinisherAttribute(string name = null) : base(name)
  class ShotlockAttribute (line 19) | public class ShotlockAttribute : InfoAttribute
    method ShotlockAttribute (line 21) | public ShotlockAttribute(string name = null) : base(name)
  class DlinkAttribute (line 26) | public class DlinkAttribute : InfoAttribute
    method DlinkAttribute (line 28) | public DlinkAttribute(string name = null) : base(name)
  class FriendshipAttribute (line 33) | public class FriendshipAttribute : InfoAttribute
    method FriendshipAttribute (line 35) | public FriendshipAttribute(string name = null) : base(name)

FILE: KHSave.LibBbs/Attributes/CommandStyleAttribute.cs
  class CommandStyleLevel1Attribute (line 5) | public class CommandStyleLevel1Attribute : InfoAttribute
    method CommandStyleLevel1Attribute (line 7) | public CommandStyleLevel1Attribute(string name = null) : base(name)
  class CommandStyleLevel2Attribute (line 12) | public class CommandStyleLevel2Attribute : InfoAttribute
    method CommandStyleLevel2Attribute (line 14) | public CommandStyleLevel2Attribute(string name = null) : base(name)
  class CommandStyleOtherAttribute (line 19) | public class CommandStyleOtherAttribute : InfoAttribute
    method CommandStyleOtherAttribute (line 21) | public CommandStyleOtherAttribute(string name = null) : base(name)

FILE: KHSave.LibBbs/Constants.cs
  class Constants (line 3) | internal class Constants
  type GameVersion (line 8) | public enum GameVersion

FILE: KHSave.LibBbs/ISaveKhBbs.cs
  type ISaveKhBbs (line 6) | public interface ISaveKhBbs

FILE: KHSave.LibBbs/Models/Ability.cs
  class Ability (line 5) | public class Ability

FILE: KHSave.LibBbs/Models/Character.cs
  class Character (line 6) | public class Character

FILE: KHSave.LibBbs/Models/Command.cs
  class Command (line 6) | public class Command

FILE: KHSave.LibBbs/Models/Deck.cs
  class Deck (line 5) | public class Deck
    class Command (line 14) | public class Command

FILE: KHSave.LibBbs/Models/Dlink.cs
  class Dlink (line 6) | public class Dlink

FILE: KHSave.LibBbs/Models/Finisher.cs
  class Finisher (line 6) | public class Finisher

FILE: KHSave.LibBbs/SaveKhBbs.European.cs
  class SaveKhBbs (line 7) | public partial class SaveKhBbs
    class SaveEuropean (line 9) | public class SaveEuropean : ISaveKhBbs

FILE: KHSave.LibBbs/SaveKhBbs.FinalMix.cs
  class SaveKhBbs (line 7) | public partial class SaveKhBbs
    class SaveFinalMix (line 9) | public class SaveFinalMix : ISaveKhBbs

FILE: KHSave.LibBbs/SaveKhBbs.cs
  class SaveKhBbs (line 6) | public partial class SaveKhBbs
    method IsValid (line 8) | public static bool IsValid(Stream stream)
    method GetGameVersion (line 17) | public static GameVersion? GetGameVersion(Stream stream)
    method Read (line 38) | public static TSaveKhBbs Read<TSaveKhBbs>(Stream stream)
    method Write (line 42) | public static void Write<TSaveKhBbs>(Stream stream, TSaveKhBbs save)
    method CalculateChecksum (line 57) | public static uint CalculateChecksum(Stream stream)

FILE: KHSave.LibBbs/Types/AbilityType.cs
  type AbilityType (line 6) | public enum AbilityType : ushort

FILE: KHSave.LibBbs/Types/CharacterType.cs
  type CharacterType (line 5) | public enum CharacterType : byte

FILE: KHSave.LibBbs/Types/CommandType.cs
  type CommandType (line 6) | public enum CommandType : ushort

FILE: KHSave.LibBbs/Types/DifficultyType.cs
  type DifficultyType (line 5) | public enum DifficultyType : byte

FILE: KHSave.LibBbs/Types/WeaponType.cs
  type WeaponType (line 5) | public enum WeaponType : ushort

FILE: KHSave.LibBbs/Types/WorldType.cs
  type WorldType (line 6) | public enum WorldType : byte

FILE: KHSave.LibDDD/Attributes/CommandAttributes.cs
  class AttackAttribute (line 5) | public class AttackAttribute : InfoAttribute
    method AttackAttribute (line 7) | public AttackAttribute(string name = null) : base(name)
  class MovementAttribute (line 12) | public class MovementAttribute : InfoAttribute
    method MovementAttribute (line 14) | public MovementAttribute(string name = null) : base(name)
  class DefenseAttribute (line 19) | public class DefenseAttribute : InfoAttribute
    method DefenseAttribute (line 21) | public DefenseAttribute(string name = null) : base(name)
  class ReprisalAttribute (line 26) | public class ReprisalAttribute : InfoAttribute
    method ReprisalAttribute (line 28) | public ReprisalAttribute(string name = null) : base(name)
  class FlowMotionAttribute (line 33) | public class FlowMotionAttribute : InfoAttribute
    method FlowMotionAttribute (line 35) | public FlowMotionAttribute(string name = null) : base(name)
  class AbilityStatsAttribute (line 40) | public class AbilityStatsAttribute : InfoAttribute
    method AbilityStatsAttribute (line 42) | public AbilityStatsAttribute(string name = null) : base(name)
  class AbilitySpiritsAttribute (line 47) | public class AbilitySpiritsAttribute : InfoAttribute
    method AbilitySpiritsAttribute (line 49) | public AbilitySpiritsAttribute(string name = null) : base(name)

FILE: KHSave.LibDDD/Attributes/DreamPiecesAttribute.cs
  class DreamPiecesAttribute (line 5) | public class DreamPiecesAttribute : InfoAttribute
    method DreamPiecesAttribute (line 7) | public DreamPiecesAttribute(string info) : base(info)

FILE: KHSave.LibDDD/Attributes/GlossaryAttribute.cs
  class GlossaryAttribute (line 5) | public class GlossaryAttribute : InfoAttribute
    method GlossaryAttribute (line 7) | public GlossaryAttribute(string info) : base(info)

FILE: KHSave.LibDDD/Attributes/MementoEntriesAttribute.cs
  class MementoEntriesAttribute (line 5) | public class MementoEntriesAttribute : InfoAttribute
    method MementoEntriesAttribute (line 7) | public MementoEntriesAttribute(string info) : base(info)

FILE: KHSave.LibDDD/Attributes/TrainingToysAttribute.cs
  class TrainingToysAttribute (line 5) | public class TrainingToysAttribute : InfoAttribute
    method TrainingToysAttribute (line 7) | public TrainingToysAttribute(string info) : base(info)
  class TrainingFoodAttribute (line 11) | public class TrainingFoodAttribute : InfoAttribute
    method TrainingFoodAttribute (line 13) | public TrainingFoodAttribute(string info) : base(info)

FILE: KHSave.LibDDD/Attributes/TrainingToysFoodAttribute.cs
  class TrainingToysFoodAttribute (line 5) | public class TrainingToysFoodAttribute : InfoAttribute
    method TrainingToysFoodAttribute (line 7) | public TrainingToysFoodAttribute(string info) : base(info)

FILE: KHSave.LibDDD/Constants.cs
  class Constants (line 3) | class Constants

FILE: KHSave.LibDDD/ISaveKhDDD.cs
  type ISaveKhDDD (line 8) | public interface ISaveKhDDD
    method Write (line 32) | void Write(Stream stream);

FILE: KHSave.LibDDD/Model/CommandEntry.cs
  class CommandEntry (line 6) | public class CommandEntry

FILE: KHSave.LibDDD/Model/Deck.cs
  class Deck (line 5) | public class Deck : IDeck

FILE: KHSave.LibDDD/Model/DeckPS4.cs
  class DeckPS4 (line 5) | public class DeckPS4 : IDeck

FILE: KHSave.LibDDD/Model/DreamEater.cs
  class DreamEater (line 6) | public class DreamEater

FILE: KHSave.LibDDD/Model/IDeck.cs
  type IDeck (line 9) | public interface IDeck

FILE: KHSave.LibDDD/SaveKhDDD.3DS.cs
  class SaveKhDDD (line 12) | public partial class SaveKhDDD
    class SaveKhDDD3DS (line 14) | public class SaveKhDDD3DS : ISaveKhDDD
      method Write (line 49) | public void Write(Stream stream) =>

FILE: KHSave.LibDDD/SaveKhDDD.PS4.cs
  class SaveKhDDD (line 9) | public partial class SaveKhDDD
    class SaveKhDDDPS4 (line 11) | public class SaveKhDDDPS4 : ISaveKhDDD
      method Write (line 45) | public void Write(Stream stream) =>

FILE: KHSave.LibDDD/SaveKhDDD.cs
  class SaveKhDDD (line 7) | public partial class SaveKhDDD
    method IsValid (line 11) | public static bool IsValid(Stream stream)
    method GetGameVersion (line 26) | public static uint GetGameVersion(Stream stream)
    method GetFileVersion (line 40) | public static byte GetFileVersion(Stream stream)
    method Read (line 50) | public static TSaveKhDDD Read<TSaveKhDDD>(Stream stream)
    method Read (line 54) | public static ISaveKhDDD Read(Stream stream)
    method ReadVersion (line 65) | public static ISaveKhDDD ReadVersion(Stream stream)
    method Write (line 80) | public static void Write<TSaveKhDDD>(Stream stream, TSaveKhDDD save)

FILE: KHSave.LibDDD/Types/DifficultyType.cs
  type DifficultyType (line 5) | public enum DifficultyType : byte

FILE: KHSave.LibDDD/Types/DreamEaterType.cs
  type DreamEaterType (line 5) | public enum DreamEaterType : byte

FILE: KHSave.LibDDD/Types/EquipmentType.cs
  type ItemType (line 9) | internal enum ItemType
  type EquipmentType (line 22) | public enum EquipmentType : short

FILE: KHSave.LibDDD/Types/WorldType.cs
  type WorldType (line 5) | public enum WorldType : byte

FILE: KHSave.LibFf7Remake/Chunks/Chunk.cs
  class ChunkHeader (line 24) | public class ChunkHeader
  class ChunkContent (line 41) | public class ChunkContent
  class Chunk (line 49) | public class Chunk
    type Type (line 51) | public enum Type
    method Chunk (line 68) | public Chunk(ChunkHeader header, ChunkContent content)
    method Read (line 74) | public static Chunk Read(Stream stream, Type type)
    method Write (line 90) | public void Write(Stream stream)
    method ToString (line 100) | public override string ToString()

FILE: KHSave.LibFf7Remake/Chunks/ChunkChapter.cs
  class ChunkChapter (line 26) | public class ChunkChapter
    method ChunkChapter (line 46) | public ChunkChapter()

FILE: KHSave.LibFf7Remake/Chunks/ChunkCommon.cs
  class ChunkCommon (line 24) | public class ChunkCommon

FILE: KHSave.LibFf7Remake/Models/ChapterObject.cs
  class ChapterObject (line 23) | public class ChapterObject
    method ToString (line 34) | public override string ToString() =>

FILE: KHSave.LibFf7Remake/Models/Character.cs
  class Character (line 23) | public class Character

FILE: KHSave.LibFf7Remake/Models/CharacterEquipment.cs
  class CharacterEquipment (line 23) | public class CharacterEquipment

FILE: KHSave.LibFf7Remake/Models/CharacterStats.cs
  class CharacterStats (line 5) | public class CharacterStats

FILE: KHSave.LibFf7Remake/Models/Inventory.cs
  class Inventory (line 24) | public class Inventory

FILE: KHSave.LibFf7Remake/Models/Materia.cs
  class Materia (line 24) | public class Materia

FILE: KHSave.LibFf7Remake/Models/MateriaEquipment.cs
  class MateriaEquipment (line 23) | public class MateriaEquipment

FILE: KHSave.LibFf7Remake/Models/UnknownStructure.cs
  class UnknownStructure (line 23) | public class UnknownStructure

FILE: KHSave.LibFf7Remake/Models/UnknownStructure2.cs
  class UnknownStructure2 (line 23) | public class UnknownStructure2

FILE: KHSave.LibFf7Remake/Models/UnknownStructure3.cs
  class UnknownStructure3 (line 23) | public class UnknownStructure3

FILE: KHSave.LibFf7Remake/Models/Vector3f.cs
  class Vector3f (line 23) | public class Vector3f

FILE: KHSave.LibFf7Remake/Models/WeaponFound.cs
  class WeaponFound (line 23) | public class WeaponFound

FILE: KHSave.LibFf7Remake/SaveFf7Remake.cs
  class SaveFf7Remake (line 29) | public class SaveFf7Remake
    method SaveFf7Remake (line 43) | private SaveFf7Remake(List<Chunk> chunks)
    method Write (line 50) | public SaveFf7Remake Write(Stream stream)
    method ReimportChunks (line 103) | public void ReimportChunks()
    method ReadChunk (line 130) | private T ReadChunk<T>(int index)
    method WriteChunk (line 141) | private void WriteChunk<T>(T item, int index)
    method IsValid (line 149) | public static bool IsValid(Stream stream)
    method Read (line 190) | public static SaveFf7Remake Read(Stream stream)

FILE: KHSave.LibFf7Remake/Types/CharacterStatusType.cs
  type CharacterStatusType (line 23) | public enum CharacterStatusType : byte

FILE: KHSave.LibFf7Remake/Types/CharacterType.cs
  type CharacterType (line 23) | public enum CharacterType

FILE: KHSave.LibFf7Remake/Types/InventoryType.cs
  type InventoryType (line 23) | public enum InventoryType

FILE: KHSave.LibFf7Remake/Types/ItemCategory.cs
  type ItemCategory (line 5) | public enum ItemCategory

FILE: KHSave.LibPersona3/Models/Character.cs
  class Character (line 6) | public class Character

FILE: KHSave.LibPersona3/Models/Persona.cs
  type Persona (line 6) | public record Persona

FILE: KHSave.LibPersona3/Models/SocialLinks.cs
  type SocialLinkArcana (line 5) | public enum SocialLinkArcana
  type SocialLinks (line 39) | public record SocialLinks

FILE: KHSave.LibPersona3/Models/SocialLinksPortable.cs
  type SocialLinkArcanaPortable (line 5) | public enum SocialLinkArcanaPortable
  type SocialLinksPortable (line 37) | public record SocialLinksPortable

FILE: KHSave.LibPersona3/Presets.cs
  class Presets (line 5) | public static partial class Presets
    type Field (line 7) | public record Field
    method FieldVF_ (line 15) | private static Field FieldVF_(int category, int map, string descriptio...
    method FieldVFP (line 17) | private static Field FieldVFP(int category, int map, string descriptio...
    method Field_F_ (line 19) | private static Field Field_F_(int category, int map, string descriptio...
    method Field_FP (line 21) | private static Field Field_FP(int category, int map, string descriptio...
    method Field__P (line 23) | private static Field Field__P(int category, int map, string descriptio...

FILE: KHSave.LibPersona3/SavePersona3.cs
  type GameVersion (line 14) | [Flags]
  type TimeOfTheDay (line 22) | public enum TimeOfTheDay : byte
  type McStatus (line 35) | public enum McStatus : short
  class SavePersona3 (line 45) | public class SavePersona3
    type SectionType (line 47) | public enum SectionType
    type Flags (line 73) | private enum Flags
    method SavePersona3 (line 80) | static SavePersona3()
    method SavePersona3 (line 114) | private SavePersona3(Stream stream)
    method Read (line 217) | public static SavePersona3 Read(Stream stream) => new(stream);
    method IsValid (line 219) | public static bool IsValid(Stream stream)
    method IsValidInternal (line 228) | private static bool IsValidInternal(BinaryReader reader)
    method Write (line 256) | public void Write(Stream stream)
    method ConvertToPortable (line 356) | public void ConvertToPortable()
    method GetGameFlag (line 366) | private bool GetGameFlag(Flags flagId)
    method SetGameFlag (line 376) | private void SetGameFlag(Flags flagId, bool value)
    method ReadSectionByte (line 389) | private byte ReadSectionByte(SectionType section) => TryReadSection(se...
    method ReadSectionInt16 (line 390) | private short ReadSectionInt16(SectionType section) => TryReadSection(...
    method ReadSectionInt32 (line 391) | private int ReadSectionInt32(SectionType section) => TryReadSection(se...
    method ReadSectionArray (line 392) | private T[] ReadSectionArray<T>(SectionType section) where T : class
    method WriteSection (line 406) | private void WriteSection(SectionType section, byte value) => TryWrite...
    method WriteSection (line 407) | private void WriteSection(SectionType section, short value) => TryWrit...
    method WriteSection (line 408) | private void WriteSection(SectionType section, int value) => TryWriteS...
    method WriteSection (line 409) | private void WriteSection<T>(SectionType section, T[] array) where T :...
    method TryReadSection (line 416) | private T TryReadSection<T>(SectionType section, Func<BinaryReader, T>...
    method TryReadSection (line 424) | private T TryReadSection<T>(SectionType section) where T : class
    method TryWriteSection (line 432) | private void TryWriteSection(SectionType section, Action<BinaryWriter>...

FILE: KHSave.LibPersona3/Types/ArcanaType.cs
  type ArcanaType (line 3) | public enum ArcanaType : byte

FILE: KHSave.LibPersona3/Types/Characters.cs
  type Characters (line 5) | public enum Characters : short

FILE: KHSave.LibPersona3/Types/Demon.cs
  class DemonAttribute (line 6) | public class DemonAttribute : InfoAttribute
    method DemonAttribute (line 11) | public DemonAttribute(string name = null, bool royal = false, string t...
    method GetArcana (line 17) | public static string GetArcana(object obj) =>
  class MagicianAttribute (line 20) | public class MagicianAttribute : DemonAttribute
    method MagicianAttribute (line 22) | public MagicianAttribute(string name = null, bool royal = false) : bas...
  class JusticeAttribute (line 24) | public class JusticeAttribute : DemonAttribute
    method JusticeAttribute (line 26) | public JusticeAttribute(string name = null, bool royal = false) : base...
  class DevilAttribute (line 28) | public class DevilAttribute : DemonAttribute
    method DevilAttribute (line 30) | public DevilAttribute(string name = null, bool royal = false) : base(n...
  class StarAttribute (line 32) | public class StarAttribute : DemonAttribute
    method StarAttribute (line 34) | public StarAttribute(string name = null, bool royal = false) : base(na...
  class LoversAttribute (line 36) | public class LoversAttribute : DemonAttribute
    method LoversAttribute (line 38) | public LoversAttribute(string name = null, bool royal = false) : base(...
  class ChariotAttribute (line 40) | public class ChariotAttribute : DemonAttribute
    method ChariotAttribute (line 42) | public ChariotAttribute(string name = null, bool royal = false) : base...
  class EmperorAttribute (line 44) | public class EmperorAttribute : DemonAttribute
    method EmperorAttribute (line 46) | public EmperorAttribute(string name = null, bool royal = false) : base...
  class HangedAttribute (line 48) | public class HangedAttribute : DemonAttribute
    method HangedAttribute (line 50) | public HangedAttribute(string name = null, bool royal = false) : base(...
  class FoolAttribute (line 52) | public class FoolAttribute : DemonAttribute
    method FoolAttribute (line 54) | public FoolAttribute(string name = null, bool royal = false) : base(na...
  class TowerAttribute (line 56) | public class TowerAttribute : DemonAttribute
    method TowerAttribute (line 58) | public TowerAttribute(string name = null, bool royal = false) : base(n...
  class HierophantAttribute (line 60) | public class HierophantAttribute : DemonAttribute
    method HierophantAttribute (line 62) | public HierophantAttribute(string name = null, bool royal = false) : b...
  class PriestessAttribute (line 64) | public class PriestessAttribute : DemonAttribute
    method PriestessAttribute (line 66) | public PriestessAttribute(string name = null, bool royal = false) : ba...
  class StrengthAttribute (line 68) | public class StrengthAttribute : DemonAttribute
    method StrengthAttribute (line 70) | public StrengthAttribute(string name = null, bool royal = false) : bas...
  class EmpressAttribute (line 72) | public class EmpressAttribute : DemonAttribute
    method EmpressAttribute (line 74) | public EmpressAttribute(string name = null, bool royal = false) : base...
  class SunAttribute (line 76) | public class SunAttribute : DemonAttribute
    method SunAttribute (line 78) | public SunAttribute(string name = null, bool royal = false) : base(nam...
  class MoonAttribute (line 80) | public class MoonAttribute : DemonAttribute
    method MoonAttribute (line 82) | public MoonAttribute(string name = null, bool royal = false) : base(na...
  class JudgementAttribute (line 84) | public class JudgementAttribute : DemonAttribute
    method JudgementAttribute (line 86) | public JudgementAttribute(string name = null, bool royal = false) : ba...
  class AeonAttribute (line 89) | public class AeonAttribute : DemonAttribute
    method AeonAttribute (line 91) | public AeonAttribute(string name = null, bool royal = false) : base(na...
  type Demons (line 94) | public enum Demons : short

FILE: KHSave.LibPersona3/Types/ExpendableItems.cs
  type ExpendableItems (line 5) | public enum ExpendableItems

FILE: KHSave.LibPersona3/Types/Inventory.cs
  class ConsumableHpAttribute (line 5) | public class ConsumableHpAttribute : ConsumableAttribute
    method ConsumableHpAttribute (line 7) | public ConsumableHpAttribute(string name = null) : base(name) { }
  type Inventory (line 10) | public enum Inventory

FILE: KHSave.LibPersona3/Types/Skill.cs
  class SkillAttribute (line 5) | public class SkillAttribute : InfoAttribute
    method SkillAttribute (line 7) | public SkillAttribute(string name = null) : base(name) { }
  class HitSkillAttribute (line 9) | public class HitSkillAttribute : SkillAttribute
    method HitSkillAttribute (line 11) | public HitSkillAttribute(string name = null) : base(name) { }
  class GunSkillAttribute (line 13) | public class GunSkillAttribute : SkillAttribute
    method GunSkillAttribute (line 15) | public GunSkillAttribute(string name = null) : base(name) { }
  class FireSkillAttribute (line 17) | public class FireSkillAttribute : SkillAttribute
    method FireSkillAttribute (line 19) | public FireSkillAttribute(string name = null) : base(name) { }
  class IceSkillAttribute (line 21) | public class IceSkillAttribute : SkillAttribute
    method IceSkillAttribute (line 23) | public IceSkillAttribute(string name = null) : base(name) { }
  class WindSkillAttribute (line 25) | public class WindSkillAttribute : SkillAttribute
    method WindSkillAttribute (line 27) | public WindSkillAttribute(string name = null) : base(name) { }
  class ThunderSkillAttribute (line 29) | public class ThunderSkillAttribute : SkillAttribute
    method ThunderSkillAttribute (line 31) | public ThunderSkillAttribute(string name = null) : base(name) { }
  class BlessSkillAttribute (line 33) | public class BlessSkillAttribute : SkillAttribute
    method BlessSkillAttribute (line 35) | public BlessSkillAttribute(string name = null) : base(name) { }
  class DeathSkillAttribute (line 37) | public class DeathSkillAttribute : SkillAttribute
    method DeathSkillAttribute (line 39) | public DeathSkillAttribute(string name = null) : base(name) { }
  class AlmightySkillAttribute (line 41) | public class AlmightySkillAttribute : SkillAttribute
    method AlmightySkillAttribute (line 43) | public AlmightySkillAttribute(string name = null) : base(name) { }
  class SupportSkillAttribute (line 45) | public class SupportSkillAttribute : SkillAttribute
    method SupportSkillAttribute (line 47) | public SupportSkillAttribute(string name = null) : base(name) { }
  class AutoSkillAttribute (line 49) | public class AutoSkillAttribute : SkillAttribute
    method AutoSkillAttribute (line 51) | public AutoSkillAttribute(string name = null) : base(name) { }
  class PoisonSkillAttribute (line 53) | public class PoisonSkillAttribute : SkillAttribute
    method PoisonSkillAttribute (line 55) | public PoisonSkillAttribute(string name = null) : base(name) { }
  class HealSkillAttribute (line 57) | public class HealSkillAttribute : SkillAttribute
    method HealSkillAttribute (line 59) | public HealSkillAttribute(string name = null) : base(name) { }
  type Skill (line 62) | public enum Skill : short

FILE: KHSave.LibPersona5/Models/Character.cs
  class Character (line 6) | public class Character

FILE: KHSave.LibPersona5/Models/Persona.cs
  class Persona (line 6) | public class Persona

FILE: KHSave.LibPersona5/Persona5Royal.cs
  class Persona5Royal (line 6) | internal class Persona5Royal : ISavePersona5

FILE: KHSave.LibPersona5/Persona5Vanilla.cs
  class Persona5Vanilla (line 6) | internal class Persona5Vanilla : ISavePersona5

FILE: KHSave.LibPersona5/Presets.Items.cs
  class Presets (line 13) | public static partial class Presets
    type IItem (line 32) | public interface IItem
    class Items (line 38) | public class Items
    class Accessory (line 51) | public class Accessory : IItem
    class Armor (line 58) | public class Armor : IItem
    class Consumable (line 71) | public class Consumable : IItem
    class KeyItem (line 77) | public class KeyItem : IItem
    class Material (line 83) | public class Material : IItem
    class MeleeWeapon (line 89) | public class MeleeWeapon : IItem
    class Outfit (line 101) | public class Outfit : IItem
    class SkillCard (line 107) | public class SkillCard : IItem
    class RangeWeapon (line 113) | public class RangeWeapon : IItem
    method GetItems (line 125) | public static Items GetItems(bool isRoyal)
    method GetItems (line 144) | private static IEnumerable<TItem> GetItems<TItem>(

FILE: KHSave.LibPersona5/Presets.Persona.cs
  class Presets (line 11) | public static partial class Presets
    class Persona (line 13) | public class Persona
      method ToString (line 33) | public override string ToString() =>
    class PersonaSkillset (line 37) | private class PersonaSkillset
    class PersonaSkill (line 45) | private class PersonaSkill
    method GetResourceFileName (line 52) | private static string GetResourceFileName(string fileName, bool isRoya...
    method GetPersona (line 56) | public static List<Persona> GetPersona(bool isRoyal)

FILE: KHSave.LibPersona5/Presets.cs
  class Presets (line 6) | public static partial class Presets
    class Field (line 8) | public class Field
    method ReadInt32BE (line 17) | private static int ReadInt32BE(this Stream stream) =>
    method FieldAll (line 23) | private static Field FieldAll(int category, int map, string descriptio...
    method FieldVanilla (line 25) | private static Field FieldVanilla(int category, int map, string descri...
    method FieldRoyal (line 27) | private static Field FieldRoyal(int category, int map, string descript...

FILE: KHSave.LibPersona5/SavePersona5.cs
  type ISavePersona5 (line 9) | public interface ISavePersona5
  class SavePersona5 (line 37) | public class SavePersona5
    method SavePersona5 (line 43) | static SavePersona5()
    method IsValid (line 52) | public static bool IsValid(Stream stream)
    method Read (line 64) | public static ISavePersona5 Read(Stream stream)
    method Write (line 77) | public static void Write<TSavePersona5>(Stream stream, TSavePersona5 s...
    method Read (line 83) | private static TSavePersona5 Read<TSavePersona5>(Stream stream)
    method GetGameIdentifier (line 87) | private static int GetGameIdentifier(Stream stream) =>
    method ReadString (line 90) | private static object ReadString(MappingReadArgs arg)
    method WriteString (line 124) | private static void WriteString(MappingWriteArgs arg)
    method ReadFloat (line 149) | private unsafe static object ReadFloat(MappingReadArgs arg)
    method WriteFloat (line 158) | private unsafe static void WriteFloat(MappingWriteArgs arg)

FILE: KHSave.LibPersona5/Types/ArcanaType.cs
  type ArcanaType (line 3) | public enum ArcanaType : byte

FILE: KHSave.LibPersona5/Types/Characters.cs
  type Characters (line 5) | public enum Characters

FILE: KHSave.LibPersona5/Types/Demon.cs
  class DemonAttribute (line 6) | public class DemonAttribute : InfoAttribute
    method DemonAttribute (line 11) | public DemonAttribute(string name = null, bool royal = false, string t...
    method GetArcana (line 17) | public static string GetArcana(object obj) =>
  class MagicianAttribute (line 20) | public class MagicianAttribute : DemonAttribute
    method MagicianAttribute (line 22) | public MagicianAttribute(string name = null, bool royal = false) : bas...
  class JusticeAttribute (line 24) | public class JusticeAttribute : DemonAttribute
    method JusticeAttribute (line 26) | public JusticeAttribute(string name = null, bool royal = false) : base...
  class DevilAttribute (line 28) | public class DevilAttribute : DemonAttribute
    method DevilAttribute (line 30) | public DevilAttribute(string name = null, bool royal = false) : base(n...
  class StarAttribute (line 32) | public class StarAttribute : DemonAttribute
    method StarAttribute (line 34) | public StarAttribute(string name = null, bool royal = false) : base(na...
  class LoversAttribute (line 36) | public class LoversAttribute : DemonAttribute
    method LoversAttribute (line 38) | public LoversAttribute(string name = null, bool royal = false) : base(...
  class ChariotAttribute (line 40) | public class ChariotAttribute : DemonAttribute
    method ChariotAttribute (line 42) | public ChariotAttribute(string name = null, bool royal = false) : base...
  class EmperorAttribute (line 44) | public class EmperorAttribute : DemonAttribute
    method EmperorAttribute (line 46) | public EmperorAttribute(string name = null, bool royal = false) : base...
  class HangedAttribute (line 48) | public class HangedAttribute : DemonAttribute
    method HangedAttribute (line 50) | public HangedAttribute(string name = null, bool royal = false) : base(...
  class FoolAttribute (line 52) | public class FoolAttribute : DemonAttribute
    method FoolAttribute (line 54) | public FoolAttribute(string name = null, bool royal = false) : base(na...
  class TowerAttribute (line 56) | public class TowerAttribute : DemonAttribute
    method TowerAttribute (line 58) | public TowerAttribute(string name = null, bool royal = false) : base(n...
  class HierophantAttribute (line 60) | public class HierophantAttribute : DemonAttribute
    method HierophantAttribute (line 62) | public HierophantAttribute(string name = null, bool royal = false) : b...
  class PriestessAttribute (line 64) | public class PriestessAttribute : DemonAttribute
    method PriestessAttribute (line 66) | public PriestessAttribute(string name = null, bool royal = false) : ba...
  class StrengthAttribute (line 68) | public class StrengthAttribute : DemonAttribute
    method StrengthAttribute (line 70) | public StrengthAttribute(string name = null, bool royal = false) : bas...
  class EmpressAttribute (line 72) | public class EmpressAttribute : DemonAttribute
    method EmpressAttribute (line 74) | public EmpressAttribute(string name = null, bool royal = false) : base...
  class SunAttribute (line 76) | public class SunAttribute : DemonAttribute
    method SunAttribute (line 78) | public SunAttribute(string name = null, bool royal = false) : base(nam...
  class MoonAttribute (line 80) | public class MoonAttribute : DemonAttribute
    method MoonAttribute (line 82) | public MoonAttribute(string name = null, bool royal = false) : base(na...
  class JudgementAttribute (line 84) | public class JudgementAttribute : DemonAttribute
    method JudgementAttribute (line 86) | public JudgementAttribute(string name = null, bool royal = false) : ba...
  class DeathAttribute (line 88) | public class DeathAttribute : DemonAttribute
    method DeathAttribute (line 90) | public DeathAttribute(string name = null, bool royal = false) : base(n...
  class TemperAttribute (line 92) | public class TemperAttribute : DemonAttribute
    method TemperAttribute (line 94) | public TemperAttribute(string name = null, bool royal = false) : base(...
  class HermitAttribute (line 96) | public class HermitAttribute : DemonAttribute
    method HermitAttribute (line 98) | public HermitAttribute(string name = null, bool royal = false) : base(...
  class FortuneAttribute (line 100) | public class FortuneAttribute : DemonAttribute
    method FortuneAttribute (line 102) | public FortuneAttribute(string name = null, bool royal = false) : base...
  class WorldAttribute (line 104) | public class WorldAttribute : DemonAttribute
    method WorldAttribute (line 106) | public WorldAttribute(string name = null, bool royal = false) : base(n...

FILE: KHSave.LibPersona5/Types/Equipment.cs
  class EquipmentAttribute (line 5) | public class EquipmentAttribute : InfoAttribute
    method EquipmentAttribute (line 7) | public EquipmentAttribute(string name = null) : base(name) { }
  class DaggerAttribute (line 10) | public class DaggerAttribute : EquipmentAttribute
    method DaggerAttribute (line 12) | public DaggerAttribute(string name = null) : base(name) { }
  class PoleAttribute (line 15) | public class PoleAttribute : EquipmentAttribute
    method PoleAttribute (line 17) | public PoleAttribute(string name = null) : base(name) { }
  class SaberAttribute (line 20) | public class SaberAttribute : EquipmentAttribute
    method SaberAttribute (line 22) | public SaberAttribute(string name = null) : base(name) { }
  class RangeAttribute (line 25) | public class RangeAttribute : EquipmentAttribute
    method RangeAttribute (line 27) | public RangeAttribute(string name = null) : base(name) { }
  class RangeJokerAttribute (line 30) | public class RangeJokerAttribute : RangeAttribute
    method RangeJokerAttribute (line 32) | public RangeJokerAttribute(string name = null) : base(name) { }
  class RangeCrowAttribute (line 35) | public class RangeCrowAttribute : RangeAttribute
    method RangeCrowAttribute (line 37) | public RangeCrowAttribute(string name = null) : base(name) { }
  class ProtectorAttribute (line 40) | public class ProtectorAttribute : EquipmentAttribute
    method ProtectorAttribute (line 42) | public ProtectorAttribute(string name = null) : base(name) { }
  class ProtectorMaleAttribute (line 45) | public class ProtectorMaleAttribute : ProtectorAttribute
    method ProtectorMaleAttribute (line 47) | public ProtectorMaleAttribute(string name = null) : base(name) { }
  class ProtectorFemaleAttribute (line 50) | public class ProtectorFemaleAttribute : ProtectorAttribute
    method ProtectorFemaleAttribute (line 52) | public ProtectorFemaleAttribute(string name = null) : base(name) { }
  class ProtectorUnisexAttribute (line 55) | public class ProtectorUnisexAttribute : ProtectorAttribute
    method ProtectorUnisexAttribute (line 57) | public ProtectorUnisexAttribute(string name = null) : base(name) { }
  class ProtectorCatAttribute (line 60) | public class ProtectorCatAttribute : ProtectorAttribute
    method ProtectorCatAttribute (line 62) | public ProtectorCatAttribute(string name = null) : base(name) { }
  class OutfitAttribute (line 65) | public class OutfitAttribute : EquipmentAttribute
    method OutfitAttribute (line 67) | public OutfitAttribute(string name = null) : base(name) { }
  type Equipment (line 70) | public enum Equipment : ushort

FILE: KHSave.LibPersona5/Types/Inventory.cs
  class ConsumableHpAttribute (line 5) | public class ConsumableHpAttribute : ConsumableAttribute
    method ConsumableHpAttribute (line 7) | public ConsumableHpAttribute(string name = null) : base(name) { }
  type Inventory (line 10) | public enum Inventory

FILE: KHSave.LibPersona5/Types/Skill.cs
  class SkillAttribute (line 5) | public class SkillAttribute : InfoAttribute
    method SkillAttribute (line 7) | public SkillAttribute(string name = null) : base(name) { }
  class HitSkillAttribute (line 9) | public class HitSkillAttribute : SkillAttribute
    method HitSkillAttribute (line 11) | public HitSkillAttribute(string name = null) : base(name) { }
  class GunSkillAttribute (line 13) | public class GunSkillAttribute : SkillAttribute
    method GunSkillAttribute (line 15) | public GunSkillAttribute(string name = null) : base(name) { }
  class FireSkillAttribute (line 17) | public class FireSkillAttribute : SkillAttribute
    method FireSkillAttribute (line 19) | public FireSkillAttribute(string name = null) : base(name) { }
  class IceSkillAttribute (line 21) | public class IceSkillAttribute : SkillAttribute
    method IceSkillAttribute (line 23) | public IceSkillAttribute(string name = null) : base(name) { }
  class WindSkillAttribute (line 25) | public class WindSkillAttribute : SkillAttribute
    method WindSkillAttribute (line 27) | public WindSkillAttribute(string name = null) : base(name) { }
  class ThunderSkillAttribute (line 29) | public class ThunderSkillAttribute : SkillAttribute
    method ThunderSkillAttribute (line 31) | public ThunderSkillAttribute(string name = null) : base(name) { }
  class BlessSkillAttribute (line 33) | public class BlessSkillAttribute : SkillAttribute
    method BlessSkillAttribute (line 35) | public BlessSkillAttribute(string name = null) : base(name) { }
  class DeathSkillAttribute (line 37) | public class DeathSkillAttribute : SkillAttribute
    method DeathSkillAttribute (line 39) | public DeathSkillAttribute(string name = null) : base(name) { }
  class AlmightySkillAttribute (line 41) | public class AlmightySkillAttribute : SkillAttribute
    method AlmightySkillAttribute (line 43) | public AlmightySkillAttribute(string name = null) : base(name) { }
  class NuclearSkillAttribute (line 45) | public class NuclearSkillAttribute : SkillAttribute
    method NuclearSkillAttribute (line 47) | public NuclearSkillAttribute(string name = null) : base(name) { }
  class PsychoSkillAttribute (line 49) | public class PsychoSkillAttribute : SkillAttribute
    method PsychoSkillAttribute (line 51) | public PsychoSkillAttribute(string name = null) : base(name) { }
  class SupportSkillAttribute (line 53) | public class SupportSkillAttribute : SkillAttribute
    method SupportSkillAttribute (line 55) | public SupportSkillAttribute(string name = null) : base(name) { }
  class AutoSkillAttribute (line 57) | public class AutoSkillAttribute : SkillAttribute
    method AutoSkillAttribute (line 59) | public AutoSkillAttribute(string name = null) : base(name) { }
  class PoisonSkillAttribute (line 61) | public class PoisonSkillAttribute : SkillAttribute
    method PoisonSkillAttribute (line 63) | public PoisonSkillAttribute(string name = null) : base(name) { }
  class HealSkillAttribute (line 65) | public class HealSkillAttribute : SkillAttribute
    method HealSkillAttribute (line 67) | public HealSkillAttribute(string name = null) : base(name) { }
  class SpecialSkillAttribute (line 69) | public class SpecialSkillAttribute : SkillAttribute
    method SpecialSkillAttribute (line 71) | public SpecialSkillAttribute(string name = null) : base(name) { }
  type Skill (line 74) | public enum Skill : short

FILE: KHSave.LibPersona5/Types/SkillRoyal.cs
  type SkillRoyal (line 5) | public enum SkillRoyal : short

FILE: KHSave.LibPersona5/Types/Trait.cs
  type Trait (line 5) | public enum Trait : short

FILE: KHSave.LibRecom/Attributes/CardEnemyAttribute.cs
  class CardEnemyAttribute (line 5) | public class CardEnemyAttribute : InfoAttribute
    method CardEnemyAttribute (line 7) | public CardEnemyAttribute(string info = null) : base(info)

FILE: KHSave.LibRecom/Attributes/CardFriendAttribute.cs
  class CardFriendAttribute (line 5) | public class CardFriendAttribute : InfoAttribute
    method CardFriendAttribute (line 7) | public CardFriendAttribute(string info = null) : base(info)

FILE: KHSave.LibRecom/Attributes/CardItemAttribute.cs
  class CardItemAttribute (line 5) | public class CardItemAttribute : ConsumableAttribute
    method CardItemAttribute (line 7) | public CardItemAttribute(string name = null) : base(name)

FILE: KHSave.LibRecom/Attributes/CardMagicAttribute.cs
  class CardMagicAttribute (line 5) | public class CardMagicAttribute : MagicAttribute
    method CardMagicAttribute (line 7) | public CardMagicAttribute(string name = null) : base(name)

FILE: KHSave.LibRecom/Attributes/CardMapAttribute.cs
  class CardMapAttribute (line 5) | public class CardMapAttribute : InfoAttribute
    method CardMapAttribute (line 7) | public CardMapAttribute(string info = null) : base(info)
  class CardMapRedAttribute (line 12) | public class CardMapRedAttribute : CardMapAttribute
    method CardMapRedAttribute (line 14) | public CardMapRedAttribute(string info = null) : base(info)
  class CardMapGreenAttribute (line 19) | public class CardMapGreenAttribute : CardMapAttribute
    method CardMapGreenAttribute (line 21) | public CardMapGreenAttribute(string info = null) : base(info)
  class CardMapBlueAttribute (line 26) | public class CardMapBlueAttribute : CardMapAttribute
    method CardMapBlueAttribute (line 28) | public CardMapBlueAttribute(string info = null) : base(info)
  class CardMapSpecialAttribute (line 33) | public class CardMapSpecialAttribute : CardMapAttribute
    method CardMapSpecialAttribute (line 35) | public CardMapSpecialAttribute(string info = null) : base(info)

FILE: KHSave.LibRecom/Attributes/CardSpecialAttribute.cs
  class CardSpecialAttribute (line 5) | public class CardSpecialAttribute : InfoAttribute
    method CardSpecialAttribute (line 7) | public CardSpecialAttribute(string info = null) : base(info)

FILE: KHSave.LibRecom/Attributes/CardSummonAttribute.cs
  class CardSummonAttribute (line 3) | public class CardSummonAttribute : CardMagicAttribute
    method CardSummonAttribute (line 5) | public CardSummonAttribute(string name = null) : base(name)

FILE: KHSave.LibRecom/Attributes/CardWeaponAttribute.cs
  class CardWeaponAttribute (line 5) | public class CardWeaponAttribute : KeybladeAttribute
    method CardWeaponAttribute (line 7) | public CardWeaponAttribute(string name = null) : base(name)

FILE: KHSave.LibRecom/Attributes/CardWorldAttribute.cs
  class CardWorldAttribute (line 5) | public class CardWorldAttribute : InfoAttribute
    method CardWorldAttribute (line 7) | public CardWorldAttribute(string info = null) : base(info)

FILE: KHSave.LibRecom/DataRecom.cs
  class DataRecom (line 7) | public class DataRecom

FILE: KHSave.LibRecom/DataRecomMcWork.cs
  class DataRecomMcWork (line 5) | public class DataRecomMcWork

FILE: KHSave.LibRecom/DataRecomTable0.cs
  class DataRecomTable0 (line 6) | public class DataRecomTable0

FILE: KHSave.LibRecom/DataRecomTable1.cs
  class DataRecomTable1 (line 6) | public class DataRecomTable1

FILE: KHSave.LibRecom/DataRecomTable2.cs
  class DataRecomTable2 (line 5) | public class DataRecomTable2

FILE: KHSave.LibRecom/Models/Card.cs
  type Card (line 6) | public struct Card : IEquatable<Card>
    method Equals (line 12) | public bool Equals(Card other) =>
    method Equals (line 15) | public override bool Equals(object obj) =>
    method GetHashCode (line 18) | public override int GetHashCode() =>
    method ToString (line 22) | public override string ToString()

FILE: KHSave.LibRecom/Models/CardFlags.cs
  class CardFlags (line 5) | public class CardFlags

FILE: KHSave.LibRecom/Models/CardModel.cs
  class CardModel (line 7) | public static class CardModel
    method GetCardInventoryIndex (line 162) | public static int GetCardInventoryIndex(CardType cardType, bool isPrem...
    method ToKey (line 177) | private static Card ToKey(this Card card) => new Card
    method Project (line 183) | private static IEnumerable<Card> Project(this CardType[] cards) =>
    method Indexed (line 186) | private static IEnumerable<Card> Indexed(this IEnumerable<Card> cards) =>
    method WithPremium (line 194) | private static IEnumerable<Card> WithPremium(this IEnumerable<Card> ca...

FILE: KHSave.LibRecom/Models/FriendsFlags.cs
  class FriendsFlags (line 5) | public class FriendsFlags

FILE: KHSave.LibRecom/Models/Kh2CardFlags.cs
  class Kh2CardFlags (line 5) | public class Kh2CardFlags

FILE: KHSave.LibRecom/Models/PoohFlags.cs
  class PoohFlags (line 5) | public class PoohFlags

FILE: KHSave.LibRecom/Models/SkillFlags.cs
  class SkillFlags (line 5) | public class SkillFlags

FILE: KHSave.LibRecom/Models/StoryFlag.cs
  class StoryFlag (line 5) | public class StoryFlag

FILE: KHSave.LibRecom/Models/TutorialFlags.cs
  class TutorialFlags (line 7) | public class TutorialFlags

FILE: KHSave.LibRecom/SaveKhRecom.cs
  class SaveKhRecom (line 6) | public class SaveKhRecom
    method SaveKhRecom (line 16) | public SaveKhRecom()
    method Write (line 21) | public void Write(Stream stream)
    method Read (line 39) | public static SaveKhRecom Read(Stream stream)
    method IsValid (line 47) | public static bool IsValid(Stream stream)
    method CalculateChecksum (line 57) | private static uint CalculateChecksum(byte[] data)

FILE: KHSave.LibRecom/Types/CardType.cs
  type CardType (line 6) | public enum CardType

FILE: KHSave.LibRecom/Types/Difficulty.cs
  type Difficulty (line 3) | public enum Difficulty : byte

FILE: KHSave.LibRecom/Types/PlayMode.cs
  type PlayMode (line 3) | public enum PlayMode : byte

FILE: KHSave.LibRecom/Types/SoundMode.cs
  type SoundMode (line 3) | public enum SoundMode : byte

FILE: KHSave.SaveEditor.Common/Contracts/IGetSave.cs
  type IGetSave (line 3) | public interface IGetSave
    method GetSave (line 5) | object GetSave();

FILE: KHSave.SaveEditor.Common/Contracts/IOpenStream.cs
  type IOpenStream (line 5) | public interface IOpenStream
    method OpenStream (line 7) | void OpenStream(Stream stream);

FILE: KHSave.SaveEditor.Common/Contracts/IRefreshUi.cs
  type IRefreshUi (line 3) | public interface IRefreshUi
    method RefreshUi (line 5) | void RefreshUi();

FILE: KHSave.SaveEditor.Common/Contracts/IWriteToStream.cs
  type IWriteToStream (line 5) | public interface IWriteToStream
    method WriteToStream (line 7) | void WriteToStream(Stream stream);

FILE: KHSave.SaveEditor.Common/Controls/ItemComboBox.xaml.cs
  class ItemComboBox (line 8) | public partial class ItemComboBox : UserControl
    method ItemComboBox (line 10) | public ItemComboBox()

FILE: KHSave.SaveEditor.Common/Controls/TwoEqualColumnsStackPanel.cs
  class TwoEqualColumnsStackPanel (line 34) | public class TwoEqualColumnsStackPanel : Panel
    method MeasureOverride (line 51) | protected override Size MeasureOverride(Size constraint)
    method ArrangeOverride (line 78) | protected override Size ArrangeOverride(Size arrangeSize)

FILE: KHSave.SaveEditor.Common/Exceptions/ImageTooLargeException.cs
  class ImageTooLargeException (line 23) | public class ImageTooLargeException : Exception
    method ImageTooLargeException (line 25) | public ImageTooLargeException(int sizeLimit) :

FILE: KHSave.SaveEditor.Common/Exceptions/SaveNotSupportedException.cs
  class SaveNotSupportedException (line 3) | public class SaveNotSupportedException : VisualException
    method SaveNotSupportedException (line 5) | public SaveNotSupportedException(string message) :

FILE: KHSave.SaveEditor.Common/Exceptions/VisualException.cs
  class VisualException (line 5) | public class VisualException : Exception
    method VisualException (line 7) | public VisualException(string message, string title) :

FILE: KHSave.SaveEditor.Common/Global.cs
  class Settings (line 26) | internal class Settings : ApplicationSettingsBase
    method Get (line 28) | T Get<T>(T defaultValue, [CallerMemberName] string propertyName = null)
    method Set (line 41) | void Set<T>(T value, [CallerMemberName] string propertyName = null) =>...
  class Global (line 100) | public static class Global
    method CanDisplay (line 185) | public static bool CanDisplay(object item) => IsAdvancedMode || CanDis...
    method CanDisplayInBasicMode (line 187) | public static bool CanDisplayInBasicMode(object item)

FILE: KHSave.SaveEditor.Common/Models/EnumIconTypeModel.cs
  class EnumIconTypeModel (line 25) | public class EnumIconTypeModel<T> : GenericEntryModel<string, T>

FILE: KHSave.SaveEditor.Common/Models/GenericEntryModel.cs
  class GenericEntryModel (line 23) | public class GenericEntryModel<TName, TValue> : BaseNotifyPropertyChanged
    method ToString (line 29) | public override string ToString() => Name?.ToString() ?? Value?.ToStri...

FILE: KHSave.SaveEditor.Common/Models/GenericEnumListModel.cs
  class GenericEnumListModel (line 25) | public class GenericEnumListModel<TModel, TEnum, TValue> : GenericListMo...
    method GenericEnumListModel (line 29) | public GenericEnumListModel(
    method GetModels (line 38) | private static IEnumerable<TModel> GetModels(
    method GenericEnumListModel (line 68) | public GenericEnumListModel(
  class GenericEnumListModel (line 64) | public class GenericEnumListModel<TModel, TEnum> : GenericEnumListModel<...
    method GenericEnumListModel (line 29) | public GenericEnumListModel(
    method GetModels (line 38) | private static IEnumerable<TModel> GetModels(
    method GenericEnumListModel (line 68) | public GenericEnumListModel(

FILE: KHSave.SaveEditor.Common/Models/GenericListModel.cs
  class GenericListModel (line 27) | public class GenericListModel<TModel, TName, TValue> : BaseNotifyPropert...
    method GenericListModel (line 34) | public GenericListModel(IEnumerable<TModel> items, Func<TValue> valueG...
    method GetEnumerator (line 47) | public IEnumerator<TModel> GetEnumerator() => items.AsEnumerable().Get...
    method GetEnumerator (line 49) | IEnumerator IEnumerable.GetEnumerator() => items.AsEnumerable().GetEnu...
    method GenericListModel (line 58) | public GenericListModel(IEnumerable<TModel> items, Func<TValue> valueG...
  class GenericListModel (line 54) | public class GenericListModel<TModel, TValue> : GenericListModel<TModel,...
    method GenericListModel (line 34) | public GenericListModel(IEnumerable<TModel> items, Func<TValue> valueG...
    method GetEnumerator (line 47) | public IEnumerator<TModel> GetEnumerator() => items.AsEnumerable().Get...
    method GetEnumerator (line 49) | IEnumerator IEnumerable.GetEnumerator() => items.AsEnumerable().GetEnu...
    method GenericListModel (line 58) | public GenericListModel(IEnumerable<TModel> items, Func<TValue> valueG...

FILE: KHSave.SaveEditor.Common/Models/ItemComboBoxModel.cs
  class ItemComboBoxModel (line 24) | public class ItemComboBoxModel<T> : BaseNotifyPropertyChanged
    method ItemComboBoxModel (line 29) | public ItemComboBoxModel(Func<T> getter, Action<T> setter)

FILE: KHSave.SaveEditor.Common/Models/KhEnumListModel.cs
  class KhEnumListModel (line 24) | public class KhEnumListModel<TModel, TEnum, TValue> : GenericEnumListMod...
    method KhEnumListModel (line 28) | public KhEnumListModel(
    method DefaultNameGetter (line 37) | private static string DefaultNameGetter(TEnum value) => InfoAttribute....
    method DefaultFilter (line 39) | private static bool DefaultFilter(TModel model) => Global.CanDisplay(m...
    method KhEnumListModel (line 46) | public KhEnumListModel(
    method KhEnumListModel (line 54) | public KhEnumListModel() :
    method KhEnumListModel (line 62) | public KhEnumListModel(
    method KhEnumListModel (line 70) | public KhEnumListModel() :
  class KhEnumListModel (line 42) | public class KhEnumListModel<TModel, TEnum> : KhEnumListModel<TModel, TE...
    method KhEnumListModel (line 28) | public KhEnumListModel(
    method DefaultNameGetter (line 37) | private static string DefaultNameGetter(TEnum value) => InfoAttribute....
    method DefaultFilter (line 39) | private static bool DefaultFilter(TModel model) => Global.CanDisplay(m...
    method KhEnumListModel (line 46) | public KhEnumListModel(
    method KhEnumListModel (line 54) | public KhEnumListModel() :
    method KhEnumListModel (line 62) | public KhEnumListModel(
    method KhEnumListModel (line 70) | public KhEnumListModel() :
  class KhEnumListModel (line 59) | public class KhEnumListModel<TEnum> : KhEnumListModel<GenericEntryModel<...
    method KhEnumListModel (line 28) | public KhEnumListModel(
    method DefaultNameGetter (line 37) | private static string DefaultNameGetter(TEnum value) => InfoAttribute....
    method DefaultFilter (line 39) | private static bool DefaultFilter(TModel model) => Global.CanDisplay(m...
    method KhEnumListModel (line 46) | public KhEnumListModel(
    method KhEnumListModel (line 54) | public KhEnumListModel() :
    method KhEnumListModel (line 62) | public KhEnumListModel(
    method KhEnumListModel (line 70) | public KhEnumListModel() :

FILE: KHSave.SaveEditor.Common/ProcessStream.cs
  class ProcessStream (line 12) | public class ProcessStream : Stream
    method OpenProcess (line 14) | [DllImport("kernel32.dll")]
    method ReadProcessMemory (line 17) | [DllImport("kernel32.dll")]
    method WriteProcessMemory (line 20) | [DllImport("kernel32.dll")]
    method OpenProcessToken (line 23) | [DllImport("advapi32.dll", SetLastError = true)]
    method ProcessStream (line 32) | public ProcessStream(Process process, long baseAddress, uint length)
    method Flush (line 56) | public override void Flush()
    method Read (line 60) | public override int Read(byte[] buffer, int offset, int count)
    method Seek (line 82) | public override long Seek(long offset, SeekOrigin origin)
    method SetLength (line 97) | public override void SetLength(long value)
    method Write (line 101) | public override void Write(byte[] buffer, int offset, int count)
    method OpenProcess (line 121) | private void OpenProcess(Process process)
    method GetProcesses (line 131) | public static IEnumerable<Process> GetProcesses() =>
    method TryGetProcess (line 134) | public static Process TryGetProcess(Func<Process, bool> predicate, int...
    method TryGetProcessAsync (line 151) | public static Task<Process> TryGetProcessAsync(Func<Process, bool> pre...

FILE: KHSave.SaveEditor.Common/Services/ArchiveWriteToStream.cs
  class ArchiveWriteToStream (line 7) | public class ArchiveWriteToStream : IWriteToStream
    method ArchiveWriteToStream (line 11) | public ArchiveWriteToStream(IWriteToStream realWriteToStream, IArchive...
    method WriteToStream (line 21) | public void WriteToStream(Stream stream)

FILE: KHSave.SaveEditor.Common/Services/GenericEqualityComparer.cs
  class GenericEqualityComparer (line 7) | public class GenericEqualityComparer<T> : IEqualityComparer<T>, IEqualit...
    method GenericEqualityComparer (line 12) | public GenericEqualityComparer(Func<T, T, bool> equals)
    method Equals (line 17) | public bool Equals(T x, T y) => _equals(x, y);
    method GetHashCode (line 19) | public int GetHashCode(T obj) => 0;
    method Equals (line 21) | public new bool Equals(object x, object y) => _equals(x as T, y as T);
    method GetHashCode (line 23) | public int GetHashCode(object obj) => 0;

FILE: KHSave.SaveEditor.Common/Services/IconService.cs
  class IconService (line 10) | public class IconService
    type IconPack (line 12) | public enum IconPack
    method IconService (line 185) | static IconService()
    method UseIconPack (line 190) | public static void UseIconPack(IconPack iconPack)
    method Icon (line 197) | public static ImageSource Icon(object item)
    method Icon (line 209) | public static ImageSource Icon(string iconName) =>

FILE: KHSave.SaveEditor.Common/Services/SearchEngine.cs
  class SearchEngine (line 7) | public class SearchEngine
    type IName (line 11) | public interface IName
    type ICount (line 16) | public interface ICount
    method Filter (line 21) | public static IEnumerable<T> Filter<T>(
    method FilterByName (line 62) | public static bool FilterByName(string searchTerm, IName name) =>
    method FilterByCount (line 65) | public static bool FilterByCount(string searchTerm, ICount count)

FILE: KHSave.SaveEditor.Common/ViewModels/ArchiveEntryViewModel.cs
  class ArchiveEntryViewModel (line 7) | public class ArchiveEntryViewModel : GenericEntryModel<string, ArchiveEn...
    method ArchiveEntryViewModel (line 9) | public ArchiveEntryViewModel(IArchiveEntry archiveEntry)
    method ImportData (line 27) | public void ImportData(byte[] data)
    method Rename (line 40) | public void Rename(string newname)
    method Erase (line 48) | public void Erase()
    method ToString (line 59) | public override string ToString() => Name;

FILE: KHSave.SaveEditor.Common/ViewModels/ArchiveManagerViewModel.cs
  class ArchiveManagerViewModel (line 13) | public class ArchiveManagerViewModel : BaseNotifyPropertyChanged
    method ArchiveManagerViewModel (line 21) | public ArchiveManagerViewModel(Window window, IArchive archive, string...
    method Getter (line 130) | private ArchiveEntryViewModel Getter() => SelectedValue;
    method Setter (line 132) | private void Setter(ArchiveEntryViewModel obj) => SelectedValue = obj;
    method ShowInfoMessageBox (line 134) | private void ShowInfoMessageBox(string message) =>

FILE: KHSave.SaveEditor.Common/Views/ArchiveManagerView.xaml.cs
  class ArchiveManagerView (line 11) | public partial class ArchiveManagerView : Window
    method ArchiveManagerView (line 13) | public ArchiveManagerView()
    method SetArchive (line 24) | public void SetArchive(IArchive archive, string archvieFileName) =>
    method ListBox_MouseDoubleClick (line 29) | private void ListBox_MouseDoubleClick(object sender, System.Windows.In...

FILE: KHSave.SaveEditor.Ff7Remake/Data/BgmPreset.cs
  class BgmPreset (line 12) | public static class BgmPreset
    class BgmResource (line 14) | private class BgmResource
    class BgmItem (line 23) | private class BgmItem
    method LazyInitialize (line 34) | public static void LazyInitialize()
    method Get (line 55) | public static List<BgmModel> Get() => _bgm;
    method InternalFetchLocations (line 57) | private static async Task<List<BgmItem>> InternalFetchLocations()

FILE: KHSave.SaveEditor.Ff7Remake/Data/ItemsPreset.cs
  class ItemName (line 13) | public class ItemName
  class ItemsPreset (line 25) | public static class ItemsPreset
    class ItemsResource (line 27) | public class ItemsResource
    class ItemProperty (line 36) | public class ItemProperty
    method LazyInitialize (line 52) | public static void LazyInitialize()
    method GetItemCategory (line 75) | public static ItemCategory GetItemCategory(InventoryType inventoryType)
    method Get (line 101) | public static ItemProperty Get(InventoryType type) => Get((int)type) ?...
    method GetAll (line 107) | public static IEnumerable<ItemProperty> GetAll() =>
    method Get (line 110) | public static ItemProperty Get(int itemId) =>
    method GetIconAttribute (line 113) | private static string GetIconAttribute(InventoryType item)
    method InternalFetchLocations (line 132) | private static async Task<IEnumerable<ItemName>> InternalFetchLocations()

FILE: KHSave.SaveEditor.Ff7Remake/Data/LocationsPreset.cs
  class Location (line 12) | public class Location
    method Location (line 32) | public Location()
    method Location (line 37) | public Location(int chapter, bool oob, string description, double x, d...
  class LocationsPreset (line 48) | public static class LocationsPreset
    class LocationsResource (line 50) | public class LocationsResource
    method GetLocationsOffline (line 92) | public static List<Location> GetLocationsOffline() => _offlineData;
    method FetchLocations (line 94) | public static async Task<List<Location>> FetchLocations()
    method InternalFetchLocations (line 108) | private static async Task<IEnumerable<Location>> InternalFetchLocations()

FILE: KHSave.SaveEditor.Ff7Remake/Models/BgmModel.cs
  class BgmModel (line 3) | public class BgmModel

FILE: KHSave.SaveEditor.Ff7Remake/Models/ChapterCharacterEntryModel.cs
  class ChapterCharacterEntryModel (line 31) | public class ChapterCharacterEntryModel :
    method ChapterCharacterEntryModel (line 37) | public ChapterCharacterEntryModel(ChunkChapter chapter, int characterI...

FILE: KHSave.SaveEditor.Ff7Remake/Models/ChapterEntryModel.cs
  class ChapterEntryModel (line 33) | public class ChapterEntryModel : BaseNotifyPropertyChanged
    method ChapterEntryModel (line 38) | public ChapterEntryModel(ChunkChapter chapter, int index, Vector3f clo...

FILE: KHSave.SaveEditor.Ff7Remake/Models/ChapterObjectEntry.cs
  class ChapterObjectEntry (line 26) | public class ChapterObjectEntry : BaseNotifyPropertyChanged
    method ChapterObjectEntry (line 30) | public ChapterObjectEntry(ChapterObject chapterObject, IEnumerable<Cha...
    method ToString (line 78) | public override string ToString() => _chapterObject.ToString();

FILE: KHSave.SaveEditor.Ff7Remake/Models/CharacterEntryModel.cs
  class CharacterEntryModel (line 30) | public class CharacterEntryModel
    method CharacterEntryModel (line 38) | public CharacterEntryModel(SaveFf7Remake save, int index, EquipmentsVi...

FILE: KHSave.SaveEditor.Ff7Remake/Models/ChunkEntryModel.cs
  class ChunkEntryModel (line 32) | public class ChunkEntryModel
    method ChunkEntryModel (line 44) | public ChunkEntryModel(SaveFf7Remake save, IRefreshUi refreshUi, Chunk...
    method Import (line 75) | private void Import(string fileName)
    method Export (line 93) | private void Export(string fileName)
    method ToString (line 99) | public override string ToString() =>

FILE: KHSave.SaveEditor.Ff7Remake/Models/EquipmentEntryModel.cs
  class EquipmentEntryModel (line 37) | public class EquipmentEntryModel : BaseNotifyPropertyChanged, SearchEngi...
    method EquipmentEntryModel (line 44) | public EquipmentEntryModel(int index, WeaponFound[] weaponFound, Mater...
    method GetMateriaIcon (line 183) | private ImageSource GetMateriaIcon(int index)
    method GetFirstEmptyIndexSlot (line 193) | private int GetFirstEmptyIndexSlot()

FILE: KHSave.SaveEditor.Ff7Remake/Models/InventroyEntryModel.cs
  class InventroyEntryModel (line 36) | public class InventroyEntryModel :
    method InventroyEntryModel (line 43) | public InventroyEntryModel(Inventory inventory)

FILE: KHSave.SaveEditor.Ff7Remake/Models/ItemModel.cs
  class ItemModel (line 9) | public class ItemModel
    method ItemModel (line 13) | public ItemModel(ItemsPreset.ItemProperty itemProperty)
    method GetItemModels (line 22) | public static IEnumerable<ItemModel> GetItemModels() =>

FILE: KHSave.SaveEditor.Ff7Remake/Models/MateriaEntryModel.cs
  class MateriaEntryModel (line 34) | public class MateriaEntryModel :
    method MateriaEntryModel (line 41) | public MateriaEntryModel(SaveFf7Remake save, Materia materia)
    method GetFirstEmptyIndexSlot (line 91) | private int GetFirstEmptyIndexSlot()

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/ChaptersViewModel.cs
  class ChaptersViewModel (line 28) | public class ChaptersViewModel : GenericListModel<ChapterEntryModel>
    method ChaptersViewModel (line 30) | public ChaptersViewModel(SaveFf7Remake save) :
    method ChaptersViewModel (line 36) | private ChaptersViewModel(IEnumerable<ChapterEntryModel> list) :
    method OnSelectedItem (line 44) | protected override void OnSelectedItem(ChapterEntryModel item)
    method OnNewItem (line 51) | protected override ChapterEntryModel OnNewItem() =>
    method GetChapterIdFromChapterNumber (line 54) | private static int GetChapterIdFromChapterNumber(int chapterNumber)

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/CharactersViewModel.cs
  class CharactersViewModel (line 29) | public class CharactersViewModel : GenericListModel<CharacterEntryModel>
    method CharactersViewModel (line 33) | public CharactersViewModel(SaveFf7Remake save, EquipmentsViewModel wea...
    method CharactersViewModel (line 39) | private CharactersViewModel(IEnumerable<CharacterEntryModel> list) :
    method OnSelectedItem (line 46) | protected override void OnSelectedItem(CharacterEntryModel item)
    method OnNewItem (line 53) | protected override CharacterEntryModel OnNewItem() =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/DeveloperViewModel.cs
  class DeveloperViewModel (line 31) | public class DeveloperViewModel : GenericListModel<ChunkEntryModel>
    method DeveloperViewModel (line 37) | public DeveloperViewModel(SaveFf7Remake save, IRefreshUi refreshUi) :
    method OnSelectedItem (line 87) | protected override void OnSelectedItem(ChunkEntryModel item)
    method OnNewItem (line 94) | protected override ChunkEntryModel OnNewItem() =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/EquipmentsViewModel.cs
  class EquipmentsViewModel (line 30) | public class EquipmentsViewModel : GenericListModel<EquipmentEntryModel>
    method EquipmentsViewModel (line 34) | public EquipmentsViewModel(WeaponFound[] weaponFound, IEnumerable<Mate...
    method EquipmentsViewModel (line 39) | private EquipmentsViewModel(IEnumerable<EquipmentEntryModel> list) :
    method AdditionalFilter (line 56) | private bool AdditionalFilter(string searchTerm, EquipmentEntryModel obj)
    method OnSelectedItem (line 64) | protected override void OnSelectedItem(EquipmentEntryModel item)
    method OnNewItem (line 71) | protected override EquipmentEntryModel OnNewItem() =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/FF7RMainViewModel.cs
  class FF7RMainViewModel (line 27) | public class FF7RMainViewModel : BaseNotifyPropertyChanged, IRefreshUi, ...
    method RefreshUi (line 53) | public void RefreshUi()
    method OpenStream (line 82) | public void OpenStream(Stream stream)
    method WriteToStream (line 88) | public void WriteToStream(Stream stream) =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/GlobalViewModel.cs
  class GlobalViewModel (line 28) | public class GlobalViewModel : BaseNotifyPropertyChanged
    method GlobalViewModel (line 32) | public GlobalViewModel(SaveFf7Remake save)

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/InventoryViewModel.cs
  class InventoryViewModel (line 29) | public class InventoryViewModel : GenericListModel<InventroyEntryModel>
    method InventoryViewModel (line 33) | public InventoryViewModel(SaveFf7Remake save) :
    method InventoryViewModel (line 38) | private InventoryViewModel(IEnumerable<InventroyEntryModel> list) :
    method OnSelectedItem (line 55) | protected override void OnSelectedItem(InventroyEntryModel item)
    method OnNewItem (line 62) | protected override InventroyEntryModel OnNewItem() =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/MateriaViewModel.cs
  class MateriaViewModel (line 29) | public class MateriaViewModel : GenericListModel<MateriaEntryModel>
    method MateriaViewModel (line 34) | public MateriaViewModel(SaveFf7Remake save) :
    method MateriaViewModel (line 40) | private MateriaViewModel(IEnumerable<MateriaEntryModel> list) :
    method Order (line 57) | private static int Order(MateriaEntryModel materia)
    method OnSelectedItem (line 64) | protected override void OnSelectedItem(MateriaEntryModel item)
    method OnNewItem (line 71) | protected override MateriaEntryModel OnNewItem() =>

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/TeleportViewModel.cs
  class TeleportViewModel (line 32) | public class TeleportViewModel : BaseNotifyPropertyChanged
    method TeleportViewModel (line 44) | public TeleportViewModel(ChapterCharacterEntryModel entry)

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/Unknown1ViewModel.cs
  class Unknown1ViewModel (line 30) | public class Unknown1ViewModel : BaseNotifyPropertyChanged
    method Unknown1ViewModel (line 35) | public Unknown1ViewModel(SaveFf7Remake save)

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/Unknown2ViewModel.cs
  class Unknown2ViewModel (line 29) | public class Unknown2ViewModel : BaseNotifyPropertyChanged
    method Unknown2ViewModel (line 34) | public Unknown2ViewModel(SaveFf7Remake save)

FILE: KHSave.SaveEditor.Ff7Remake/ViewModels/Unknown3ViewModel.cs
  class Unknown3ViewModel (line 30) | public class Unknown3ViewModel : BaseNotifyPropertyChanged
    method Unknown3ViewModel (line 35) | public Unknown3ViewModel(SaveFf7Remake save)

FILE: KHSave.SaveEditor.Ff7Remake/Views/ChapterEntryView.xaml.cs
  class ChapterEntryView (line 21) | public partial class ChapterEntryView : UserControl
    method ChapterEntryView (line 23) | public ChapterEntryView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/ChapterMainView.xaml.cs
  class ChapterMainView (line 8) | public partial class ChapterMainView : UserControl
    method ChapterMainView (line 10) | public ChapterMainView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/ChapterObjectsView.xaml.cs
  class ChapterObjectsView (line 8) | public partial class ChapterObjectsView : UserControl
    method ChapterObjectsView (line 10) | public ChapterObjectsView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/ChapterPlayableView.xaml.cs
  class ChapterPlayableView (line 8) | public partial class ChapterPlayableView : UserControl
    method ChapterPlayableView (line 10) | public ChapterPlayableView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/ChaptersView.xaml.cs
  class ChaptersView (line 21) | public partial class ChaptersView : UserControl
    method ChaptersView (line 23) | public ChaptersView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/CharacterEntryView.xaml.cs
  class CharacterEntryView (line 21) | public partial class CharacterEntryView : UserControl
    method CharacterEntryView (line 23) | public CharacterEntryView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/CharactersView.xaml.cs
  class CharactersView (line 19) | public partial class CharactersView : UserControl
    method CharactersView (line 21) | public CharactersView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/DeveloperView.xaml.cs
  class DeveloperView (line 8) | public partial class DeveloperView : UserControl
    method DeveloperView (line 10) | public DeveloperView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/EquipmentEntryView.xaml.cs
  class EquipmentEntryView (line 21) | public partial class EquipmentEntryView : UserControl
    method EquipmentEntryView (line 23) | public EquipmentEntryView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/EquipmentsView.xaml.cs
  class EquipmentsView (line 8) | public partial class EquipmentsView : UserControl
    method EquipmentsView (line 10) | public EquipmentsView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/FF7RMainView.xaml.cs
  class FF7RMainView (line 9) | public partial class FF7RMainView : UserControl
    method FF7RMainView (line 11) | public FF7RMainView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/GlobalView.xaml.cs
  class GlobalView (line 8) | public partial class GlobalView : UserControl
    method GlobalView (line 10) | public GlobalView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/InventoryEntryView.xaml.cs
  class InventoryEntryView (line 9) | public partial class InventoryEntryView : UserControl
    method InventoryEntryView (line 11) | public InventoryEntryView()
    method Hyperlink_RequestNavigate (line 16) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: KHSave.SaveEditor.Ff7Remake/Views/InventoryView.xaml.cs
  class InventoryView (line 8) | public partial class InventoryView : UserControl
    method InventoryView (line 10) | public InventoryView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/MateriaEntryView.xaml.cs
  class MateriaEntryView (line 8) | public partial class MateriaEntryView : UserControl
    method MateriaEntryView (line 10) | public MateriaEntryView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/MateriaView.xaml.cs
  class MateriaView (line 21) | public partial class MateriaView : UserControl
    method MateriaView (line 23) | public MateriaView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/PositionView.xaml.cs
  class PositionView (line 8) | public partial class PositionView : UserControl
    method PositionView (line 10) | public PositionView()

FILE: KHSave.SaveEditor.Ff7Remake/Views/TeleportWindow.xaml.cs
  class TeleportWindow (line 11) | public partial class TeleportWindow : Window
    method TeleportWindow (line 13) | public TeleportWindow(ChapterCharacterEntryModel chapterCharacter)
    method Hyperlink_RequestNavigate (line 19) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: KHSave.SaveEditor.Ff7Remake/Views/Unknown1View.xaml.cs
  class Unknown1View (line 21) | public partial class Unknown1View : UserControl
    method Unknown1View (line 23) | public Unknown1View()

FILE: KHSave.SaveEditor.Ff7Remake/Views/Unknown2View.xaml.cs
  class Unknown2View (line 8) | public partial class Unknown2View : UserControl
    method Unknown2View (line 10) | public Unknown2View()

FILE: KHSave.SaveEditor.Ff7Remake/Views/Unknown3View.xaml.cs
  class Unknown3View (line 21) | public partial class Unknown3View : UserControl
    method Unknown3View (line 23) | public Unknown3View()

FILE: KHSave.SaveEditor.Kh02/MainView.xaml.cs
  class MainView (line 8) | public partial class MainView : UserControl
    method MainView (line 10) | public MainView()

FILE: KHSave.SaveEditor.Kh02/Models/SlotListModel.cs
  class SlotListModel (line 10) | public class SlotListModel : GenericListModel<SlotViewModel>
    method SlotListModel (line 12) | public SlotListModel(SaveKh02 save) :
    method SlotListModel (line 16) | public SlotListModel(IEnumerable<Slot> slots) :
    method SlotListModel (line 20) | public SlotListModel(IEnumerable<SlotViewModel> slots) :
    method OnNewItem (line 24) | protected override SlotViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh02/ViewModels/GlobalSystemViewModel.cs
  class GlobalSystemViewModel (line 23) | public class GlobalSystemViewModel
    method GlobalSystemViewModel (line 27) | public GlobalSystemViewModel(SaveKh02 save)

FILE: KHSave.SaveEditor.Kh02/ViewModels/Kh02ViewModel.cs
  class Kh02ViewModel (line 28) | public class Kh02ViewModel : BaseNotifyPropertyChanged, IRefreshUi, IOpe...
    method Kh02ViewModel (line 51) | public Kh02ViewModel()
    method RefreshUi (line 55) | public void RefreshUi()
    method OpenStream (line 67) | public void OpenStream(Stream stream)
    method WriteToStream (line 73) | public void WriteToStream(Stream stream) => Save.Write(stream);

FILE: KHSave.SaveEditor.Kh02/ViewModels/SlotViewModel.cs
  class SlotViewModel (line 29) | public class SlotViewModel : GenericEntryModel<string, SlotViewModel>
    method SlotViewModel (line 34) | public SlotViewModel(int slotIndex, Slot slot)

FILE: KHSave.SaveEditor.Kh02/Views/SystemView.xaml.cs
  class SystemView (line 21) | public partial class SystemView : UserControl
    method SystemView (line 23) | public SystemView()

FILE: KHSave.SaveEditor.Kh1/Interfaces/IGetAbilities.cs
  type IGetAbilities (line 6) | public interface IGetAbilities

FILE: KHSave.SaveEditor.Kh1/MainView.xaml.cs
  class MainView (line 8) | public partial class MainView : UserControl
    method MainView (line 10) | public MainView()

FILE: KHSave.SaveEditor.Kh1/Models/InventoryItemModel.cs
  class InventoryItemModel (line 9) | public class InventoryItemModel :
    method InventoryItemModel (line 17) | public InventoryItemModel(int index, byte[] inventoryCount)

FILE: KHSave.SaveEditor.Kh1/Service/EquipmentManagerFactory.cs
  class EquipmentManagerFactory (line 9) | public static class EquipmentManagerFactory
    class AccessoryEquipmentManager (line 11) | private class AccessoryEquipmentManager : IEquipmentManager
      method AccessoryEquipmentManager (line 15) | internal AccessoryEquipmentManager(Character character)
      method GetEquipment (line 22) | public EquipmentType GetEquipment(byte index) => (EquipmentType)char...
      method SetEquipment (line 23) | public void SetEquipment(byte index, EquipmentType equipment) => cha...
    class ConsumableEquipmentManager (line 26) | private class ConsumableEquipmentManager : IEquipmentManager
      method ConsumableEquipmentManager (line 30) | internal ConsumableEquipmentManager(Character character)
      method GetEquipment (line 37) | public EquipmentType GetEquipment(byte index) => (EquipmentType)char...
      method SetEquipment (line 38) | public void SetEquipment(byte index, EquipmentType equipment) => cha...
    method ForAccessory (line 41) | public static IEquipmentManager ForAccessory(Character character) => n...
    method ForConsumable (line 42) | public static IEquipmentManager ForConsumable(Character character) => ...

FILE: KHSave.SaveEditor.Kh1/Service/IEquipmentManager.cs
  type IEquipmentManager (line 5) | public interface IEquipmentManager
    method GetEquipment (line 9) | EquipmentType GetEquipment(byte index);
    method SetEquipment (line 10) | void SetEquipment(byte index, EquipmentType equipment);

FILE: KHSave.SaveEditor.Kh1/ViewModels/AbilityViewModel.cs
  class AbilityViewModel (line 7) | public class AbilityViewModel
    method AbilityViewModel (line 13) | public AbilityViewModel(byte[] abilities, int index, IGetAbilities get...

FILE: KHSave.SaveEditor.Kh1/ViewModels/EquipmentItemsViewModel.cs
  class EquipmentItemsViewModel (line 12) | public class EquipmentItemsViewModel
    class EquipmentItemViewModel (line 16) | public class EquipmentItemViewModel : BaseNotifyPropertyChanged
      method EquipmentItemViewModel (line 21) | internal EquipmentItemViewModel(EquipmentItemsViewModel vm, byte index)
      method InvalidateEnabled (line 44) | public void InvalidateEnabled()
    method EquipmentItemsViewModel (line 51) | public EquipmentItemsViewModel(IEquipmentManager equipmentManager)
    method IsEnabled (line 81) | public bool IsEnabled(byte index) => equipmentManager.Count > index;
    method SetEnabled (line 82) | public void SetEnabled(byte index, bool enabled)
    method GetEquipment (line 106) | public EquipmentType GetEquipment(byte index) => equipmentManager.GetE...
    method SetEquipment (line 107) | public void SetEquipment(byte index, EquipmentType equipment) => equip...

FILE: KHSave.SaveEditor.Kh1/ViewModels/InventoryViewModel.cs
  class InventoryViewModel (line 9) | public class InventoryViewModel : GenericListModel<InventoryItemModel>
    method InventoryViewModel (line 13) | public InventoryViewModel(ISaveKh1 save) :

FILE: KHSave.SaveEditor.Kh1/ViewModels/Kh1ViewModel.cs
  class Kh1ViewModel (line 13) | public class Kh1ViewModel : BaseNotifyPropertyChanged,
    method Kh1ViewModel (line 21) | public Kh1ViewModel()
    method RefreshUi (line 31) | public void RefreshUi()
    method OpenStream (line 42) | public void OpenStream(Stream stream)
    method WriteToStream (line 56) | public void WriteToStream(Stream stream) => Save.Write(stream);

FILE: KHSave.SaveEditor.Kh1/ViewModels/PlayerViewModel.cs
  class PlayerViewModel (line 14) | public class PlayerViewModel
    method PlayerViewModel (line 19) | public PlayerViewModel(Character character, int index, IGetAbilities g...

FILE: KHSave.SaveEditor.Kh1/ViewModels/PlayersViewModel.cs
  class PlayersViewModel (line 11) | public class PlayersViewModel : GenericListModel<PlayerViewModel>
    method PlayersViewModel (line 15) | public PlayersViewModel(ISaveKh1 save, IGetAbilities getAbilities) :
    method PlayersViewModel (line 21) | public PlayersViewModel(IEnumerable<Character> list, IGetAbilities get...
    method PlayersViewModel (line 27) | public PlayersViewModel(IEnumerable<PlayerViewModel> list) :
    method OnSelectedItem (line 36) | protected override void OnSelectedItem(PlayerViewModel item)
    method OnNewItem (line 43) | protected override PlayerViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh1/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 11) | public class SystemViewModel
    method SystemViewModel (line 16) | public SystemViewModel(ISaveKh1 save, IGetAbilities getAbilities)
    method GetDifficulty (line 59) | private List<GenericEntryModel<string, byte>> GetDifficulty<T>()

FILE: KHSave.SaveEditor.Kh1/Views/AbilityView.xaml.cs
  class AbilityView (line 21) | public partial class AbilityView : UserControl
    method AbilityView (line 23) | public AbilityView()

FILE: KHSave.SaveEditor.Kh1/Views/InventoryView.xaml.cs
  class InventoryView (line 21) | public partial class InventoryView : UserControl
    method InventoryView (line 23) | public InventoryView()

FILE: KHSave.SaveEditor.Kh1/Views/PlayerEquipmentView.xaml.cs
  class PlayerEquipmentView (line 8) | public partial class PlayerEquipmentView : UserControl
    method PlayerEquipmentView (line 10) | public PlayerEquipmentView()

FILE: KHSave.SaveEditor.Kh1/Views/PlayerView.xaml.cs
  class PlayerView (line 21) | public partial class PlayerView : UserControl
    method PlayerView (line 23) | public PlayerView()

FILE: KHSave.SaveEditor.Kh1/Views/PlayersView.xaml.cs
  class PlayersView (line 21) | public partial class PlayersView : UserControl
    method PlayersView (line 23) | public PlayersView()

FILE: KHSave.SaveEditor.Kh1/Views/SystemView.xaml.cs
  class SystemView (line 8) | public partial class SystemView : UserControl
    method SystemView (line 10) | public SystemView()

FILE: KHSave.SaveEditor.Kh2/Data/Rooms.cs
  class Data (line 7) | public static partial class Data
    method GetRoom (line 366) | public static RoomModel GetRoom(int world, int room) =>

FILE: KHSave.SaveEditor.Kh2/Interfaces/IResourceGetter.cs
  type IResourceGetter (line 7) | public interface IResourceGetter

FILE: KHSave.SaveEditor.Kh2/MainView.xaml.cs
  class MainView (line 8) | public partial class MainView : UserControl
    method MainView (line 10) | public MainView()

FILE: KHSave.SaveEditor.Kh2/Models/AbilityModel.cs
  class AbilityModel (line 10) | public class AbilityModel : BaseNotifyPropertyChanged
    method AbilityModel (line 16) | public AbilityModel(int index, ushort[] abilities, IResourceGetter res...

FILE: KHSave.SaveEditor.Kh2/Models/InventoryItemModel.cs
  class InventoryItemModel (line 9) | public class InventoryItemModel :
    method InventoryItemModel (line 17) | public InventoryItemModel(int index, byte[] inventoryCount)

FILE: KHSave.SaveEditor.Kh2/Models/MapScriptModel.cs
  class MapScriptModel (line 7) | public class MapScriptModel
    method MapScriptModel (line 13) | public MapScriptModel(WorldType world, int placeIndex, IPlaceScript pl...

FILE: KHSave.SaveEditor.Kh2/Models/ProgressModel.cs
  class ProgressModel (line 8) | public class ProgressModel : BaseNotifyPropertyChanged, SearchEngine.IName
    method ProgressModel (line 13) | public ProgressModel(int worldId, Progress progress, int flag)

FILE: KHSave.SaveEditor.Kh2/Models/RoomModel.cs
  class RoomModel (line 7) | public class RoomModel
    method RoomModel (line 15) | public RoomModel(WorldType world, int roomIndex, GameType gameType, st...
    method ToString (line 23) | public override string ToString()

FILE: KHSave.SaveEditor.Kh2/Service/EquipmentManagerFactory.cs
  class EquipmentManagerFactory (line 7) | public static class EquipmentManagerFactory
    class ArmorEquipmentManager (line 9) | private class ArmorEquipmentManager : IEquipmentManager
      method ArmorEquipmentManager (line 13) | internal ArmorEquipmentManager(ICharacter character)
      method GetEquipment (line 20) | public EquipmentType GetEquipment(uint index) => (EquipmentType)char...
      method SetEquipment (line 21) | public void SetEquipment(uint index, EquipmentType equipment) => cha...
    class AccessoryEquipmentManager (line 24) | private class AccessoryEquipmentManager : IEquipmentManager
      method AccessoryEquipmentManager (line 28) | internal AccessoryEquipmentManager(ICharacter character)
      method GetEquipment (line 35) | public EquipmentType GetEquipment(uint index) => (EquipmentType)char...
      method SetEquipment (line 36) | public void SetEquipment(uint index, EquipmentType equipment) => cha...
    class ConsumableEquipmentManager (line 39) | private class ConsumableEquipmentManager : IEquipmentManager
      method ConsumableEquipmentManager (line 43) | internal ConsumableEquipmentManager(ICharacter character)
      method GetEquipment (line 50) | public EquipmentType GetEquipment(uint index) => (EquipmentType)char...
      method SetEquipment (line 51) | public void SetEquipment(uint index, EquipmentType equipment) => cha...
    method ForArmor (line 54) | public static IEquipmentManager ForArmor(ICharacter character) => new ...
    method ForAccessory (line 55) | public static IEquipmentManager ForAccessory(ICharacter character) => ...
    method ForConsumable (line 56) | public static IEquipmentManager ForConsumable(ICharacter character) =>...

FILE: KHSave.SaveEditor.Kh2/Service/IEquipmentManager.cs
  type IEquipmentManager (line 5) | public interface IEquipmentManager
    method GetEquipment (line 9) | EquipmentType GetEquipment(uint index);
    method SetEquipment (line 10) | void SetEquipment(uint index, EquipmentType equipment);

FILE: KHSave.SaveEditor.Kh2/ViewModels/CharacterViewModel.cs
  class CharacterViewModel (line 33) | public class CharacterViewModel
    method CharacterViewModel (line 39) | public CharacterViewModel(ICharacter character, int index, IResourceGe...

FILE: KHSave.SaveEditor.Kh2/ViewModels/CharactersViewModel.cs
  class CharactersViewModel (line 29) | public class CharactersViewModel : GenericListModel<CharacterViewModel>
    method CharactersViewModel (line 33) | public CharactersViewModel(ISaveKh2 save, IResourceGetter resourceGett...
    method CharactersViewModel (line 39) | public CharactersViewModel(IEnumerable<CharacterViewModel> list) :
    method OnSelectedItem (line 48) | protected override void OnSelectedItem(CharacterViewModel item)
    method OnNewItem (line 55) | protected override CharacterViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh2/ViewModels/DriveFormsViewModel.cs
  class DriveFormViewModel (line 33) | public class DriveFormViewModel : BaseNotifyPropertyChanged
    method DriveFormViewModel (line 39) | public DriveFormViewModel(IDriveForm driveForm, DriveFormType type, IR...
  class DriveFormsViewModel (line 57) | public class DriveFormsViewModel : GenericListModel<DriveFormViewModel>
    method DriveFormsViewModel (line 61) | public DriveFormsViewModel(ISaveKh2 save, IResourceGetter resourceGett...
    method DriveFormsViewModel (line 67) | public DriveFormsViewModel(IEnumerable<DriveFormViewModel> list) :
    method OnSelectedItem (line 76) | protected override void OnSelectedItem(DriveFormViewModel item)
    method OnNewItem (line 83) | protected override DriveFormViewModel OnNewItem()
    method GetDriveFormType (line 88) | private static DriveFormType GetDriveFormType(int index, bool isFinalMix)

FILE: KHSave.SaveEditor.Kh2/ViewModels/EquipmentItemsViewModel.cs
  class EquipmentItemsViewModel (line 12) | public class EquipmentItemsViewModel
    class EquipmentItemViewModel (line 16) | public class EquipmentItemViewModel : BaseNotifyPropertyChanged
      method EquipmentItemViewModel (line 22) | internal EquipmentItemViewModel(EquipmentItemsViewModel vm, uint ind...
      method InvalidateEnabled (line 45) | public void InvalidateEnabled()
    method EquipmentItemsViewModel (line 52) | public EquipmentItemsViewModel(IEquipmentManager equipmentManager, IRe...
    method IsEnabled (line 74) | public bool IsEnabled(uint index) => equipmentManager.Count > index;
    method SetEnabled (line 75) | public void SetEnabled(uint index, bool enabled)
    method GetEquipment (line 95) | public EquipmentType GetEquipment(uint index) => equipmentManager.GetE...
    method SetEquipment (line 96) | public void SetEquipment(uint index, EquipmentType equipment) => equip...

FILE: KHSave.SaveEditor.Kh2/ViewModels/InventoryViewModel.cs
  class InventoryViewModel (line 9) | public class InventoryViewModel : GenericListModel<InventoryItemModel>
    method InventoryViewModel (line 13) | public InventoryViewModel(ISaveKh2 save) :

FILE: KHSave.SaveEditor.Kh2/ViewModels/Kh2ViewModel.cs
  class Kh2ViewModel (line 34) | public class Kh2ViewModel : BaseNotifyPropertyChanged, IRefreshUi, IOpen...
    method Kh2ViewModel (line 58) | public Kh2ViewModel()
    method RefreshUi (line 75) | public void RefreshUi()
    method OpenStream (line 95) | public void OpenStream(Stream stream)
    method WriteToStream (line 108) | public void WriteToStream(Stream stream) => SaveKh2.Write(stream, save);
    method GetSave (line 110) | public object GetSave() => save;

FILE: KHSave.SaveEditor.Kh2/ViewModels/ProgressViewModel.cs
  class ProgressViewModel (line 13) | public class ProgressViewModel : GenericListModel<ProgressModel>
    method ProgressViewModel (line 17) | public ProgressViewModel(Progress[] progresses) :
    method AdditionalFilters (line 42) | private bool AdditionalFilters(string searchTerm, ProgressModel item) =>
    method GetProgressModels (line 48) | private static IEnumerable<ProgressModel> GetProgressModels(Progress[]...

FILE: KHSave.SaveEditor.Kh2/ViewModels/RoomViewModel.cs
  class RoomViewModel (line 7) | public class RoomViewModel
    method RoomViewModel (line 9) | public RoomViewModel(RoomModel room)

FILE: KHSave.SaveEditor.Kh2/ViewModels/RoomVisitedViewModel.cs
  class RoomVisitedViewModel (line 9) | public class RoomVisitedViewModel : BaseNotifyPropertyChanged
    class RoomVisitedEntry (line 11) | public class RoomVisitedEntry
      method RoomVisitedEntry (line 17) | internal RoomVisitedEntry(RoomModel roomModel, byte[] rooms, int index)
    method RoomVisitedViewModel (line 42) | public RoomVisitedViewModel(ISaveKh2 save)

FILE: KHSave.SaveEditor.Kh2/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 29) | public class SystemViewModel : BaseNotifyPropertyChanged
    method SystemViewModel (line 33) | public SystemViewModel(ISaveKh2 save)

FILE: KHSave.SaveEditor.Kh2/ViewModels/WorldsViewModel.cs
  class WorldViewModel (line 14) | public class WorldViewModel : BaseNotifyPropertyChanged
    method WorldViewModel (line 19) | public WorldViewModel(ISaveKh2 save, int index)
  class WorldsViewModel (line 50) | public class WorldsViewModel : GenericListModel<WorldViewModel>
    method WorldsViewModel (line 52) | public WorldsViewModel(ISaveKh2 save) :
    method WorldsViewModel (line 56) | public WorldsViewModel(IEnumerable<WorldViewModel> list) :
    method OnSelectedItem (line 63) | protected override void OnSelectedItem(WorldViewModel item)
    method OnNewItem (line 70) | protected override WorldViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh2/Views/DriveFormView.xaml.cs
  class DriveFormView (line 21) | public partial class DriveFormView : UserControl
    method DriveFormView (line 23) | public DriveFormView()

FILE: KHSave.SaveEditor.Kh2/Views/DriveFormsView.xaml.cs
  class DriveFormsView (line 21) | public partial class DriveFormsView : UserControl
    method DriveFormsView (line 23) | public DriveFormsView()

FILE: KHSave.SaveEditor.Kh2/Views/InventoryView.xaml.cs
  class InventoryView (line 8) | public partial class InventoryView : UserControl
    method InventoryView (line 10) | public InventoryView()

FILE: KHSave.SaveEditor.Kh2/Views/PlayerEquipmentView.xaml.cs
  class PlayerEquipmentView (line 8) | public partial class PlayerEquipmentView : UserControl
    method PlayerEquipmentView (line 10) | public PlayerEquipmentView()

FILE: KHSave.SaveEditor.Kh2/Views/PlayerView.xaml.cs
  class PlayerView (line 21) | public partial class PlayerView : UserControl
    method PlayerView (line 23) | public PlayerView()

FILE: KHSave.SaveEditor.Kh2/Views/PlayersView.xaml.cs
  class PlayersView (line 21) | public partial class PlayersView : UserControl
    method PlayersView (line 23) | public PlayersView()

FILE: KHSave.SaveEditor.Kh2/Views/ProgressView.xaml.cs
  class ProgressView (line 8) | public partial class ProgressView : UserControl
    method ProgressView (line 10) | public ProgressView()

FILE: KHSave.SaveEditor.Kh2/Views/RoomVisitedView.xaml.cs
  class RoomVisitedView (line 8) | public partial class RoomVisitedView : UserControl
    method RoomVisitedView (line 10) | public RoomVisitedView()

FILE: KHSave.SaveEditor.Kh2/Views/SystemView.xaml.cs
  class SystemView (line 8) | public partial class SystemView : UserControl
    method SystemView (line 10) | public SystemView()

FILE: KHSave.SaveEditor.Kh2/Views/WorldView.xaml.cs
  class WorldView (line 21) | public partial class WorldView : UserControl
    method WorldView (line 23) | public WorldView()

FILE: KHSave.SaveEditor.Kh2/Views/WorldsView.xaml.cs
  class WorldsView (line 21) | public partial class WorldsView : UserControl
    method WorldsView (line 23) | public WorldsView()

FILE: KHSave.SaveEditor.Kh3/MainView.xaml.cs
  class MainView (line 8) | public partial class MainView : UserControl
    method MainView (line 10) | public MainView()

FILE: KHSave.SaveEditor.Kh3/Models/AttractionRecordItemModel.cs
  class AttractionRecordItemModel (line 25) | public class AttractionRecordItemModel<T>
    method AttractionRecordItemModel (line 32) | public AttractionRecordItemModel(List<short> itemsTotalUses, List<int>...

FILE: KHSave.SaveEditor.Kh3/Models/EquipmentItemEntryViewModel.cs
  class EquipmentItemEntryViewModel (line 29) | public class EquipmentItemEntryViewModel<T> : BaseNotifyPropertyChanged
    method EquipmentItemEntryViewModel (line 51) | public EquipmentItemEntryViewModel(EquipmentItem item)
    method EquipmentItemEntryViewModel (line 84) | public EquipmentItemEntryViewModel(EquipmentItem item)
    method DisplayItemType (line 94) | public void DisplayItemType(ItemType itemType)
    method NewList (line 134) | private object NewList<T>()
  class EquipmentItemEntryViewModel (line 63) | public class EquipmentItemEntryViewModel : BaseNotifyPropertyChanged
    method EquipmentItemEntryViewModel (line 51) | public EquipmentItemEntryViewModel(EquipmentItem item)
    method EquipmentItemEntryViewModel (line 84) | public EquipmentItemEntryViewModel(EquipmentItem item)
    method DisplayItemType (line 94) | public void DisplayItemType(ItemType itemType)
    method NewList (line 134) | private object NewList<T>()

FILE: KHSave.SaveEditor.Kh3/Models/FlantasticModel.cs
  class FlantasticModel (line 5) | public class FlantasticModel
    method FlantasticModel (line 9) | public FlantasticModel(string name, FlantasticRecord flantasticRecord)

FILE: KHSave.SaveEditor.Kh3/Models/InventoryItemViewModel.cs
  class InventoryItemViewModel (line 28) | public class InventoryItemViewModel :
    method InventoryItemViewModel (line 35) | public InventoryItemViewModel(InventoryEntry inventoryEntry, int index)

FILE: KHSave.SaveEditor.Kh3/Models/MapViewModel.cs
  class MapViewModel (line 3) | public class MapViewModel
    method MapViewModel (line 8) | public MapViewModel(string id, Lib3.Presets.Presets.Map map)

FILE: KHSave.SaveEditor.Kh3/Models/MaterialModel.cs
  class MaterialModel (line 27) | public class MaterialModel : EnumIconTypeModel<MaterialType>
    method MaterialModel (line 32) | public MaterialModel(ISaveKh3 save, int index)

FILE: KHSave.SaveEditor.Kh3/Models/RecordAttractionListModel.cs
  class RecordAttractionListModel (line 27) | public class RecordAttractionListModel<T> :
    method RecordAttractionListModel (line 32) | public RecordAttractionListModel(List<short> list1, List<int> list2)
    method RecordAttractionListModel (line 37) | public RecordAttractionListModel(IEnumerable<AttractionRecordItemModel...
    method GetEnumerator (line 42) | public IEnumerator<AttractionRecordItemModel<T>> GetEnumerator()
    method GetEnumerator (line 47) | IEnumerator IEnumerable.GetEnumerator()
    method OnNewItem (line 52) | protected override AttractionRecordItemModel<T> OnNewItem()

FILE: KHSave.SaveEditor.Kh3/Models/RecordShotlockListModel.cs
  class RecordShotlockListModel (line 27) | public class RecordShotlockListModel<T> :
    method RecordShotlockListModel (line 32) | public RecordShotlockListModel(List<short> list1, List<short> list2)
    method RecordShotlockListModel (line 37) | public RecordShotlockListModel(IEnumerable<ShotlockRecordItemModel<T>>...
    method GetEnumerator (line 42) | public IEnumerator<ShotlockRecordItemModel<T>> GetEnumerator()
    method GetEnumerator (line 47) | IEnumerator IEnumerable.GetEnumerator()
    method OnNewItem (line 52) | protected override ShotlockRecordItemModel<T> OnNewItem()

FILE: KHSave.SaveEditor.Kh3/Models/ShotlockRecordItemModel.cs
  class ShotlockRecordItemModel (line 25) | public class ShotlockRecordItemModel<T>
    method ShotlockRecordItemModel (line 32) | public ShotlockRecordItemModel(List<short> itemsTotalUses, List<short>...

FILE: KHSave.SaveEditor.Kh3/Models/SpawnModel.cs
  class SpawnModel (line 3) | public class SpawnModel

FILE: KHSave.SaveEditor.Kh3/ViewModels/AbilitiesViewModel.cs
  class AbilitiesViewModel (line 31) | public class AbilitiesViewModel : GenericListModel<AbilityEntryViewModel>
    method AbilitiesViewModel (line 33) | public AbilitiesViewModel(IEnumerable<Ability> list)
    method AbilitiesViewModel (line 39) | public AbilitiesViewModel(IEnumerable<AbilityEntryViewModel> list)
    method OnNewItem (line 47) | protected override AbilityEntryViewModel OnNewItem()
  class AbilityEntryViewModel (line 53) | public class AbilityEntryViewModel : EnumIconTypeModel<AbilityType>
    method AbilityEntryViewModel (line 57) | public AbilityEntryViewModel(Ability ability, int index)
    method ToString (line 86) | public override string ToString()

FILE: KHSave.SaveEditor.Kh3/ViewModels/EquipmentItemsViewModel.cs
  class EquipmentItemsViewModel (line 26) | public class EquipmentItemsViewModel<T>
    method EquipmentItemsViewModel (line 38) | public EquipmentItemsViewModel(IReadOnlyList<EquipmentItem> items)
    method EquipmentItemsViewModel (line 62) | public EquipmentItemsViewModel(IReadOnlyList<EquipmentItem> items)
  class EquipmentItemsViewModel (line 51) | public class EquipmentItemsViewModel
    method EquipmentItemsViewModel (line 38) | public EquipmentItemsViewModel(IReadOnlyList<EquipmentItem> items)
    method EquipmentItemsViewModel (line 62) | public EquipmentItemsViewModel(IReadOnlyList<EquipmentItem> items)

FILE: KHSave.SaveEditor.Kh3/ViewModels/InventoryViewModel.cs
  class InventoryViewModel (line 32) | public class InventoryViewModel : GenericListModel<InventoryItemViewModel>
    method InventoryViewModel (line 58) | public InventoryViewModel(IEnumerable<InventoryEntry> list) :
    method InventoryViewModel (line 62) | public InventoryViewModel(IEnumerable<InventoryItemViewModel> list) :
    method ChangeSelectedItems (line 151) | public void ChangeSelectedItems()
    method DoResearch (line 165) | private void DoResearch(int startIndex, int count = 100)
    method GetForAll (line 173) | private static bool GetForAll<TModel, TValue>(IEnumerable<TModel> item...
    method SetForAll (line 193) | private static void SetForAll<TModel, TValue>(IEnumerable<TModel> item...
    method FilterByFlag (line 199) | private static bool FilterByFlag(string value, InventoryItemViewModel x)
    method ContainsWord (line 216) | private static bool ContainsWord(string value, string contains) =>
    method OnNewItem (line 219) | protected override InventoryItemViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh3/ViewModels/Kh3ViewModel.cs
  class Kh3ViewModel (line 26) | public class Kh3ViewModel : BaseNotifyPropertyChanged, IRefreshUi, IOpen...
    method Kh3ViewModel (line 40) | public Kh3ViewModel()
    method RefreshUi (line 44) | public void RefreshUi()
    method OpenStream (line 67) | public void OpenStream(Stream stream)
    method WriteToStream (line 73) | public void WriteToStream(Stream stream) => Save.Write(stream);

FILE: KHSave.SaveEditor.Kh3/ViewModels/MaterialsViewModel.cs
  class MaterialsViewModel (line 28) | public class MaterialsViewModel : GenericListModel<MaterialModel>
    method MaterialsViewModel (line 30) | public MaterialsViewModel(ISaveKh3 save) :
    method OnNewItem (line 36) | protected override MaterialModel OnNewItem()

FILE: KHSave.SaveEditor.Kh3/ViewModels/PartyViewModel.cs
  class PartyViewModel (line 7) | public class PartyViewModel
    method PartyViewModel (line 21) | public PartyViewModel(ISaveKh3 save)

FILE: KHSave.SaveEditor.Kh3/ViewModels/PhotoEntryViewModel.cs
  class PhotoEntryViewModel (line 34) | public class PhotoEntryViewModel : BaseNotifyPropertyChanged
    method PhotoEntryViewModel (line 51) | public PhotoEntryViewModel(PhotoEntry entry, int index)
    method Export (line 96) | public void Export(string fileName)
    method Import (line 105) | public void Import(string fileName)
    method Delete (line 118) | public void Delete()
    method CreateThumbnailImage (line 125) | private void CreateThumbnailImage()

FILE: KHSave.SaveEditor.Kh3/ViewModels/PhotosViewModel.cs
  class PhotosViewModel (line 31) | public class PhotosViewModel : GenericListModel<PhotoEntryViewModel>
    method PhotosViewModel (line 41) | public PhotosViewModel(IEnumerable<PhotoEntry> list) :
    method PhotosViewModel (line 47) | public PhotosViewModel(IEnumerable<PhotoEntryViewModel> list) :
    method OnNewItem (line 90) | protected override PhotoEntryViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh3/ViewModels/PlayerViewModel.cs
  class PlayerViewModel (line 30) | public class PlayerViewModel : BaseNotifyPropertyChanged
    method PlayerViewModel (line 35) | public PlayerViewModel(PlayableCharacter playableCharacter, int index)

FILE: KHSave.SaveEditor.Kh3/ViewModels/PlayersViewModel.cs
  class PlayersViewModel (line 27) | public class PlayersViewModel : GenericListModel<PlayerViewModel>
    method PlayersViewModel (line 29) | public PlayersViewModel(IEnumerable<PlayableCharacter> list) :
    method PlayersViewModel (line 35) | public PlayersViewModel(IEnumerable<PlayerViewModel> list) :
    method OnSelectedItem (line 44) | protected override void OnSelectedItem(PlayerViewModel item)
    method OnNewItem (line 51) | protected override PlayerViewModel OnNewItem()

FILE: KHSave.SaveEditor.Kh3/ViewModels/RecordsViewModel.cs
  class RecordsViewModel (line 27) | public partial class RecordsViewModel
    method RecordsViewModel (line 98) | public RecordsViewModel(ISaveKh3 save)
    method GetFlantasticModels (line 106) | private static IEnumerable<FlantasticModel> GetFlantasticModels(ISaveK...

FILE: KHSave.SaveEditor.Kh3/ViewModels/ShortcutsViewModel.cs
  class ShortcutsViewModel (line 25) | public class ShortcutsViewModel
    class ShortcutGroupViewModel (line 27) | public class ShortcutGroupViewModel
      method ShortcutGroupViewModel (line 35) | public ShortcutGroupViewModel(ISaveKh3 save, int groupIndex)
    method ShortcutsViewModel (line 59) | public ShortcutsViewModel(ISaveKh3 save)

FILE: KHSave.SaveEditor.Kh3/ViewModels/StoryViewModel.cs
  class StoryViewModel (line 34) | public class StoryViewModel : GenericListModel<StoryEntryModel>
    method StoryViewModel (line 36) | public StoryViewModel(ISaveKh3 save) :
    method StoryViewModel (line 41) | public StoryViewModel(List<int> storyflags) :
    method OnNewItem (line 47) | protected override StoryEntryModel OnNewItem()
  class StoryCommand (line 53) | public class StoryCommand : RelayCommand
    method StoryCommand (line 55) | public StoryCommand(
    method ToString (line 94) | public override string ToString() => Name;
    method ThrowConfirmationMessage (line 96) | private static bool ThrowConfirmationMessage(string name)
  class StoryEntryModel (line 111) | public class StoryEntryModel : BaseNotifyPropertyChanged
    method StoryEntryModel (line 118) | public StoryEntryModel(List<int> storyFlag, int index)
  class StoryPresetModel (line 142) | public class StoryPresetModel : GenericListModel<EnumItemModel<int>>
    method StoryPresetModel (line 144) | public StoryPresetModel(Dictionary<int, string> preset) :
    method OnNewItem (line 152) | protected override EnumItemModel<int> OnNewItem()

FILE: KHSave.SaveEditor.Kh3/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 32) | public class SystemViewModel : BaseNotifyPropertyChanged
    type RoomSpawnType (line 36) | public enum RoomSpawnType
    method SystemViewModel (line 43) | public SystemViewModel(ISaveKh3 save)

FILE: KHSave.SaveEditor.Kh3/Views/EquipmentItemEntryView.xaml.cs
  class EquipmentItemEntryView (line 8) | public partial class EquipmentItemEntryView : UserControl
    method EquipmentItemEntryView (line 10) | public EquipmentItemEntryView()

FILE: KHSave.SaveEditor.Kh3/Views/EquipmentItemsView.xaml.cs
  class EquipmentItemsView (line 8) | public partial class EquipmentItemsView : UserControl
    method EquipmentItemsView (line 10) | public EquipmentItemsView()

FILE: KHSave.SaveEditor.Kh3/Views/InventoryView.xaml.cs
  class InventoryView (line 10) | public partial class InventoryView : UserControl
    method InventoryView (line 12) | public InventoryView()
    method ListBox_SelectionChanged (line 17) | private void ListBox_SelectionChanged(object sender, SelectionChangedE...

FILE: KHSave.SaveEditor.Kh3/Views/MaterialsView.xaml.cs
  class MaterialsView (line 8) | public partial class MaterialsView : UserControl
    method MaterialsView (line 10) | public MaterialsView()

FILE: KHSave.SaveEditor.Kh3/Views/PartyView.xaml.cs
  class PartyView (line 8) | public partial class PartyView : UserControl
    method PartyView (line 10) | public PartyView()

FILE: KHSave.SaveEditor.Kh3/Views/PhotosView.xaml.cs
  class PhotosView (line 8) | public partial class PhotosView : UserControl
    method PhotosView (line 10) | public PhotosView()

FILE: KHSave.SaveEditor.Kh3/Views/PlayerAbilityView.xaml.cs
  class PlayerAbilityView (line 8) | public partial class PlayerAbilityView : UserControl
    method PlayerAbilityView (line 10) | public PlayerAbilityView()

FILE: KHSave.SaveEditor.Kh3/Views/PlayerEquipmentView.xaml.cs
  class PlayerEquipmentView (line 8) | public partial class PlayerEquipmentView : UserControl
    method PlayerEquipmentView (line 10) | public PlayerEquipmentView()

FILE: KHSave.SaveEditor.Kh3/Views/PlayerStatusView.xaml.cs
  class PlayerStatusView (line 8) | public partial class PlayerStatusView : UserControl
    method PlayerStatusView (line 10) | public PlayerStatusView()

FILE: KHSave.SaveEditor.Kh3/Views/PlayerView.xaml.cs
  class PlayerView (line 8) | public partial class PlayerView : UserControl
    method PlayerView (line 10) | public PlayerView()

FILE: KHSave.SaveEditor.Kh3/Views/PlayersView.xaml.cs
  class PlayersView (line 8) | public partial class PlayersView : UserControl
    method PlayersView (line 10) | public PlayersView()

FILE: KHSave.SaveEditor.Kh3/Views/RecordMinigamesView.xaml.cs
  class RecordMinigamesView (line 8) | public partial class RecordMinigamesView : UserControl
    method RecordMinigamesView (line 10) | public RecordMinigamesView()

FILE: KHSave.SaveEditor.Kh3/Views/RecordsView.xaml.cs
  class RecordsView (line 8) | public partial class RecordsView : UserControl
    method RecordsView (line 10) | public RecordsView()

FILE: KHSave.SaveEditor.Kh3/Views/ShortcutsView.xaml.cs
  class ShortcutsView (line 8) | public partial class ShortcutsView : UserControl
    method ShortcutsView (line 10) | public ShortcutsView()

FILE: KHSave.SaveEditor.Kh3/Views/StoryView.xaml.cs
  class StoryView (line 8) | public partial class StoryView : UserControl
    method StoryView (line 10) | public StoryView()

FILE: KHSave.SaveEditor.Kh3/Views/SystemView.xaml.cs
  class SystemView (line 8) | public partial class SystemView : UserControl
    method SystemView (line 10) | public SystemView()

FILE: KHSave.SaveEditor.KhBbs/MainView.xaml.cs
  class MainView (line 21) | public partial class MainView : UserControl
    method MainView (line 23) | public MainView()

FILE: KHSave.SaveEditor.KhBbs/Models/CommandListModel.cs
  class CommandListModel (line 10) | public class CommandListModel : BaseNotifyPropertyChanged
    method CommandListModel (line 15) | public CommandListModel(int index, Command[] commands)

FILE: KHSave.SaveEditor.KhBbs/ViewModels/CharacterViewModel.cs
  class CharacterViewModel (line 9) | public class CharacterViewModel
    method CharacterViewModel (line 13) | public CharacterViewModel(Character character)

FILE: KHSave.SaveEditor.KhBbs/ViewModels/CommandListViewModel.cs
  class CommandListViewModel (line 9) | public class CommandListViewModel : GenericListModel<CommandViewModel>
    method CommandListViewModel (line 13) | public CommandListViewModel(SaveKhBbs.SaveFinalMix save) :
    method CommandListViewModel (line 19) | public CommandListViewModel(IEnumerable<Command> list) :
    method CommandListViewModel (line 25) | public CommandListViewModel(IEnumerable<CommandViewModel> list) :

FILE: KHSave.SaveEditor.KhBbs/ViewModels/CommandViewModel.cs
  class CommandViewModel (line 11) | public class CommandViewModel : BaseNotifyPropertyChanged
    method CommandViewModel (line 15) | public CommandViewModel(Command command)

FILE: KHSave.SaveEditor.KhBbs/ViewModels/DeckViewModel.cs
  class DeckViewModel (line 7) | public class DeckViewModel : BaseNotifyPropertyChanged
    method DeckViewModel (line 11) | public DeckViewModel(Deck deck, CommandListViewModel commandList)
    method GetValue (line 43) | private short GetValue(ushort value)

FILE: KHSave.SaveEditor.KhBbs/ViewModels/DecksViewModel.cs
  class DecksViewModel (line 7) | public class DecksViewModel : GenericListModel<DeckViewModel>
    method DecksViewModel (line 9) | public DecksViewModel(Deck[] decks, CommandListViewModel commandList) :

FILE: KHSave.SaveEditor.KhBbs/ViewModels/KhBbsViewModel.cs
  class KhBbsViewModel (line 9) | public class KhBbsViewModel : BaseNotifyPropertyChanged, IRefreshUi, IOp...
    method RefreshUi (line 18) | public void RefreshUi()
    method OpenStream (line 31) | public void OpenStream(Stream stream)
    method WriteToStream (line 44) | public void WriteToStream(Stream stream) => SaveKhBbs.Write(stream, sa...

FILE: KHSave.SaveEditor.KhBbs/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 7) | public class SystemViewModel
    method SystemViewModel (line 11) | public SystemViewModel(ISaveKhBbs save)

FILE: KHSave.SaveEditor.KhBbs/Views/CharacterView.xaml.cs
  class CharacterView (line 21) | public partial class CharacterView : UserControl
    method CharacterView (line 23) | public CharacterView()

FILE: KHSave.SaveEditor.KhBbs/Views/CommandListView.xaml.cs
  class CommandListView (line 21) | public partial class CommandListView : UserControl
    method CommandListView (line 23) | public CommandListView()

FILE: KHSave.SaveEditor.KhBbs/Views/CommandView.xaml.cs
  class CommandView (line 21) | public partial class CommandView : UserControl
    method CommandView (line 23) | public CommandView()

FILE: KHSave.SaveEditor.KhBbs/Views/DeckView.xaml.cs
  class DeckView (line 21) | public partial class DeckView : UserControl
    method DeckView (line 23) | public DeckView()

FILE: KHSave.SaveEditor.KhBbs/Views/DecksView.xaml.cs
  class DecksView (line 21) | public partial class DecksView : UserControl
    method DecksView (line 23) | public DecksView()

FILE: KHSave.SaveEditor.KhBbs/Views/SystemView.xaml.cs
  class SystemView (line 21) | public partial class SystemView : UserControl
    method SystemView (line 23) | public SystemView()

FILE: KHSave.SaveEditor.KhDDD/Interfaces/IResourceGetter.cs
  type IResourceGetter (line 6) | public interface IResourceGetter

FILE: KHSave.SaveEditor.KhDDD/MainView.xaml.cs
  class MainView (line 21) | public partial class MainView : UserControl
    method MainView (line 23) | public MainView()

FILE: KHSave.SaveEditor.KhDDD/ViewModels/CharacterViewModel.cs
  class CharacterViewModel (line 9) | public class CharacterViewModel : BaseNotifyPropertyChanged
    method CharacterViewModel (line 11) | public CharacterViewModel(ISaveKhDDD save, IResourceGetter resourceGet...

FILE: KHSave.SaveEditor.KhDDD/ViewModels/CommandsViewModel.cs
  class CommandsViewModel (line 14) | public class CommandsViewModel : GenericListModel<CommandEntryViewModel>
    method CommandsViewModel (line 18) | public CommandsViewModel(CommandEntry[] commands, IResourceGetter reso...
  class CommandEntryViewModel (line 36) | public class CommandEntryViewModel : BaseNotifyPropertyChanged, SearchEn...
    method CommandEntryViewModel (line 41) | public CommandEntryViewModel(CommandEntry commandEntry, IResourceGette...

FILE: KHSave.SaveEditor.KhDDD/ViewModels/DeckViewModel.cs
  class DeckViewModel (line 7) | public class DeckViewModel : BaseNotifyPropertyChanged
    method DeckViewModel (line 11) | public DeckViewModel(IDeck deck)

FILE: KHSave.SaveEditor.KhDDD/ViewModels/DecksViewModel.cs
  class DecksViewModel (line 7) | public class DecksViewModel : GenericListModel<DeckViewModel>
    method DecksViewModel (line 9) | public DecksViewModel(IDeck[] decks) :

FILE: KHSave.SaveEditor.KhDDD/ViewModels/DreamEaterViewModel.cs
  class DreamEaterViewModel (line 9) | public class DreamEaterViewModel : BaseNotifyPropertyChanged
    method DreamEaterViewModel (line 13) | public DreamEaterViewModel(DreamEater dreamEater)

FILE: KHSave.SaveEditor.KhDDD/ViewModels/DreamEatersViewModel.cs
  class DreamEatersViewModel (line 7) | public class DreamEatersViewModel : GenericListModel<DreamEaterViewModel>
    method DreamEatersViewModel (line 9) | public DreamEatersViewModel(DreamEater[] dreamEaters) :

FILE: KHSave.SaveEditor.KhDDD/ViewModels/KhDDDViewModel.cs
  class KhDDDViewModel (line 12) | public class KhDDDViewModel : BaseNotifyPropertyChanged,
    method RefreshUi (line 26) | public void RefreshUi()
    method OpenStream (line 44) | public void OpenStream(Stream stream)
    method WriteToStream (line 52) | public void WriteToStream(Stream stream) => SaveKhDDD.Write(stream, sa...

FILE: KHSave.SaveEditor.KhDDD/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 8) | public class SystemViewModel
    method SystemViewModel (line 12) | public SystemViewModel(ISaveKhDDD save)

FILE: KHSave.SaveEditor.KhDDD/Views/Character.xaml.cs
  class Character (line 21) | public partial class Character : UserControl
    method Character (line 23) | public Character()

FILE: KHSave.SaveEditor.KhDDD/Views/CommandsView.xaml.cs
  class CommandsView (line 8) | public partial class CommandsView : UserControl
    method CommandsView (line 10) | public CommandsView()

FILE: KHSave.SaveEditor.KhDDD/Views/Deck.xaml.cs
  class Deck (line 21) | public partial class Deck : UserControl
    method Deck (line 23) | public Deck()

FILE: KHSave.SaveEditor.KhDDD/Views/Decks.xaml.cs
  class Decks (line 21) | public partial class Decks : UserControl
    method Decks (line 23) | public Decks()

FILE: KHSave.SaveEditor.KhDDD/Views/DreamEater.xaml.cs
  class DreamEater (line 21) | public partial class DreamEater : UserControl
    method DreamEater (line 23) | public DreamEater()

FILE: KHSave.SaveEditor.KhDDD/Views/DreamEaters.xaml.cs
  class DreamEaters (line 21) | public partial class DreamEaters : UserControl
    method DreamEaters (line 23) | public DreamEaters()

FILE: KHSave.SaveEditor.KhDDD/Views/SystemView.xaml.cs
  class SystemView (line 21) | public partial class SystemView : UserControl
    method SystemView (line 23) | public SystemView()

FILE: KHSave.SaveEditor.KhRecom/Constants.cs
  class Constants (line 3) | public class Constants

FILE: KHSave.SaveEditor.KhRecom/Interfaces/ICardCountService.cs
  type ICardCountService (line 6) | public interface ICardCountService
    method GetCardCount (line 8) | byte GetCardCount(CardType card, CardIndex index, bool isSpecial);
    method SetCardCount (line 10) | void SetCardCount(CardType card, CardIndex index, bool isSpecial, byte...

FILE: KHSave.SaveEditor.KhRecom/MainView.xaml.cs
  class MainView (line 8) | public partial class MainView : UserControl
    method MainView (line 10) | public MainView()

FILE: KHSave.SaveEditor.KhRecom/Models/CardIndex.cs
  type CardIndex (line 5) | public struct CardIndex : IEquatable<CardIndex>, IEquatable<int>
    method CardIndex (line 10) | public CardIndex(int index)
    method Equals (line 20) | public bool Equals(CardIndex otherCardIndex) => Index == otherCardInde...
    method Equals (line 21) | public bool Equals(int index) => Index == index;

FILE: KHSave.SaveEditor.KhRecom/ViewModels/CardInventoryEntryViewModel.cs
  class CardInventoryEntryViewModel (line 11) | public class CardInventoryEntryViewModel : EnumIconTypeModel<CardType>
    method CardInventoryEntryViewModel (line 16) | public CardInventoryEntryViewModel(Card card, ICardCountService cardCo...
    method GetTotalFromIndexed (line 49) | private string GetTotalFromIndexed() =>
    method GetCount (line 53) | private byte GetCount(CardIndex index)
    method SetCount (line 61) | private void SetCount(CardIndex index, byte value)

FILE: KHSave.SaveEditor.KhRecom/ViewModels/CardInventoryViewModel.cs
  class CardInventoryViewModel (line 14) | public class CardInventoryViewModel : GenericListModel<CardInventoryEntr...
    method CardInventoryViewModel (line 18) | public CardInventoryViewModel(DataRecom save, ICardCountService cardCo...
    method CardInventoryViewModel (line 24) | public CardInventoryViewModel(IEnumerable<CardInventoryEntryViewModel>...
    method CardInventoryViewModel (line 30) | public CardInventoryViewModel(
    method GetEntries (line 56) | private static IEnumerable<CardInventoryEntryViewModel> GetEntries(Dat...

FILE: KHSave.SaveEditor.KhRecom/ViewModels/KhRecomViewModel.cs
  class KhRecomViewModel (line 13) | public class KhRecomViewModel : BaseNotifyPropertyChanged, IRefreshUi, I...
    method KhRecomViewModel (line 24) | public KhRecomViewModel()
    method RefreshUi (line 28) | public void RefreshUi()
    method OpenStream (line 41) | public void OpenStream(Stream stream)
    method WriteToStream (line 47) | public void WriteToStream(Stream stream) => _save.Write(stream);
    method GetCardCount (line 49) | public byte GetCardCount(CardType card, CardIndex index, bool isPremiu...
    method SetCardCount (line 52) | public void SetCardCount(CardType card, CardIndex index, bool isPremiu...
    method OnCard (line 55) | private T OnCard<T>(CardType card, bool isPremium, Func<int, T> action)

FILE: KHSave.SaveEditor.KhRecom/ViewModels/ProgressViewModel.cs
  class ProgressViewModel (line 6) | public class ProgressViewModel
    method ProgressViewModel (line 15) | public ProgressViewModel(DataRecom save)

FILE: KHSave.SaveEditor.KhRecom/ViewModels/SettingsViewModel.cs
  class SettingsViewModel (line 7) | public class SettingsViewModel
    method SettingsViewModel (line 11) | public SettingsViewModel(DataRecom save)

FILE: KHSave.SaveEditor.KhRecom/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 8) | public class SystemViewModel
    method SystemViewModel (line 14) | public SystemViewModel(DataRecom save)

FILE: KHSave.SaveEditor.KhRecom/Views/CardInventoryEntryView.xaml.cs
  class CardInventoryEntryView (line 21) | public partial class CardInventoryEntryView : UserControl
    method CardInventoryEntryView (line 23) | public CardInventoryEntryView()

FILE: KHSave.SaveEditor.KhRecom/Views/CardInventoryView.xaml.cs
  class CardInventoryView (line 8) | public partial class CardInventoryView : UserControl
    method CardInventoryView (line 10) | public CardInventoryView()

FILE: KHSave.SaveEditor.KhRecom/Views/ProgressView.xaml.cs
  class ProgressView (line 8) | public partial class ProgressView : UserControl
    method ProgressView (line 10) | public ProgressView()

FILE: KHSave.SaveEditor.KhRecom/Views/SettingsView.xaml.cs
  class SettingsView (line 21) | public partial class SettingsView : UserControl
    method SettingsView (line 23) | public SettingsView()

FILE: KHSave.SaveEditor.KhRecom/Views/SystemView.xaml.cs
  class SystemView (line 8) | public partial class SystemView : UserControl
    method SystemView (line 10) | public SystemView()

FILE: KHSave.SaveEditor.Persona3/Interfaces/IPersonaList.cs
  type IPersonaList (line 7) | public interface IPersonaList
    method GetPersona (line 10) | PersonaModel GetPersona(Demons id);

FILE: KHSave.SaveEditor.Persona3/Interfaces/ISkillList.cs
  type ISkillList (line 6) | public interface ISkillList

FILE: KHSave.SaveEditor.Persona3/Models/PersonaModel.cs
  class PersonaModel (line 7) | public class PersonaModel
    method PersonaModel (line 14) | public PersonaModel(Demons demon)

FILE: KHSave.SaveEditor.Persona3/Models/SkillModel.cs
  class SkillModel (line 9) | public class SkillModel
    method SkillModel (line 11) | public SkillModel(Skill value)

FILE: KHSave.SaveEditor.Persona3/ViewModels/CompendiumViewModel.cs
  class CompendiumViewModel (line 12) | public class CompendiumViewModel : GenericListModel<PersonaViewModel>
    method CompendiumViewModel (line 23) | public CompendiumViewModel(
    method CompendiumViewModel (line 54) | private CompendiumViewModel(IEnumerable<PersonaViewModel> list) :
    method OnSelectedItem (line 63) | protected override void OnSelectedItem(PersonaViewModel item)
    method OnNewItem (line 70) | protected override PersonaViewModel OnNewItem() =>

FILE: KHSave.SaveEditor.Persona3/ViewModels/Persona3MainViewModel.cs
  class Persona3MainViewModel (line 16) | public class Persona3MainViewModel : BaseNotifyPropertyChanged,
    method Persona3MainViewModel (line 25) | static Persona3MainViewModel()
    method RefreshUi (line 56) | public void RefreshUi()
    method OpenStream (line 65) | public void OpenStream(Stream stream)
    method WriteToStream (line 71) | public void WriteToStream(Stream stream) => Save.Write(stream);
    method GetPersona (line 73) | public PersonaModel GetPersona(Demons id)

FILE: KHSave.SaveEditor.Persona3/ViewModels/PersonaViewModel.cs
  class PersonaViewModel (line 13) | public class PersonaViewModel : BaseNotifyPropertyChanged
    method ResetPersonaToDefault (line 75) | internal void ResetPersonaToDefault()
    method PersonaViewModel (line 230) | public PersonaViewModel(int compendiumIndex, Persona persona, IPersona...
    method ToString (line 238) | public override string ToString()

FILE: KHSave.SaveEditor.Persona3/Views/CompendiumView.xaml.cs
  class CompendiumView (line 21) | public partial class CompendiumView : UserControl
    method CompendiumView (line 23) | public CompendiumView()

FILE: KHSave.SaveEditor.Persona3/Views/Persona3MainView.xaml.cs
  class Persona3MainView (line 21) | public partial class Persona3MainView : UserControl
    method Persona3MainView (line 23) | public Persona3MainView()

FILE: KHSave.SaveEditor.Persona3/Views/PersonaView.xaml.cs
  class PersonaView (line 21) | public partial class PersonaView : UserControl
    method PersonaView (line 23) | public PersonaView()

FILE: KHSave.SaveEditor.Persona5/Interfaces/IConsumableList.cs
  type IConsumableList (line 6) | public interface IConsumableList

FILE: KHSave.SaveEditor.Persona5/Interfaces/IEquipmentList.cs
  type IEquipmentList (line 8) | public interface IEquipmentList

FILE: KHSave.SaveEditor.Persona5/Interfaces/IPersonaList.cs
  type IPersonaList (line 6) | public interface IPersonaList

FILE: KHSave.SaveEditor.Persona5/Interfaces/ISkillList.cs
  type ISkillList (line 6) | public interface ISkillList

FILE: KHSave.SaveEditor.Persona5/Models/EquipmentModel.cs
  class EquipmentModel (line 7) | public class EquipmentModel
    method EquipmentModel (line 13) | public EquipmentModel(

FILE: KHSave.SaveEditor.Persona5/ViewModels/CharacterEntryViewModel.cs
  class CharacterEntryViewModel (line 16) | public class CharacterEntryViewModel : GenericListModel<PersonaViewModel>
    method CharacterEntryViewModel (line 23) | public CharacterEntryViewModel(
    method OnSelectedItem (line 183) | protected override void OnSelectedItem(PersonaViewModel item)

FILE: KHSave.SaveEditor.Persona5/ViewModels/CharactersViewModel.cs
  class CharactersViewModel (line 10) | public class CharactersViewModel : GenericListModel<CharacterEntryViewMo...
    method CharactersViewModel (line 14) | public CharactersViewModel(
    method CharactersViewModel (line 25) | private CharactersViewModel(IEnumerable<CharacterEntryViewModel> list) :
    method OnSelectedItem (line 32) | protected override void OnSelectedItem(CharacterEntryViewModel item)
    method OnNewItem (line 39) | protected override CharacterEntryViewModel OnNewItem() =>

FILE: KHSave.SaveEditor.Persona5/ViewModels/CompendiumViewModel.cs
  class CompendiumViewModel (line 11) | public class CompendiumViewModel : GenericListModel<PersonaViewModel>
    method CompendiumViewModel (line 22) | public CompendiumViewModel(
    method CompendiumViewModel (line 54) | private CompendiumViewModel(IEnumerable<PersonaViewModel> list) :
    method OnSelectedItem (line 63) | protected override void OnSelectedItem(PersonaViewModel item)
    method OnNewItem (line 70) | protected override PersonaViewModel OnNewItem() =>

FILE: KHSave.SaveEditor.Persona5/ViewModels/InventoryViewModel.cs
  class InventoryEntry (line 11) | public class InventoryEntry : BaseNotifyPropertyChanged, SearchEngine.IN...
    method InventoryEntry (line 16) | public InventoryEntry(IConsumableList consumables, byte[] elementCount...
  class InventoryViewModel (line 33) | public class InventoryViewModel : GenericListModel<InventoryEntry>
    method InventoryViewModel (line 38) | public InventoryViewModel(ISavePersona5 save, IConsumableList consumab...

FILE: KHSave.SaveEditor.Persona5/ViewModels/Persona5MainViewModel.cs
  class Persona5MainViewModel (line 15) | public class Persona5MainViewModel : BaseNotifyPropertyChanged,
    method RefreshUi (line 95) | public void RefreshUi()
    method OpenStream (line 108) | public void OpenStream(Stream stream)
    method GetPersona (line 153) | private List<PersonaEntryViewModel> GetPersona(List<Presets.Persona> p...
    method ProcessItems (line 157) | private void ProcessItems(Presets.Items items)
    method GetFlagIndex (line 191) | private int GetFlagIndex(int mask)
    method WriteToStream (line 199) | public void WriteToStream(Stream stream) =>

FILE: KHSave.SaveEditor.Persona5/ViewModels/PersonaEntryViewModel.cs
  class PersonaEntryViewModel (line 5) | public class PersonaEntryViewModel
    method PersonaEntryViewModel (line 15) | public PersonaEntryViewModel(Presets.Persona persona)
    method ToString (line 23) | public override string ToString()

FILE: KHSave.SaveEditor.Persona5/ViewModels/PersonaViewModel.cs
  class PersonaViewModel (line 15) | public class PersonaViewModel : BaseNotifyPropertyChanged
    method PersonaViewModel (line 24) | public PersonaViewModel(int compendiumIndex, Persona persona, IPersona...
    method ResetPersonaToDefault (line 42) | public void ResetPersonaToDefault()

FILE: KHSave.SaveEditor.Persona5/ViewModels/RoomViewModel.cs
  class RoomViewModel (line 6) | public class RoomViewModel : BaseNotifyPropertyChanged
    method RoomViewModel (line 15) | public RoomViewModel(Presets.Field field)

FILE: KHSave.SaveEditor.Persona5/ViewModels/SkillViewModel.cs
  class SkillViewModel (line 6) | public class SkillViewModel

FILE: KHSave.SaveEditor.Persona5/ViewModels/SystemViewModel.cs
  class SystemViewModel (line 8) | public class SystemViewModel
    method SystemViewModel (line 41) | public SystemViewModel(ISavePersona5 save)
    method IsMapPresent (line 50) | private bool IsMapPresent(Presets.Field field, bool isRoyal) =>

FILE: KHSave.SaveEditor.Persona5/Views/CharacterView.xaml.cs
  class CharacterView (line 8) | public partial class CharacterView : UserControl
    method CharacterView (line 10) | public CharacterView()

FILE: KHSave.SaveEditor.Persona5/Views/CharactersView.xaml.cs
  class CharactersView (line 8) | public partial class CharactersView : UserControl
    method CharactersView (line 10) | public CharactersView()

FILE: KHSave.SaveEditor.Persona5/Views/CompendiumView.xaml.cs
  class CompendiumView (line 21) | public partial class CompendiumView : UserControl
    method CompendiumView (line 23) | public CompendiumView()

FILE: KHSave.SaveEditor.Persona5/Views/InventoryView.xaml.cs
  class InventoryView (line 8) | public partial class InventoryView : UserControl
    method InventoryView (line 10) | public InventoryView()

FILE: KHSave.SaveEditor.Persona5/Views/Persona5MainView.xaml.cs
  class Persona5MainView (line 8) | public partial class Persona5MainView : UserControl
    method Persona5MainView (line 10) | public Persona5MainView()

FILE: KHSave.SaveEditor.Persona5/Views/PersonaView.xaml.cs
  class PersonaView (line 8) | public partial class PersonaView : UserControl
    method PersonaView (line 10) | public PersonaView()

FILE: KHSave.SaveEditor.Persona5/Views/SystemView.xaml.cs
  class SystemView (line 21) | public partial class SystemView : UserControl
    method SystemView (line 23) | public SystemView()

FILE: KHSave.SaveEditor/App.xaml.cs
  class App (line 18) | public partial class App : Application
    class ApplicationStartup (line 20) | private class ApplicationStartup : IApplicationStartup
      method ApplicationStartup (line 22) | public ApplicationStartup(string[] args)
    method OnStartup (line 40) | protected override void OnStartup(StartupEventArgs e)
    method Initialize (line 53) | private void Initialize(StartupEventArgs e)
    method CaptureException (line 78) | private static void CaptureException(Exception ex)

FILE: KHSave.SaveEditor/Interfaces/IAlertMessage.cs
  type IAlertMessage (line 6) | public interface IAlertMessage
    method Info (line 8) | void Info(string message, string title = null);
    method Warning (line 9) | void Warning(string message, string title = null);
    method Error (line 10) | void Error(string message, string title = null);
    method Error (line 11) | void Error(Exception exception);
    method Error (line 12) | void Error(VisualException exception);
    method InfoQuestion (line 13) | bool? InfoQuestion(string message, string title = null);
    method WarningQuestion (line 14) | bool? WarningQuestion(string message, string title = null);
    method ErrorQuestion (line 15) | bool? ErrorQuestion(string message, string title = null);

FILE: KHSave.SaveEditor/Interfaces/IApplicationStartup.cs
  type IApplicationStartup (line 3) | public interface IApplicationStartup

FILE: KHSave.SaveEditor/Interfaces/IFileDialogManager.cs
  type IFileDialogManager (line 6) | public interface IFileDialogManager
    method InjectFileName (line 11) | void InjectFileName(string fileName, Action<Stream> onSuccess);
    method Open (line 12) | void Open(Action<Stream> onSuccess);
    method Save (line 13) | void Save(Action<Stream> onSuccess);
    method SaveAs (line 14) | void SaveAs(Action<Stream> onSuccess);

FILE: KHSave.SaveEditor/Interfaces/IReporter.cs
  type IReporter (line 5) | public interface IReporter
    method SendGameName (line 7) | void SendGameName(string name);
    method SendCrashReport (line 8) | void SendCrashReport(Exception ex);

FILE: KHSave.SaveEditor/Interfaces/IUpdater.cs
  type IUpdater (line 5) | public interface IUpdater
    method AutomaticallyCheckLastVersionAsync (line 9) | Task<bool> AutomaticallyCheckLastVersionAsync();
    method ForceCheckLastVersionAsync (line 10) | Task<bool> ForceCheckLastVersionAsync();

FILE: KHSave.SaveEditor/Interfaces/IWindowManager.cs
  type IWindowManager (line 6) | public interface IWindowManager
    method Push (line 12) | bool? Push<TWindow>(Action<TWindow> onSetup = null, Func<TWindow, bool...
    method Push (line 13) | bool? Push(Window window);
    method Pull (line 15) | void Pull();

FILE: KHSave.SaveEditor/Models/PatreonInfo.cs
  class PatreonInfo (line 5) | public class PatreonInfo

FILE: KHSave.SaveEditor/Models/PatronModel.cs
  class PatronModel (line 3) | public class PatronModel

FILE: KHSave.SaveEditor/Models/ServiceMessage.cs
  class ServiceMessage (line 3) | public class ServiceMessage

FILE: KHSave.SaveEditor/Models/SponsorshipInfo.cs
  class SponsorshipInfo (line 3) | public class SponsorshipInfo

FILE: KHSave.SaveEditor/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: KHSave.SaveEditor/Services/AlertMessage.cs
  class AlertMessage (line 8) | public class AlertMessage : IAlertMessage
    method AlertMessage (line 12) | public AlertMessage(IWindowManager windowManager)
    method Info (line 17) | public void Info(string message, string title) =>
    method Warning (line 20) | public void Warning(string message, string title) =>
    method Error (line 23) | public void Error(string message, string title) =>
    method Error (line 26) | public void Error(Exception exception) => Error(exception.Message, "Er...
    method Error (line 28) | public void Error(VisualException exception) => Error(exception.Messag...
    method InfoQuestion (line 30) | public bool? InfoQuestion(string message, string title) =>
    method WarningQuestion (line 33) | public bool? WarningQuestion(string message, string title) =>
    method ErrorQuestion (line 36) | public bool? ErrorQuestion(string message, string title) =>
    method Invoke (line 39) | private bool? Invoke(string message, string title, MessageBoxButton bu...

FILE: KHSave.SaveEditor/Services/ContentFactory.cs
  type ContentType (line 22) | public enum ContentType
  class ContentResponse (line 38) | public class ContentResponse
  class ContentFactory (line 47) | public class ContentFactory
    method ContentFactory (line 51) | public ContentFactory(IUnityContainer container)
    method Factory (line 56) | public ContentResponse Factory(ContentType saveType) => saveType switch
    method LoadIconPack (line 72) | public void LoadIconPack(ContentType saveType)
    method FactorySimpleView (line 106) | private ContentResponse FactorySimpleView<TControl>()
    method FactoryView (line 112) | private ContentResponse FactoryView<TControl, TContext>()
    method FactoryEditorView (line 125) | private ContentResponse FactoryEditorView<TControl, TContext>()

FILE: KHSave.SaveEditor/Services/DesktopAppIdentity.cs
  class DesktopAppIdentity (line 10) | public class DesktopAppIdentity : IAppIdentity
    method DesktopAppIdentity (line 25) | public DesktopAppIdentity()

FILE: KHSave.SaveEditor/Services/FileDialogManager.cs
  class FileDialogManager (line 9) | public class FileDialogManager : IFileDialogManager
    method FileDialogManager (line 33) | public FileDialogManager(IWindowManager windowManager)
    method InjectFileName (line 38) | public void InjectFileName(string fileName, Action<Stream> onSuccess)
    method Open (line 54) | public void Open(Action<Stream> onSuccess) =>
    method Save (line 57) | public void Save(Action<Stream> onSuccess)
    method SaveAs (line 72) | public void SaveAs(Action<Stream> onSuccess)

FILE: KHSave.SaveEditor/Services/IAppIdentity.cs
  type IAppIdentity (line 3) | public interface IAppIdentity

FILE: KHSave.SaveEditor/Services/PatreonService.cs
  class PatreonService (line 11) | public class PatreonService
    class PatreonResponse (line 13) | private class PatreonResponse
    class SponsorshipInfo (line 28) | public class SponsorshipInfo
    class HeaderInfo (line 43) | public class HeaderInfo
    class HeaderMessage (line 49) | public class HeaderMessage
    class PatronDto (line 70) | private class PatronDto
    method PatreonService (line 96) | public PatreonService(IAppIdentity appIdentity)
    method GetPatreonInfo (line 101) | public async Task<PatreonInfo> GetPatreonInfo()
    method FetchPatreonInfo (line 137) | private async Task<PatreonResponse> FetchPatreonInfo()

FILE: KHSave.SaveEditor/Services/Pcsx2MemoryService.cs
  class Pcsx2MemoryService (line 10) | public static class Pcsx2MemoryService
    class GameEntry (line 24) | private class GameEntry
      method GameEntry (line 30) | public GameEntry(string titleId, long offset, int length)
    method GetPcsx2ApplicationName (line 73) | public static async Task<string> GetPcsx2ApplicationName(Process proce...
    method CreateStreamFromPcsx2Process (line 130) | public static async Task<ProcessStream> CreateStreamFromPcsx2Process(P...

FILE: KHSave.SaveEditor/Services/ReporterService.cs
  class ReporterService (line 12) | public class ReporterService : IReporter
    class GlobalReporterService (line 14) | internal static class GlobalReporterService
      method SendGameName (line 20) | public static void SendGameName(string name)
      method SendCrashReport (line 28) | public static void SendCrashReport(Exception ex)
      method DeleteCookies (line 36) | public static void DeleteCookies()
      method GetCookie (line 46) | private static string GetCookie()
      method GenerateCookie (line 58) | private static string GenerateCookie() =>
      method Send (line 61) | private static Task Send(string endpoint, object obj)
    method SendGameName (line 92) | public void SendGameName(string name) => GlobalReporterService.SendGam...
    method SendCrashReport (line 93) | public void SendCrashReport(Exception ex) => GlobalReporterService.Sen...
    method DeleteCookies (line 94) | public void DeleteCookies() => GlobalReporterService.DeleteCookies();

FILE: KHSave.SaveEditor/Services/TransferService.cs
  class TransferService (line 10) | public static class TransferService
    type Result (line 12) | public enum Result
    method Transfer (line 20) | public static Result Transfer(object dstSave, Stream srcSaveStream)
    method Transfer (line 29) | public static Result Transfer<T>(

FILE: KHSave.SaveEditor/Services/UpdaterService.cs
  class UpdaterService (line 11) | public class UpdaterService : IUpdater
    method UpdaterService (line 37) | public UpdaterService(IWindowManager windowManager)
    method AutomaticallyCheckLastVersionAsync (line 43) | public Task<bool> AutomaticallyCheckLastVersionAsync()
    method ForceCheckLastVersionAsync (line 51) | public async Task<bool> ForceCheckLastVersionAsync()
    method UpdateLastTimeForCheckingNewVersion (line 73) | private void UpdateLastTimeForCheckingNewVersion() =>

FILE: KHSave.SaveEditor/Services/WindowManager.cs
  class WindowManager (line 9) | public class WindowManager : IWindowManager
    method WindowManager (line 30) | public WindowManager(IUnityContainer container)
    method Push (line 35) | public bool? Push<TWindow>(Action<TWindow> onSetup, Func<TWindow, bool...
    method Push (line 44) | public bool? Push(Window window)
    method Pull (line 50) | public void Pull()

FILE: KHSave.SaveEditor/VersionCheck/DesktopCheckCurrentVersion.cs
  class DesktopCheckCurrentVersion (line 6) | public class DesktopCheckCurrentVersion : ICheckCurrentVersion
    method DesktopCheckCurrentVersion (line 10) | public DesktopCheckCurrentVersion()
    method GetCurrentVersion (line 15) | public string GetCurrentVersion() => _appIdentity.Version;

FILE: KHSave.SaveEditor/ViewModels/HomeViewModel.cs
  class HomeViewModel (line 5) | public class HomeViewModel : BaseNotifyPropertyChanged
    method HomeViewModel (line 71) | public HomeViewModel()

FILE: KHSave.SaveEditor/ViewModels/MainWindowViewModel.cs
  class MainWindowViewModel (line 52) | public class MainWindowViewModel : BaseNotifyPropertyChanged
    method MainWindowViewModel (line 157) | public MainWindowViewModel(
    method IsTransferSupported (line 273) | private bool IsTransferSupported()
    method Buffered (line 284) | private void Buffered(Stream stream, Action<Stream> call) => Buffered(...
    method Buffered (line 290) | private T Buffered<T>(Stream stream, Func<Stream, T> call)
    method Open (line 307) | public void Open(string fileName) => CatchException(() =>
    method OpenPcsx2 (line 312) | public void OpenPcsx2(Func<Stream, bool> openStream) => CatchException...
    method Open (line 323) | public bool Open(Stream stream) => CatchException(() =>
    method Save (line 344) | private void Save(Stream stream)
    method TryOpen (line 350) | public bool TryOpen(Stream stream) =>
    method Open (line 363) | private bool Open(IArchiveFactory archiveFactory, Stream stream)
    method Open (line 370) | private bool Open(IArchive archive)
    method Open (line 384) | private bool Open(IArchive archive, IArchiveEntry archiveEntry)
    method TryOpenArchive (line 403) | public bool TryOpenArchive(Stream stream)
    method TryOpenKh1 (line 412) | public bool TryOpenKh1(Stream stream) => TryOpen(SaveKh1.IsValid, stre...
    method TryOpenKh2 (line 413) | public bool TryOpenKh2(Stream stream) => TryOpen(SaveKh2.IsValid, stre...
    method TryOpenKhBbs (line 414) | public bool TryOpenKhBbs(Stream stream) => TryOpen(SaveKhBbs.IsValid, ...
    method TryOpenKhDDD (line 415) | public bool TryOpenKhDDD(Stream stream) => TryOpen(SaveKhDDD.IsValid, ...
    method TryOpenKhRecom (line 416) | public bool TryOpenKhRecom(Stream stream) => TryOpen(SaveKhRecom.IsVal...
    method TryOpenKh02 (line 417) | public bool TryOpenKh02(Stream stream) => TryOpen(SaveKh02.IsValid, st...
    method TryOpenKh3 (line 418) | public bool TryOpenKh3(Stream stream) => TryOpen(SaveKh3.IsValid, stre...
    method TryOpenFF7Remake (line 419) | public bool TryOpenFF7Remake(Stream stream) => TryOpen(SaveFf7Remake.I...
    method TryOpenPersona3 (line 420) | public bool TryOpenPersona3(Stream stream) => TryOpen(SavePersona3.IsV...
    method TryOpenPersona5 (line 421) | public bool TryOpenPersona5(Stream stream) => TryOpen(SavePersona5.IsV...
    method TryOpen (line 423) | public bool TryOpen(Func<Stream, bool> prediate, Stream stream, Conten...
    method OpenProcessStream (line 433) | private void OpenProcessStream(ProcessStream processStream, Func<Strea...
    method CloseProcessStream (line 445) | private void CloseProcessStream()
    method CatchException (line 458) | public static void CatchException(Action action)
    method CatchException (line 470) | public static T CatchException<T>(Func<T> action)
    method CreateUnsupportedSaveExceptiom (line 483) | private static Exception CreateUnsupportedSaveExceptiom() =>
    method InvokeRefreshUi (line 486) | public void InvokeRefreshUi() => RefreshUi?.RefreshUi();
    method ChangeContent (line 488) | private void ChangeContent(ContentType contentType, Stream stream = null)
    method IsIssueSectionClosed (line 517) | private static bool IsIssueSectionClosed(HttpResponseMessage response) =>

FILE: KHSave.SaveEditor/ViewModels/PatronViewModel.cs
  class PatronViewModel (line 10) | public class PatronViewModel
    method PatronViewModel (line 12) | public PatronViewModel(PatronModel patron)
    method GetColor (line 56) | private static SolidColorBrush GetColor(string color)

FILE: KHSave.SaveEditor/Views/AttachToPcsx2GameWindow.xaml.cs
  class AttachToPcsx2GameWindow (line 15) | public partial class AttachToPcsx2GameWindow : Window
    method AttachToPcsx2GameWindow (line 19) | public AttachToPcsx2GameWindow()
    method WaitForGame (line 24) | public ProcessStream WaitForGame(Process process)

FILE: KHSave.SaveEditor/Views/AttachToProcessWindow.xaml.cs
  class AttachToProcessWindow (line 11) | public partial class AttachToProcessWindow : Window
    method AttachToProcessWindow (line 15) | public AttachToProcessWindow(string processName)
    method WaitForProcess (line 26) | public Process WaitForProcess()
    method ProcessSearchAsync (line 58) | private async Task ProcessSearchAsync(CancellationToken token)
    method GetFirstProcessOrDefault (line 74) | private static Process GetFirstProcessOrDefault(string processName)

FILE: KHSave.SaveEditor/Views/HomeView.xaml.cs
  class HomeView (line 16) | public partial class HomeView : UserControl
    method HomeView (line 18) | public HomeView()
    method Hyperlink_RequestNavigate (line 23) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...
    method OnInitialized (line 33) | protected override void OnInitialized(EventArgs e)
    method FetchAndPopulateSponsors (line 47) | private Func<Task> FetchAndPopulateSponsors()
    method SetServerResponse (line 70) | private void SetServerResponse(Models.PatreonInfo patreonInfo)
    method SetFundLink (line 79) | private void SetFundLink(HomeViewModel vm, string fundUrl) =>
    method SetSponsorList (line 82) | private void SetSponsorList(HomeViewModel vm, IEnumerable<Models.Patro...
    method SetSponsorshipInfo (line 102) | private void SetSponsorshipInfo(HomeViewModel vm, Models.SponsorshipIn...
    method SetMessageList (line 114) | private void SetMessageList(HomeViewModel vm, IEnumerable<Models.Servi...
    method IsDownloadNewVersion (line 143) | private static bool IsDownloadNewVersion(Models.ServiceMessage message)

FILE: KHSave.SaveEditor/Views/MainWindow.xaml.cs
  class MainWindow (line 15) | public partial class MainWindow : Window
    method MainWindow (line 20) | public MainWindow(
    method Window_Loaded (line 44) | private void Window_Loaded(object sender, EventArgs e)
    method Window_Drop (line 49) | private void Window_Drop(object sender, DragEventArgs e)

FILE: KHSave.SaveEditor/Views/PatronView.xaml.cs
  class PatronView (line 16) | public partial class PatronView : UserControl
    method PatronView (line 21) | public PatronView() :
    method PatronView (line 25) | public PatronView(double remainHiddenSeconds, bool glow)
    method UserControl_Loaded (line 33) | private void UserControl_Loaded(object sender, RoutedEventArgs e)
    method Hyperlink_RequestNavigate (line 68) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: KHSave.SaveEditor/Views/ServiceMessageView.xaml.cs
  class ServiceMessageView (line 10) | public partial class ServiceMessageView : UserControl
    method ServiceMessageView (line 12) | public ServiceMessageView()
    method Hyperlink_RequestNavigate (line 29) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: KHSave.SaveEditor/Views/UpdateWindow.xaml.cs
  class UpdateWindow (line 11) | public partial class UpdateWindow : Window
    method UpdateWindow (line 15) | public UpdateWindow(ReleaseVersion lastVersion)
    method Hyperlink_RequestNavigate (line 39) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: KHSave.Tests/Ff7RemakeTests.cs
  class Ff7RemakeTests (line 8) | public class Ff7RemakeTests
    method TestIsValid (line 12) | [Fact]
    method ReadSaveTest (line 19) | [Fact]
    method TestWriteBackTheSameExactFile (line 24) | [Theory]
    method AssertSaveGame (line 38) | private static void AssertSaveGame(SaveFf7Remake save)

FILE: KHSave.Tests/Helpers.cs
  class Helpers (line 7) | public static class Helpers
    method Using (line 9) | public static void Using<T>(this T disposable, Action<T> action)
    method Using (line 16) | public static TResult Using<T, TResult>(this T disposable, Func<T, TRe...
    method Dump (line 23) | public static void Dump(this Stream stream, string path) =>
    method AssertStream (line 30) | public static void AssertStream(Stream expectedStream, Func<Stream, St...
    method ReadBytes (line 46) | public static byte[] ReadBytes(Stream stream)
    method UseAsset (line 56) | public static void UseAsset(string assetName, Action<Stream> action) =>
    method Dump (line 59) | public static void Dump(this byte[] data, string path) =>
    method FileOpenRead (line 62) | public static void FileOpenRead(string path, Action<Stream> action)

FILE: KHSave.Tests/Kh1Tests.cs
  class Kh1Tests (line 8) | public class Kh1Tests
    method Kh1Tests (line 13) | public Kh1Tests()
    method TestIsValid (line 21) | [Theory]
    method TestRead (line 34) | [Fact]
    method TestWriteBackTheSameExactFile (line 50) | [Fact]

FILE: KHSave.Tests/Kh2Tests.cs
  class Kh2Tests (line 9) | public class Kh2Tests
    method Kh2Tests (line 14) | public Kh2Tests()
    method TestIsValid (line 22) | [Theory]
    method TestVersion (line 36) | [Theory]
    method TestChecksum (line 54) | [Fact]
    method TestRead (line 64) | [Fact]
    method TestWriteBackTheSameExactFile (line 100) | [Fact]

FILE: KHSave.Tests/Kh3Test.cs
  class Kh3Test (line 27) | public class Kh3Test
    method TestIsValid (line 32) | [Theory]
    method ReadSaveTest (line 43) | [Theory]
    method TestWriteWithoutChanges (line 50) | [Theory]
    method TestWriteWithChanges (line 61) | [Theory]
    method IgnoreDlcFieldsFor100 (line 90) | [Fact]
    method ReadDlcFieldsFor109 (line 101) | [Fact]
    method TestChecksum (line 110) | [Fact]
    method AssertSaveGame (line 116) | private static void AssertSaveGame(ISaveKh3 save)

FILE: KHSave.Tests/KhBbsTests.cs
  class KhBbsTests (line 9) | public class KhBbsTests
    class FmTests (line 11) | public class FmTests
      method FmTests (line 16) | public FmTests()
      method TestRead (line 22) | [Fact]
      method TestChecksum (line 50) | [Fact]
      method TestWriteBackTheSameExactFile (line 56) | [Fact]
    class EuTests (line 69) | public class EuTests
      method EuTests (line 74) | public EuTests()
      method TestChecksum (line 80) | [Fact]
      method TestRead (line 86) | [Fact]
      method TestWriteBackTheSameExactFile (line 92) | [Fact]

FILE: KHSave.Tests/KhDDDTests.cs
  class KhDDDTests (line 8) | public class KhDDDTests
    method KhDDDTests (line 13) | public KhDDDTests()
    method TestIsValid (line 21) | [Theory]
    method TestRead (line 33) | [Fact]
    method TestWriteBackTheSameExactFile (line 66) | [Fact]

FILE: KHSave.Tests/PcArchiveTests.cs
  class PcArchiveTests (line 7) | public class PcArchiveTests
    method ReadKh2Archive (line 9) | [Fact]
    method WriteBackKh2Archive (line 23) | [Fact]

FILE: KHSave.Tests/Persona3Tests.cs
  class Persona3Tests (line 8) | public class Persona3Tests
    method IsValid (line 10) | [Theory]
    method WriteBackTheSameExactFile (line 16) | [Theory]
    method ReadPersona3Vanilla (line 30) | [Fact]
    method ReadPersona3Portable (line 71) | [Fact]

FILE: KHSave.Tests/Persona5Tests.cs
  class Persona5Tests (line 8) | public class Persona5Tests
    method TestIsValid (line 10) | [Theory]
    method ReadPersona5FromPs3 (line 27) | [Fact]
    method ReadPersona5FromPs4 (line 59) | [Fact]
    method ReadPersona5Royal (line 88) | [Fact]
    method WriteBackTheSameExactFile (line 112) | [Theory]

FILE: KHSave.Tests/Ps4SaveArchiveTests.cs
  class Ps4SaveArchiveTests (line 10) | public class Ps4SaveArchiveTests
    method ReadKh1Archive (line 16) | [Fact]
    method ReadKh2Archive (line 45) | [Fact]
    method WriteBackKh1Archive (line 74) | [Fact]
    method CreateKh1Archive (line 82) | [Fact]
    method CreateKh2Archive (line 112) | [Fact]
    method OpenKh1File (line 122) | private Stream OpenKh1File()
    method OpenKh2File (line 161) | private Stream OpenKh2File()
    method WriteString (line 200) | private void WriteString(Stream stream, string text)

FILE: KHSave.Tests/RecomTests.cs
  class RecomTests (line 9) | public class RecomTests
    method IsValidTest (line 11) | [Fact]
    method IsNotValidIfMagicCodeIsNotRecognizedTest (line 20) | [Fact]
    method IsNotValidIfLengthIsNotEnoughTest (line 29) | [Fact]
    method SaveCorrectHeader (line 38) | [Fact]
    method CheckStoryFlags (line 59) | [Fact]
    method CheckTable2 (line 68) | [Fact]
    method CheckCardInventory (line 74) | [Fact]
    method CheckTutorialsClearedFlags (line 86) | [Fact]
    method CheckPlayMode (line 98) | [Fact]
    method CheckDifficulty (line 104) | [Fact]
    method CheckExpAmount (line 110) | [Fact]
    method CheckTables (line 116) | [Fact]
    method OnSave (line 137) | private static void OnSave(Action<SaveKhRecom> test)
    method OnSave2 (line 144) | private static void OnSave2(Action<SaveKhRecom> test)
    method OnSaveData (line 151) | private static void OnSaveData(Action<DataRecom> test) =>

FILE: KHSave.Tests/TransferTests.cs
  class TransferTests (line 7) | public class TransferTests
    method TransferFrom_KH2FM_to_KH2EU (line 9) | [Fact]

FILE: KHSave.Tests/TrssvTest.cs
  class TrssvTest (line 26) | public class TrssvTest
    method TrssvTest (line 31) | public TrssvTest()
    method TestIsValid (line 39) | [Fact]
    method TestRead (line 48) | [Fact]

FILE: KHSave/Attributes/AbilityAttribute.cs
  class AbilityAttribute (line 21) | public class AbilityAttribute : InfoAttribute
    method AbilityAttribute (line 23) | public AbilityAttribute(string name = null) :
  class AbilityActionAttribute (line 28) | public class AbilityActionAttribute : AbilityAttribute
    method AbilityActionAttribute (line 30) | public AbilityActionAttribute(string name = null) :
  class AbilityMobilityAttribute (line 35) | public class AbilityMobilityAttribute : AbilityAttribute
    method AbilityMobilityAttribute (line 37) | public AbilityMobilityAttribute(string name = null) :
  class AbilitySupportAttribute (line 42) | public class AbilitySupportAttribute : AbilityAttribute
    method AbilitySupportAttribute (line 44) | public AbilitySupportAttribute(string name = null) :

FILE: KHSave/Attributes/AccessoryAttribute.cs
  class AccessoryAttribute (line 21) | public class AccessoryAttribute : InfoAttribute
    method AccessoryAttribute (line 23) | public AccessoryAttribute(string name = null) :

FILE: KHSave/Attributes/ArmorAttribute.cs
  class ArmorAttribute (line 21) | public class ArmorAttribute : InfoAttribute
    method ArmorAttribute (line 23) | public ArmorAttribute(string name = null) :

FILE: KHSave/Attributes/BoostAttribute.cs
  class BoostAttribute (line 3) | public class BoostAttribute : TentAttribute
    method BoostAttribute (line 5) | public BoostAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/CombatStyleAttribute.cs
  class CombatStyleAttribute (line 21) | public class CombatStyleAttribute : InfoAttribute
    method CombatStyleAttribute (line 23) | public CombatStyleAttribute(string name) :

FILE: KHSave/Attributes/CommandAttribute.cs
  class CommandAttribute (line 21) | public class CommandAttribute : InfoAttribute
    method CommandAttribute (line 23) | public CommandAttribute(string name = null) :

FILE: KHSave/Attributes/ConsumableAttribute.cs
  class ConsumableAttribute (line 21) | public class ConsumableAttribute : InfoAttribute
    method ConsumableAttribute (line 23) | public ConsumableAttribute(string name = null) :

FILE: KHSave/Attributes/FoodAttribute.cs
  class FoodAttribute (line 21) | public class FoodAttribute : InfoAttribute
    method FoodAttribute (line 23) | public FoodAttribute(string name = null) :

FILE: KHSave/Attributes/FormAttribute.cs
  class FormAttribute (line 3) | public class FormAttribute : KeyItemAttribute
    method FormAttribute (line 5) | public FormAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/GummiBlockAttribute.cs
  class GummiBlockAttribute (line 7) | public class GummiBlockAttribute : InfoAttribute
    method GummiBlockAttribute (line 9) | public GummiBlockAttribute(string name = null) : base(name)

FILE: KHSave/Attributes/InfoAttribute.cs
  class InfoAttribute (line 27) | public class InfoAttribute : Attribute
    method InfoAttribute (line 33) | public InfoAttribute()
    method InfoAttribute (line 36) | public InfoAttribute(string info)
    method GetInfo (line 41) | public static string GetInfo(object value) => cache.Get(value, x =>
    method GetItemTypes (line 44) | public static string[] GetItemTypes(object value)
    method GetTypeRecursive (line 66) | private static IEnumerable<Type> GetTypeRecursive(Type type) =>

FILE: KHSave/Attributes/IngredientAttribute.cs
  class IngredientAttribute (line 21) | public class IngredientAttribute : InfoAttribute
    method IngredientAttribute (line 23) | public IngredientAttribute(string name) :

FILE: KHSave/Attributes/KeyItemAttribute.cs
  class KeyItemAttribute (line 21) | public class KeyItemAttribute : InfoAttribute
    method KeyItemAttribute (line 23) | public KeyItemAttribute(string name = null) :

FILE: KHSave/Attributes/KeybladeAttribute.cs
  class KeybladeAttribute (line 21) | public class KeybladeAttribute : InfoAttribute
    method KeybladeAttribute (line 23) | public KeybladeAttribute(string name) :

FILE: KHSave/Attributes/LinkAttribute.cs
  class LinkAttribute (line 21) | public class LinkAttribute : InfoAttribute
    method LinkAttribute (line 23) | public LinkAttribute(string name = null) :

FILE: KHSave/Attributes/MagicAttribute.cs
  class MagicAttribute (line 21) | public class MagicAttribute : InfoAttribute
    method MagicAttribute (line 23) | public MagicAttribute(string name = null) :

FILE: KHSave/Attributes/ManuscriptAttribute.cs
  class ManuscriptAttribute (line 3) | public class ManuscriptAttribute : InfoAttribute
    method ManuscriptAttribute (line 5) | public ManuscriptAttribute(string name = null) :

FILE: KHSave/Attributes/MapAttribute.cs
  class MapAttribute (line 3) | public class MapAttribute : KeyItemAttribute
    method MapAttribute (line 5) | public MapAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/MapInfo.cs
  class MapInfoAttribute (line 23) | public class MapInfoAttribute : InfoAttribute
    method MapInfoAttribute (line 27) | public MapInfoAttribute(string id, string name) :
    method GetMapId (line 33) | public static string GetMapId(object value)

FILE: KHSave/Attributes/MateriaAttribute.cs
  class MateriaAttribute (line 3) | public class MateriaAttribute : MagicAttribute
    method MateriaAttribute (line 5) | public MateriaAttribute(string name = null) :
  class MagicMateriaAttribute (line 12) | public class MagicMateriaAttribute : MateriaAttribute
    method MagicMateriaAttribute (line 14) | public MagicMateriaAttribute(string name = null) :
  class CommandMateriaAttribute (line 21) | public class CommandMateriaAttribute : MateriaAttribute
    method CommandMateriaAttribute (line 23) | public CommandMateriaAttribute(string name = null) :
  class SupportMateriaAttribute (line 30) | public class SupportMateriaAttribute : MateriaAttribute
    method SupportMateriaAttribute (line 32) | public SupportMateriaAttribute(string name = null) :
  class CompleteMateriaAttribute (line 39) | public class CompleteMateriaAttribute : MateriaAttribute
    method CompleteMateriaAttribute (line 41) | public CompleteMateriaAttribute(string name = null) :
  class SummonMateriaAttribute (line 48) | public class SummonMateriaAttribute : MateriaAttribute
    method SummonMateriaAttribute (line 50) | public SummonMateriaAttribute(string name = null) :

FILE: KHSave/Attributes/MogItemAttribute.cs
  class MogItemAttribute (line 21) | public class MogItemAttribute : InfoAttribute
    method MogItemAttribute (line 23) | public MogItemAttribute(string name = null) :

FILE: KHSave/Attributes/MoneyAttribute.cs
  class MoneyAttribute (line 3) | public class MoneyAttribute : InfoAttribute
    method MoneyAttribute (line 5) | public MoneyAttribute(string name = null) :

FILE: KHSave/Attributes/RecipeAttribute.cs
  class RecipeAttribute (line 3) | public class RecipeAttribute : MogItemAttribute
    method RecipeAttribute (line 5) | public RecipeAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/ReportAttribute.cs
  class ReportAttribute (line 3) | public class ReportAttribute : KeyItemAttribute
    method ReportAttribute (line 5) | public ReportAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/ShieldAttribute.cs
  class ShieldAttribute (line 21) | public class ShieldAttribute : InfoAttribute
    method ShieldAttribute (line 23) | public ShieldAttribute(string name) :

FILE: KHSave/Attributes/SnackAttribute.cs
  class SnackAttribute (line 21) | public class SnackAttribute : InfoAttribute
    method SnackAttribute (line 23) | public SnackAttribute(string name = null) :

FILE: KHSave/Attributes/StaffAttribute.cs
  class StaffAttribute (line 21) | public class StaffAttribute : InfoAttribute
    method StaffAttribute (line 23) | public StaffAttribute(string name) :

FILE: KHSave/Attributes/SummonAttribute.cs
  class SummonAttribute (line 3) | public class SummonAttribute : KeyItemAttribute
    method SummonAttribute (line 5) | public SummonAttribute(string name = null) : base(name) { }

FILE: KHSave/Attributes/SynthesisAttribute.cs
  class SynthesisAttribute (line 21) | public class SynthesisAttribute : InfoAttribute
    method SynthesisAttribute (line 23) | public SynthesisAttribute(string name = null) :

FILE: KHSave/Attributes/TentAttribute.cs
  class TentAttribute (line 21) | public class TentAttribute : InfoAttribute
    method TentAttribute (line 23) | public TentAttribute(string name = null) :

FILE: KHSave/Attributes/TrackAttribute.cs
  class TrackAttribute (line 3) | public class TrackAttribute : InfoAttribute
    method TrackAttribute (line 5) | public TrackAttribute(string name = null) :

FILE: KHSave/Attributes/UnusedAttribute.cs
  class UnusedAttribute (line 25) | public class UnusedAttribute : Attribute
    method IsUnused (line 29) | public static bool IsUnused(object value) => cache.Get(value, x =>

FILE: KHSave/Attributes/WeaponAttribute.cs
  class WeaponAttribute (line 21) | public class WeaponAttribute : InfoAttribute
    method WeaponAttribute (line 23) | public WeaponAttribute(string name = null) :
  class WeaponCloudAttribute (line 28) | public class WeaponCloudAttribute : WeaponAttribute
    method WeaponCloudAttribute (line 30) | public WeaponCloudAttribute(string name = null) :
  class WeaponBarretAttribute (line 35) | public class WeaponBarretAttribute : WeaponAttribute
    method WeaponBarretAttribute (line 37) | public WeaponBarretAttribute(string name = null) :
  class WeaponTifaAttribute (line 42) | public class WeaponTifaAttribute : WeaponAttribute
    method WeaponTifaAttribute (line 44) | public WeaponTifaAttribute(string name = null) :
  class WeaponAerithAttribute (line 49) | public class WeaponAerithAttribute : WeaponAttribute
    method WeaponAerithAttribute (line 51) | public WeaponAerithAttribute(string name = null) :
  class WeaponYuffieAttribute (line 56) | public class WeaponYuffieAttribute : WeaponAttribute
    method WeaponYuffieAttribute (line 58) | public WeaponYuffieAttribute(string name = null) :
  class WeaponSononAttribute (line 63) | public class WeaponSononAttribute : WeaponAttribute
    method WeaponSononAttribute (line 65) | public WeaponSononAttribute(string name = null) :

FILE: KHSave/Attributes/WorldInfoAttribute.cs
  class WorldAttribute (line 23) | public class WorldAttribute : InfoAttribute
    method WorldAttribute (line 27) | public WorldAttribute(string id, string name) :
    method GetWorldId (line 33) | public static string GetWorldId(object value) =>

FILE: KHSave/Extensions/AttributeExtensions.cs
  class AttributeExtensions (line 7) | public static class AttributeExtensions
    method GetAttribute (line 11) | public static T GetAttribute<T>(this object value) where T : Attribute...

FILE: KHSave/Extensions/BitExtensions.cs
  class BitExtensions (line 25) | public static class BitExtensions
    method GetFlag (line 27) | public static bool GetFlag(this int value, int bit)
    method SetFlag (line 32) | public static int SetFlag(this int value, int bit, bool set)

FILE: KHSave/Extensions/DateTimeExtensions.cs
  class DateTimeExtensions (line 5) | public static class DateTimeExtensions
    method FromUnixEpoch (line 9) | public static DateTime FromUnixEpoch(this int timestamp) =>
    method FromUnixEpoch (line 12) | public static DateTime FromUnixEpoch(this uint timestamp) =>
    method ToUnixEpoch (line 15) | public static uint ToUnixEpoch(this DateTime dateTime) =>

FILE: KHSave/Services/CacheService.cs
  class CacheService (line 6) | public class CacheService<T>
    method Get (line 10) | public T Get(object value, Func<object, T> getter)

FILE: KHSave/Services/TransferServiceLL.cs
  class TransferServiceLL (line 9) | public static class TransferServiceLL
    method CopySave (line 22) | public static void CopySave<T>(object dst, object src, Dictionary<Type...
    method CopySave (line 25) | public static void CopySave(Type type, object dst, object src, Diction...
    method CopyArray (line 63) | public static void CopyArray<T>(object dst, object src, PropertyInfo p...

FILE: KHSave/StreamHelpers.cs
  class StreamHelpers (line 25) | public static class StreamHelpers
    method FromBegin (line 27) | public static T FromBegin<T>(this T stream) where T : Stream => stream...
    method SetPosition (line 29) | public static T SetPosition<T>(this T stream, int position) where T : ...
    method ReadFlag (line 35) | public static bool ReadFlag(this BinaryReader reader, int offset, int ...
    method ReadInt32 (line 41) | public static int ReadInt32(this BinaryReader reader, int offset)
    method ReadBytes (line 47) | public static byte[] ReadBytes(this Stream stream) =>
    method ReadBytes (line 50) | public static byte[] ReadBytes(this Stream stream, int length)
    method ReadAllBytes (line 57) | public static byte[] ReadAllBytes(this Stream stream)
    method ReadString (line 64) | public static string ReadString(this BinaryReader reader, int length)
    method ReadString (line 71) | public static string ReadString(this BinaryReader reader, int offset, ...
    method HasFlag (line 77) | public static bool HasFlag(this byte c, int offset)
    method Write (line 82) | public static void Write(this BinaryWriter writer, string str, int len...
    method Copy (line 100) | public static void Copy(this Stream source, Stream destination, int le...

FILE: Tooling.MemoryWatcher/Configuration.cs
  class GameLabelConfiguration (line 7) | public class GameLabelConfiguration
    method GameLabelConfiguration (line 21) | public GameLabelConfiguration()
  class GameConfiguration (line 31) | public class GameConfiguration
  class Configuration (line 49) | public class Configuration
    method Configuration (line 53) | private Configuration(string content)
    method ReadFromYaml (line 60) | public static Configuration ReadFromYaml(string fileName) =>

FILE: Tooling.MemoryWatcher/ProcessStream.cs
  class ProcessStream (line 12) | public class ProcessStream : Stream
    method OpenProcess (line 14) | [DllImport("kernel32.dll")]
    method ReadProcessMemory (line 17) | [DllImport("kernel32.dll")]
    method WriteProcessMemory (line 20) | [DllImport("kernel32.dll")]
    method OpenProcessToken (line 23) | [DllImport("advapi32.dll", SetLastError = true)]
    method ProcessStream (line 32) | public ProcessStream(Process process, long baseAddress, uint length)
    method Flush (line 56) | public override void Flush()
    method Read (line 60) | public override int Read(byte[] buffer, int offset, int count)
    method Seek (line 82) | public override long Seek(long offset, SeekOrigin origin)
    method SetLength (line 97) | public override void SetLength(long value)
    method Write (line 101) | public override void Write(byte[] buffer, int offset, int count)
    method OpenProcess (line 121) | private void OpenProcess(Process process)
    method GetProcesses (line 131) | public static IEnumerable<Process> GetProcesses() =>
    method TryGetProcess (line 134) | public static Process TryGetProcess(Func<Process, bool> predicate, int...
    method TryGetProcessAsync (line 151) | public static Task<Process> TryGetProcessAsync(Func<Process, bool> pre...

FILE: Tooling.MemoryWatcher/Program.cs
  class Program (line 11) | public static class Program
    method Main (line 13) | async static Task Main(string[] args)
    method Run (line 52) | async static Task Run(string configFileName, GameConfiguration game)
    method Dump (line 177) | private static void Dump(ProcessStream stream)
    method LogDifference (line 188) | private static string LogDifference(uint offset, byte previous, byte c...
    method GetLabel (line 197) | private static GameLabelConfiguration GetLabel(List<GameLabelConfigura...
    method IgnoreOffset (line 211) | static IEnumerable<int> IgnoreOffset(int offset)
    method IgnoreOffset (line 216) | static IEnumerable<int> IgnoreOffset(int startOffset, int count) =>
  class ExecutionException (line 220) | public class ExecutionException : Exception
    method ExecutionException (line 222) | public ExecutionException(string message) :
Condensed preview — 776 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,461K chars).
[
  {
    "path": ".editorconfig",
    "chars": 4808,
    "preview": "root = true\n\n[*]\ncharset = utf-8\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntab_size = 4\n\n[*.cs]\nc"
  },
  {
    "path": ".gitattributes",
    "chars": 52,
    "preview": "*.sln    text merge=union\n*.csproj text merge=union\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 66,
    "preview": "# These are supported funding model platforms\n\ngithub: [Xeeynamo]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "chars": 290,
    "preview": "---\nname: Bug report\nabout: Used when a user wants to report a bug\ntitle: GAME NAME - BRIEF EXPLAINATION\nlabels: enhance"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "chars": 263,
    "preview": "---\nname: Feature request\nabout: Used when a user wants to request a feature\ntitle: GAME NAME - BRIEF EXPLAINATION\nlabel"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/ff7r-missing-item-name-request.md",
    "chars": 619,
    "preview": "---\nname: FF7R Missing item name request\nabout: Used when a user wants to add a missing item name\ntitle: FF7R Missing it"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/ff7r-teleport-coordinates-request.md",
    "chars": 530,
    "preview": "---\nname: FF7R Teleport coordinates request\nabout: Used when a user wants to add a specific location with coordinates\nti"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 503,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/workflows/format-code.yml",
    "chars": 1061,
    "preview": "name: Format code\non:\n  push:\n  pull_request:\njobs:\n  format-code:\n    runs-on: ubuntu-latest\n    container:\n      image"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 427,
    "preview": "name: Tests\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n    types: [assigned, opened, synchronize, reopene"
  },
  {
    "path": ".gitignore",
    "chars": 5582,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": ".gitmodules",
    "chars": 238,
    "preview": "[submodule \"XeEngine.Tools.Public\"]\n\tpath = XeEngine.Tools.Public\n\turl = https://github.com/xeeynamo/XeEngine.Tools.Publ"
  },
  {
    "path": "CNAME",
    "chars": 25,
    "preview": "kingdomsaveeditor.xee.dev"
  },
  {
    "path": "KH3SaveEditor.sln",
    "chars": 57146,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.32014."
  },
  {
    "path": "KHSave/Attributes/AbilityAttribute.cs",
    "chars": 1417,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/AccessoryAttribute.cs",
    "chars": 914,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/ArmorAttribute.cs",
    "chars": 906,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/BoostAttribute.cs",
    "chars": 159,
    "preview": "namespace KHSave.Attributes\n{\n    public class BoostAttribute : TentAttribute\n    {\n        public BoostAttribute(string"
  },
  {
    "path": "KHSave/Attributes/CombatStyleAttribute.cs",
    "chars": 911,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/CommandAttribute.cs",
    "chars": 919,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/ConsumableAttribute.cs",
    "chars": 916,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/FoodAttribute.cs",
    "chars": 904,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/FormAttribute.cs",
    "chars": 160,
    "preview": "namespace KHSave.Attributes\n{\n    public class FormAttribute : KeyItemAttribute\n    {\n        public FormAttribute(strin"
  },
  {
    "path": "KHSave/Attributes/GummiBlockAttribute.cs",
    "chars": 245,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Attributes\n{\n    public class Gummi"
  },
  {
    "path": "KHSave/Attributes/InfoAttribute.cs",
    "chars": 2379,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/IngredientAttribute.cs",
    "chars": 909,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/KeyItemAttribute.cs",
    "chars": 910,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/KeybladeAttribute.cs",
    "chars": 905,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/LinkAttribute.cs",
    "chars": 904,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/MagicAttribute.cs",
    "chars": 906,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/ManuscriptAttribute.cs",
    "chars": 189,
    "preview": "namespace KHSave.Attributes\n{\n    public class ManuscriptAttribute : InfoAttribute\n    {\n        public ManuscriptAttrib"
  },
  {
    "path": "KHSave/Attributes/MapAttribute.cs",
    "chars": 158,
    "preview": "namespace KHSave.Attributes\n{\n    public class MapAttribute : KeyItemAttribute\n    {\n        public MapAttribute(string "
  },
  {
    "path": "KHSave/Attributes/MapInfo.cs",
    "chars": 1610,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/MateriaAttribute.cs",
    "chars": 1079,
    "preview": "namespace KHSave.Attributes\n{\n    public class MateriaAttribute : MagicAttribute\n    {\n        public MateriaAttribute(s"
  },
  {
    "path": "KHSave/Attributes/MogItemAttribute.cs",
    "chars": 910,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/MoneyAttribute.cs",
    "chars": 179,
    "preview": "namespace KHSave.Attributes\n{\n    public class MoneyAttribute : InfoAttribute\n    {\n        public MoneyAttribute(string"
  },
  {
    "path": "KHSave/Attributes/RecipeAttribute.cs",
    "chars": 164,
    "preview": "namespace KHSave.Attributes\n{\n    public class RecipeAttribute : MogItemAttribute\n    {\n        public RecipeAttribute(s"
  },
  {
    "path": "KHSave/Attributes/ReportAttribute.cs",
    "chars": 164,
    "preview": "namespace KHSave.Attributes\n{\n    public class ReportAttribute : KeyItemAttribute\n    {\n        public ReportAttribute(s"
  },
  {
    "path": "KHSave/Attributes/ShieldAttribute.cs",
    "chars": 901,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/SnackAttribute.cs",
    "chars": 906,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/StaffAttribute.cs",
    "chars": 899,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/SummonAttribute.cs",
    "chars": 164,
    "preview": "namespace KHSave.Attributes\n{\n    public class SummonAttribute : KeyItemAttribute\n    {\n        public SummonAttribute(s"
  },
  {
    "path": "KHSave/Attributes/SynthesisAttribute.cs",
    "chars": 914,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/TentAttribute.cs",
    "chars": 904,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/TrackAttribute.cs",
    "chars": 179,
    "preview": "namespace KHSave.Attributes\n{\n    public class TrackAttribute : InfoAttribute\n    {\n        public TrackAttribute(string"
  },
  {
    "path": "KHSave/Attributes/UnusedAttribute.cs",
    "chars": 1578,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/WeaponAttribute.cs",
    "chars": 1884,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Attributes/WorldInfoAttribute.cs",
    "chars": 1117,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Extensions/AttributeExtensions.cs",
    "chars": 743,
    "preview": "using KHSave.Services;\nusing System;\nusing System.Linq;\n\nnamespace KHSave.Extensions\n{\n    public static class Attribute"
  },
  {
    "path": "KHSave/Extensions/BitExtensions.cs",
    "chars": 1287,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave/Extensions/DateTimeExtensions.cs",
    "chars": 591,
    "preview": "using System;\n\nnamespace KHSave.Extensions\n{\n    public static class DateTimeExtensions\n    {\n        private static Dat"
  },
  {
    "path": "KHSave/KHSave.csproj",
    "chars": 226,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave/Services/CacheService.cs",
    "chars": 490,
    "preview": "using System;\nusing System.Collections.Generic;\n\nnamespace KHSave.Services\n{\n    public class CacheService<T>\n    {\n    "
  },
  {
    "path": "KHSave/Services/TransferServiceLL.cs",
    "chars": 3801,
    "preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nn"
  },
  {
    "path": "KHSave/StreamHelpers.cs",
    "chars": 3683,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/ArchiveFactories.cs",
    "chars": 3062,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/PcKh1Factory.cs",
    "chars": 794,
    "preview": "using System.IO;\n\nnamespace KHSave.Archives.Factories\n{\n    internal class PcKh1Factory : IArchiveFactory\n    {\n        "
  },
  {
    "path": "KHSave.Archives/Factories/PcKh2Factory.cs",
    "chars": 796,
    "preview": "using System.IO;\n\nnamespace KHSave.Archives.Factories\n{\n    internal class PcKh2Factory : IArchiveFactory\n    {\n        "
  },
  {
    "path": "KHSave.Archives/Factories/PcKhBbsFactory.cs",
    "chars": 1536,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/PcKhDddFactory.cs",
    "chars": 1542,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/PcKhRecomFactory.cs",
    "chars": 808,
    "preview": "using System.IO;\n\nnamespace KHSave.Archives.Factories\n{\n    internal class PcKhRecomFactory : IArchiveFactory\n    {\n    "
  },
  {
    "path": "KHSave.Archives/Factories/Ps2CbsFactory.cs",
    "chars": 1057,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Thre"
  },
  {
    "path": "KHSave.Archives/Factories/Ps2PsuFactory.cs",
    "chars": 1224,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Thre"
  },
  {
    "path": "KHSave.Archives/Factories/Ps3PsvFactory.cs",
    "chars": 916,
    "preview": "using System;\nusing System.IO;\n\nnamespace KHSave.Archives.Factories\n{\n    public class Ps3PsvFactory : IArchiveFactory\n "
  },
  {
    "path": "KHSave.Archives/Factories/Ps4Kh1Factory.cs",
    "chars": 1537,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/Ps4Kh2Factory.cs",
    "chars": 1539,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/Ps4KhDddFactory.cs",
    "chars": 1548,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/Factories/Ps4KhRecomFactory.cs",
    "chars": 1551,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/IArchive.cs",
    "chars": 999,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/IArchiveEntry.cs",
    "chars": 1051,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/IArchiveFactory.cs",
    "chars": 1033,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Archives/KHSave.Archives.csproj",
    "chars": 377,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  <"
  },
  {
    "path": "KHSave.Archives/PcSaveArchive.cs",
    "chars": 5425,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Xe.BinaryMapper;\n\nnamespace KH"
  },
  {
    "path": "KHSave.Archives/Ps2CbsArchive.cs",
    "chars": 6590,
    "preview": "// https://github.com/root670/PS2SaveUtility/blob/master/src/CBSFile.cpp\n\nusing ICSharpCode.SharpZipLib.Zip.Compression."
  },
  {
    "path": "KHSave.Archives/Ps2PsuArchive.cs",
    "chars": 3283,
    "preview": "// https://github.com/root670/PS2SaveUtility/blob/master/src/PSUFile.cpp\n\nusing System;\nusing System.Collections.Generic"
  },
  {
    "path": "KHSave.Archives/Ps3PsvArchive.cs",
    "chars": 4155,
    "preview": "// https://github.com/PMStanley/PSV-Exporter/blob/master/PSVFormat.pas\n\nusing System;\nusing System.Collections.Generic;\n"
  },
  {
    "path": "KHSave.Archives/Ps4SaveArchive.cs",
    "chars": 4764,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/KHSave.Lib02.csproj",
    "chars": 315,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave.Lib02/Models/Objective.cs",
    "chars": 975,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Models/PlayableCharacter.cs",
    "chars": 1043,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Models/Slot.cs",
    "chars": 2990,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/SaveKh02.cs",
    "chars": 2147,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Types/CommandType.cs",
    "chars": 1998,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Types/DifficultyType.cs",
    "chars": 930,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Types/LocationType.cs",
    "chars": 2309,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Types/MapType.cs",
    "chars": 1668,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib02/Types/SpawnType.cs",
    "chars": 4648,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib1/Attributes/ArmorGummiAttribute.cs",
    "chars": 479,
    "preview": "using KHSave.Attributes;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attri"
  },
  {
    "path": "KHSave.Lib1/Attributes/BlueprintGummiAttribute.cs",
    "chars": 410,
    "preview": "using KHSave.Attributes;\nusing KHSave.Lib1.Types;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nna"
  },
  {
    "path": "KHSave.Lib1/Attributes/CockpitGummiAttribute.cs",
    "chars": 458,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attributes\n{\n    public class "
  },
  {
    "path": "KHSave.Lib1/Attributes/EngineGummiAttribute.cs",
    "chars": 731,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attributes\n{\n    public class "
  },
  {
    "path": "KHSave.Lib1/Attributes/ExtraGummiAttribute.cs",
    "chars": 618,
    "preview": "using KHSave.Attributes;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attri"
  },
  {
    "path": "KHSave.Lib1/Attributes/GummiBlockAttribute.cs",
    "chars": 938,
    "preview": "using KHSave.Attributes;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attri"
  },
  {
    "path": "KHSave.Lib1/Attributes/SpecialGummiAttribute.cs",
    "chars": 554,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attributes\n{\n    public class "
  },
  {
    "path": "KHSave.Lib1/Attributes/WeaponGummiAttribute.cs",
    "chars": 625,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attributes\n{\n    public class "
  },
  {
    "path": "KHSave.Lib1/Attributes/WingGummiAttribute.cs",
    "chars": 540,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KHSave.Lib1.Attributes\n{\n    public class "
  },
  {
    "path": "KHSave.Lib1/Constants.cs",
    "chars": 169,
    "preview": "namespace KHSave.Lib1\n{\n    public class Constants\n    {\n        public const uint MagicCodeFm = 0x05;\n        public co"
  },
  {
    "path": "KHSave.Lib1/ISaveKh1.cs",
    "chars": 958,
    "preview": "using KHSave.Lib1.Types;\nusing KHSave.Lib1.Models;\nusing System.IO;\n\nnamespace KHSave.Lib1\n{\n    public interface ISaveK"
  },
  {
    "path": "KHSave.Lib1/KHSave.Lib1.csproj",
    "chars": 315,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave.Lib1/Models/Character.cs",
    "chars": 1995,
    "preview": "using KHSave.Lib1.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1.Models\n{\n    public class Character\n    {\n       "
  },
  {
    "path": "KHSave.Lib1/Models/GummiBlock.cs",
    "chars": 878,
    "preview": "using KHSave.Lib1.Types;\nusing System;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1.Models\n{\n    public class GummiBloc"
  },
  {
    "path": "KHSave.Lib1/Models/Gummiship.cs",
    "chars": 560,
    "preview": "using KHSave.Lib1.Types;\nusing System.Threading;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1.Models\n{\n    public class"
  },
  {
    "path": "KHSave.Lib1/SaveKh1.EU.cs",
    "chars": 2111,
    "preview": "using KHSave.Lib1.Models;\nusing KHSave.Lib1.Types;\nusing System.IO;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1\n{\n    "
  },
  {
    "path": "KHSave.Lib1/SaveKh1.FinalMix.cs",
    "chars": 1976,
    "preview": "using KHSave.Lib1.Models;\nusing KHSave.Lib1.Types;\nusing System.IO;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1\n{\n    "
  },
  {
    "path": "KHSave.Lib1/SaveKh1.cs",
    "chars": 2014,
    "preview": "using System;\nusing System.IO;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib1\n{\n    public partial class SaveKh1\n    {\n\n "
  },
  {
    "path": "KHSave.Lib1/Types/AbilityType.cs",
    "chars": 3456,
    "preview": "// https://pastebin.com/ZH0L3XXi\nusing KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum AbilityType : b"
  },
  {
    "path": "KHSave.Lib1/Types/CommandType.cs",
    "chars": 290,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum CommandType : byte\n    {\n        [Magic] Fire,\n "
  },
  {
    "path": "KHSave.Lib1/Types/DifficultyType.cs",
    "chars": 359,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum Difficulty : byte\n    {\n        [Info(\"Normal\")]"
  },
  {
    "path": "KHSave.Lib1/Types/EquipmentType.cs",
    "chars": 11514,
    "preview": "// https://pastebin.com/dfARF8ui\nusing KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum EquipmentType :"
  },
  {
    "path": "KHSave.Lib1/Types/GameTypes.cs",
    "chars": 190,
    "preview": "using System;\n\nnamespace KHSave.Lib1.Types\n{\n    [Flags]\n    public enum GameTypes\n    {\n        None,\n        Jp = 1,\n "
  },
  {
    "path": "KHSave.Lib1/Types/GummiBlocksType.cs",
    "chars": 7534,
    "preview": "using KHSave.Attributes;\nusing KHSave.Lib1.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum GummiBlocksType : "
  },
  {
    "path": "KHSave.Lib1/Types/PlayableCharacterType.cs",
    "chars": 403,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum PlayableCharacterType : byte\n    {\n        [Info"
  },
  {
    "path": "KHSave.Lib1/Types/WorldType.cs",
    "chars": 946,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib1.Types\n{\n    public enum WorldType : uint\n    {\n        [Info(\"Dive into "
  },
  {
    "path": "KHSave.Lib2/Constants.cs",
    "chars": 48978,
    "preview": "using KHSave.Attributes;\nusing KHSave.Lib2.Types;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nna"
  },
  {
    "path": "KHSave.Lib2/ISaveKh2.cs",
    "chars": 2217,
    "preview": "using KHSave.Lib2.Models;\nusing KHSave.Lib2.Types;\nusing System.IO;\n\nnamespace KHSave.Lib2\n{\n    public interface ISaveK"
  },
  {
    "path": "KHSave.Lib2/KHSave.Lib2.csproj",
    "chars": 315,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave.Lib2/Models/CharacterFinalMix.cs",
    "chars": 1774,
    "preview": "using KHSave.Lib2.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class CharacterFinalMix : ICh"
  },
  {
    "path": "KHSave.Lib2/Models/CharacterVanilla.cs",
    "chars": 1780,
    "preview": "using KHSave.Lib2.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class CharacterVanilla : ICha"
  },
  {
    "path": "KHSave.Lib2/Models/DriveFormFinalMix.cs",
    "chars": 423,
    "preview": "using KHSave.Lib2.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class DriveFormFinalMix : IDr"
  },
  {
    "path": "KHSave.Lib2/Models/DriveFormVanilla.cs",
    "chars": 422,
    "preview": "using KHSave.Lib2.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class DriveFormVanilla : IDri"
  },
  {
    "path": "KHSave.Lib2/Models/ICharacter.cs",
    "chars": 1220,
    "preview": "using KHSave.Lib2.Types;\n\nnamespace KHSave.Lib2.Models\n{\n    public interface ICharacter\n    {\n        EquipmentType Wea"
  },
  {
    "path": "KHSave.Lib2/Models/IDriveForm.cs",
    "chars": 297,
    "preview": "using KHSave.Lib2.Types;\n\nnamespace KHSave.Lib2.Models\n{\n    public interface IDriveForm\n    {\n        EquipmentType Wea"
  },
  {
    "path": "KHSave.Lib2/Models/IPlaceScript.cs",
    "chars": 177,
    "preview": "namespace KHSave.Lib2.Models\n{\n    public interface IPlaceScript\n    {\n        byte Map { get; set; }\n        byte Battl"
  },
  {
    "path": "KHSave.Lib2/Models/PartyMembers.cs",
    "chars": 434,
    "preview": "using KHSave.Lib2.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class PartyMembers\n    {\n    "
  },
  {
    "path": "KHSave.Lib2/Models/PlaceScriptFinalMix.cs",
    "chars": 428,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class PlaceScriptFinalMix : IPlaceScript\n    {\n       "
  },
  {
    "path": "KHSave.Lib2/Models/PlaceScriptVanilla.cs",
    "chars": 260,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class PlaceScriptVanilla : IPlaceScript\n    {\n        "
  },
  {
    "path": "KHSave.Lib2/Models/Progress.cs",
    "chars": 498,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.Lib2.Models\n{\n    public class Progress\n    {\n        [Data(Count = 0x20)] publ"
  },
  {
    "path": "KHSave.Lib2/SaveKh2.European.cs",
    "chars": 3749,
    "preview": "using KHSave.Lib2.Models;\nusing KHSave.Lib2.Types;\nusing System;\nusing System.IO;\nusing Xe.BinaryMapper;\n\nnamespace KHSa"
  },
  {
    "path": "KHSave.Lib2/SaveKh2.FinalMix.cs",
    "chars": 6183,
    "preview": "using KHSave.Lib2.Models;\nusing KHSave.Lib2.Types;\nusing System;\nusing System.IO;\nusing Xe.BinaryMapper;\n\nnamespace KHSa"
  },
  {
    "path": "KHSave.Lib2/SaveKh2.TransferMappings.cs",
    "chars": 4938,
    "preview": "using KHSave.Lib2.Models;\nusing KHSave.Lib2.Types;\nusing KHSave.Services;\nusing System;\nusing System.Collections.Generic"
  },
  {
    "path": "KHSave.Lib2/SaveKh2.cs",
    "chars": 4236,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Xe.BinaryMapper;\n\nnamespace KH"
  },
  {
    "path": "KHSave.Lib2/Types/AbilityStyleType.cs",
    "chars": 214,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum AbilityStyleType : byte\n    {\n        [Info(\"Fre"
  },
  {
    "path": "KHSave.Lib2/Types/BattleStyleType.cs",
    "chars": 429,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum BattleStyleType : byte\n    {\n        [CombatStyl"
  },
  {
    "path": "KHSave.Lib2/Types/CharacterType.cs",
    "chars": 408,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum CharacterType\n    {\n        [Info] Sora,\n       "
  },
  {
    "path": "KHSave.Lib2/Types/CommandType.cs",
    "chars": 1027,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum CommandType : short\n    {\n        Empty,\n       "
  },
  {
    "path": "KHSave.Lib2/Types/DifficultyType.cs",
    "chars": 200,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum Difficulty : byte\n    {\n        [Info] Beginner,"
  },
  {
    "path": "KHSave.Lib2/Types/DriveFormType.cs",
    "chars": 231,
    "preview": "namespace KHSave.Lib2.Types\n{\n    public enum DriveFormType\n    {\n        Valor,\n        Wisdom,\n        Limit,\n        "
  },
  {
    "path": "KHSave.Lib2/Types/EquipmentType.cs",
    "chars": 28856,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum EquipmentType : short\n    {\n        [Info] Empty"
  },
  {
    "path": "KHSave.Lib2/Types/GameType.cs",
    "chars": 189,
    "preview": "using System;\n\nnamespace KHSave.Lib2.Types\n{\n    [Flags]\n    public enum GameType\n    {\n        None,\n        Jp = 1,\n  "
  },
  {
    "path": "KHSave.Lib2/Types/InventoryType.cs",
    "chars": 15168,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib2/Types/PlayableCharacterType.cs",
    "chars": 418,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib2.Types\n{\n    public enum PlayableCharacterType : byte\n    {\n        [Info"
  },
  {
    "path": "KHSave.Lib2/Types/WorldType.cs",
    "chars": 1871,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/ISaveKh3.cs",
    "chars": 2922,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/KHSave.Lib3.csproj",
    "chars": 309,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave.Lib3/Models/Ability.cs",
    "chars": 1596,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/AiModel.cs",
    "chars": 1088,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/EquipmentItem.cs",
    "chars": 1799,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/FlantasticRecord.cs",
    "chars": 257,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.Lib3.Models\n{\n    public class FlantasticRecord\n    {\n        [Data] public int"
  },
  {
    "path": "KHSave.Lib3/Models/InventoryEntry.cs",
    "chars": 1263,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/MagicGroup.cs",
    "chars": 1344,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/PhotoEntry.cs",
    "chars": 937,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/PlayableCharacter.cs",
    "chars": 1957,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Models/Records.cs",
    "chars": 1404,
    "preview": "using System.Collections.Generic;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.Lib3.Models\n{\n    public class Records\n    {\n"
  },
  {
    "path": "KHSave.Lib3/Models/ShortcutGroup.cs",
    "chars": 1073,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Presets/Preset.Pawn.cs",
    "chars": 3886,
    "preview": "using System.Collections.Generic;\n\nnamespace KHSave.Lib3.Presets\n{\n    public static partial class Presets\n    {\n       "
  },
  {
    "path": "KHSave.Lib3/Presets/Presets.Map.cs",
    "chars": 14870,
    "preview": "using System.Collections.Generic;\n\nnamespace KHSave.Lib3.Presets\n{\n    public static partial class Presets\n    {\n       "
  },
  {
    "path": "KHSave.Lib3/Presets/Presets.Story.cs",
    "chars": 54693,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/SaveKh3.cs",
    "chars": 5877,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/SaveKh3u109.cs",
    "chars": 4916,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/AbilityType.cs",
    "chars": 18909,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/AccessoryType.cs",
    "chars": 9047,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/AiAbilityType.cs",
    "chars": 962,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/AiCombatStyleType.cs",
    "chars": 1038,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/AiRecoveryType.cs",
    "chars": 1003,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/ArmorType.cs",
    "chars": 6468,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/CharacterIconType.cs",
    "chars": 1493,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/ChoiceType.cs",
    "chars": 1025,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/CommandType.cs",
    "chars": 11318,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/ConsumableType.cs",
    "chars": 5237,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/DifficultyType.cs",
    "chars": 929,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/FoodType.cs",
    "chars": 4946,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/InventoryType.cs",
    "chars": 29283,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/ItemType.cs",
    "chars": 1466,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/KeyItemType.cs",
    "chars": 5319,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/LocationType.cs",
    "chars": 6224,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/MaterialType.cs",
    "chars": 3897,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/MogType.cs",
    "chars": 4953,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/PartyCharacter.cs",
    "chars": 906,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.Lib3.Types\n{\n    public enum PartyCharacter : byte\n    {\n        [Info(\"Defau"
  },
  {
    "path": "KHSave.Lib3/Types/PlayableCharacterType.cs",
    "chars": 1060,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/RecordAttractionType.cs",
    "chars": 1034,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/RecordShotlockType.cs",
    "chars": 2864,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/SnackType.cs",
    "chars": 4959,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/StoryFlagType.cs",
    "chars": 5645,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/StoryLabelType.cs",
    "chars": 29663,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/SyntesisType.cs",
    "chars": 4965,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/TentType.cs",
    "chars": 5052,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/WeaponType.cs",
    "chars": 7065,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.Lib3/Types/WorldType.cs",
    "chars": 2272,
    "preview": "/*\n    Kingdom Save Editor\n    Copyright (C) 2020 Luciano Ciccariello\n\n    This program is free software: you can redist"
  },
  {
    "path": "KHSave.LibBbs/Attributes/AbilityAttribute.cs",
    "chars": 388,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.LibBbs.Attributes\n{\n    public class AbilityStatusAttribute : AbilityAttribut"
  },
  {
    "path": "KHSave.LibBbs/Attributes/ActionAttribute.cs",
    "chars": 512,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.LibBbs.Attributes\n{\n    public class MovementAttribute : InfoAttribute\n    {\n"
  },
  {
    "path": "KHSave.LibBbs/Attributes/CommandAttribute.cs",
    "chars": 808,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.LibBbs.Attributes\n{\n    public class AttackAttribute : InfoAttribute\n    {\n  "
  },
  {
    "path": "KHSave.LibBbs/Attributes/CommandStyleAttribute.cs",
    "chars": 572,
    "preview": "using KHSave.Attributes;\n\nnamespace KHSave.LibBbs.Attributes\n{\n    public class CommandStyleLevel1Attribute : InfoAttrib"
  },
  {
    "path": "KHSave.LibBbs/Constants.cs",
    "chars": 243,
    "preview": "namespace KHSave.LibBbs\n{\n    internal class Constants\n    {\n        public const uint MagicCode = 1146307138;\n    }\n\n  "
  },
  {
    "path": "KHSave.LibBbs/ISaveKhBbs.cs",
    "chars": 770,
    "preview": "using KHSave.LibBbs.Models;\nusing KHSave.LibBbs.Types;\n\nnamespace KHSave.LibBbs\n{\n    public interface ISaveKhBbs\n    {\n"
  },
  {
    "path": "KHSave.LibBbs/KHSave.LibBbs.csproj",
    "chars": 315,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6</TargetFramework>\n  </PropertyGroup>\n\n  "
  },
  {
    "path": "KHSave.LibBbs/Models/Ability.cs",
    "chars": 292,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.LibBbs.Models\n{\n    public class Ability\n    {\n        [Data] public byte Numbe"
  },
  {
    "path": "KHSave.LibBbs/Models/Character.cs",
    "chars": 1165,
    "preview": "using KHSave.LibBbs.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.LibBbs.Models\n{\n    public class Character\n    {\n   "
  },
  {
    "path": "KHSave.LibBbs/Models/Command.cs",
    "chars": 382,
    "preview": "using KHSave.LibBbs.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.LibBbs.Models\n{\n    public class Command\n    {\n     "
  },
  {
    "path": "KHSave.LibBbs/Models/Deck.cs",
    "chars": 713,
    "preview": "using Xe.BinaryMapper;\n\nnamespace KHSave.LibBbs.Models\n{\n    public class Deck\n    {\n        [Data(Count = 8)] public Co"
  },
  {
    "path": "KHSave.LibBbs/Models/Dlink.cs",
    "chars": 269,
    "preview": "using KHSave.LibBbs.Types;\nusing Xe.BinaryMapper;\n\nnamespace KHSave.LibBbs.Models\n{\n    public class Dlink\n    {\n       "
  }
]

// ... and 576 more files (download for full content)

About this extraction

This page contains the full source code of the Xeeynamo/KingdomSaveEditor GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 776 files (2.2 MB), approximately 612.0k tokens, and a symbol index with 2032 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!